gmsh-TingyuanDoc  0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
Gmsh.tab.cpp
Go to the documentation of this file.
1 /* A Bison parser, made by GNU Bison 2.3. */
2 
3 /* Skeleton implementation for Bison's Yacc-like parsers in C
4 
5  Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6  Free Software Foundation, Inc.
7 
8  This program is free software; you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation; either version 2, or (at your option)
11  any later version.
12 
13  This program is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with this program; if not, write to the Free Software
20  Foundation, Inc., 51 Franklin Street, Fifth Floor,
21  Boston, MA 02110-1301, USA. */
22 
23 /* As a special exception, you may create a larger work that contains
24  part or all of the Bison parser skeleton and distribute that work
25  under terms of your choice, so long as that work isn't itself a
26  parser generator using the skeleton or a modified version thereof
27  as a parser skeleton. Alternatively, if you modify or redistribute
28  the parser skeleton itself, you may (at your option) remove this
29  special exception, which will cause the skeleton and the resulting
30  Bison output files to be licensed under the GNU General Public
31  License without this special exception.
32 
33  This special exception was added by the Free Software Foundation in
34  version 2.2 of Bison. */
35 
36 /* C LALR(1) parser skeleton written by Richard Stallman, by
37  simplifying the original so-called "semantic" parser. */
38 
39 /* All symbols defined below should begin with yy or YY, to avoid
40  infringing on user name space. This should be done even for local
41  variables, as they might otherwise be expanded by user macros.
42  There are some unavoidable exceptions within include files to
43  define necessary library symbols; they are noted "INFRINGES ON
44  USER NAME SPACE" below. */
45 
46 /* Identify Bison output. */
47 #define YYBISON 1
48 
49 /* Bison version. */
50 #define YYBISON_VERSION "2.3"
51 
52 /* Skeleton name. */
53 #define YYSKELETON_NAME "yacc.c"
54 
55 /* Pure parsers. */
56 #define YYPURE 0
57 
58 /* Using locations. */
59 #define YYLSP_NEEDED 0
60 
61 /* Substitute the variable and function names. */
62 #define yyparse gmsh_yyparse
63 #define yylex gmsh_yylex
64 #define yyerror gmsh_yyerror
65 #define yylval gmsh_yylval
66 #define yychar gmsh_yychar
67 #define yydebug gmsh_yydebug
68 #define yynerrs gmsh_yynerrs
69 
70 /* Tokens. */
71 #ifndef YYTOKENTYPE
72 #define YYTOKENTYPE
73 /* Put the tokens into the symbol table, so that GDB and other debuggers
74  know about them. */
76 {
77  tDOUBLE = 258,
78  tSTRING = 259,
79  tBIGSTR = 260,
80  tEND = 261,
81  tAFFECT = 262,
82  tDOTS = 263,
83  tSCOPE = 264,
84  tPi = 265,
85  tMPI_Rank = 266,
86  tMPI_Size = 267,
87  tEuclidian = 268,
88  tCoordinates = 269,
89  tTestLevel = 270,
90  tExp = 271,
91  tLog = 272,
92  tLog10 = 273,
93  tSqrt = 274,
94  tSin = 275,
95  tAsin = 276,
96  tCos = 277,
97  tAcos = 278,
98  tTan = 279,
99  tRand = 280,
100  tAtan = 281,
101  tAtan2 = 282,
102  tSinh = 283,
103  tCosh = 284,
104  tTanh = 285,
105  tFabs = 286,
106  tAbs = 287,
107  tFloor = 288,
108  tCeil = 289,
109  tRound = 290,
110  tMin = 291,
111  tMax = 292,
112  tFmod = 293,
113  tModulo = 294,
114  tHypot = 295,
115  tList = 296,
116  tLinSpace = 297,
117  tLogSpace = 298,
119  tCatenary = 300,
120  tPrintf = 301,
121  tError = 302,
122  tWarning = 303,
123  tStr = 304,
124  tSprintf = 305,
125  tStrCat = 306,
126  tStrPrefix = 307,
128  tStrReplace = 309,
130  tDirName = 311,
131  tStrSub = 312,
132  tStrLen = 313,
133  tFind = 314,
134  tStrFind = 315,
135  tStrCmp = 316,
136  tStrChoice = 317,
137  tUpperCase = 318,
138  tLowerCase = 319,
142  tDraw = 323,
143  tSetChanged = 324,
144  tToday = 325,
148  tSyncModel = 329,
149  tNewModel = 330,
150  tMass = 331,
154  tOnelabRun = 335,
155  tCodeName = 336,
156  tCpu = 337,
157  tMemory = 338,
169  tNameStruct = 350,
171  tAppend = 352,
173  tSetNumber = 354,
174  tSetTag = 355,
175  tSetString = 356,
176  tPoint = 357,
177  tCircle = 358,
178  tEllipse = 359,
179  tCurve = 360,
180  tSphere = 361,
182  tSurface = 363,
183  tSpline = 364,
184  tVolume = 365,
185  tBox = 366,
186  tCylinder = 367,
187  tCone = 368,
188  tTorus = 369,
189  tEllipsoid = 370,
190  tQuadric = 371,
192  tRectangle = 373,
193  tDisk = 374,
194  tWire = 375,
195  tGeoEntity = 376,
197  tLength = 378,
198  tParametric = 379,
199  tElliptic = 380,
200  tRefineMesh = 381,
202  tAdaptMesh = 383,
206  tSetFactory = 387,
208  tWedge = 389,
209  tFillet = 390,
210  tChamfer = 391,
211  tPlane = 392,
212  tRuled = 393,
214  tPhysical = 395,
215  tCompound = 396,
216  tPeriodic = 397,
217  tParent = 398,
218  tUsing = 399,
219  tPlugin = 400,
221  tRecursive = 402,
222  tSewing = 403,
223  tRotate = 404,
224  tTranslate = 405,
225  tSymmetry = 406,
226  tDilate = 407,
227  tExtrude = 408,
228  tLevelset = 409,
229  tAffine = 410,
235  tThickSolid = 416,
236  tRecombine = 417,
237  tSmoother = 418,
238  tSplit = 419,
239  tDelete = 420,
240  tCoherence = 421,
241  tHealShapes = 422,
242  tIntersect = 423,
245  tMeshSize = 426,
247  tLayers = 428,
248  tScaleLast = 429,
249  tHole = 430,
250  tAlias = 431,
257  tText2D = 438,
258  tText3D = 439,
260  tTime = 441,
261  tCombine = 442,
262  tBSpline = 443,
263  tBezier = 444,
264  tNurbs = 445,
265  tNurbsOrder = 446,
266  tNurbsKnots = 447,
267  tColor = 448,
268  tColorTable = 449,
269  tFor = 450,
270  tIn = 451,
271  tEndFor = 452,
272  tIf = 453,
273  tElseIf = 454,
274  tElse = 455,
275  tEndIf = 456,
276  tExit = 457,
277  tAbort = 458,
278  tField = 459,
279  tReturn = 460,
280  tCall = 461,
281  tSlide = 462,
282  tMacro = 463,
283  tShow = 464,
284  tHide = 465,
285  tGetValue = 466,
287  tGetEnv = 468,
288  tGetString = 469,
289  tGetNumber = 470,
290  tUnique = 471,
291  tSetMaxTag = 472,
292  tHomology = 473,
293  tCohomology = 474,
294  tBetti = 475,
295  tExists = 476,
296  tFileExists = 477,
297  tGetForced = 478,
310  tAFFECTPLUS = 491,
311  tOR = 492,
312  tAND = 493,
313  tNOTEQUAL = 494,
314  tEQUAL = 495,
316  tLESSLESS = 497,
319  UNARYPREC = 500,
320  tMINUSMINUS = 501,
321  tPLUSPLUS = 502
322 };
323 #endif
324 /* Tokens. */
325 #define tDOUBLE 258
326 #define tSTRING 259
327 #define tBIGSTR 260
328 #define tEND 261
329 #define tAFFECT 262
330 #define tDOTS 263
331 #define tSCOPE 264
332 #define tPi 265
333 #define tMPI_Rank 266
334 #define tMPI_Size 267
335 #define tEuclidian 268
336 #define tCoordinates 269
337 #define tTestLevel 270
338 #define tExp 271
339 #define tLog 272
340 #define tLog10 273
341 #define tSqrt 274
342 #define tSin 275
343 #define tAsin 276
344 #define tCos 277
345 #define tAcos 278
346 #define tTan 279
347 #define tRand 280
348 #define tAtan 281
349 #define tAtan2 282
350 #define tSinh 283
351 #define tCosh 284
352 #define tTanh 285
353 #define tFabs 286
354 #define tAbs 287
355 #define tFloor 288
356 #define tCeil 289
357 #define tRound 290
358 #define tMin 291
359 #define tMax 292
360 #define tFmod 293
361 #define tModulo 294
362 #define tHypot 295
363 #define tList 296
364 #define tLinSpace 297
365 #define tLogSpace 298
366 #define tListFromFile 299
367 #define tCatenary 300
368 #define tPrintf 301
369 #define tError 302
370 #define tWarning 303
371 #define tStr 304
372 #define tSprintf 305
373 #define tStrCat 306
374 #define tStrPrefix 307
375 #define tStrRelative 308
376 #define tStrReplace 309
377 #define tAbsolutePath 310
378 #define tDirName 311
379 #define tStrSub 312
380 #define tStrLen 313
381 #define tFind 314
382 #define tStrFind 315
383 #define tStrCmp 316
384 #define tStrChoice 317
385 #define tUpperCase 318
386 #define tLowerCase 319
387 #define tLowerCaseIn 320
388 #define tTextAttributes 321
389 #define tBoundingBox 322
390 #define tDraw 323
391 #define tSetChanged 324
392 #define tToday 325
393 #define tFixRelativePath 326
394 #define tCurrentDirectory 327
395 #define tCurrentFileName 328
396 #define tSyncModel 329
397 #define tNewModel 330
398 #define tMass 331
399 #define tCenterOfMass 332
400 #define tMatrixOfInertia 333
401 #define tOnelabAction 334
402 #define tOnelabRun 335
403 #define tCodeName 336
404 #define tCpu 337
405 #define tMemory 338
406 #define tTotalMemory 339
407 #define tCreateTopology 340
408 #define tCreateGeometry 341
409 #define tClassifySurfaces 342
410 #define tRenumberMeshNodes 343
411 #define tRenumberMeshElements 344
412 #define tDistanceFunction 345
413 #define tDefineConstant 346
414 #define tUndefineConstant 347
415 #define tDefineNumber 348
416 #define tDefineStruct 349
417 #define tNameStruct 350
418 #define tDimNameSpace 351
419 #define tAppend 352
420 #define tDefineString 353
421 #define tSetNumber 354
422 #define tSetTag 355
423 #define tSetString 356
424 #define tPoint 357
425 #define tCircle 358
426 #define tEllipse 359
427 #define tCurve 360
428 #define tSphere 361
429 #define tPolarSphere 362
430 #define tSurface 363
431 #define tSpline 364
432 #define tVolume 365
433 #define tBox 366
434 #define tCylinder 367
435 #define tCone 368
436 #define tTorus 369
437 #define tEllipsoid 370
438 #define tQuadric 371
439 #define tShapeFromFile 372
440 #define tRectangle 373
441 #define tDisk 374
442 #define tWire 375
443 #define tGeoEntity 376
444 #define tCharacteristic 377
445 #define tLength 378
446 #define tParametric 379
447 #define tElliptic 380
448 #define tRefineMesh 381
449 #define tRecombineMesh 382
450 #define tAdaptMesh 383
451 #define tTransformMesh 384
452 #define tRelocateMesh 385
453 #define tReorientMesh 386
454 #define tSetFactory 387
455 #define tThruSections 388
456 #define tWedge 389
457 #define tFillet 390
458 #define tChamfer 391
459 #define tPlane 392
460 #define tRuled 393
461 #define tTransfinite 394
462 #define tPhysical 395
463 #define tCompound 396
464 #define tPeriodic 397
465 #define tParent 398
466 #define tUsing 399
467 #define tPlugin 400
468 #define tDegenerated 401
469 #define tRecursive 402
470 #define tSewing 403
471 #define tRotate 404
472 #define tTranslate 405
473 #define tSymmetry 406
474 #define tDilate 407
475 #define tExtrude 408
476 #define tLevelset 409
477 #define tAffine 410
478 #define tBooleanUnion 411
479 #define tBooleanIntersection 412
480 #define tBooleanDifference 413
481 #define tBooleanSection 414
482 #define tBooleanFragments 415
483 #define tThickSolid 416
484 #define tRecombine 417
485 #define tSmoother 418
486 #define tSplit 419
487 #define tDelete 420
488 #define tCoherence 421
489 #define tHealShapes 422
490 #define tIntersect 423
491 #define tMeshAlgorithm 424
492 #define tReverseMesh 425
493 #define tMeshSize 426
494 #define tMeshSizeFromBoundary 427
495 #define tLayers 428
496 #define tScaleLast 429
497 #define tHole 430
498 #define tAlias 431
499 #define tAliasWithOptions 432
500 #define tCopyOptions 433
501 #define tQuadTriAddVerts 434
502 #define tQuadTriNoNewVerts 435
503 #define tRecombLaterals 436
504 #define tTransfQuadTri 437
505 #define tText2D 438
506 #define tText3D 439
507 #define tInterpolationScheme 440
508 #define tTime 441
509 #define tCombine 442
510 #define tBSpline 443
511 #define tBezier 444
512 #define tNurbs 445
513 #define tNurbsOrder 446
514 #define tNurbsKnots 447
515 #define tColor 448
516 #define tColorTable 449
517 #define tFor 450
518 #define tIn 451
519 #define tEndFor 452
520 #define tIf 453
521 #define tElseIf 454
522 #define tElse 455
523 #define tEndIf 456
524 #define tExit 457
525 #define tAbort 458
526 #define tField 459
527 #define tReturn 460
528 #define tCall 461
529 #define tSlide 462
530 #define tMacro 463
531 #define tShow 464
532 #define tHide 465
533 #define tGetValue 466
534 #define tGetStringValue 467
535 #define tGetEnv 468
536 #define tGetString 469
537 #define tGetNumber 470
538 #define tUnique 471
539 #define tSetMaxTag 472
540 #define tHomology 473
541 #define tCohomology 474
542 #define tBetti 475
543 #define tExists 476
544 #define tFileExists 477
545 #define tGetForced 478
546 #define tGetForcedStr 479
547 #define tGMSH_MAJOR_VERSION 480
548 #define tGMSH_MINOR_VERSION 481
549 #define tGMSH_PATCH_VERSION 482
550 #define tGmshExecutableName 483
551 #define tSetPartition 484
552 #define tNameToString 485
553 #define tStringToName 486
554 #define tUnsplitWindow 487
555 #define tAFFECTDIVIDE 488
556 #define tAFFECTTIMES 489
557 #define tAFFECTMINUS 490
558 #define tAFFECTPLUS 491
559 #define tOR 492
560 #define tAND 493
561 #define tNOTEQUAL 494
562 #define tEQUAL 495
563 #define tGREATERGREATER 496
564 #define tLESSLESS 497
565 #define tGREATEROREQUAL 498
566 #define tLESSOREQUAL 499
567 #define UNARYPREC 500
568 #define tMINUSMINUS 501
569 #define tPLUSPLUS 502
570 
571 /* Copy the first part of user declarations. */
572 #line 1 "Gmsh.y"
573 
574 // Gmsh - Copyright (C) 1997-2022 C. Geuzaine, J.-F. Remacle
575 //
576 // See the LICENSE.txt file in the Gmsh root directory for license information.
577 // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues.
578 
579 #include "ColorTable.h"
580 #include "CommandLine.h"
581 #include "Context.h"
582 #include "CreateFile.h"
583 #include "ExtrudeParams.h"
584 #include "FunctionManager.h"
585 #include "GModel.h"
586 #include "GModelIO_GEO.h"
587 #include "GModelIO_OCC.h"
588 #include "GeoDefines.h"
589 #include "GmshConfig.h"
590 #include "GmshMessage.h"
591 #include "ListUtils.h"
592 #include "MallocUtils.h"
593 #include "Numeric.h"
594 #include "OS.h"
595 #include "OpenFile.h"
596 #include "Options.h"
597 #include "Parser.h"
598 #include "StringUtils.h"
599 #include "TreeUtils.h"
600 #include "fullMatrix.h"
601 #include "gmshLevelset.h"
602 #include "gmshSurface.h"
603 #include <map>
604 #include <sstream>
605 #include <stdarg.h>
606 #include <string.h>
607 #include <time.h>
608 
609 #if defined(HAVE_MESH)
610 #include "BackgroundMesh.h"
611 #include "Field.h"
612 #include "HighOrder.h"
613 #endif
614 
615 #if defined(HAVE_POST)
616 #include "PView.h"
617 #include "PViewDataList.h"
618 #endif
619 
620 #if defined(HAVE_PLUGINS)
621 #include "PluginManager.h"
622 #endif
623 
624 #if defined(HAVE_OPENGL)
625 #include "drawContext.h"
626 #endif
627 
628 #if defined(HAVE_FLTK)
629 #include "FlGui.h"
630 #endif
631 
632 #if defined(HAVE_POPPLER)
633 #include "gmshPopplerWrapper.h"
634 #endif
635 
636 #define MAX_RECUR_TESTS 100
637 #define MAX_RECUR_LOOPS 100
638 
639 // global parser variables
640 std::string gmsh_yyname;
643 std::map<std::string, gmsh_yysymbol> gmsh_yysymbols;
644 std::map<std::string, std::vector<std::string>> gmsh_yystringsymbols;
645 std::string gmsh_yyfactory;
647 
648 // static parser variables (accessible only in this file)
649 #if defined(HAVE_POST)
650 static PViewDataList *ViewData = 0;
651 #endif
652 static std::vector<double> ViewCoord;
653 static std::vector<double> *ViewValueList = 0;
654 static int *ViewNumList = 0;
658 static int ImbricatedLoop = 0, ImbricatedTest = 0;
663 static std::string struct_name, struct_namespace;
664 static int dim_entity;
665 
666 static std::map<std::string, std::vector<double>> floatOptions;
667 static std::map<std::string, std::vector<std::string>> charOptions;
669 
670 void init_options(int member_ValMax_ = 0)
671 {
672  floatOptions.clear();
673  charOptions.clear();
674  flag_Enum = 0;
675  member_ValMax = member_ValMax_;
676 }
677 
678 // parser functions defined at the end of this file
679 void yyerror(const char *s);
680 void yymsg(int level, const char *fmt, ...);
681 char *strsave(char *ptr);
682 void skip(const char *skip, const char *until);
683 void skipTest(const char *skip, const char *until, const char *until2, int l_until2_sub, int *type_until2);
684 void assignVariable(const std::string &name, int index, int assignType, double value);
685 void assignVariables(const std::string &name, List_T *indices, int assignType, List_T *values);
686 void incrementVariable(const std::string &name, int index, double value);
687 int printListOfDouble(char *format, List_T *list, char *buffer);
689 void ListOfDouble2Vector(List_T *list, std::vector<int> &v);
690 void ListOfDouble2Vector(List_T *list, std::vector<double> &v);
691 void ListOfShapes2VectorOfPairs(List_T *list, std::vector<std::pair<int, int>> &v);
692 void VectorOfPairs2ListOfShapes(const std::vector<std::pair<int, int>> &v, List_T *list);
693 void addPeriodicEdge(int, int, const std::vector<double> &);
694 void addPeriodicFace(int, int, const std::map<int, int> &);
695 void addPeriodicFace(int, int, const std::vector<double> &);
696 void computeAffineTransformation(SPoint3 &, SPoint3 &, double, SPoint3 &, std::vector<double> &);
697 void addEmbedded(int dim, std::vector<int> tags, int dim2, int tag2);
698 void removeEmbedded(const std::vector<std::pair<int, int>> &dimTags, int dim);
699 void getAllElementaryTags(int dim, List_T *in);
700 void getAllPhysicalTags(int dim, List_T *in);
701 void getElementaryTagsForPhysicalGroups(int dim, List_T *in, List_T *out);
702 void getElementaryTagsInBoundingBox(int dim, double x1, double y1, double z1, double x2, double y2, double z2,
703  List_T *out);
704 void getParentTags(int dim, List_T *in, List_T *out);
705 void getBoundingBox(int dim, List_T *in, List_T *out);
706 void setVisibility(int dim, int visible, bool recursive);
707 void setVisibility(const std::vector<std::pair<int, int>> &dimTags, int visible, bool recursive);
708 void setColor(const std::vector<std::pair<int, int>> &dimTags, unsigned int val, bool recursive);
709 
710 double treat_Struct_FullName_Float(char *c1, char *c2, int type_var = 1, int index = 0, double val_default = 0.,
711  int type_treat = 0);
712 double treat_Struct_FullName_dot_tSTRING_Float(char *c1, char *c2, char *c3, int index = 0, double val_default = 0.,
713  int type_treat = 0);
714 List_T *treat_Struct_FullName_dot_tSTRING_ListOfFloat(char *c1, char *c2, char *c3);
715 int treat_Struct_FullName_dot_tSTRING_Float_getDim(char *c1, char *c2, char *c3);
716 char *treat_Struct_FullName_String(char *c1, char *c2, int type_var = 1, int index = 0, char *val_default = nullptr,
717  int type_treat = 0);
718 char *treat_Struct_FullName_dot_tSTRING_String(char *c1, char *c2, char *c3, int index = 0, char *val_default = nullptr,
719  int type_treat = 0);
720 List_T *treat_Struct_FullName_dot_tSTRING_ListOfString(char *c1, char *c2, char *c3);
721 
723 {
724  double d;
725  char *s;
726 };
727 
728 /* Enabling traces. */
729 #ifndef YYDEBUG
730 #define YYDEBUG 0
731 #endif
732 
733 /* Enabling verbose error messages. */
734 #ifdef YYERROR_VERBOSE
735 #undef YYERROR_VERBOSE
736 #define YYERROR_VERBOSE 1
737 #else
738 #define YYERROR_VERBOSE 0
739 #endif
740 
741 /* Enabling the token table. */
742 #ifndef YYTOKEN_TABLE
743 #define YYTOKEN_TABLE 0
744 #endif
745 
746 #if !defined YYSTYPE && !defined YYSTYPE_IS_DECLARED
747 typedef union YYSTYPE
748 #line 169 "Gmsh.y"
749 {
750  char *c;
751  int i;
752  unsigned int u;
753  double d;
754  double v[5];
757  struct TwoChar c2;
758 }
759 /* Line 193 of yacc.c. */
760 #line 777 "Gmsh.tab.cpp"
762 #define yystype YYSTYPE /* obsolescent; will be withdrawn */
763 #define YYSTYPE_IS_DECLARED 1
764 #define YYSTYPE_IS_TRIVIAL 1
765 #endif
766 
767 /* Copy the second part of user declarations. */
768 
769 /* Line 216 of yacc.c. */
770 #line 790 "Gmsh.tab.cpp"
771 
772 #ifdef short
773 #undef short
774 #endif
775 
776 #ifdef YYTYPE_UINT8
777 typedef YYTYPE_UINT8 yytype_uint8;
778 #else
779 typedef unsigned char yytype_uint8;
780 #endif
781 
782 #ifdef YYTYPE_INT8
783 typedef YYTYPE_INT8 yytype_int8;
784 #elif (defined __STDC__ || defined __C99__FUNC__ || defined __cplusplus || defined _MSC_VER)
785 typedef signed char yytype_int8;
786 #else
787 typedef short int yytype_int8;
788 #endif
789 
790 #ifdef YYTYPE_UINT16
791 typedef YYTYPE_UINT16 yytype_uint16;
792 #else
793 typedef unsigned short int yytype_uint16;
794 #endif
795 
796 #ifdef YYTYPE_INT16
797 typedef YYTYPE_INT16 yytype_int16;
798 #else
799 typedef short int yytype_int16;
800 #endif
801 
802 #ifndef YYSIZE_T
803 #ifdef __SIZE_TYPE__
804 #define YYSIZE_T __SIZE_TYPE__
805 #elif defined size_t
806 #define YYSIZE_T size_t
807 #elif !defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ || defined __cplusplus || defined _MSC_VER)
808 #include <stddef.h> /* INFRINGES ON USER NAME SPACE */
809 #define YYSIZE_T size_t
810 #else
811 #define YYSIZE_T unsigned int
812 #endif
813 #endif
814 
815 #define YYSIZE_MAXIMUM ((YYSIZE_T)-1)
816 
817 #ifndef YY_
818 #if defined YYENABLE_NLS && YYENABLE_NLS
819 #if ENABLE_NLS
820 #include <libintl.h> /* INFRINGES ON USER NAME SPACE */
821 #define YY_(msgid) dgettext("bison-runtime", msgid)
822 #endif
823 #endif
824 #ifndef YY_
825 #define YY_(msgid) msgid
826 #endif
827 #endif
828 
829 /* Suppress unused-variable warnings by "using" E. */
830 #if !defined lint || defined __GNUC__
831 #define YYUSE(e) ((void)(e))
832 #else
833 #define YYUSE(e) /* empty */
834 #endif
835 
836 /* Identity function, used to suppress warnings about constant conditions. */
837 #ifndef lint
838 #define YYID(n) (n)
839 #else
840 #if (defined __STDC__ || defined __C99__FUNC__ || defined __cplusplus || defined _MSC_VER)
841 static int YYID(int i)
842 #else
843 static int YYID(i) int i;
844 #endif
845 {
846  return i;
847 }
848 #endif
849 
850 #if !defined yyoverflow || YYERROR_VERBOSE
851 
852 /* The parser invokes alloca or malloc; define the necessary symbols. */
853 
854 #ifdef YYSTACK_USE_ALLOCA
855 #if YYSTACK_USE_ALLOCA
856 #ifdef __GNUC__
857 #define YYSTACK_ALLOC __builtin_alloca
858 #elif defined __BUILTIN_VA_ARG_INCR
859 #include <alloca.h> /* INFRINGES ON USER NAME SPACE */
860 #elif defined _AIX
861 #define YYSTACK_ALLOC __alloca
862 #elif defined _MSC_VER
863 #include <malloc.h> /* INFRINGES ON USER NAME SPACE */
864 #define alloca _alloca
865 #else
866 #define YYSTACK_ALLOC alloca
867 #if !defined _ALLOCA_H && !defined _STDLIB_H && \
868  (defined __STDC__ || defined __C99__FUNC__ || defined __cplusplus || defined _MSC_VER)
869 #include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
870 #ifndef _STDLIB_H
871 #define _STDLIB_H 1
872 #endif
873 #endif
874 #endif
875 #endif
876 #endif
877 
878 #ifdef YYSTACK_ALLOC
879 /* Pacify GCC's `empty if-body' warning. */
880 #define YYSTACK_FREE(Ptr) \
881  do \
882  { /* empty */ \
883  ; \
884  } while (YYID(0))
885 #ifndef YYSTACK_ALLOC_MAXIMUM
886 /* The OS might guarantee only one guard page at the bottom of the stack,
887  and a page size can be as small as 4096 bytes. So we cannot safely
888  invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
889  to allow for a few compiler-allocated temporary stack slots. */
890 #define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
891 #endif
892 #else
893 #define YYSTACK_ALLOC YYMALLOC
894 #define YYSTACK_FREE YYFREE
895 #ifndef YYSTACK_ALLOC_MAXIMUM
896 #define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
897 #endif
898 #if (defined __cplusplus && !defined _STDLIB_H && \
899  !((defined YYMALLOC || defined malloc) && (defined YYFREE || defined free)))
900 #include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
901 #ifndef _STDLIB_H
902 #define _STDLIB_H 1
903 #endif
904 #endif
905 #ifndef YYMALLOC
906 #define YYMALLOC malloc
907 #if !defined malloc && !defined _STDLIB_H && \
908  (defined __STDC__ || defined __C99__FUNC__ || defined __cplusplus || defined _MSC_VER)
909 void *malloc(YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
910 #endif
911 #endif
912 #ifndef YYFREE
913 #define YYFREE free
914 #if !defined free && !defined _STDLIB_H && \
915  (defined __STDC__ || defined __C99__FUNC__ || defined __cplusplus || defined _MSC_VER)
916 void free(void *); /* INFRINGES ON USER NAME SPACE */
917 #endif
918 #endif
919 #endif
920 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
921 
922 #if (!defined yyoverflow && (!defined __cplusplus || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
923 
924 /* A type that is properly aligned for any stack member. */
925 union yyalloc
926 {
929 };
930 
931 /* The size of the maximum gap between one aligned stack and the next. */
932 #define YYSTACK_GAP_MAXIMUM (sizeof(union yyalloc) - 1)
933 
934 /* The size of an array large to enough to hold all stacks, each with
935  N elements. */
936 #define YYSTACK_BYTES(N) ((N) * (sizeof(yytype_int16) + sizeof(YYSTYPE)) + YYSTACK_GAP_MAXIMUM)
937 
938 /* Copy COUNT objects from FROM to TO. The source and destination do
939  not overlap. */
940 #ifndef YYCOPY
941 #if defined __GNUC__ && 1 < __GNUC__
942 #define YYCOPY(To, From, Count) __builtin_memcpy(To, From, (Count) * sizeof(*(From)))
943 #else
944 #define YYCOPY(To, From, Count) \
945  do \
946  { \
947  YYSIZE_T yyi; \
948  for (yyi = 0; yyi < (Count); yyi++) \
949  (To)[yyi] = (From)[yyi]; \
950  } while (YYID(0))
951 #endif
952 #endif
953 
954 /* Relocate STACK from its old location to the new one. The
955  local variables YYSIZE and YYSTACKSIZE give the old and new number of
956  elements in the stack, and YYPTR gives the new location of the
957  stack. Advance YYPTR to a properly aligned location for the next
958  stack. */
959 #define YYSTACK_RELOCATE(Stack) \
960  do \
961  { \
962  YYSIZE_T yynewbytes; \
963  YYCOPY(&yyptr->Stack, Stack, yysize); \
964  Stack = &yyptr->Stack; \
965  yynewbytes = yystacksize * sizeof(*Stack) + YYSTACK_GAP_MAXIMUM; \
966  yyptr += yynewbytes / sizeof(*yyptr); \
967  } while (YYID(0))
968 
969 #endif
970 
971 /* YYFINAL -- State number of the termination state. */
972 #define YYFINAL 5
973 /* YYLAST -- Last index in YYTABLE. */
974 #define YYLAST 18049
975 
976 /* YYNTOKENS -- Number of terminals. */
977 #define YYNTOKENS 270
978 /* YYNNTS -- Number of nonterminals. */
979 #define YYNNTS 114
980 /* YYNRULES -- Number of rules. */
981 #define YYNRULES 642
982 /* YYNRULES -- Number of states. */
983 #define YYNSTATES 2296
984 
985 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
986 #define YYUNDEFTOK 2
987 #define YYMAXUTOK 502
988 
989 #define YYTRANSLATE(YYX) ((unsigned int)(YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
990 
991 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
992 static const yytype_uint16 yytranslate[] = {
993  0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
994  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 255, 2, 267, 2, 252, 254, 2, 260, 261, 250, 248, 269, 249,
995  266, 251, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 242, 2, 243, 237, 2, 2, 2, 2, 2,
996  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 262,
997  2, 263, 259, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
998  2, 2, 2, 2, 2, 2, 2, 2, 264, 253, 265, 268, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
999  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1000  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1001  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1002  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1003  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1004  2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
1005  21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
1006  44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
1007  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1008  90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
1009  113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
1010  136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
1011  159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
1012  182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
1013  205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
1014  228, 229, 230, 231, 232, 233, 234, 235, 236, 238, 239, 240, 241, 244, 245, 246, 247, 256, 257, 258};
1015 
1016 #if YYDEBUG
1017 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
1018  YYRHS. */
1019 static const yytype_uint16 yyprhs[] = {
1020  0, 0, 3, 5, 8, 9, 12, 14, 16, 18, 24, 26, 28, 30, 32, 34, 36, 38, 40,
1021  42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 66, 72, 78, 86, 94, 102, 110, 120, 127,
1022  134, 141, 150, 151, 154, 157, 160, 163, 166, 169, 171, 175, 177, 181, 182, 183, 194, 196, 200,
1023  201, 215, 217, 221, 222, 238, 247, 262, 263, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288,
1024  290, 292, 294, 296, 298, 300, 302, 308, 314, 317, 325, 333, 338, 342, 349, 359, 367, 374, 382,
1025  389, 394, 403, 413, 423, 430, 440, 447, 457, 463, 472, 481, 493, 500, 510, 516, 524, 534, 544,
1026  556, 564, 574, 584, 585, 587, 588, 592, 598, 599, 609, 610, 622, 628, 629, 639, 640, 644, 648,
1027  654, 660, 661, 664, 665, 667, 669, 673, 676, 679, 682, 684, 689, 692, 695, 696, 699, 701, 705,
1028  708, 711, 714, 717, 720, 722, 724, 728, 729, 735, 741, 747, 748, 751, 752, 755, 763, 771, 779,
1029  790, 801, 810, 819, 827, 835, 847, 855, 864, 873, 882, 892, 901, 910, 914, 919, 930, 938, 946,
1030  954, 962, 970, 978, 986, 994, 1002, 1010, 1020, 1028, 1036, 1045, 1054, 1067, 1068, 1078, 1080, 1082, 1084,
1031  1086, 1091, 1093, 1095, 1097, 1102, 1104, 1106, 1111, 1113, 1115, 1117, 1122, 1128, 1140, 1146, 1156, 1166, 1174,
1032  1179, 1189, 1200, 1210, 1212, 1214, 1215, 1218, 1225, 1233, 1241, 1248, 1256, 1265, 1276, 1291, 1308, 1321, 1336,
1033  1351, 1366, 1381, 1390, 1399, 1406, 1411, 1417, 1423, 1430, 1437, 1441, 1446, 1450, 1456, 1463, 1469, 1474, 1478,
1034  1483, 1487, 1492, 1498, 1503, 1509, 1513, 1519, 1527, 1535, 1539, 1542, 1550, 1554, 1557, 1560, 1563, 1566, 1569,
1035  1585, 1588, 1591, 1599, 1602, 1612, 1624, 1627, 1632, 1635, 1638, 1641, 1644, 1661, 1667, 1676, 1688, 1695, 1704,
1036  1713, 1724, 1726, 1729, 1732, 1734, 1738, 1742, 1747, 1752, 1754, 1756, 1762, 1774, 1788, 1789, 1797, 1798, 1812,
1037  1813, 1829, 1830, 1837, 1847, 1850, 1854, 1865, 1879, 1881, 1884, 1890, 1898, 1901, 1904, 1908, 1911, 1915, 1918,
1038  1922, 1932, 1939, 1941, 1943, 1945, 1947, 1949, 1950, 1953, 1957, 1961, 1966, 1976, 1981, 1996, 1997, 2001, 2002,
1039  2004, 2005, 2008, 2009, 2012, 2013, 2016, 2022, 2029, 2037, 2044, 2050, 2054, 2063, 2070, 2079, 2088, 2094, 2099,
1040  2106, 2118, 2130, 2149, 2168, 2181, 2194, 2207, 2218, 2223, 2228, 2233, 2238, 2243, 2250, 2253, 2257, 2264, 2267,
1041  2269, 2271, 2273, 2276, 2282, 2290, 2301, 2303, 2307, 2310, 2313, 2316, 2320, 2324, 2328, 2332, 2336, 2340, 2344,
1042  2348, 2352, 2356, 2360, 2364, 2368, 2372, 2376, 2380, 2384, 2388, 2394, 2399, 2404, 2409, 2414, 2419, 2424, 2429,
1043  2434, 2439, 2444, 2451, 2456, 2461, 2466, 2471, 2476, 2481, 2486, 2491, 2498, 2505, 2512, 2517, 2524, 2531, 2533,
1044  2535, 2537, 2539, 2541, 2543, 2545, 2547, 2549, 2551, 2553, 2554, 2561, 2563, 2568, 2575, 2577, 2582, 2587, 2592,
1045  2599, 2605, 2613, 2622, 2633, 2638, 2643, 2650, 2655, 2659, 2662, 2668, 2674, 2678, 2684, 2691, 2700, 2707, 2716,
1046  2723, 2728, 2736, 2743, 2750, 2757, 2762, 2769, 2774, 2775, 2778, 2779, 2782, 2783, 2791, 2793, 2797, 2799, 2802,
1047  2803, 2807, 2809, 2812, 2815, 2819, 2823, 2835, 2845, 2853, 2861, 2863, 2867, 2869, 2871, 2874, 2878, 2883, 2889,
1048  2891, 2895, 2897, 2900, 2904, 2908, 2914, 2919, 2924, 2927, 2932, 2935, 2939, 2943, 2948, 2954, 2960, 2966, 2972,
1049  2978, 2980, 2982, 2984, 2988, 2994, 3002, 3007, 3012, 3017, 3024, 3031, 3040, 3049, 3054, 3069, 3074, 3079, 3081,
1050  3083, 3087, 3091, 3101, 3109, 3111, 3117, 3121, 3128, 3130, 3134, 3136, 3138, 3143, 3148, 3152, 3158, 3165, 3174,
1051  3181, 3186, 3192, 3194, 3199, 3201, 3203, 3205, 3207, 3212, 3219, 3224, 3231, 3237, 3245, 3250, 3255, 3260, 3269,
1052  3274, 3279, 3284, 3289, 3298, 3307, 3314, 3319, 3326, 3331, 3333, 3335, 3340, 3345, 3346, 3353, 3358, 3361, 3366,
1053  3371, 3373, 3375, 3379, 3381, 3383, 3387, 3391, 3395, 3401, 3409, 3415, 3421, 3430, 3432, 3434};
1054 
1055 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
1056 static const yytype_int16 yyrhs[] = {
1057  271, 0, -1, 272, -1, 1, 6, -1, -1, 272, 273, -1, 275, -1, 276, -1, 297, -1, 132, 260, 373, 261, 6,
1058  -1, 316, -1, 322, -1, 326, -1, 327, -1, 328, -1, 329, -1, 333, -1, 342, -1, 343, -1, 349, -1, 350, -1,
1059  332, -1, 331, -1, 330, -1, 325, -1, 352, -1, 243, -1, 244, -1, 46, 260, 373, 261, 6, -1, 48, 260, 373,
1060  261, 6, -1, 47, 260, 373, 261, 6, -1, 46, 260, 373, 261, 274, 373, 6, -1, 46, 260, 373, 269, 369, 261,
1061  6, -1, 48, 260, 373, 269, 369, 261, 6, -1, 47, 260, 373, 269, 369, 261, 6, -1, 46, 260, 373, 269, 369,
1062  261, 274, 373, 6, -1, 383, 373, 264, 277, 265, 6, -1, 176, 4, 262, 353, 263, 6, -1, 177, 4, 262, 353,
1063  263, 6, -1, 178, 4, 262, 353, 269, 353, 263, 6, -1, -1, 277, 280, -1, 277, 284, -1, 277, 287, -1, 277,
1064  289, -1, 277, 290, -1, 277, 332, -1, 353, -1, 278, 269, 353, -1, 353, -1, 279, 269, 353, -1, -1, -1, 4,
1065  281, 260, 278, 261, 282, 264, 279, 265, 6, -1, 373, -1, 283, 269, 373, -1, -1, 183, 260, 353, 269, 353, 269,
1066  353, 261, 285, 264, 283, 265, 6, -1, 373, -1, 286, 269, 373, -1, -1, 184, 260, 353, 269, 353, 269, 353, 269,
1067  353, 261, 288, 264, 286, 265, 6, -1, 185, 264, 365, 265, 264, 365, 265, 6, -1, 185, 264, 365, 265, 264, 365,
1068  265, 264, 365, 265, 264, 365, 265, 6, -1, -1, 186, 291, 264, 279, 265, 6, -1, 7, -1, 236, -1, 235, -1,
1069  234, -1, 233, -1, 258, -1, 257, -1, 260, -1, 262, -1, 261, -1, 263, -1, 4, -1, 36, -1, 37, -1, 111,
1070  -1, 112, -1, 91, 262, 299, 263, 6, -1, 92, 262, 303, 263, 6, -1, 358, 6, -1, 99, 294, 374, 269, 353,
1071  295, 6, -1, 101, 294, 374, 269, 374, 295, 6, -1, 383, 292, 366, 6, -1, 383, 293, 6, -1, 383, 294, 295,
1072  292, 366, 6, -1, 383, 294, 264, 369, 265, 295, 292, 366, 6, -1, 383, 262, 353, 263, 292, 353, 6, -1, 383,
1073  262, 353, 263, 293, 6, -1, 383, 260, 353, 261, 292, 353, 6, -1, 383, 260, 353, 261, 293, 6, -1, 383, 7,
1074  374, 6, -1, 383, 294, 295, 7, 49, 294, 295, 6, -1, 383, 294, 295, 7, 49, 294, 378, 295, 6, -1, 383,
1075  294, 295, 236, 49, 294, 378, 295, 6, -1, 383, 266, 296, 7, 374, 6, -1, 383, 262, 353, 263, 266, 296, 7,
1076  374, 6, -1, 383, 266, 296, 292, 353, 6, -1, 383, 262, 353, 263, 266, 296, 292, 353, 6, -1, 383, 266, 296,
1077  293, 6, -1, 383, 262, 353, 263, 266, 296, 293, 6, -1, 383, 266, 193, 266, 296, 7, 370, 6, -1, 383, 262,
1078  353, 263, 266, 193, 266, 296, 7, 370, 6, -1, 383, 266, 194, 7, 371, 6, -1, 383, 262, 353, 263, 266, 194,
1079  7, 371, 6, -1, 383, 204, 7, 366, 6, -1, 204, 262, 353, 263, 7, 296, 6, -1, 204, 262, 353, 263, 266,
1080  296, 7, 353, 6, -1, 204, 262, 353, 263, 266, 296, 7, 374, 6, -1, 204, 262, 353, 263, 266, 296, 7, 264,
1081  369, 265, 6, -1, 204, 262, 353, 263, 266, 296, 6, -1, 145, 260, 4, 261, 266, 296, 7, 353, 6, -1, 145,
1082  260, 4, 261, 266, 296, 7, 374, 6, -1, -1, 269, -1, -1, 299, 298, 383, -1, 299, 298, 383, 7, 353, -1,
1083  -1, 299, 298, 383, 7, 264, 366, 300, 305, 265, -1, -1, 299, 298, 383, 294, 295, 7, 264, 366, 301, 305, 265,
1084  -1, 299, 298, 383, 7, 374, -1, -1, 299, 298, 383, 7, 264, 374, 302, 309, 265, -1, -1, 303, 298, 373, -1,
1085  353, 7, 374, -1, 304, 269, 353, 7, 374, -1, 368, 7, 383, 260, 261, -1, -1, 269, 307, -1, -1, 307, -1,
1086  308, -1, 307, 269, 308, -1, 4, 366, -1, 36, 353, -1, 37, 353, -1, 4, -1, 4, 264, 304, 265, -1, 4,
1087  374, -1, 4, 377, -1, -1, 269, 310, -1, 311, -1, 310, 269, 311, -1, 4, 353, -1, 4, 374, -1, 208, 374,
1088  -1, 4, 379, -1, 4, 377, -1, 353, -1, 374, -1, 374, 269, 353, -1, -1, 196, 106, 264, 353, 265, -1, 144,
1089  102, 264, 369, 265, -1, 144, 121, 264, 369, 265, -1, -1, 137, 363, -1, -1, 144, 148, -1, 102, 260, 353, 261,
1090  7, 363, 6, -1, 105, 260, 353, 261, 7, 366, 6, -1, 109, 260, 353, 261, 7, 366, 6, -1, 141, 109, 260,
1091  353, 261, 7, 366, 144, 353, 6, -1, 141, 188, 260, 353, 261, 7, 366, 144, 353, 6, -1, 103, 260, 353, 261,
1092  7, 366, 314, 6, -1, 104, 260, 353, 261, 7, 366, 314, 6, -1, 188, 260, 353, 261, 7, 366, 6, -1, 189,
1093  260, 353, 261, 7, 366, 6, -1, 190, 260, 353, 261, 7, 366, 192, 366, 191, 353, 6, -1, 120, 260, 353, 261,
1094  7, 366, 6, -1, 105, 4, 260, 353, 261, 7, 366, 6, -1, 137, 108, 260, 353, 261, 7, 366, 6, -1, 108,
1095  260, 353, 261, 7, 366, 313, 6, -1, 138, 108, 260, 353, 261, 7, 366, 313, 6, -1, 188, 108, 260, 353, 261,
1096  7, 366, 6, -1, 189, 108, 260, 353, 261, 7, 366, 6, -1, 13, 14, 6, -1, 14, 108, 353, 6, -1, 124,
1097  108, 260, 353, 261, 7, 5, 5, 5, 6, -1, 106, 260, 353, 261, 7, 366, 6, -1, 107, 260, 353, 261, 7,
1098  366, 6, -1, 111, 260, 353, 261, 7, 366, 6, -1, 114, 260, 353, 261, 7, 366, 6, -1, 118, 260, 353, 261,
1099  7, 366, 6, -1, 119, 260, 353, 261, 7, 366, 6, -1, 112, 260, 353, 261, 7, 366, 6, -1, 113, 260, 353,
1100  261, 7, 366, 6, -1, 134, 260, 353, 261, 7, 366, 6, -1, 161, 260, 353, 261, 7, 366, 6, -1, 108, 4,
1101  260, 353, 261, 7, 366, 315, 6, -1, 110, 260, 353, 261, 7, 366, 6, -1, 133, 260, 353, 261, 7, 366, 6,
1102  -1, 138, 133, 260, 353, 261, 7, 366, 6, -1, 141, 319, 260, 353, 261, 7, 366, 6, -1, 141, 319, 260, 353,
1103  261, 7, 366, 4, 264, 365, 265, 6, -1, -1, 140, 318, 317, 260, 312, 261, 292, 366, 6, -1, 102, -1, 105,
1104  -1, 108, -1, 110, -1, 121, 264, 353, 265, -1, 105, -1, 108, -1, 110, -1, 121, 264, 353, 265, -1, 105, -1,
1105  108, -1, 121, 264, 353, 265, -1, 102, -1, 105, -1, 108, -1, 121, 264, 353, 265, -1, 150, 363, 264, 323, 265,
1106  -1, 149, 264, 363, 269, 363, 269, 353, 265, 264, 323, 265, -1, 151, 363, 264, 323, 265, -1, 152, 264, 363, 269,
1107  353, 265, 264, 323, 265, -1, 152, 264, 363, 269, 363, 265, 264, 323, 265, -1, 155, 264, 369, 265, 264, 323, 265,
1108  -1, 4, 264, 323, 265, -1, 168, 105, 264, 369, 265, 108, 264, 353, 265, -1, 164, 105, 264, 353, 265, 102, 264,
1109  369, 265, 6, -1, 164, 105, 260, 353, 261, 264, 369, 265, 6, -1, 324, -1, 322, -1, -1, 324, 316, -1, 324,
1110  318, 264, 369, 265, 6, -1, 324, 140, 318, 264, 369, 265, 6, -1, 324, 143, 318, 264, 369, 265, 6, -1, 324,
1111  318, 264, 8, 265, 6, -1, 324, 140, 318, 264, 8, 265, 6, -1, 154, 137, 260, 353, 261, 7, 366, 6, -1,
1112  154, 102, 260, 353, 261, 7, 264, 365, 265, 6, -1, 154, 137, 260, 353, 261, 7, 264, 363, 269, 363, 269, 369,
1113  265, 6, -1, 154, 137, 260, 353, 261, 7, 264, 363, 269, 363, 269, 363, 269, 369, 265, 6, -1, 154, 106, 260,
1114  353, 261, 7, 264, 363, 269, 369, 265, 6, -1, 154, 112, 260, 353, 261, 7, 264, 363, 269, 363, 269, 369, 265,
1115  6, -1, 154, 113, 260, 353, 261, 7, 264, 363, 269, 363, 269, 369, 265, 6, -1, 154, 115, 260, 353, 261, 7,
1116  264, 363, 269, 363, 269, 369, 265, 6, -1, 154, 116, 260, 353, 261, 7, 264, 363, 269, 363, 269, 369, 265, 6,
1117  -1, 154, 4, 260, 353, 261, 7, 366, 6, -1, 154, 4, 260, 353, 261, 7, 5, 6, -1, 154, 4, 264, 353,
1118  265, 6, -1, 165, 264, 324, 265, -1, 147, 165, 264, 324, 265, -1, 165, 4, 264, 324, 265, -1, 165, 204, 262,
1119  353, 263, 6, -1, 165, 4, 262, 353, 263, 6, -1, 165, 383, 6, -1, 165, 4, 4, 6, -1, 165, 94, 6,
1120  -1, 193, 370, 264, 324, 265, -1, 147, 193, 370, 264, 324, 265, -1, 229, 353, 264, 324, 265, -1, 209, 264, 8,
1121  265, -1, 209, 5, 6, -1, 210, 264, 8, 265, -1, 210, 5, 6, -1, 209, 264, 324, 265, -1, 147, 209, 264,
1122  324, 265, -1, 210, 264, 324, 265, -1, 147, 210, 264, 324, 265, -1, 383, 374, 6, -1, 80, 260, 380, 261, 6,
1123  -1, 383, 383, 262, 353, 263, 373, 6, -1, 383, 383, 383, 262, 353, 263, 6, -1, 383, 353, 6, -1, 232, 6,
1124  -1, 145, 260, 4, 261, 266, 4, 6, -1, 187, 4, 6, -1, 202, 6, -1, 203, 6, -1, 74, 6, -1, 75,
1125  6, -1, 67, 6, -1, 67, 264, 353, 269, 353, 269, 353, 269, 353, 269, 353, 269, 353, 265, 6, -1, 68, 6,
1126  -1, 69, 6, -1, 85, 264, 353, 269, 353, 265, 6, -1, 85, 6, -1, 87, 264, 353, 269, 353, 269, 353, 265,
1127  6, -1, 87, 264, 353, 269, 353, 269, 353, 269, 353, 265, 6, -1, 86, 6, -1, 86, 264, 324, 265, -1, 88,
1128  6, -1, 89, 6, -1, 126, 6, -1, 127, 6, -1, 128, 264, 369, 265, 264, 369, 265, 264, 365, 265, 264, 353,
1129  269, 353, 265, 6, -1, 129, 264, 369, 265, 6, -1, 129, 264, 369, 265, 264, 323, 265, 6, -1, 207, 260, 264,
1130  369, 265, 269, 374, 269, 374, 261, 6, -1, 195, 260, 353, 8, 353, 261, -1, 195, 260, 353, 8, 353, 8, 353,
1131  261, -1, 195, 4, 196, 264, 353, 8, 353, 265, -1, 195, 4, 196, 264, 353, 8, 353, 8, 353, 265, -1, 197,
1132  -1, 208, 4, -1, 208, 374, -1, 205, -1, 206, 383, 6, -1, 206, 374, 6, -1, 198, 260, 353, 261, -1, 199,
1133  260, 353, 261, -1, 200, -1, 201, -1, 153, 363, 264, 324, 265, -1, 153, 264, 363, 269, 363, 269, 353, 265, 264,
1134  324, 265, -1, 153, 264, 363, 269, 363, 269, 363, 269, 353, 265, 264, 324, 265, -1, -1, 153, 363, 264, 324, 334,
1135  338, 265, -1, -1, 153, 264, 363, 269, 363, 269, 353, 265, 264, 324, 335, 338, 265, -1, -1, 153, 264, 363, 269,
1136  363, 269, 363, 269, 353, 265, 264, 324, 336, 338, 265, -1, -1, 153, 264, 324, 337, 338, 265, -1, 153, 264, 324,
1137  265, 144, 120, 264, 353, 265, -1, 133, 366, -1, 138, 133, 366, -1, 135, 264, 369, 265, 264, 369, 265, 264, 369,
1138  265, -1, 136, 264, 369, 265, 264, 369, 265, 264, 369, 265, 264, 369, 265, -1, 339, -1, 338, 339, -1, 173, 264,
1139  353, 265, 6, -1, 173, 264, 366, 269, 366, 265, 6, -1, 174, 6, -1, 162, 6, -1, 162, 353, 6, -1, 179,
1140  6, -1, 179, 181, 6, -1, 180, 6, -1, 180, 181, 6, -1, 175, 260, 353, 261, 7, 366, 144, 353, 6, -1,
1141  144, 4, 262, 353, 263, 6, -1, 156, -1, 157, -1, 158, -1, 159, -1, 160, -1, -1, 165, 6, -1, 147, 165,
1142  6, -1, 165, 353, 6, -1, 147, 165, 353, 6, -1, 340, 264, 324, 341, 265, 264, 324, 341, 265, -1, 117, 260,
1143  373, 261, -1, 340, 260, 353, 261, 7, 264, 324, 341, 265, 264, 324, 341, 265, 6, -1, -1, 144, 4, 353, -1,
1144  -1, 4, -1, -1, 7, 366, -1, -1, 7, 353, -1, -1, 155, 366, -1, 171, 367, 7, 353, 6, -1, 122, 123,
1145  367, 7, 353, 6, -1, 139, 105, 367, 7, 353, 344, 6, -1, 139, 108, 367, 346, 345, 6, -1, 139, 110, 367,
1146  346, 6, -1, 182, 367, 6, -1, 100, 318, 260, 353, 269, 353, 261, 6, -1, 217, 318, 260, 353, 261, 6, -1,
1147  169, 108, 264, 369, 265, 7, 353, 6, -1, 172, 108, 264, 369, 265, 7, 353, 6, -1, 162, 108, 367, 347, 6,
1148  -1, 162, 110, 367, 6, -1, 163, 108, 367, 7, 353, 6, -1, 142, 105, 264, 369, 265, 7, 264, 369, 265, 348,
1149  6, -1, 142, 108, 264, 369, 265, 7, 264, 369, 265, 348, 6, -1, 142, 105, 264, 369, 265, 7, 264, 369, 265,
1150  149, 264, 363, 269, 363, 269, 353, 265, 6, -1, 142, 108, 264, 369, 265, 7, 264, 369, 265, 149, 264, 363, 269,
1151  363, 269, 353, 265, 6, -1, 142, 105, 264, 369, 265, 7, 264, 369, 265, 150, 363, 6, -1, 142, 108, 264, 369,
1152  265, 7, 264, 369, 265, 150, 363, 6, -1, 142, 108, 353, 264, 369, 265, 7, 353, 264, 369, 265, 6, -1, 318,
1153  264, 369, 265, 196, 318, 264, 353, 265, 6, -1, 170, 320, 367, 6, -1, 130, 321, 367, 6, -1, 131, 110, 366,
1154  6, -1, 146, 105, 366, 6, -1, 141, 319, 366, 6, -1, 141, 319, 366, 169, 353, 6, -1, 166, 6, -1, 166,
1155  4, 6, -1, 166, 102, 264, 369, 265, 6, -1, 167, 6, -1, 218, -1, 219, -1, 220, -1, 351, 6, -1, 351,
1156  264, 366, 265, 6, -1, 351, 264, 366, 269, 366, 265, 6, -1, 351, 260, 366, 261, 264, 366, 269, 366, 265, 6,
1157  -1, 354, -1, 260, 353, 261, -1, 249, 353, -1, 248, 353, -1, 255, 353, -1, 353, 249, 353, -1, 353, 248, 353,
1158  -1, 353, 250, 353, -1, 353, 251, 353, -1, 353, 253, 353, -1, 353, 254, 353, -1, 353, 252, 353, -1, 353, 259,
1159  353, -1, 353, 242, 353, -1, 353, 243, 353, -1, 353, 247, 353, -1, 353, 246, 353, -1, 353, 241, 353, -1, 353,
1160  240, 353, -1, 353, 239, 353, -1, 353, 238, 353, -1, 353, 244, 353, -1, 353, 245, 353, -1, 353, 237, 353, 8,
1161  353, -1, 16, 294, 353, 295, -1, 17, 294, 353, 295, -1, 18, 294, 353, 295, -1, 19, 294, 353, 295, -1, 20,
1162  294, 353, 295, -1, 21, 294, 353, 295, -1, 22, 294, 353, 295, -1, 23, 294, 353, 295, -1, 24, 294, 353, 295,
1163  -1, 26, 294, 353, 295, -1, 27, 294, 353, 269, 353, 295, -1, 28, 294, 353, 295, -1, 29, 294, 353, 295, -1,
1164  30, 294, 353, 295, -1, 31, 294, 353, 295, -1, 32, 294, 353, 295, -1, 33, 294, 353, 295, -1, 34, 294, 353,
1165  295, -1, 35, 294, 353, 295, -1, 38, 294, 353, 269, 353, 295, -1, 39, 294, 353, 269, 353, 295, -1, 40, 294,
1166  353, 269, 353, 295, -1, 25, 294, 353, 295, -1, 37, 294, 353, 269, 353, 295, -1, 36, 294, 353, 269, 353, 295,
1167  -1, 3, -1, 10, -1, 15, -1, 11, -1, 12, -1, 225, -1, 226, -1, 227, -1, 82, -1, 83, -1, 84, -1,
1168  -1, 93, 294, 353, 355, 305, 295, -1, 358, -1, 215, 294, 373, 295, -1, 215, 294, 373, 269, 353, 295, -1, 360,
1169  -1, 383, 262, 353, 263, -1, 383, 260, 353, 261, -1, 221, 260, 360, 261, -1, 221, 260, 360, 266, 296, 261, -1,
1170  223, 260, 360, 356, 261, -1, 223, 260, 360, 266, 296, 356, 261, -1, 223, 260, 360, 294, 353, 295, 356, 261, -1,
1171  223, 260, 360, 266, 296, 294, 353, 295, 356, 261, -1, 222, 260, 374, 261, -1, 267, 383, 294, 295, -1, 267, 360,
1172  266, 296, 294, 295, -1, 96, 294, 383, 295, -1, 96, 294, 295, -1, 383, 293, -1, 383, 262, 353, 263, 293, -1,
1173  383, 260, 353, 261, 293, -1, 383, 266, 296, -1, 383, 9, 383, 266, 296, -1, 383, 266, 296, 260, 353, 261, -1,
1174  383, 9, 383, 266, 296, 260, 353, 261, -1, 383, 266, 296, 262, 353, 263, -1, 383, 9, 383, 266, 296, 262, 353,
1175  263, -1, 383, 262, 353, 263, 266, 296, -1, 383, 266, 296, 293, -1, 383, 262, 353, 263, 266, 296, 293, -1, 211,
1176  260, 373, 269, 353, 261, -1, 59, 260, 366, 269, 366, 261, -1, 60, 294, 373, 269, 373, 295, -1, 58, 294, 373,
1177  295, -1, 61, 294, 373, 269, 373, 295, -1, 66, 260, 380, 261, -1, -1, 269, 353, -1, -1, 269, 373, -1, -1,
1178  94, 360, 362, 359, 262, 306, 263, -1, 383, -1, 383, 9, 383, -1, 97, -1, 97, 353, -1, -1, 260, 361, 261,
1179  -1, 364, -1, 249, 363, -1, 248, 363, -1, 363, 249, 363, -1, 363, 248, 363, -1, 264, 353, 269, 353, 269, 353,
1180  269, 353, 269, 353, 265, -1, 264, 353, 269, 353, 269, 353, 269, 353, 265, -1, 264, 353, 269, 353, 269, 353, 265,
1181  -1, 260, 353, 269, 353, 269, 353, 261, -1, 366, -1, 365, 269, 366, -1, 353, -1, 368, -1, 264, 265, -1, 264,
1182  369, 265, -1, 249, 264, 369, 265, -1, 353, 250, 264, 369, 265, -1, 366, -1, 264, 8, 265, -1, 5, -1, 249,
1183  368, -1, 353, 250, 368, -1, 353, 8, 353, -1, 353, 8, 353, 8, 353, -1, 102, 264, 353, 265, -1, 102, 264,
1184  8, 265, -1, 102, 5, -1, 319, 264, 8, 265, -1, 319, 5, -1, 140, 318, 367, -1, 143, 318, 366, -1, 318,
1185  196, 67, 366, -1, 67, 318, 264, 369, 265, -1, 76, 319, 264, 353, 265, -1, 77, 319, 264, 353, 265, -1, 78,
1186  319, 264, 353, 265, -1, 193, 319, 264, 353, 265, -1, 322, -1, 333, -1, 342, -1, 383, 294, 295, -1, 383, 266,
1187  296, 294, 295, -1, 383, 9, 383, 266, 296, 294, 295, -1, 41, 262, 383, 263, -1, 41, 262, 368, 263, -1, 41,
1188  260, 368, 261, -1, 41, 294, 264, 369, 265, 295, -1, 383, 294, 264, 369, 265, 295, -1, 42, 294, 353, 269, 353,
1189  269, 353, 295, -1, 43, 294, 353, 269, 353, 269, 353, 295, -1, 44, 294, 373, 295, -1, 45, 294, 353, 269, 353,
1190  269, 353, 269, 353, 269, 353, 269, 353, 295, -1, 216, 294, 368, 295, -1, 32, 294, 368, 295, -1, 353, -1, 368,
1191  -1, 369, 269, 353, -1, 369, 269, 368, -1, 264, 353, 269, 353, 269, 353, 269, 353, 265, -1, 264, 353, 269, 353,
1192  269, 353, 265, -1, 383, -1, 4, 266, 193, 266, 4, -1, 264, 372, 265, -1, 383, 262, 353, 263, 266, 194, -1,
1193  370, -1, 372, 269, 370, -1, 374, -1, 383, -1, 383, 262, 353, 263, -1, 383, 260, 353, 261, -1, 383, 266, 296,
1194  -1, 383, 9, 383, 266, 296, -1, 383, 266, 296, 260, 353, 261, -1, 383, 9, 383, 266, 296, 260, 353, 261, -1,
1195  383, 262, 353, 263, 266, 4, -1, 318, 264, 353, 265, -1, 140, 318, 264, 353, 265, -1, 5, -1, 230, 262, 383,
1196  263, -1, 70, -1, 228, -1, 79, -1, 81, -1, 213, 260, 373, 261, -1, 212, 260, 373, 269, 373, 261, -1, 214,
1197  294, 373, 295, -1, 214, 294, 373, 269, 373, 295, -1, 224, 260, 360, 357, 261, -1, 224, 260, 360, 266, 296, 357,
1198  261, -1, 51, 294, 380, 295, -1, 52, 260, 373, 261, -1, 53, 260, 373, 261, -1, 54, 260, 373, 269, 373, 269,
1199  373, 261, -1, 49, 294, 380, 295, -1, 63, 294, 373, 295, -1, 64, 294, 373, 295, -1, 65, 294, 373, 295, -1,
1200  62, 294, 353, 269, 373, 269, 373, 295, -1, 57, 294, 373, 269, 353, 269, 353, 295, -1, 57, 294, 373, 269, 353,
1201  295, -1, 50, 294, 373, 295, -1, 50, 294, 373, 269, 369, 295, -1, 71, 294, 373, 295, -1, 72, -1, 73, -1,
1202  56, 294, 373, 295, -1, 55, 294, 373, 295, -1, -1, 98, 294, 374, 375, 309, 295, -1, 95, 294, 376, 295, -1,
1203  267, 353, -1, 383, 9, 267, 353, -1, 49, 294, 379, 295, -1, 380, -1, 379, -1, 264, 380, 265, -1, 373, -1,
1204  381, -1, 380, 269, 373, -1, 380, 269, 381, -1, 383, 260, 261, -1, 383, 266, 296, 260, 261, -1, 383, 9, 383,
1205  266, 296, 260, 261, -1, 4, 268, 264, 353, 265, -1, 382, 268, 264, 353, 265, -1, 231, 262, 373, 263, 268, 264,
1206  353, 265, -1, 4, -1, 382, -1, 231, 262, 373, 263, -1};
1207 
1208 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
1209 static const yytype_uint16 yyrline[] = {
1210  0, 275, 275, 276, 281, 283, 287, 288, 289, 290, 319, 320, 321, 322, 323, 324, 325, 326, 327,
1211  328, 329, 330, 331, 332, 333, 334, 338, 342, 349, 354, 359, 364, 378, 391, 404, 417, 445, 459,
1212  472, 485, 504, 509, 510, 511, 512, 513, 514, 518, 520, 525, 527, 533, 637, 532, 655, 662, 673,
1213  672, 690, 697, 708, 707, 724, 741, 764, 763, 777, 778, 779, 780, 781, 785, 786, 792, 792, 794,
1214  794, 799, 800, 801, 802, 803, 809, 810, 811, 812, 817, 823, 884, 899, 927, 937, 942, 950, 955,
1215  963, 972, 977, 989, 1006, 1012, 1021, 1039, 1057, 1066, 1078, 1083, 1091, 1111, 1134, 1154, 1162, 1179, 1197,
1216  1235, 1256, 1268, 1282, 1282, 1284, 1286, 1295, 1305, 1304, 1325, 1324, 1342, 1352, 1351, 1365, 1367, 1375, 1381,
1217  1386, 1413, 1415, 1418, 1420, 1424, 1425, 1429, 1441, 1445, 1449, 1462, 1476, 1484, 1497, 1499, 1503, 1504, 1509,
1218  1517, 1526, 1534, 1548, 1566, 1570, 1577, 1586, 1589, 1595, 1599, 1611, 1614, 1621, 1624, 1630, 1653, 1669, 1685,
1219  1702, 1719, 1756, 1800, 1816, 1832, 1864, 1880, 1897, 1913, 1963, 1981, 2002, 2023, 2029, 2035, 2042, 2073, 2088,
1220  2110, 2133, 2156, 2179, 2203, 2227, 2251, 2277, 2294, 2310, 2328, 2346, 2358, 2372, 2371, 2401, 2403, 2405, 2407,
1221  2409, 2417, 2419, 2421, 2423, 2431, 2433, 2435, 2443, 2445, 2447, 2449, 2459, 2475, 2491, 2507, 2523, 2539, 2556,
1222  2593, 2614, 2635, 2661, 2662, 2667, 2670, 2674, 2691, 2711, 2731, 2750, 2777, 2796, 2817, 2832, 2848, 2866, 2917,
1223  2938, 2960, 2983, 3088, 3104, 3139, 3164, 3189, 3201, 3207, 3222, 3253, 3265, 3274, 3281, 3293, 3313, 3317, 3322,
1224  3326, 3331, 3338, 3345, 3352, 3364, 3437, 3455, 3480, 3495, 3544, 3550, 3562, 3594, 3598, 3603, 3610, 3615, 3625,
1225  3630, 3636, 3644, 3655, 3663, 3667, 3671, 3675, 3682, 3686, 3690, 3702, 3711, 3770, 3790, 3816, 3832, 3849, 3866,
1226  3888, 3910, 3945, 3953, 3961, 3967, 3974, 3981, 4001, 4027, 4039, 4050, 4068, 4086, 4105, 4104, 4129, 4128, 4155,
1227  4154, 4179, 4178, 4201, 4217, 4234, 4251, 4274, 4302, 4305, 4311, 4323, 4343, 4347, 4351, 4355, 4359, 4363, 4367,
1228  4371, 4380, 4393, 4394, 4395, 4396, 4397, 4401, 4402, 4403, 4404, 4405, 4408, 4432, 4451, 4474, 4477, 4495, 4498,
1229  4515, 4518, 4524, 4527, 4534, 4537, 4544, 4567, 4586, 4627, 4671, 4710, 4735, 4742, 4753, 4770, 4787, 4817, 4843,
1230  4869, 4901, 4929, 4955, 4981, 5007, 5033, 5055, 5067, 5115, 5169, 5184, 5196, 5202, 5214, 5221, 5236, 5245, 5266,
1231  5267, 5268, 5272, 5278, 5290, 5308, 5336, 5337, 5338, 5339, 5340, 5341, 5342, 5343, 5344, 5351, 5352, 5353, 5354,
1232  5355, 5356, 5357, 5358, 5359, 5360, 5361, 5362, 5363, 5364, 5365, 5366, 5367, 5368, 5369, 5370, 5371, 5372, 5373,
1233  5374, 5375, 5376, 5377, 5378, 5379, 5380, 5381, 5382, 5383, 5384, 5385, 5386, 5387, 5388, 5389, 5390, 5399, 5400,
1234  5401, 5402, 5403, 5404, 5405, 5406, 5407, 5408, 5409, 5414, 5413, 5421, 5425, 5430, 5435, 5439, 5444, 5449, 5453,
1235  5457, 5461, 5465, 5469, 5473, 5479, 5494, 5498, 5504, 5509, 5528, 5548, 5569, 5573, 5577, 5581, 5585, 5589, 5593,
1236  5598, 5608, 5618, 5623, 5634, 5643, 5648, 5653, 5681, 5682, 5688, 5689, 5695, 5694, 5717, 5719, 5724, 5726, 5732,
1237  5733, 5738, 5742, 5746, 5750, 5754, 5761, 5765, 5769, 5773, 5780, 5785, 5792, 5797, 5801, 5806, 5810, 5818, 5829,
1238  5833, 5837, 5851, 5859, 5867, 5874, 5884, 5907, 5912, 5918, 5923, 5929, 5940, 5946, 5960, 5966, 5978, 5992, 6005,
1239  6022, 6032, 6042, 6052, 6064, 6068, 6073, 6085, 6089, 6093, 6097, 6115, 6123, 6131, 6160, 6170, 6186, 6197, 6202,
1240  6206, 6210, 6222, 6226, 6238, 6255, 6265, 6269, 6284, 6289, 6296, 6300, 6305, 6319, 6333, 6337, 6341, 6345, 6349,
1241  6357, 6363, 6372, 6376, 6380, 6388, 6394, 6400, 6404, 6411, 6419, 6426, 6435, 6439, 6443, 6458, 6472, 6486, 6498,
1242  6514, 6523, 6532, 6542, 6553, 6561, 6569, 6573, 6592, 6599, 6605, 6611, 6618, 6626, 6625, 6635, 6659, 6661, 6667,
1243  6672, 6674, 6679, 6684, 6689, 6691, 6695, 6707, 6721, 6725, 6732, 6740, 6748, 6759, 6761, 6764};
1244 #endif
1245 
1246 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
1247 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1248  First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1249 static const char *const yytname[] = {"$end",
1250  "error",
1251  "$undefined",
1252  "tDOUBLE",
1253  "tSTRING",
1254  "tBIGSTR",
1255  "tEND",
1256  "tAFFECT",
1257  "tDOTS",
1258  "tSCOPE",
1259  "tPi",
1260  "tMPI_Rank",
1261  "tMPI_Size",
1262  "tEuclidian",
1263  "tCoordinates",
1264  "tTestLevel",
1265  "tExp",
1266  "tLog",
1267  "tLog10",
1268  "tSqrt",
1269  "tSin",
1270  "tAsin",
1271  "tCos",
1272  "tAcos",
1273  "tTan",
1274  "tRand",
1275  "tAtan",
1276  "tAtan2",
1277  "tSinh",
1278  "tCosh",
1279  "tTanh",
1280  "tFabs",
1281  "tAbs",
1282  "tFloor",
1283  "tCeil",
1284  "tRound",
1285  "tMin",
1286  "tMax",
1287  "tFmod",
1288  "tModulo",
1289  "tHypot",
1290  "tList",
1291  "tLinSpace",
1292  "tLogSpace",
1293  "tListFromFile",
1294  "tCatenary",
1295  "tPrintf",
1296  "tError",
1297  "tWarning",
1298  "tStr",
1299  "tSprintf",
1300  "tStrCat",
1301  "tStrPrefix",
1302  "tStrRelative",
1303  "tStrReplace",
1304  "tAbsolutePath",
1305  "tDirName",
1306  "tStrSub",
1307  "tStrLen",
1308  "tFind",
1309  "tStrFind",
1310  "tStrCmp",
1311  "tStrChoice",
1312  "tUpperCase",
1313  "tLowerCase",
1314  "tLowerCaseIn",
1315  "tTextAttributes",
1316  "tBoundingBox",
1317  "tDraw",
1318  "tSetChanged",
1319  "tToday",
1320  "tFixRelativePath",
1321  "tCurrentDirectory",
1322  "tCurrentFileName",
1323  "tSyncModel",
1324  "tNewModel",
1325  "tMass",
1326  "tCenterOfMass",
1327  "tMatrixOfInertia",
1328  "tOnelabAction",
1329  "tOnelabRun",
1330  "tCodeName",
1331  "tCpu",
1332  "tMemory",
1333  "tTotalMemory",
1334  "tCreateTopology",
1335  "tCreateGeometry",
1336  "tClassifySurfaces",
1337  "tRenumberMeshNodes",
1338  "tRenumberMeshElements",
1339  "tDistanceFunction",
1340  "tDefineConstant",
1341  "tUndefineConstant",
1342  "tDefineNumber",
1343  "tDefineStruct",
1344  "tNameStruct",
1345  "tDimNameSpace",
1346  "tAppend",
1347  "tDefineString",
1348  "tSetNumber",
1349  "tSetTag",
1350  "tSetString",
1351  "tPoint",
1352  "tCircle",
1353  "tEllipse",
1354  "tCurve",
1355  "tSphere",
1356  "tPolarSphere",
1357  "tSurface",
1358  "tSpline",
1359  "tVolume",
1360  "tBox",
1361  "tCylinder",
1362  "tCone",
1363  "tTorus",
1364  "tEllipsoid",
1365  "tQuadric",
1366  "tShapeFromFile",
1367  "tRectangle",
1368  "tDisk",
1369  "tWire",
1370  "tGeoEntity",
1371  "tCharacteristic",
1372  "tLength",
1373  "tParametric",
1374  "tElliptic",
1375  "tRefineMesh",
1376  "tRecombineMesh",
1377  "tAdaptMesh",
1378  "tTransformMesh",
1379  "tRelocateMesh",
1380  "tReorientMesh",
1381  "tSetFactory",
1382  "tThruSections",
1383  "tWedge",
1384  "tFillet",
1385  "tChamfer",
1386  "tPlane",
1387  "tRuled",
1388  "tTransfinite",
1389  "tPhysical",
1390  "tCompound",
1391  "tPeriodic",
1392  "tParent",
1393  "tUsing",
1394  "tPlugin",
1395  "tDegenerated",
1396  "tRecursive",
1397  "tSewing",
1398  "tRotate",
1399  "tTranslate",
1400  "tSymmetry",
1401  "tDilate",
1402  "tExtrude",
1403  "tLevelset",
1404  "tAffine",
1405  "tBooleanUnion",
1406  "tBooleanIntersection",
1407  "tBooleanDifference",
1408  "tBooleanSection",
1409  "tBooleanFragments",
1410  "tThickSolid",
1411  "tRecombine",
1412  "tSmoother",
1413  "tSplit",
1414  "tDelete",
1415  "tCoherence",
1416  "tHealShapes",
1417  "tIntersect",
1418  "tMeshAlgorithm",
1419  "tReverseMesh",
1420  "tMeshSize",
1421  "tMeshSizeFromBoundary",
1422  "tLayers",
1423  "tScaleLast",
1424  "tHole",
1425  "tAlias",
1426  "tAliasWithOptions",
1427  "tCopyOptions",
1428  "tQuadTriAddVerts",
1429  "tQuadTriNoNewVerts",
1430  "tRecombLaterals",
1431  "tTransfQuadTri",
1432  "tText2D",
1433  "tText3D",
1434  "tInterpolationScheme",
1435  "tTime",
1436  "tCombine",
1437  "tBSpline",
1438  "tBezier",
1439  "tNurbs",
1440  "tNurbsOrder",
1441  "tNurbsKnots",
1442  "tColor",
1443  "tColorTable",
1444  "tFor",
1445  "tIn",
1446  "tEndFor",
1447  "tIf",
1448  "tElseIf",
1449  "tElse",
1450  "tEndIf",
1451  "tExit",
1452  "tAbort",
1453  "tField",
1454  "tReturn",
1455  "tCall",
1456  "tSlide",
1457  "tMacro",
1458  "tShow",
1459  "tHide",
1460  "tGetValue",
1461  "tGetStringValue",
1462  "tGetEnv",
1463  "tGetString",
1464  "tGetNumber",
1465  "tUnique",
1466  "tSetMaxTag",
1467  "tHomology",
1468  "tCohomology",
1469  "tBetti",
1470  "tExists",
1471  "tFileExists",
1472  "tGetForced",
1473  "tGetForcedStr",
1474  "tGMSH_MAJOR_VERSION",
1475  "tGMSH_MINOR_VERSION",
1476  "tGMSH_PATCH_VERSION",
1477  "tGmshExecutableName",
1478  "tSetPartition",
1479  "tNameToString",
1480  "tStringToName",
1481  "tUnsplitWindow",
1482  "tAFFECTDIVIDE",
1483  "tAFFECTTIMES",
1484  "tAFFECTMINUS",
1485  "tAFFECTPLUS",
1486  "'?'",
1487  "tOR",
1488  "tAND",
1489  "tNOTEQUAL",
1490  "tEQUAL",
1491  "'<'",
1492  "'>'",
1493  "tGREATERGREATER",
1494  "tLESSLESS",
1495  "tGREATEROREQUAL",
1496  "tLESSOREQUAL",
1497  "'+'",
1498  "'-'",
1499  "'*'",
1500  "'/'",
1501  "'%'",
1502  "'|'",
1503  "'&'",
1504  "'!'",
1505  "UNARYPREC",
1506  "tMINUSMINUS",
1507  "tPLUSPLUS",
1508  "'^'",
1509  "'('",
1510  "')'",
1511  "'['",
1512  "']'",
1513  "'{'",
1514  "'}'",
1515  "'.'",
1516  "'#'",
1517  "'~'",
1518  "','",
1519  "$accept",
1520  "All",
1521  "GeoFormatItems",
1522  "GeoFormatItem",
1523  "SendToFile",
1524  "Printf",
1525  "View",
1526  "Views",
1527  "ElementCoords",
1528  "ElementValues",
1529  "Element",
1530  "@1",
1531  "@2",
1532  "Text2DValues",
1533  "Text2D",
1534  "@3",
1535  "Text3DValues",
1536  "Text3D",
1537  "@4",
1538  "InterpolationMatrix",
1539  "Time",
1540  "@5",
1541  "NumericAffectation",
1542  "NumericIncrement",
1543  "LP",
1544  "RP",
1545  "tSTRING_Reserved",
1546  "Affectation",
1547  "Comma",
1548  "DefineConstants",
1549  "@6",
1550  "@7",
1551  "@8",
1552  "UndefineConstants",
1553  "Enumeration",
1554  "FloatParameterOptionsOrNone",
1555  "FloatParameterOptionsOrNone_NoComma",
1556  "FloatParameterOptions",
1557  "FloatParameterOption",
1558  "CharParameterOptionsOrNone",
1559  "CharParameterOptions",
1560  "CharParameterOption",
1561  "PhysicalId_per_dim_entity",
1562  "SurfaceConstraints",
1563  "CircleOptions",
1564  "LoopOptions",
1565  "Shape",
1566  "@9",
1567  "GeoEntity",
1568  "GeoEntity123",
1569  "GeoEntity12",
1570  "GeoEntity02",
1571  "Transform",
1572  "MultipleShape",
1573  "ListOfShapes",
1574  "LevelSet",
1575  "Delete",
1576  "Colorify",
1577  "SetPartition",
1578  "Visibility",
1579  "Command",
1580  "Slide",
1581  "Loop",
1582  "Extrude",
1583  "@10",
1584  "@11",
1585  "@12",
1586  "@13",
1587  "ExtrudeParameters",
1588  "ExtrudeParameter",
1589  "BooleanOperator",
1590  "BooleanOption",
1591  "Boolean",
1592  "BooleanShape",
1593  "TransfiniteType",
1594  "TransfiniteArrangement",
1595  "TransfiniteCorners",
1596  "RecombineAngle",
1597  "PeriodicTransform",
1598  "Constraints",
1599  "Coherence",
1600  "HomologyCommand",
1601  "Homology",
1602  "FExpr",
1603  "FExpr_Single",
1604  "@14",
1605  "GetForced_Default",
1606  "GetForcedStr_Default",
1607  "DefineStruct",
1608  "@15",
1609  "Struct_FullName",
1610  "Append",
1611  "AppendOrNot",
1612  "VExpr",
1613  "VExpr_Single",
1614  "RecursiveListOfListOfDouble",
1615  "ListOfDouble",
1616  "ListOfDoubleOrAll",
1617  "FExpr_Multi",
1618  "RecursiveListOfDouble",
1619  "ColorExpr",
1620  "ListOfColor",
1621  "RecursiveListOfColor",
1622  "StringExprVar",
1623  "StringExpr",
1624  "@16",
1625  "NameStruct_Arg",
1626  "Str_BracedRecursiveListOfStringExprVar",
1627  "BracedOrNotRecursiveListOfStringExprVar",
1628  "BracedRecursiveListOfStringExprVar",
1629  "RecursiveListOfStringExprVar",
1630  "MultiStringExprVar",
1631  "StringIndex",
1632  "String__Index",
1633  0};
1634 #endif
1635 
1636 #ifdef YYPRINT
1637 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
1638  token YYLEX-NUM. */
1639 static const yytype_uint16 yytoknum[] = {
1640  0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1641  278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
1642  301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
1643  324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
1644  347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
1645  370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
1646  393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
1647  416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
1648  439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
1649  462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
1650  485, 486, 487, 488, 489, 490, 491, 63, 492, 493, 494, 495, 60, 62, 496, 497, 498, 499, 43, 45, 42, 47, 37,
1651  124, 38, 33, 500, 501, 502, 94, 40, 41, 91, 93, 123, 125, 46, 35, 126, 44};
1652 #endif
1653 
1654 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1655 static const yytype_uint16 yyr1[] = {
1656  0, 270, 271, 271, 272, 272, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
1657  273, 273, 273, 274, 274, 275, 275, 275, 275, 275, 275, 275, 275, 276, 276, 276, 276, 277, 277, 277, 277, 277, 277,
1658  277, 278, 278, 279, 279, 281, 282, 280, 283, 283, 285, 284, 286, 286, 288, 287, 289, 289, 291, 290, 292, 292, 292,
1659  292, 292, 293, 293, 294, 294, 295, 295, 296, 296, 296, 296, 296, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
1660  297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
1661  297, 297, 298, 298, 299, 299, 299, 300, 299, 301, 299, 299, 302, 299, 303, 303, 304, 304, 304, 305, 305, 306, 306,
1662  307, 307, 308, 308, 308, 308, 308, 308, 308, 309, 309, 310, 310, 311, 311, 311, 311, 311, 312, 312, 312, 313, 313,
1663  313, 313, 314, 314, 315, 315, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
1664  316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 317, 316, 318, 318,
1665  318, 318, 318, 319, 319, 319, 319, 320, 320, 320, 321, 321, 321, 321, 322, 322, 322, 322, 322, 322, 322, 322, 322,
1666  322, 323, 323, 324, 324, 324, 324, 324, 324, 324, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 326,
1667  326, 326, 326, 326, 326, 326, 326, 327, 327, 328, 329, 329, 329, 329, 329, 329, 329, 329, 330, 330, 330, 330, 330,
1668  330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330,
1669  330, 331, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 333, 333, 333, 334, 333, 335, 333,
1670  336, 333, 337, 333, 333, 333, 333, 333, 333, 338, 338, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 340,
1671  340, 340, 340, 340, 341, 341, 341, 341, 341, 342, 342, 343, 344, 344, 345, 345, 346, 346, 347, 347, 348, 348, 349,
1672  349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349,
1673  349, 349, 349, 350, 350, 350, 350, 351, 351, 351, 352, 352, 352, 352, 353, 353, 353, 353, 353, 353, 353, 353, 353,
1674  353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353,
1675  353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 354, 354, 354, 354, 354, 354,
1676  354, 354, 354, 354, 354, 355, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
1677  354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 356, 356, 357, 357,
1678  359, 358, 360, 360, 361, 361, 362, 362, 363, 363, 363, 363, 363, 364, 364, 364, 364, 365, 365, 366, 366, 366, 366,
1679  366, 366, 367, 367, 367, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368,
1680  368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 369, 369, 369, 369, 370, 370, 370,
1681  370, 371, 371, 372, 372, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 374, 374, 374, 374, 374, 374, 374,
1682  374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374,
1683  375, 374, 374, 376, 376, 377, 378, 378, 379, 380, 380, 380, 380, 381, 381, 381, 382, 382, 382, 383, 383, 383};
1684 
1685 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
1686 static const yytype_uint8 yyr2[] = {
1687  0, 2, 1, 2, 0, 2, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5,
1688  5, 7, 7, 7, 7, 9, 6, 6, 6, 8, 0, 2, 2, 2, 2, 2, 2, 1, 3, 1, 3, 0, 0, 10, 1, 3, 0, 13, 1, 3,
1689  0, 15, 8, 14, 0, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 2, 7, 7, 4, 3, 6,
1690  9, 7, 6, 7, 6, 4, 8, 9, 9, 6, 9, 6, 9, 5, 8, 8, 11, 6, 9, 5, 7, 9, 9, 11, 7, 9, 9, 0, 1, 0,
1691  3, 5, 0, 9, 0, 11, 5, 0, 9, 0, 3, 3, 5, 5, 0, 2, 0, 1, 1, 3, 2, 2, 2, 1, 4, 2, 2, 0, 2, 1,
1692  3, 2, 2, 2, 2, 2, 1, 1, 3, 0, 5, 5, 5, 0, 2, 0, 2, 7, 7, 7, 10, 10, 8, 8, 7, 7, 11, 7, 8, 8,
1693  8, 9, 8, 8, 3, 4, 10, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 7, 7, 8, 8, 12, 0, 9, 1, 1, 1, 1, 4,
1694  1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 4, 5, 11, 5, 9, 9, 7, 4, 9, 10, 9, 1, 1, 0, 2, 6, 7, 7, 6, 7,
1695  8, 10, 14, 16, 12, 14, 14, 14, 14, 8, 8, 6, 4, 5, 5, 6, 6, 3, 4, 3, 5, 6, 5, 4, 3, 4, 3, 4, 5, 4,
1696  5, 3, 5, 7, 7, 3, 2, 7, 3, 2, 2, 2, 2, 2, 15, 2, 2, 7, 2, 9, 11, 2, 4, 2, 2, 2, 2, 16, 5, 8,
1697  11, 6, 8, 8, 10, 1, 2, 2, 1, 3, 3, 4, 4, 1, 1, 5, 11, 13, 0, 7, 0, 13, 0, 15, 0, 6, 9, 2, 3, 10,
1698  13, 1, 2, 5, 7, 2, 2, 3, 2, 3, 2, 3, 9, 6, 1, 1, 1, 1, 1, 0, 2, 3, 3, 4, 9, 4, 14, 0, 3, 0,
1699  1, 0, 2, 0, 2, 0, 2, 5, 6, 7, 6, 5, 3, 8, 6, 8, 8, 5, 4, 6, 11, 11, 18, 18, 12, 12, 12, 10, 4, 4,
1700  4, 4, 4, 6, 2, 3, 6, 2, 1, 1, 1, 2, 5, 7, 10, 1, 3, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1701  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, 4, 4, 6, 6,
1702  6, 4, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 6, 1, 4, 6, 1, 4, 4, 4, 6, 5, 7, 8, 10, 4,
1703  4, 6, 4, 3, 2, 5, 5, 3, 5, 6, 8, 6, 8, 6, 4, 7, 6, 6, 6, 4, 6, 4, 0, 2, 0, 2, 0, 7, 1, 3,
1704  1, 2, 0, 3, 1, 2, 2, 3, 3, 11, 9, 7, 7, 1, 3, 1, 1, 2, 3, 4, 5, 1, 3, 1, 2, 3, 3, 5, 4, 4,
1705  2, 4, 2, 3, 3, 4, 5, 5, 5, 5, 5, 1, 1, 1, 3, 5, 7, 4, 4, 4, 6, 6, 8, 8, 4, 14, 4, 4, 1, 1,
1706  3, 3, 9, 7, 1, 5, 3, 6, 1, 3, 1, 1, 4, 4, 3, 5, 6, 8, 6, 4, 5, 1, 4, 1, 1, 1, 1, 4, 6, 4,
1707  6, 5, 7, 4, 4, 4, 8, 4, 4, 4, 4, 8, 8, 6, 4, 6, 4, 1, 1, 4, 4, 0, 6, 4, 2, 4, 4, 1, 1, 3,
1708  1, 1, 3, 3, 3, 5, 7, 5, 5, 8, 1, 1, 4};
1709 
1710 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
1711  STATE-NUM when YYTABLE doesn't specify something else to do. Zero
1712  means the default is an error. */
1713 static const yytype_uint16 yydefact[] = {
1714  0, 0, 0, 2, 3, 1, 640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1715  0, 0, 0, 0, 0, 0, 205, 0, 0, 206, 0, 0, 207, 0, 208, 0, 0, 0, 0, 0, 0, 0, 0,
1716  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1717  0, 0, 0, 0, 0, 0, 0, 344, 345, 346, 347, 348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1718  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 305, 0, 0, 313, 314, 0, 0, 0, 308, 0, 0, 0,
1719  0, 0, 0, 398, 399, 400, 0, 0, 0, 5, 6, 7, 8, 10, 0, 11, 24, 12, 13, 14, 15, 23, 22,
1720  21, 16, 0, 17, 18, 19, 20, 0, 25, 0, 641, 0, 233, 0, 0, 0, 0, 0, 0, 283, 0, 285, 286,
1721  281, 282, 0, 288, 0, 291, 233, 0, 293, 294, 119, 129, 640, 512, 508, 73, 74, 0, 205, 206, 207, 208, 0,
1722  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1723  295, 296, 0, 0, 217, 218, 219, 0, 0, 0, 0, 454, 455, 457, 458, 456, 0, 0, 0, 0, 0, 0, 0,
1724  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1725  0, 0, 0, 0, 0, 0, 0, 0, 0, 462, 463, 464, 0, 0, 205, 210, 211, 212, 0, 0, 0, 0, 0,
1726  0, 0, 0, 0, 0, 0, 0, 459, 460, 461, 0, 0, 0, 0, 0, 0, 0, 0, 551, 552, 0, 553, 525,
1727  405, 467, 470, 327, 526, 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, 210, 211, 0, 212, 0, 0, 0,
1728  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 514, 0, 0, 233, 0, 0, 0, 0, 0,
1729  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, 0, 233, 0, 0, 394, 0, 397, 0, 0, 214, 215,
1730  0, 0, 533, 0, 0, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, 0, 574, 0,
1731  0, 0, 0, 279, 280, 0, 591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 593, 0, 617,
1732  618, 595, 596, 0, 0, 0, 0, 0, 0, 594, 0, 0, 0, 0, 306, 307, 0, 233, 0, 233, 0, 0, 0,
1733  0, 508, 0, 276, 0, 0, 233, 401, 0, 0, 84, 0, 66, 0, 0, 70, 69, 68, 67, 72, 71, 73, 74,
1734  0, 0, 0, 0, 0, 0, 0, 580, 508, 0, 232, 0, 231, 0, 184, 0, 0, 580, 581, 0, 0, 0, 630,
1735  0, 631, 581, 0, 0, 0, 117, 117, 0, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1736  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 568, 569, 0, 0, 0, 0, 0, 0, 0,
1737  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1738  0, 73, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 540, 0, 0, 0,
1739  0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 0, 407, 534, 409, 0, 527, 0, 0, 508, 0, 542, 0, 0,
1740  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 74, 0,
1741  484, 0, 0, 0, 0, 0, 0, 0, 328, 0, 361, 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1742  233, 0, 233, 233, 0, 516, 515, 0, 0, 0, 0, 233, 233, 0, 0, 0, 0, 324, 0, 233, 0, 0, 0,
1743  0, 0, 0, 0, 0, 0, 0, 0, 363, 0, 0, 0, 0, 0, 0, 233, 259, 0, 0, 257, 395, 0, 0,
1744  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 372, 278, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0,
1745  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1746  310, 309, 0, 264, 0, 0, 266, 0, 0, 0, 0, 407, 0, 233, 0, 0, 0, 0, 0, 0, 0, 349, 0,
1747  0, 0, 0, 0, 0, 0, 0, 77, 78, 79, 80, 81, 0, 0, 0, 0, 88, 75, 76, 0, 0, 0, 275,
1748  40, 271, 0, 0, 0, 0, 0, 227, 0, 0, 0, 0, 0, 234, 0, 0, 185, 0, 0, 0, 0, 0, 0,
1749  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 292, 0, 0, 118, 0, 0, 0, 510, 0, 0, 509, 0,
1750  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 355, 0, 0, 0, 209, 0,
1751  0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1752  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, 0, 0, 0, 0, 0, 0, 0,
1753  0, 0, 0, 0, 0, 0, 0, 465, 483, 0, 0, 0, 0, 543, 544, 0, 0, 0, 0, 0, 0, 502, 0,
1754  406, 528, 0, 0, 0, 0, 536, 0, 425, 424, 423, 422, 418, 419, 426, 427, 421, 420, 411, 410, 0, 412, 535,
1755  413, 416, 414, 415, 417, 509, 0, 0, 487, 0, 554, 0, 0, 0, 0, 0, 0, 0, 0, 359, 0, 0, 0,
1756  0, 0, 0, 392, 0, 0, 0, 0, 0, 391, 0, 233, 0, 0, 0, 0, 0, 518, 517, 0, 0, 0, 0,
1757  0, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 378, 0, 0, 0, 258, 0,
1758  0, 0, 252, 0, 0, 0, 0, 388, 406, 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1759  0, 0, 311, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 621,
1760  0, 0, 0, 504, 0, 0, 263, 267, 265, 269, 0, 0, 412, 0, 509, 487, 642, 0, 0, 0, 0, 0, 0,
1761  0, 0, 0, 95, 0, 0, 406, 0, 0, 0, 66, 0, 0, 87, 0, 66, 67, 0, 0, 0, 509, 0, 0,
1762  487, 0, 0, 0, 203, 0, 0, 0, 637, 28, 26, 27, 0, 0, 0, 0, 0, 584, 30, 0, 29, 0, 0,
1763  272, 632, 633, 0, 634, 584, 0, 0, 82, 120, 83, 130, 511, 513, 136, 0, 0, 0, 0, 0, 0, 0, 0,
1764  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 570, 571, 298, 233, 220, 9, 429,
1765  430, 431, 432, 433, 434, 435, 436, 437, 451, 438, 0, 440, 441, 442, 443, 444, 567, 445, 446, 447, 0, 0, 0,
1766  0, 0, 559, 558, 557, 0, 0, 0, 564, 0, 499, 0, 0, 0, 501, 0, 0, 0, 0, 134, 482, 539, 538,
1767  213, 0, 0, 0, 468, 566, 473, 0, 479, 0, 0, 0, 0, 529, 0, 0, 480, 545, 541, 0, 0, 0, 0,
1768  472, 471, 73, 74, 494, 0, 0, 0, 0, 0, 0, 0, 406, 357, 362, 360, 0, 371, 0, 156, 157, 0, 213,
1769  0, 406, 0, 0, 0, 0, 0, 253, 0, 268, 270, 0, 0, 0, 221, 223, 0, 0, 0, 0, 0, 0, 0,
1770  0, 0, 0, 0, 331, 0, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 233, 0, 364, 377, 0, 0,
1771  0, 0, 254, 0, 0, 0, 0, 216, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 260, 0, 0,
1772  0, 0, 607, 0, 614, 603, 604, 605, 0, 620, 619, 0, 0, 608, 609, 610, 616, 624, 623, 0, 147, 0, 597,
1773  0, 599, 0, 0, 0, 592, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 350, 0, 0, 0, 402, 0, 638,
1774  0, 109, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 589, 51, 0, 0,
1775  0, 64, 0, 41, 42, 43, 44, 45, 46, 0, 472, 471, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1776  0, 583, 582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 137, 138, 0, 0, 0, 0,
1777  163, 163, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 0, 0, 0, 0,
1778  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 546, 547, 548, 549, 0, 0, 550, 0, 0, 0, 502, 503,
1779  0, 475, 0, 0, 537, 428, 530, 488, 486, 0, 485, 0, 0, 555, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1780  370, 0, 0, 0, 0, 0, 393, 0, 0, 0, 77, 0, 261, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0,
1781  335, 0, 338, 0, 340, 0, 325, 332, 0, 0, 0, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 379, 0,
1782  0, 256, 255, 396, 0, 0, 0, 37, 38, 0, 0, 0, 0, 0, 0, 575, 0, 0, 0, 301, 0, 0, 0,
1783  0, 0, 0, 0, 0, 0, 0, 0, 504, 505, 601, 0, 374, 488, 0, 0, 233, 351, 0, 352, 233, 0, 0,
1784  590, 0, 94, 0, 0, 0, 0, 92, 0, 578, 0, 107, 0, 99, 101, 0, 0, 0, 89, 0, 0, 0, 0,
1785  0, 36, 488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 0, 585, 0, 0, 34, 33,
1786  0, 585, 635, 287, 0, 0, 121, 126, 0, 0, 0, 140, 145, 146, 141, 142, 507, 0, 85, 0, 86, 167, 0,
1787  0, 0, 0, 168, 187, 188, 165, 0, 0, 0, 169, 198, 189, 193, 194, 190, 191, 192, 177, 0, 0, 0, 439,
1788  453, 452, 448, 449, 450, 560, 0, 0, 0, 497, 498, 500, 135, 466, 496, 469, 474, 0, 0, 502, 199, 481, 73,
1789  74, 0, 493, 489, 491, 561, 195, 0, 0, 0, 159, 0, 0, 369, 0, 158, 0, 0, 0, 0, 0, 0, 277,
1790  0, 0, 0, 0, 233, 233, 0, 0, 337, 525, 0, 0, 339, 341, 0, 0, 319, 0, 0, 0, 0, 0, 0,
1791  0, 0, 0, 0, 226, 196, 0, 0, 0, 0, 0, 0, 0, 174, 0, 175, 0, 0, 0, 0, 110, 114, 0,
1792  615, 0, 0, 613, 0, 625, 0, 0, 148, 149, 622, 598, 600, 0, 0, 0, 0, 0, 0, 349, 353, 349, 0,
1793  403, 93, 0, 0, 66, 0, 0, 91, 0, 576, 0, 0, 0, 0, 0, 0, 628, 627, 0, 0, 0, 0, 0,
1794  523, 0, 0, 77, 273, 489, 274, 0, 0, 0, 0, 0, 238, 235, 0, 0, 588, 586, 0, 0, 0, 0, 122,
1795  127, 0, 0, 0, 568, 569, 139, 373, 164, 172, 173, 178, 0, 0, 0, 0, 0, 180, 0, 0, 299, 0, 0,
1796  0, 0, 476, 0, 0, 0, 556, 495, 0, 0, 179, 0, 200, 358, 0, 0, 0, 0, 201, 0, 0, 0, 0,
1797  0, 0, 522, 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 249, 0, 0, 0, 0, 0, 0, 0,
1798  0, 240, 0, 0, 0, 375, 376, 39, 182, 183, 0, 573, 0, 0, 303, 302, 0, 0, 0, 0, 0, 0, 151,
1799  152, 155, 154, 153, 0, 602, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 104, 105, 579, 0, 0, 0, 96,
1800  0, 0, 0, 47, 0, 0, 0, 0, 0, 49, 0, 239, 236, 237, 35, 0, 0, 636, 289, 0, 134, 147, 0,
1801  0, 144, 0, 0, 0, 166, 197, 0, 0, 0, 0, 0, 562, 563, 0, 502, 477, 490, 492, 0, 0, 181, 204,
1802  0, 0, 0, 365, 365, 0, 115, 116, 233, 0, 224, 225, 326, 0, 333, 0, 0, 233, 0, 0, 0, 0, 0,
1803  0, 0, 0, 230, 0, 228, 0, 0, 0, 0, 111, 112, 606, 612, 611, 150, 0, 0, 0, 354, 0, 0, 108,
1804  100, 102, 0, 90, 629, 97, 98, 52, 0, 0, 0, 0, 524, 0, 0, 490, 587, 0, 0, 0, 0, 124, 626,
1805  0, 131, 0, 0, 0, 0, 186, 0, 0, 0, 329, 0, 170, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1806  0, 520, 0, 343, 0, 0, 320, 0, 241, 0, 0, 0, 0, 0, 0, 229, 0, 572, 304, 0, 0, 387, 233,
1807  404, 0, 577, 0, 48, 0, 0, 0, 65, 50, 0, 290, 123, 128, 134, 0, 0, 161, 162, 160, 0, 0, 478,
1808  0, 0, 0, 0, 366, 380, 0, 0, 381, 0, 222, 0, 334, 0, 316, 0, 233, 0, 0, 0, 0, 0, 0,
1809  176, 113, 300, 349, 106, 0, 0, 0, 0, 0, 0, 132, 133, 0, 0, 0, 202, 0, 384, 0, 385, 386, 519,
1810  0, 0, 322, 244, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 62, 0, 0, 125, 0, 0, 330, 0, 0,
1811  342, 321, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, 246,
1812  247, 248, 0, 242, 356, 53, 0, 60, 0, 284, 0, 565, 0, 0, 323, 0, 0, 54, 0, 0, 297, 0, 0,
1813  243, 0, 0, 0, 0, 0, 0, 57, 55, 0, 58, 0, 382, 383, 0, 0, 63, 61, 59};
1814 
1815 /* YYDEFGOTO[NTERM-NUM]. */
1816 static const yytype_int16 yydefgoto[] = {
1817  -1, 2, 3, 124, 1116, 125, 126, 1100, 1980, 1986, 1406, 1629, 2142, 2270, 1407, 2243, 2286, 1408, 2272,
1818  1409, 1410, 1633, 461, 621, 622, 1188, 1727, 127, 820, 489, 1998, 2153, 1999, 490, 1866, 1488, 1442, 1443,
1819  1444, 1592, 1802, 1803, 1260, 1688, 1679, 1876, 795, 633, 292, 293, 369, 215, 294, 471, 472, 131, 132,
1820  133, 134, 135, 136, 137, 138, 295, 1295, 2177, 2234, 990, 1291, 1292, 296, 1079, 297, 142, 1517, 1258,
1821  962, 1005, 2111, 143, 144, 145, 146, 298, 299, 1215, 1231, 1361, 300, 825, 301, 824, 492, 650, 336,
1822  1839, 373, 374, 303, 591, 388, 1390, 1620, 482, 477, 1354, 1055, 1669, 1832, 1833, 1040, 484, 148, 438};
1823 
1824 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1825  STATE-NUM. */
1826 #define YYPACT_NINF -1971
1827 static const yytype_int16 yypact[] = {
1828  13695, 75, 125, 13903, -1971, -1971, -156, 34, 66, -79, -59, -44, 52, 381, 393, 429,
1829  456, 10, 53, 57, 80, 508, 521, 268, 278, 22, 517, 13, 517, 97, 289, 294,
1830  12, 319, 325, 23, 328, 335, 380, 421, 436, 448, 461, 467, 490, 530, 389, 500,
1831  691, 778, 812, 565, 566, 359, 711, 586, 7161, 593, 592, 606, 752, -31, 601, 13,
1832  -48, 237, 624, 785, -99, 643, -116, -116, 669, 221, 371, 689, -1971, -1971, -1971, -1971,
1833  -1971, 631, 684, 804, 855, 35, 45, 962, 864, 874, 9, 6129, 882, 991, 1007, 1017,
1834  6129, 1018, -78, -75, 784, 25, 71, -1971, 789, 790, -1971, -1971, 1042, 1045, 792, -1971,
1835  14152, 795, 14189, 33, 37, 13, -1971, -1971, -1971, 12404, 794, 1046, -1971, -1971, -1971, -1971,
1836  -1971, 793, -1971, -1971, -1971, -1971, -1971, -1971, -1971, -1971, -1971, -1971, -138, -1971, -1971, -1971,
1837  -1971, 4, -1971, 1052, 791, 5869, 351, 796, 1056, 12404, 14090, 14090, 14090, -1971, 12404, -1971,
1838  -1971, -1971, -1971, 14090, -1971, 12404, -1971, -1971, 12404, -1971, -1971, -1971, -1971, 798, 803, 1055,
1839  -1971, -1971, 1436, -1971, -1971, -1971, -1971, 807, 1436, 12404, 12404, 12404, 808, 12404, 12404, 12404,
1840  809, 12404, 12404, 12404, 12404, 12404, 12404, 12404, 14090, 12404, 12404, 12404, 12404, 6129, 810, -1971,
1841  -1971, 9989, 9989, -1971, -1971, -1971, 813, 6129, 7419, 14090, -1971, -1971, -1971, -1971, -1971, 517,
1842  517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
1843  517, 517, 517, 517, 517, 517, 517, 517, 638, 517, 517, 517, 517, 517, 811, 517,
1844  517, 814, 13, 584, 584, 584, -1971, -1971, -1971, 517, 517, 41, 876, 877, 880, 816,
1845  7419, 948, 13, 13, 584, 823, 517, 517, 824, 825, 828, -1971, -1971, -1971, 12404, 7677,
1846  12404, 12404, 7935, 22, 893, 42, -1971, -1971, 826, -1971, 3848, -1971, -1971, -1971, -1971, -1971,
1847  110, 12404, 9989, 9989, 831, 832, 8193, 6129, 6129, 6129, -1971, -1971, -1971, 833, -1971, 830,
1848  836, 8451, 834, 10945, 1093, 7419, 835, 25, 837, 838, -116, -116, -116, 12404, 12404, 338,
1849  -1971, 349, -116, 11032, 368, 1, 840, 845, 846, 847, 849, 850, 856, 9989, 12404, 6129,
1850  6129, 6129, 155, 17, 1109, 858, -1971, 1111, 1112, -1971, 857, -1971, 859, 860, -1971, -1971,
1851  862, 6129, -1971, 12404, 6387, -1971, 1115, 866, 863, 869, 870, 1122, 1127, 878, 12404, 879,
1852  12404, 12404, 652, 12404, 873, -1971, 938, 12404, 12404, 12404, -1971, -1971, 12404, -1971, 517, 517,
1853  517, 881, 885, 889, 517, 517, 517, 517, 517, 517, 517, -1971, 517, -1971, -1971, -1971,
1854  -1971, 517, 517, 900, 901, 517, 905, -1971, 904, 1134, 1136, 903, -1971, -1971, 1163, 1180,
1855  1183, 1182, 931, 517, 12404, 15599, 122, 14090, -1971, 9989, 12404, -1971, -1971, 7419, 7419, -1971,
1856  929, 1436, 13, 1188, -1971, -1971, -1971, -1971, -1971, -1971, 12404, 12404, 410, 7419, 1191, 507,
1857  934, 1012, 935, 1194, 36, 937, -1971, 942, 2576, 12404, -1971, 1659, -169, -1971, 74, -111,
1858  -46, 7609, -1971, -21, -1971, 111, 7867, 12536, 8125, -124, -14, 1105, -1971, 22, 939, 12404,
1859  958, 16115, 16140, 16165, 12404, 16190, 16215, 16240, 12404, 16265, 16290, 16315, 16340, 16365, 16390, 16415,
1860  967, 16440, 16465, 16490, 14613, 1196, 12404, 9989, 5754, -1971, 8, 172, 12404, 1223, 1226, 973,
1861  12404, 12404, 12404, 12404, 12404, 12404, 12404, 12404, 12404, 12404, 12404, 12404, 12404, 12404, 12404, 12404,
1862  9989, 12404, 12404, 12404, 12404, 12404, 12404, 12404, 12404, 9989, 9989, 971, 12404, 12404, 14090, 12404,
1863  14090, 7419, 14090, 14090, 14090, 974, 975, 977, 978, 12404, 51, -1971, 11290, 12404, 7419, 6129,
1864  7419, 979, 14090, 14090, 9989, 22, 1436, 22, 985, 9989, 985, -1971, 985, 16515, -1971, 206,
1865  1001, 81, 1169, -1971, 1229, 12404, 12404, 12404, 12404, 12404, 12404, 12404, 12404, 12404, 12404, 12404,
1866  12404, 12404, 12404, 8709, 12404, 12404, 12404, 12404, 12404, 22, 12404, 12404, 50, -1971, 782, 16540,
1867  374, 383, 12404, 12404, 12404, -1971, 1238, 1261, 1261, 1009, 12404, 12404, 12404, 12404, 26, 9989,
1868  9989, 15627, 1011, 1264, -1971, 1010, -1971, -1971, -73, -1971, -1971, 8383, 8641, -116, -116, 351,
1869  351, -49, 11032, 11032, 12404, 12580, -45, -1971, 12404, 12404, 12404, 12404, 12404, 12404, 12404, 12404,
1870  12404, 433, 16565, 1266, 1269, 1270, 12404, 12404, 1272, 12404, -1971, -1971, 12404, 12653, -1971, -1971,
1871  9989, 9989, 9989, 12404, 1273, 16590, 1015, 12404, 9989, 12404, 12404, 12404, -1971, -1971, 12404, 16615,
1872  12404, 16640, 16665, 1083, 8899, -1971, 1020, 5777, 16690, 16715, 15710, 14090, 14090, 14090, 14090, 14090,
1873  14090, 14090, 14090, 14090, 12404, 14090, 14090, 14090, 14090, 19, 1436, 14090, 14090, 14090, 22, 22,
1874  -1971, -1971, 9989, -1971, 1016, 12714, -1971, 1021, 12817, 12404, 12404, 985, 12404, -1971, 22, 12404,
1875  12404, 50, 1022, 468, 16740, 14318, 1026, 487, 12404, 1282, 1025, 7419, 16765, 15737, -1971, -1971,
1876  -1971, -1971, -1971, 1024, 1284, 160, 1286, -1971, -1971, -1971, 9989, 24, 12404, -1971, -1971, -1971,
1877  22, 12404, 12404, 50, 1031, -1971, 1035, -17, 13, -48, 13, -1971, 1032, 14642, -1971, 148,
1878  9989, 22, 12404, 12404, 50, 1291, 9989, 1292, 9989, 12404, 1295, 14090, 22, 11377, 50, 12404,
1879  -1971, 12404, 1296, -1971, 22, 1299, 14090, 12404, 1047, 1044, -1971, 12404, 9152, 1436, 1300, 1302,
1880  1303, 16790, 1305, 1306, 1307, 16815, 1308, 1310, 1311, 1312, 1313, 1314, 1316, -1971, 1319, 1320,
1881  1321, -1971, 12404, 16840, 9989, 1065, 9989, 59, 14671, -1971, -1971, 1324, 15683, 15683, 15683, 15683,
1882  15683, 15683, 15683, 15683, 15683, 15683, 15683, 9405, 15683, 15683, 15683, 15683, 933, 552, 15683, 15683,
1883  15683, 9663, 9921, 10273, 10627, 10892, 5754, 1070, 1069, 96, 9989, 10976, 11237, 552, 11321, 552,
1884  1066, 1067, 1068, 120, 9989, 12404, 12404, 12404, 17790, -1971, 552, 1073, 14700, 14729, -1971, -1971,
1885  12404, 1071, 265, 552, -28, 1080, 197, 524, 1335, -1971, 50, 552, 7419, 1079, 5800, 6061,
1886  1216, 1946, 591, 591, -61, -61, -61, -61, -61, -61, 513, 513, 9989, -185, -1971, -185,
1887  -185, 985, 985, 985, 1081, 16865, 15764, 497, 9989, -1971, 1338, 1082, 1085, 16890, 16915, 16940,
1888  12404, 7419, 1346, 1345, 10692, 16965, 14758, 16990, 17015, -1971, 12404, 526, 535, 9989, 1087, -1971,
1889  12878, -1971, 12951, 12995, -116, 12404, 12404, -1971, -1971, 1090, 1091, 11032, 4973, 1214, 471, -116,
1890  13131, 17040, 14787, 17065, 17090, 17115, 17140, 17165, 17190, 17215, 1095, 1353, 12404, 1355, -1971, 12404,
1891  17240, 14816, -1971, 15791, 13175, 15818, -1971, 537, 542, 545, 14845, -1971, -1971, -1971, 1710, 547,
1892  15845, 15872, 11585, 17265, 1356, 17290, 1357, 1358, 1096, 12404, 13248, 12404, 12404, -1971, -1971, 49,
1893  305, 434, 305, 1106, 1108, 1101, 552, 552, 1102, 11661, 552, 552, 552, 552, 12404, 552,
1894  1363, -1971, 1107, 1113, 438, 226, 1114, 557, -1971, -1971, -1971, -1971, 17315, 15683, -185, 13309,
1895  1116, 525, 1110, 1179, 1373, 1219, 11630, 1120, 1117, 1381, 7419, 14874, -1971, 12404, 1382, 170,
1896  94, 50, 31, 1436, 12404, 1383, -1971, 558, 1341, 1364, 7419, 14903, 46, 1146, 17340, 15899,
1897  516, 12404, 12404, 1154, 1153, 1160, 1158, 8967, -1971, -1971, -1971, -1971, 14090, 163, 1161, 17365,
1898  15926, 1166, -1971, 235, -1971, 236, 11924, -1971, -1971, -1971, 1162, -1971, 1170, 14932, 12008, -1971,
1899  73, -1971, -1971, 17790, -1971, 48, 15683, 12404, 552, -116, 7419, 7419, 1422, 7419, 7419, 7419,
1900  1424, 7419, 7419, 7419, 7419, 7419, 7419, 7419, 7419, 7419, 7419, 1805, 1425, 9989, 5754, -1971,
1901  -1971, 351, -1971, -1971, -1971, -1971, -1971, -1971, -1971, -1971, -1971, -1971, -1971, -1971, -1971, 12404,
1902  -1971, -1971, -1971, -1971, -1971, -1971, -1971, -1971, -1971, 12404, 12404, 12404, 12404, 12404, -1971, -1971,
1903  -1971, 563, 12404, 12404, -1971, 12404, -1971, 7419, 14090, 14090, -1971, 583, 14961, 14990, 15019, 1164,
1904  -1971, -1971, -1971, 1239, 15048, 12404, 12404, -1971, -1971, -1971, 50, -1971, 50, 12404, 12404, 1173,
1905  -1971, 7419, 517, -1971, -1971, -1971, 12404, 12404, 589, 50, 372, -40, 12404, 12404, -1971, 552,
1906  590, 7419, 9989, 9989, 1430, 1431, 1435, 2398, -1971, -1971, 1437, -1971, 1184, 17790, 1175, 1439,
1907  -1971, 1440, 1442, 2001, 1444, 1446, 596, 60, -1971, 13412, -1971, -1971, -27, 12264, 12359, -1971,
1908  -1971, 15077, -92, 1354, 1469, 11724, 1212, 1472, 1220, 30, 38, -38, -1971, 181, -1971, 471,
1909  1474, 1473, 1475, 1476, 1487, 1488, 1489, 1490, 1495, 351, 7419, 17790, -1971, 2056, 1240, 1403,
1910  1507, -1971, 1510, 1515, 1415, 1517, -1971, -1971, 1519, 1522, 1524, 12404, 1525, 7419, 1526, 7419,
1911  7419, 1531, 12921, -1971, 6319, 972, 50, 50, -1971, 9989, -1971, -1971, -1971, -1971, 14090, -1971,
1912  -1971, 12404, 14090, -1971, -1971, -1971, -1971, 17790, -1971, 1274, 1267, 14090, -1971, 14090, -1971, 50,
1913  14090, 1278, -1971, 1275, 1536, -1971, 50, 12404, 12404, 1281, 13, 1283, 11977, -1971, 2164, 1285,
1914  7419, -1971, 1287, -1971, 15106, -1971, -1971, 12404, 1544, 412, 12404, 1545, 1546, 25, 1548, 1293,
1915  1551, 2207, -1971, 552, 517, 517, 1552, -1971, -1971, 1301, 1304, 1298, -1971, 1553, -1971, -1971,
1916  -1971, -1971, -1971, -1971, 50, 377, 2279, 12404, 15953, 17390, 12404, 9220, 12404, 9989, 1309, 597,
1917  1557, 164, 50, -1971, 1325, 12404, 1559, 1560, 12404, 50, 12064, 1561, 12404, 10242, 552, 5254,
1918  12404, 12404, 1322, 1326, -1971, 1562, 17415, 1563, 137, 1433, 1433, 7419, 1566, 1569, 1592, 7419,
1919  -107, 1593, 1594, 1595, 1597, 1598, 1600, 1601, 1602, 1603, -1971, 1605, 602, 1347, 15683, 15683,
1920  15683, 15683, 15683, 15683, 552, 12954, 13478, 13693, 1350, 552, 552, -1971, -1971, -1971, -1971, 48,
1921  552, -1971, 17440, 15683, 1352, -190, 17790, 15683, -1971, 1608, 552, 17790, 17790, -1971, 676, -1971,
1922  50, -1971, 17465, 15980, -1971, 552, 1610, 603, 604, 7419, 7419, 7419, 1613, 1614, -1971, 177,
1923  12404, 7419, 7419, 7419, -1971, 1361, 1362, 1612, 1615, 1620, -1971, 12404, 12404, 12404, 1366, 1367,
1924  1368, 1360, -1971, 2275, 7419, -1971, 12404, -1971, 1622, -1971, 1627, -1971, -1971, 11032, 363, 6645,
1925  -1971, 1370, 1372, 1374, 1375, 1376, 1377, 9473, 1378, 1631, -1971, 9989, 1388, -1971, -1971, -1971,
1926  1390, 12404, 12404, -1971, -1971, 16007, 7419, 1636, 7419, 1639, 1454, -1971, 12404, 12404, 12404, -1971,
1927  1650, 733, 475, 1392, 3012, 1393, 12404, 20, 552, 1396, 552, 1398, -1971, -1971, 1436, -1971,
1928  692, 12404, 1395, -1971, -1971, 2590, -1971, -1971, 1399, 1663, -1971, 2655, -1971, 1404, 1664, 187,
1929  3467, -1971, 25, -1971, 610, -1971, 12404, -1971, -1971, 177, 3815, 4749, -1971, 1413, 12404, 12404,
1930  7419, 1410, -1971, 101, 67, 1670, 17490, 1672, 1335, 17515, 1414, 611, 17540, 612, 1674, 1675,
1931  -1971, -1971, 14090, 1426, 1678, 17565, -1971, -1971, 14098, 1427, -1971, -1971, 6577, 5601, 17790, -1971,
1932  1677, 517, 7935, -1971, -1971, -1971, 17790, 17790, -1971, 48, -1971, 1679, -1971, -1971, -116, 1682,
1933  1683, 1684, -1971, -1971, -1971, 1547, -26, 1586, 1687, -1971, -1971, -1971, -1971, -1971, -1971, -1971,
1934  -1971, -1971, 1689, 1432, 1691, -1971, -1971, -1971, -1971, -1971, -1971, -1971, 12404, 12404, 12404, -1971,
1935  -1971, -1971, 1326, -1971, -1971, -1971, -1971, 12404, 1434, 1429, -1971, -1971, 12404, 12404, 552, 372,
1936  -1971, -1971, -1971, -1971, 1441, 1453, 1695, -107, 1712, 12404, -1971, 7419, 17790, 1575, 1576, 970,
1937  9989, 9989, 12404, -1971, 10692, 15135, 17590, 6835, 351, 351, 12404, 12404, -1971, 423, 1452, 17615,
1938  -1971, -1971, 15164, 191, -1971, 1717, 1718, 7419, -116, -116, -116, -116, -116, 6903, 1719, -1971,
1939  -1971, 617, 9989, 12404, 3816, 4044, 1720, 1721, -1971, 1722, -1971, 7419, 7093, 788, 17640, -1971,
1940  -1971, 10338, -1971, 14090, 12404, -1971, 14090, 17790, 10596, 1436, 1462, -1971, -1971, -1971, -1971, 1471,
1941  1464, 12404, 12404, 15193, 12404, 14318, -1971, 14318, 7419, -1971, -1971, 50, 31, 1436, 12404, 1728,
1942  -1971, 1729, -1971, 25, 16034, 7419, 14090, 1731, 552, -1971, 1470, 552, 12404, 14250, 14283, 620,
1943  -1971, 12404, 12404, 1479, -1971, 1481, -1971, 1435, 1732, 1734, 1442, 1740, -1971, -1971, 1741, 12404,
1944  -1971, -1971, 12404, 12317, 1742, 12404, -1971, -1971, 1485, 4749, 627, 1156, 1746, -1971, -1971, 442,
1945  -1971, -1971, -1971, 1606, 1749, 1492, 1493, 1494, -1971, 1754, 7419, -1971, 15683, 15683, 14316, 15683,
1946  -1971, 1500, 17665, 16061, -1971, -1971, 9989, 9989, -1971, 1756, -1971, 17790, 1757, 12404, 12404, 1501,
1947  -1971, 648, 658, 15655, 4130, 1760, 1503, -1971, -1971, 12404, 1504, 1506, 15222, 16088, 1762, 7419,
1948  1765, 1512, 12404, -1971, -1971, 660, 203, 205, 207, 230, 240, 9731, 264, -1971, 1768, 663,
1949  15251, -1971, -1971, -1971, -1971, -1971, 1587, -1971, 12404, 12404, -1971, -1971, 9989, 4534, 1771, 1518,
1950  15683, 552, 17790, -1971, -1971, -1971, -1971, 20, -1971, 1436, -1971, 15280, 1516, 1520, 1523, 1773,
1951  1776, 1777, 4744, -1971, -1971, -1971, 1521, 1783, 665, -1971, 1784, 1785, 270, 17790, 12404, 12404,
1952  1529, 7419, 666, 17790, 17690, -1971, -1971, -1971, -1971, 17715, 14349, -1971, -1971, 15309, 1164, 1267,
1953  7419, 552, -1971, 12404, 1436, 22, -1971, -1971, 9989, 9989, 12404, 1788, 674, -1971, -1971, 12404,
1954  1429, -1971, -1971, -1971, 679, 681, -1971, -1971, 4887, 4940, 7419, 14, 444, 9989, -1971, -1971,
1955  351, 7351, -1971, -1971, -1971, 1790, -1971, 1532, 7419, -1971, 15338, 1792, 9989, -116, -116, -116,
1956  -116, -116, -1971, 1793, -1971, 12404, 15367, 15396, 682, -1971, -1971, -1971, -1971, -1971, -1971, 1539,
1957  1795, 1540, -1971, 1797, 25, -1971, -1971, -1971, 1611, -1971, -1971, -1971, -1971, -1971, 12404, 14382,
1958  14415, 7419, -1971, 1800, 12404, 1543, -1971, 12404, 1802, 1549, 1550, -1971, -1971, 5332, -1971, 1556,
1959  690, 696, 15425, -1971, 1554, 14448, 1558, -1971, 1564, -1971, -1971, 697, 1565, -116, 7419, 1803,
1960  1567, -116, 1804, 698, 1555, -1971, 12404, -1971, 1806, 1681, 13473, 1568, -1971, 706, 296, 315,
1961  321, 343, 352, -1971, 5189, -1971, -1971, 1815, 1816, -1971, -1971, -1971, 1817, -1971, 1570, 17790,
1962  12404, 12404, 712, -1971, 17790, 14481, -1971, -1971, -1971, 1164, 1436, 1574, -1971, -1971, -1971, 12404,
1963  12404, -1971, 9989, 1824, -116, 149, -1971, -1971, -116, 153, -1971, 1830, -1971, 15454, -1971, 12404,
1964  -1971, 471, -1971, 1832, 9989, 9989, 9989, 9989, 9731, -1971, -1971, -1971, 14318, -1971, 12404, 17740,
1965  14514, 61, 12404, 1577, -1971, -1971, 14547, 14580, 714, -1971, 362, -1971, 378, -1971, -1971, -1971,
1966  5294, 373, 13546, -1971, 719, 720, 722, 727, 409, 732, 1578, 735, -1971, 12404, -1971, 7419,
1967  15483, -1971, 12404, 12404, -1971, -116, -116, -1971, -1971, -1971, 471, 1835, 1838, 1839, 1840, 9989,
1968  1841, 1842, 1843, 1588, 17765, 737, 1844, 15512, 15683, 431, 435, 445, -1971, -1971, -1971, -1971,
1969  738, -1971, -1971, -1971, 14090, -1971, 1590, -1971, 1845, -1971, 12404, 12404, -1971, 1849, 743, -1971,
1970  1596, 7419, -1971, 15541, 15570, -1971, 1850, 14090, 14090, 744, 1851, 1852, -1971, -1971, 754, -1971,
1971  1855, -1971, -1971, 1863, 14090, -1971, -1971, -1971};
1972 
1973 /* YYPGOTO[NTERM-NUM]. */
1974 static const yytype_int16 yypgoto[] = {
1975  -1971, -1971, -1971, -1971, 446, -1971, -1971, -1971, -1971, -320, -1971, -1971, -1971, -1971, -1971,
1976  -1971, -1971, -1971, -1971, -1971, -1971, -1971, -768, -131, 4473, 3614, -440, -1971, 1384, -1971,
1977  -1971, -1971, -1971, -1971, -1971, -1970, -1971, 385, 202, -123, -1971, -82, -1971, 147, 437,
1978  -1971, 1880, -1971, 861, -51, -1971, -1971, -1, -649, -153, -1971, -1971, -1971, -1971, -1971,
1979  -1971, -1971, 786, 1881, -1971, -1971, -1971, -1971, -1294, -1287, 1882, -1798, 1886, -1971, -1971,
1980  -1971, 1262, -1971, -135, -1971, -1971, -1971, -1971, 2418, -1971, -1971, -1484, 320, 1911, -1971,
1981  0, -1971, -1971, 95, -1971, -1755, 553, -77, 2992, 2787, -324, 99, -1971, 183, -71,
1982  -1971, -1971, 117, 293, -1766, -155, 1119, -1971, -3};
1983 
1984 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
1985  positive, shift that token. If negative, reduce the rule which
1986  number is the opposite. If zero, do what YYDEFACT says.
1987  If YYTABLE_NINF, syntax error. */
1988 #define YYTABLE_NINF -589
1989 static const yytype_int16 yytable[] = {
1990  149, 1550, 130, 645, 1548, 1092, 985, 986, 483, 1720, 444, 1098, 1925, 321, 487, 1964, 188, 1965, 462,
1991  379, 773, 680, 175, 173, 1800, 174, 173, 192, 2089, 386, 381, 1096, 969, 383, 1957, 173, 1543, 1686,
1992  430, 355, 173, 425, 432, 429, 1545, 784, 571, 595, 152, 360, 1400, 361, 1439, 304, 766, 173, 1334,
1993  315, 157, 164, 316, 317, 318, 166, 1528, 1168, 326, 2222, 614, 615, 176, 1843, 177, 319, 616, 390,
1994  1877, 309, 467, 1229, 1437, 4, 359, 801, 1440, 1441, 767, 768, 304, 1687, 493, 309, 799, 304, 327,
1995  1878, 767, 768, 389, 2001, 800, 1382, 310, 767, 768, 617, 1284, 494, 150, 426, 328, 329, 151, 496,
1996  366, 179, 1107, 367, 180, 617, 812, 181, 442, 182, 1285, 5, 443, 2012, 517, 356, 368, 750, 331,
1997  332, 46, 1286, 1287, 1288, 525, 818, 320, 1289, 1290, 1677, 333, 819, 468, 362, 334, 470, 805, 478,
1998  478, 478, 1113, 2203, 653, 654, 806, 2205, 485, 769, 770, 2108, 2109, 335, 337, 1091, 340, 2110, 1649,
1999  769, 770, 1535, 153, 653, 654, 1382, 769, 770, 951, 154, 382, 2195, 1382, 384, 661, 609, 610, 748,
2000  612, 613, 614, 615, 1821, 970, 980, 478, 616, 653, 654, 155, 304, 653, 654, 685, 304, 304, 566,
2001  567, 568, 1544, 304, 304, 478, 807, 156, 456, 457, 1546, 987, 653, 654, 808, 991, 577, 1504, 1547,
2002  1801, 1401, 1402, 1403, 1404, 1225, 630, 631, 632, 1889, 1226, 357, 810, 102, 1531, 103, 104, 105, 106,
2003  107, 811, 821, 122, 111, 112, 122, 114, 819, 122, 452, 453, 454, 1097, 664, 122, 1548, 445, 665,
2004  122, 122, 446, 304, 163, 2107, 189, 853, 675, 676, 677, 854, 741, 681, 744, 682, 122, 193, 304,
2005  151, 1054, 304, 593, 387, 757, 592, 692, 456, 457, 1389, 785, 431, 786, 358, -581, 433, 787, 304,
2006  304, 572, 596, 304, 304, 304, 304, 1405, 776, 1073, 777, 1335, 158, 165, 304, 1383, 1386, 167, 304,
2007  1169, 389, 2223, 2146, 452, 453, 454, 455, 391, 466, 176, 802, 177, 803, 476, 479, 480, 804, 176,
2008  322, 177, 168, 323, 304, 1104, 304, 304, 304, 456, 457, 456, 457, 469, 618, 185, 619, 1200, 1385,
2009  1842, 620, 1810, 1121, -585, 304, 456, 457, 304, 618, 813, 619, 803, 1132, 341, 620, 814, 761, 456,
2010  457, 1210, 751, 512, 752, 653, 654, 159, 753, 811, 2218, 1114, 1115, 452, 453, 454, 455, 653, 654,
2011  160, 527, 653, 654, 452, 453, 454, 455, 1114, 1115, 899, 452, 453, 454, 455, 766, 678, 766, 456,
2012  457, 679, 452, 453, 454, 455, 1425, 648, 649, 456, 457, 653, 654, 597, 854, 657, 662, 161, 478,
2013  855, 304, 653, 654, 854, 304, 304, 456, 457, 767, 768, 767, 768, 1549, 653, 654, 653, 654, 653,
2014  654, 176, 304, 177, 1922, 211, 162, 1228, 212, 788, 1229, 213, 2245, 331, 332, 921, 2044, 342, 2045,
2015  854, 2046, 343, 653, 654, 214, 333, 1234, 344, 345, 339, 346, 347, 653, 654, 826, 976, 1359, 978,
2016  979, 1360, 1430, 1431, 910, 2047, 69, 70, 71, 72, 854, 854, 75, 1284, 348, 2048, 992, 917, 653,
2017  654, 169, 84, 304, 1284, 2281, 88, 1469, 769, 770, 769, 770, 1285, 776, 170, 777, 1012, 171, 2077,
2018  2102, 2049, 1222, 1285, 1286, 1287, 1288, 2078, 172, 304, 1289, 1290, 653, 654, 1286, 1287, 1288, 186, 304,
2019  889, 1289, 1290, 187, 478, 1034, 478, 304, 478, 478, 485, 1042, 653, 654, 2180, 776, 906, 777, 653,
2020  654, 304, 304, 304, 811, 478, 478, 304, 175, 190, 175, 916, 304, 918, 2181, 191, 653, 654, 194,
2021  1284, 2182, 653, 654, 2112, 2113, 195, 1071, 653, 654, 2110, 653, 654, 655, 771, 772, 1613, 1614, 1285,
2022  304, 302, 653, 654, 2183, 656, 948, 1284, 653, 654, 1286, 1287, 1288, 2184, 754, 205, 1289, 1290, 653,
2023  654, 1764, 456, 457, 2229, 663, 1285, 456, 457, 304, 304, 2232, 955, 196, -583, 1093, 854, 1286, 1287,
2024  1288, 2230, 956, 1388, 1289, 1290, 854, 204, 470, 470, 1560, 653, 654, 1057, 598, 599, 600, 601, 602,
2025  603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 2239, 653, 654, 197, 616, 653,
2026  654, 304, 304, 304, 1918, 315, 653, 654, 316, 304, 318, 776, 198, 777, 1002, 776, 2266, 777, 854,
2027  1337, 2267, 319, 311, 1357, 199, 312, 2268, 313, 485, 478, 485, 478, 478, 478, 478, 478, 478, 200,
2028  478, 478, 478, 478, 1056, 201, 478, 478, 478, 175, 1062, 1075, 1061, 304, 776, 854, 777, 1792, 1793,
2029  893, 1109, 895, 854, 897, 898, 1072, 983, 984, 202, 1739, 1081, 649, 456, 457, 1082, 1244, 1144, 1245,
2030  304, 913, 914, 748, 612, 613, 614, 615, 776, 526, 777, 778, 616, 456, 457, 304, 1415, 176, 1368,
2031  177, -584, 1101, 456, 457, 207, 1367, 1492, 1368, 1493, 1232, 203, 1268, 351, 854, 352, 854, 1945, 304,
2032  1118, 206, 1269, 1502, 1315, 304, 854, 304, 854, 1316, 485, 1130, 1317, 854, 1320, 776, 854, 777, 854,
2033  1136, 208, 478, 1246, 216, 1363, 1395, 1273, 302, 854, 854, 1476, 209, 210, 1529, 854, 603, 604, 605,
2034  606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 217, 1822, 1483, 304, 616, 304, 854, 305, 1501,
2035  1509, 306, 1829, 854, 854, 308, 1527, 1647, 629, 129, 854, 854, 1699, 1732, 1733, 307, 854, 854, 854,
2036  638, 1826, 1849, 1851, 643, 1827, 854, 854, 1934, 2209, 324, 1984, 854, 304, 183, 1985, 325, 350, 2002,
2037  1262, 1584, 1585, 2003, 304, 553, 1041, 554, 1043, 1044, 1045, 1046, 1047, 1048, 330, 1050, 1051, 1052, 1053,
2038  353, 2027, 1058, 1059, 1060, 854, 707, 1595, 151, 304, 1548, 2028, 314, 2043, 1600, 854, 2051, 1985, 2074,
2039  2083, 854, 338, 811, 2084, 1724, 304, 1725, 2100, 2251, 597, 1246, 1985, 2103, 1615, 2104, 2135, 854, 304,
2040  854, 854, 1809, 349, 1810, 2156, 1384, 1387, 304, 854, 354, 2157, 2163, 2171, 1548, 854, 1985, 854, 363,
2041  364, 304, 2179, 1635, 1246, 1903, 854, 1904, 2193, 434, 2228, 1582, 1985, 365, 854, 2235, 2236, 1651, 2237,
2042  854, 854, 375, 854, 2238, 1657, 1128, 376, 854, 2240, 758, 759, 2242, 854, 2262, 2269, 2084, 1138, 1985,
2043  854, 2278, 2288, 464, 377, 2279, 1985, 774, 464, 464, 464, 781, 2291, 1392, 378, 380, 2292, 464, 598,
2044  599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 776, 385,
2045  777, 952, 616, 394, 392, 393, 395, 440, 1946, 396, 427, 439, 441, 447, 448, 473, 464, 474, 491,
2046  493, 1619, 151, 495, 500, 504, 518, 561, -206, -207, 564, 1276, -208, 524, 464, 304, 573, 574, 1282,
2047  578, 581, 582, 1293, 1391, 583, 594, 443, 626, 627, 634, 635, 304, 636, 642, 639, 644, 666, 646,
2048  647, 1914, 1915, 667, 668, 669, 304, 670, 671, 1503, 1505, 478, 896, 683, 672, 686, 687, 565, 684,
2049  688, 695, 689, 690, 697, 691, 629, 700, 911, 696, 698, 699, 701, 710, 575, 576, 709, 702, 704,
2050  736, 718, 737, 304, 304, 719, 304, 304, 304, 720, 304, 304, 304, 304, 304, 304, 304, 304, 304,
2051  304, 731, 732, 304, 2004, 597, 734, 735, 738, 470, 739, 598, 599, 600, 601, 602, 603, 604, 605,
2052  606, 607, 608, 609, 610, 852, 612, 613, 614, 615, 740, 742, 743, 745, 616, 760, 776, 763, 777,
2053  775, 780, 782, 783, 150, 823, 850, 304, 478, 478, 789, 827, 598, 599, 600, 601, 602, 603, 604,
2054  605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 829, 845, 857, 304, 616, 858, 1583, 859,
2055  890, 924, 925, 900, 901, 1448, 902, 903, 912, 616, 960, 304, 304, 304, 598, 599, 600, 601, 602,
2056  603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 922, 961, 964, 975, 616, 974,
2057  1004, 977, 1006, 1032, 1007, 1010, 1019, 1021, 1064, 1503, 1505, 1035, 1074, 1066, 1080, 1084, 1085, 1089, 1090,
2058  1094, 1105, 1825, 1106, 1111, 1122, 1124, 1424, 464, 1127, 1135, 304, 470, 1137, 1141, 1145, 1140, 1146, 1147,
2059  762, 1149, 1150, 1151, 1153, 1086, 1154, 1155, 1156, 1157, 1158, 304, 1159, 304, 304, 1160, 1161, 1162, 1165,
2060  1171, 1198, 1199, 796, 304, 1207, 1208, 1209, 1217, 478, 1221, 1227, 1233, 478, 1237, 1249, 1250, 1241, 796,
2061  1251, 1257, 1259, 478, 1271, 478, 1279, 1280, 478, 1283, 1305, 1306, 1308, 1329, 1325, 1327, 1328, 1663, 1340,
2062  1668, 1341, 1342, 1345, 1353, 304, 1356, 1370, 1355, 1362, 1369, 1967, 1371, 1376, 1366, 2116, 1372, 1375, 389,
2063  1377, 1381, 1394, 1396, 1481, 1482, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
2064  852, 612, 613, 614, 615, 478, 1412, 1397, 1418, 616, 304, 1419, 304, 464, 1420, 464, 1421, 464, 464,
2065  464, 1429, 1426, 1433, 1451, 1434, 1455, 1467, 1487, 1496, -209, 304, 1513, 1514, 464, 464, 397, 1515, 1518,
2066  1520, 1519, 1521, 1522, 304, 1523, 1813, 1525, 304, 1526, 1815, 600, 601, 602, 603, 604, 605, 606, 607,
2067  608, 609, 610, 748, 612, 613, 614, 615, 1834, 1834, 1537, 1536, 616, 1540, 1236, 1541, 1552, 1542, 1551,
2068  1553, 1554, 1823, 398, 399, 400, 401, 402, 403, 404, 405, 406, 1555, 1556, 1557, 1558, 407, 408, 409,
2069  410, 1559, 1973, 1563, 1564, 411, 412, 413, 414, 304, 304, 304, 1565, 1256, 415, 1566, 416, 304, 304,
2070  304, 1567, 796, 1568, 1569, 1587, 1570, 1808, 1571, 1589, 1572, 417, 1574, 1576, 418, 1579, 1591, 304, 1593,
2071  1597, 1594, 1590, 1599, 1596, 1598, 1601, 796, 1603, 304, 1607, 1612, 1617, 1609, 1618, 1621, 1622, 304, 1623,
2072  1628, 1634, 304, 1630, 1632, 1648, 1631, 1654, 1655, 1659, 1674, 1676, 1678, 304, 1682, 304, 1646, 1683, 464,
2073  464, 464, 464, 464, 464, 464, 464, 464, 1672, 464, 464, 464, 464, 1863, 1652, 464, 464, 464, 1673,
2074  1893, 1637, 1684, 1689, 1690, 1691, 796, 1692, 1693, 796, 1694, 1695, 1696, 1697, 1698, 1711, 1700, 1718, 1722,
2075  389, 1731, 1737, 796, 1746, 1738, 1747, 1755, 485, 485, 1744, 1745, 1748, 1760, 304, 1752, 1753, 1754, 1761,
2076  1767, 1378, 1768, 1776, 1769, 1770, 1771, 1772, 1784, 1775, 1763, 1786, 1787, 478, 419, 420, 421, 1398, 1778,
2077  1108, 1779, 1110, 1791, 1805, 304, 1812, 422, 1795, 1798, 304, 423, 798, 424, 1360, 1816, 1817, 1819, 1820,
2078  464, 1836, 1841, 1976, 1844, 1909, 1846, 1848, 1852, 1853, 1856, 464, 1864, 1870, 1855, 1859, 1872, 1873, 1874,
2079  1875, 1879, 1880, 1881, 1888, 1882, 1883, 1229, 1449, 1450, 1896, 1452, 1453, 1454, 1894, 1456, 1457, 1458, 1459,
2080  1460, 1461, 1462, 1463, 1464, 1465, 1319, 1895, 1898, 1901, 1902, 1919, 1950, 1923, 1924, 1933, 1939, 1940, 1941,
2081  1955, 1958, 1959, 1960, 1961, 1971, 1972, 304, 1977, 1989, 811, 1990, 304, 304, -588, 2140, -586, 1991, 1992,
2082  1996, 2000, 1969, 470, 470, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 1480, 2017, 2022, 2023, 304, 2026, 2031,
2083  2032, 2038, 2034, 304, 2035, 2040, 1871, 2050, 304, 2041, 2058, 2053, 2059, 2068, 2065, 2069, 2070, 304, 2066,
2084  1497, 2072, 2067, 2073, 2075, 2076, 478, 2081, 2099, 478, 2119, 2120, 2124, 2131, 2136, 2137, 1510, 2139, 2138,
2085  2141, 2147, -587, 2150, 2167, 2170, 1466, 2174, 304, 2151, 2152, 2155, 1391, 2159, 2161, 2172, 2186, 2187, 2189,
2086  389, 2175, 304, 485, 2162, 2164, 2201, 2168, 2178, 1854, 2190, 2197, 2206, 796, 2211, 796, 796, 2252, 2225,
2087  2241, 2253, 2254, 2255, 2257, 2258, 2259, 2263, 2274, 2260, 796, 2273, 2277, 2284, 2289, 2290, 1561, 2280, 2293,
2088  485, 1926, 1927, 1928, 1929, 1930, 1932, 2294, 2219, 1650, 1714, 796, 822, 1869, 2090, 2062, 1575, 304, 1577,
2089  1578, 1897, 128, 139, 140, 1411, 1680, 2122, 141, 2063, 304, 304, 2114, 963, 796, 598, 599, 600, 601,
2090  602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 147, 1807, 304, 1956, 616,
2091  1968, 1835, 0, 0, 0, 0, 0, 0, 0, 304, 1608, 1129, 0, 796, 2094, 0, 0, 0, 0,
2092  0, 0, 0, 0, 0, 0, 0, 304, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
2093  608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0,
2094  0, 464, 1951, 0, 0, 1953, 304, 0, 0, 2188, 0, 0, 0, 0, 0, 0, 1667, 0, 0,
2095  0, 0, 304, 0, 0, 0, 0, 2095, 0, 1681, 304, 304, 1524, 1685, 0, 0, 0, 0, 0,
2096  0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 0, 2210, 304, 0, 0, 0, 0, 470, 0,
2097  0, 0, 0, 0, 304, 0, 0, 0, 304, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
2098  608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 1562, 0, 616, 389, 1734, 1735, 1736, 464, 464,
2099  0, 0, 0, 1741, 1742, 1743, 0, 304, 0, 0, 0, 0, 2196, 0, 0, 0, 0, 0, 0,
2100  0, 0, 0, 1758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1766, 0, 0, 304, 0,
2101  0, 0, 0, 1774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1783,
2102  0, 1785, 0, 0, 0, 0, 796, 0, 0, 0, 0, 0, 2126, 2127, 2128, 2129, 2130, 0, 0,
2103  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 0, 0, 0, 0, 0, 0,
2104  0, 0, 0, 0, 1606, 0, 0, 0, 0, 0, 0, 304, 304, 304, 304, 304, 0, 0, 0,
2105  1840, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 464,
2106  2165, 616, 0, 464, 2169, 0, 0, 0, 0, 1624, 1862, 0, 464, 0, 464, 0, 304, 464, 0,
2107  0, 0, 0, 0, 0, 0, 0, 0, 1602, 0, 0, 0, 0, 304, 0, 598, 599, 600, 601,
2108  602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 478, 0, 2202, 616,
2109  0, 0, 2204, 0, 0, 0, 0, 0, 0, 304, 0, 0, 0, 0, 464, 478, 478, 0, 2216,
2110  0, 1756, 0, 173, 397, 0, 0, 0, 0, 478, 0, 0, 1900, 598, 599, 600, 601, 602, 603,
2111  604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0,
2112  0, 0, 1840, 0, 0, 0, 2249, 2250, 0, 0, 398, 399, 400, 401, 402, 403, 404, 405, 406,
2113  0, 0, 0, 1942, 407, 408, 409, 410, 0, 0, 0, 0, 411, 412, 413, 414, 0, 0, 0,
2114  0, 0, 415, 0, 416, 0, 0, 0, 0, 0, 0, 0, 0, 1966, 0, 0, 0, 0, 417,
2115  0, 0, 418, 0, 0, 0, 179, 1975, 0, 180, 0, 0, 181, 0, 182, 0, 0, 0, 0,
2116  0, 0, 0, 0, 0, 0, 46, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
2117  610, 748, 612, 613, 614, 615, 450, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0,
2118  0, 0, 0, 1840, 0, 0, 0, 0, 0, 0, 0, 2271, 598, 599, 600, 601, 602, 603, 604,
2119  605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 2285, 2287, 0, 0, 616, 0, 0, 0,
2120  0, 0, 2039, 0, 0, 2295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 464, 464,
2121  0, 0, 419, 420, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 423,
2122  0, 424, 122, 464, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612,
2123  613, 614, 615, 0, 0, 0, 0, 616, 0, 456, 457, 2082, 437, 0, 0, 1516, -582, 0, 1636,
2124  0, 0, 0, 0, 0, 0, 0, 2091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2125  0, 0, 465, 0, 0, 0, 475, 0, 0, 0, 0, 481, 0, 0, 1840, 0, 0, 0, 486,
2126  0, 0, 488, 0, 0, 7, 8, 0, 0, 2121, 0, 0, 1814, 0, 0, 0, 0, 0, 0,
2127  497, 498, 499, 0, 501, 502, 503, 0, 505, 506, 507, 508, 509, 510, 511, 0, 513, 514, 515,
2128  516, 0, 0, 0, 0, 520, 520, 0, 0, 0, 0, 0, 1840, 598, 599, 600, 601, 602, 603,
2129  604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 464, 616, 0, 464,
2130  0, 1818, 0, 2166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 796, 0, 796, 0, 29,
2131  30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 464, 0, 0, 43, 44, 45, 46,
2132  0, 0, 48, 0, 0, 0, 584, 586, 588, 589, 520, 790, 57, 0, 0, 60, 791, 0, 792,
2133  793, 0, 794, 0, 0, 0, 623, 520, 520, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2134  0, 81, 0, 0, 0, 641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 651, 652, 0, 0,
2135  0, 0, 652, 0, 0, 0, 0, 0, 0, 98, 99, 100, 520, 674, 0, 0, 0, 0, 0,
2136  0, 0, 1840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 693, 520, 0, 0,
2137  0, 0, 0, 0, 0, 0, 0, 703, 0, 705, 706, 0, 708, 0, 0, 0, 711, 712, 713,
2138  0, 0, 714, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1840, 598, 599, 600, 601,
2139  602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616,
2140  0, 0, 0, 0, 747, 0, 0, 0, 0, 520, 756, 0, 0, 0, 0, 0, 0, 0, 0,
2141  0, 0, 0, 0, 0, 0, 0, 764, 765, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2142  0, 0, 0, 797, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612,
2143  613, 614, 615, 0, 0, 0, 828, 616, 0, 0, 0, 833, 0, 0, 0, 837, 0, 0, 0,
2144  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 851, 586, 0, 0, 0, 0, 856, 0, 0,
2145  0, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 878,
2146  879, 880, 881, 882, 883, 884, 885, 886, 886, 0, 891, 892, 0, 894, 0, 0, 0, 0, 0,
2147  796, 0, 0, 0, 904, 0, 0, 908, 909, 0, 0, 0, 0, 522, 523, 886, 0, 0, 0,
2148  0, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 926, 927, 928, 929, 930, 931,
2149  932, 933, 934, 935, 936, 937, 938, 939, 941, 943, 944, 945, 946, 947, 0, 949, 950, 0, 0,
2150  0, 0, 0, 0, 957, 958, 959, 0, 0, 796, 0, 0, 965, 966, 967, 968, 0, 520, 520,
2151  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 796, 0, 0, 0, 0, 584, 747,
2152  988, 0, 0, 0, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 0, 0, 624, 625, 0, 1008,
2153  1009, 0, 1011, 0, 0, 1013, 0, 0, 0, 520, 520, 520, 1018, 0, 0, 0, 1022, 520, 1024,
2154  1025, 1026, 0, 0, 1027, 464, 1029, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2155  0, 673, 0, 0, 0, 464, 464, 1049, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 464,
2156  0, 0, 520, 0, 0, 0, 0, 0, 0, 1068, 1069, 0, 1070, 0, 0, 949, 950, 0, 0,
2157  0, 0, 0, 0, 0, 1083, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2158  0, 0, 0, 0, 520, 0, 1099, 0, 0, 521, 521, 1102, 1103, 0, 0, 0, 0, 0, 0,
2159  0, 0, 0, 0, 0, 0, 0, 520, 0, 1119, 1120, 0, 0, 520, 0, 520, 1126, 755, 0,
2160  0, 1119, 0, 1133, 0, 1134, 0, 0, 0, 0, 0, 1139, 0, 0, 0, 1142, 0, 0, 0,
2161  598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0,
2162  1163, 0, 941, 616, 1166, 776, 0, 777, 0, 0, 0, 587, 0, 1796, 521, 0, 0, 0, 0,
2163  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 521, 0, 0, 0, 0, 0, 0,
2164  0, 0, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, 1212, 1213, 1214, 0, 0, 0,
2165  0, 0, 0, 0, 0, 1220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 0, 0,
2166  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, 0, 0, 0, 0,
2167  0, 521, 0, 0, 0, 0, 0, 520, 0, 919, 0, 0, 0, 0, 0, 1255, 0, 0, 0,
2168  1261, 0, 0, 0, 0, 0, 1267, 0, 0, 520, 0, 0, 0, 0, 0, 0, 0, 1277, 1278,
2169  0, 0, 0, 0, 1281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2170  0, 0, 1307, 0, 0, 1309, 971, 972, 0, 0, 0, 0, 0, 521, 0, 0, 0, 0, 0,
2171  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1330, 0, 1332, 1333, 0, 0, 0,
2172  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1351, 1824, 0, 1015, 1016,
2173  1017, 0, 0, 0, 0, 0, 1023, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2174  1374, 0, 0, 0, 0, 0, 0, 1380, 0, 0, 0, 0, 0, 0, 1393, 587, 0, 0, 0,
2175  0, 0, 0, 0, 0, 0, 0, 0, 1416, 1417, 1063, 0, 0, 0, 520, 0, 0, 0, 0,
2176  0, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 887, 888, 0, 0, 0, 0, 0, 0,
2177  0, 0, 0, 0, 0, 0, 0, 0, 1446, 0, 0, 0, 1095, 0, 0, 0, 0, 0, 0,
2178  915, 0, 0, 0, 0, 521, 0, 0, 0, 0, 0, 520, 0, 0, 0, 1117, 0, 0, 0,
2179  0, 0, 1123, 0, 1125, 0, 0, 0, 0, 0, 1470, 0, 942, 0, 0, 0, 0, 0, 0,
2180  0, 1471, 1472, 1473, 1474, 1475, 0, 0, 0, 0, 1477, 1478, 0, 1479, 0, 0, 0, 0, 0,
2181  0, 0, 521, 521, 0, 0, 0, 0, 0, 0, 1490, 1491, 0, 0, 0, 0, 0, 0, 1494,
2182  1495, 0, 0, 0, 0, 0, 0, 0, 1499, 1500, 0, 0, 0, 0, 1506, 1507, 0, 0, 0,
2183  0, 520, 520, 0, 0, 0, 0, 0, 0, 0, 1201, 0, 0, 521, 521, 521, 0, 0, 0,
2184  0, 1211, 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1539, 598,
2185  599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0,
2186  0, 0, 616, 1240, 0, 0, 521, 0, 0, 0, 0, 0, 0, 0, 0, 1248, 0, 1573, 0,
2187  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, 0, 0, 0, 0, 1270, 0,
2188  0, 1588, 0, 0, 0, 0, 0, 0, 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2189  0, 0, 0, 0, 1506, 1507, 0, 0, 0, 1605, 0, 521, 0, 0, 0, 0, 0, 521, 0,
2190  521, 1611, 0, 0, 1616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2191  173, 397, 0, 1937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1638, 0, 0, 1641, 520,
2192  1644, 520, 0, 0, 0, 0, 942, 0, 1167, 1653, 0, 0, 1656, 0, 1653, 0, 1660, 1662, 597,
2193  0, 1670, 1671, 0, 0, 0, 0, 398, 399, 400, 401, 402, 403, 404, 405, 406, 0, 0, 0,
2194  0, 407, 408, 409, 410, 0, 521, 0, 0, 411, 412, 413, 414, 0, 0, 0, 521, 0, 415,
2195  0, 416, 0, 1423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 417, 0, 0, 418,
2196  0, 0, 0, 179, 0, 0, 180, 0, 0, 181, 0, 182, 0, 0, 0, 0, 0, 0, 521,
2197  0, 0, 0, 46, 0, 1740, 0, 0, 0, 0, 0, 521, 0, 0, 0, 0, 1749, 1750, 1751,
2198  1468, 0, 0, 450, 0, 0, 1757, 0, 1759, 0, 0, 0, 0, 521, 0, 1762, 0, 0, 0,
2199  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, 0, 0, 0, 0, 0, 1780, 1781, 0,
2200  0, 0, 0, 0, 0, 0, 0, 0, 1788, 1789, 1790, 0, 0, 0, 0, 0, 0, 0, 1799,
2201  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1811, 0, 0, 0, 0, 0, 0, 0, 419,
2202  420, 421, 0, 0, 0, 0, 0, 0, 0, 1511, 1512, 422, 1828, 0, 0, 423, 0, 424, 122,
2203  0, 1837, 1838, 1938, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
2204  748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 776, 779, 777, 1830, 0, 0, 0, 0, 1867,
2205  598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 521,
2206  0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2207  0, 1586, 0, 1884, 1885, 1886, 0, 0, 0, 0, 0, 0, 0, 2030, 1887, 0, 0, 0, 0,
2208  1890, 1891, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1899, 0, 521, 0, 0, 0,
2209  0, 520, 520, 1907, 0, 1908, 0, 0, 0, 0, 0, 1916, 1917, 0, 0, 0, 0, 0, 0,
2210  0, 0, 0, 0, 905, 0, 0, 0, 0, 0, 0, 520, 0, 0, 0, 0, 520, 1936, 0,
2211  0, 0, 0, 0, 0, 0, 0, 1643, 0, 1645, 0, 0, 1949, 0, 0, 1952, 0, 0, 0,
2212  1954, 0, 0, 0, 0, 0, 0, 0, 0, 1890, 1891, 0, 1963, 0, 0, 0, 0, 0, 953,
2213  0, 0, 0, 1970, 0, 521, 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1981, 0,
2214  0, 0, 0, 1987, 1988, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1993, 0,
2215  0, 1994, 1993, 0, 1997, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
2216  748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 520,
2217  520, 0, 0, 0, 0, 0, 2024, 2025, 0, 0, 0, 0, 0, 0, 0, 0, 521, 0, 2033,
2218  0, 0, 0, 0, 0, 0, 0, 0, 2042, 0, 0, 0, 0, 0, 0, 0, 0, 586, 1777,
2219  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2054, 2055, 0, 0, 520, 598, 599, 600,
2220  601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0,
2221  616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 2080, 0, 0, 0, 0, 0, 0,
2222  0, 0, 0, 521, 0, 521, 0, 0, 0, 0, 0, 0, 0, 2093, 0, 0, 0, 0, 520,
2223  520, 2098, 0, 0, 0, 0, 2101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2224  0, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, 0, 0,
2225  0, 0, 0, 0, 0, 0, 2132, 0, 0, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181,
2226  1182, 0, 1184, 1185, 1186, 1187, 0, 1189, 1190, 1191, 1192, 0, 2143, 0, 0, 178, 0, 184, 2148,
2227  0, 0, 2149, 0, 1204, 0, 1206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1216, 0,
2228  0, 0, 0, 0, 0, 0, 1223, 1224, 0, 1905, 1906, 0, 0, 0, 2173, 1235, 0, 0, 2057,
2229  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 0, 0, 0, 0,
2230  0, 0, 2191, 2192, 0, 1935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2198, 2199,
2231  0, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2208, 0, 0, 0, 0,
2232  520, 520, 520, 520, 520, 0, 0, 0, 0, 0, 1987, 0, 0, 0, 2224, 0, 0, 0, 0,
2233  0, 0, 0, 0, 0, 463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2234  0, 0, 0, 2244, 0, 0, 0, 0, 2247, 2248, 0, 0, 0, 0, 0, 0, 0, 0, 1336,
2235  1338, 1339, 520, 1868, 0, 1343, 1344, 0, 0, 1347, 1348, 1349, 1350, 0, 1352, 0, 0, 0, 0,
2236  1358, 0, 0, 0, 0, 0, 0, 2020, 2021, 0, 2275, 2276, 0, 0, 0, 0, 0, 0, 0,
2237  0, 0, 0, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543,
2238  544, 545, 546, 547, 548, 549, 550, 551, 552, 555, 556, 557, 558, 559, 560, 0, 562, 563, 0,
2239  0, 0, 0, 0, 2056, 521, 521, 569, 570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2240  2071, 579, 580, 173, 397, 0, 1445, 0, 1447, 0, 0, 0, 0, 0, 0, 521, 0, 0, 0,
2241  0, 521, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614,
2242  615, 0, 0, 0, 0, 616, 0, 2096, 2097, 0, 398, 399, 400, 401, 402, 403, 404, 405, 406,
2243  0, 0, 0, 0, 407, 408, 409, 410, 0, 2115, 0, 0, 411, 412, 413, 414, 0, 0, 0,
2244  0, 0, 415, 0, 416, 2125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 417,
2245  0, 0, 418, 0, 0, 0, 179, 0, 0, 180, 0, 0, 181, 0, 182, 0, 1508, 0, 0,
2246  0, 0, 0, 0, 0, 0, 46, 715, 716, 717, 0, 0, 0, 721, 722, 723, 724, 725, 726,
2247  727, 0, 728, 521, 521, 0, 450, 729, 730, 0, 2105, 733, 0, 0, 0, 0, 0, 0, 0,
2248  0, 0, 0, 0, 0, 0, 746, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2249  0, 0, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2250  521, 0, 0, 0, 0, 0, 2106, 0, 0, 2200, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2251  0, 0, 419, 420, 421, 0, 0, 0, 2212, 2213, 2214, 2215, 2217, 0, 422, 0, 0, 0, 423,
2252  0, 424, 122, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613,
2253  614, 615, 0, 521, 521, 0, 616, 0, 0, 0, 0, 0, 1625, 0, 0, 0, 1830, 0, 0,
2254  0, 0, 0, 0, 0, 521, 0, 0, 0, 0, 2256, 0, 0, 0, 0, 0, 0, 0, 0,
2255  0, 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1664, 0,
2256  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 0, 0, 0, 0, 0,
2257  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 0,
2258  0, 0, 0, 1712, 1713, 0, 0, 0, 0, 0, 1715, 0, 0, 1717, 0, 0, 0, 1721, 0,
2259  0, 1723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1730, 598, 599, 600, 601, 602, 603,
2260  604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0,
2261  0, 0, 0, 0, 0, 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2262  0, 0, 0, 0, 521, 521, 521, 521, 521, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
2263  608, 609, 610, 748, 612, 613, 614, 615, 2185, 0, 0, 0, 616, 1794, 0, 1797, 0, 0, 0,
2264  1804, 0, 1806, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612,
2265  613, 614, 615, 0, 0, 0, 521, 616, 0, 1020, 0, 0, 0, 0, 0, 1831, 0, 981, 0,
2266  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 6, 397, 0, 0, 0,
2267  0, 219, 220, 221, 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
2268  235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 2231,
2269  0, 0, 1665, 399, 400, 401, 402, 403, 404, 405, 406, 253, 254, 255, 256, 407, 408, 409, 410,
2270  257, 258, 0, 0, 411, 412, 413, 414, 0, 0, 259, 260, 261, 415, 0, 416, 262, 263, 264,
2271  2154, 1892, 0, 0, 0, 0, 0, 0, 265, 25, 417, 266, 0, 418, 0, 0, 0, 267, 0,
2272  0, 268, 0, 0, 269, 0, 270, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 271, 0,
2273  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 58, 59, 1230, 273, 0, 274, 0,
2274  0, 275, 0, 0, 0, 0, 0, 69, 70, 71, 72, 73, 0, 75, 76, 77, 78, 79, 80,
2275  0, 0, 0, 84, 0, 0, 0, 88, 0, 1247, 0, 598, 599, 600, 601, 602, 603, 604, 605,
2276  606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 1978, 276, 616, 1979, 0, 0, 0,
2277  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 419, 420, 421, 278, 279, 0,
2278  0, 0, 0, 280, 281, 282, 422, 283, 284, 285, 423, 0, 424, 122, 0, 0, 0, 0, 0,
2279  0, 0, 0, 0, 0, 0, 0, 2013, 2014, 0, 2016, 286, 287, 0, 0, 0, 0, 0, 288,
2280  0, 0, 0, 0, 371, 0, 0, 0, 1666, 0, 0, 291, 0, 0, 0, 0, 0, 0, 0,
2281  0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614,
2282  615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2060,
2283  2061, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614,
2284  615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218,
2285  6, 397, 0, 0, 1438, 0, 219, 220, 221, 0, 2092, 222, 223, 224, 225, 226, 227, 228, 229,
2286  230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
2287  249, 250, 251, 252, 0, 0, 0, 398, 399, 400, 401, 402, 403, 404, 405, 406, 253, 254, 255,
2288  256, 407, 408, 409, 410, 257, 258, 0, 0, 411, 412, 413, 414, 0, 0, 259, 260, 261, 415,
2289  0, 416, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265, 25, 417, 266, 0, 418,
2290  0, 0, 0, 267, 0, 0, 268, 1498, 0, 269, 0, 270, 0, 0, 0, 0, 0, 0, 42,
2291  0, 0, 0, 271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 58, 59,
2292  0, 273, 0, 274, 0, 0, 275, 0, 0, 0, 0, 0, 69, 70, 71, 72, 73, 0, 75,
2293  76, 77, 78, 79, 80, 597, 0, 0, 84, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0,
2294  0, 0, 0, 0, 0, 0, 0, 0, 0, 1036, 0, 0, 0, 0, 0, 0, 0, 0, 276,
2295  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1238, 0, 0, 0, 277, 419,
2296  420, 421, 278, 279, 0, 0, 0, 0, 280, 281, 282, 422, 283, 284, 285, 423, 0, 424, 122,
2297  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, 287, 0,
2298  0, 0, 0, 0, 288, 0, 0, 0, 0, 371, 2265, 0, 0, 290, 0, 0, 291, 1626, 1627,
2299  0, 218, 173, 397, 0, 449, 0, 0, 219, 220, 221, 0, 0, 222, 223, 224, 225, 226, 227,
2300  228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 435, 240, 241, 242, 243, 244, 245, 246,
2301  247, 0, 0, 0, 0, 0, 0, 0, 0, 398, 399, 400, 401, 402, 403, 404, 405, 406, 253,
2302  254, 255, 256, 407, 408, 409, 410, 257, 0, 0, 0, 411, 412, 413, 414, 0, 0, 0, 0,
2303  0, 415, 0, 416, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265, 25, 417, 266,
2304  1719, 418, 0, 0, 0, 179, 0, 0, 180, 1726, 0, 181, 0, 182, 0, 0, 0, 0, 0,
2305  0, 0, 0, 0, 0, 46, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
2306  852, 612, 613, 614, 615, 450, 0, 0, 0, 616, 598, 599, 600, 601, 602, 603, 604, 605, 606,
2307  607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 598, 599, 600, 601, 602,
2308  603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0,
2309  0, 0, 0, 0, 0, 0, 0, 0, 1239, 0, 0, 0, 451, 0, 0, 0, 0, 0, 0,
2310  277, 419, 420, 421, 278, 0, 0, 0, 0, 0, 280, 281, 282, 422, 283, 284, 285, 423, 0,
2311  424, 122, 0, 452, 453, 454, 455, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 286,
2312  436, 0, 0, 0, 0, 0, 288, 0, 456, 457, 0, 458, 0, 459, 218, 6, 370, 460, 291,
2313  0, 1865, 219, 220, 221, 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
2314  234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
2315  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 254, 255, 256, 0, 0, 0,
2316  0, 257, 258, 0, 0, 0, 0, 0, 0, 0, 0, 259, 260, 261, 0, 0, 0, 262, 263,
2317  264, 0, 0, 0, 0, 0, 0, 0, 0, 265, 25, 0, 266, 0, 0, 0, 0, 0, 267,
2318  0, 0, 268, 0, 0, 269, 0, 270, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 271,
2319  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 58, 59, 0, 273, 0, 274,
2320  0, 0, 275, 0, 0, 0, 0, 0, 69, 70, 71, 72, 73, 0, 75, 76, 77, 78, 79,
2321  80, 0, 0, 0, 84, 0, 0, 0, 88, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
2322  608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 276, 0, 0, 0, 0,
2323  1581, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 278, 279,
2324  0, 0, 0, 0, 280, 281, 282, 0, 283, 284, 285, 0, 0, 0, 122, 0, 0, 0, 0,
2325  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, 287, 0, 0, 0, 0, 0,
2326  288, 0, 0, 0, 0, 371, 218, 6, 0, 372, 0, 694, 291, 219, 220, 221, 0, 0, 222,
2327  223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
2328  242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 0, 0, 0, 0, 0, 0, 0, 0,
2329  0, 0, 0, 0, 253, 254, 255, 256, 0, 0, 0, 0, 257, 258, 0, 0, 0, 0, 0,
2330  0, 0, 0, 259, 260, 261, 0, 0, 0, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0,
2331  0, 265, 25, 0, 266, 0, 0, 0, 0, 0, 267, 0, 0, 268, 0, 0, 269, 0, 270,
2332  0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 271, 0, 0, 0, 0, 0, 0, 0, 0,
2333  0, 0, 0, 272, 0, 58, 59, 0, 273, 0, 274, 0, 0, 275, 0, 0, 0, 0, 0,
2334  69, 70, 71, 72, 73, 0, 75, 76, 77, 78, 79, 80, 0, 0, 0, 84, 0, 0, 0,
2335  88, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615,
2336  0, 0, 0, 0, 616, 0, 276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2337  0, 0, 0, 0, 0, 277, 0, 0, 0, 278, 279, 0, 0, 0, 0, 280, 281, 282, 0,
2338  283, 284, 285, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2339  0, 0, 0, 0, 286, 519, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 371, 218, 6,
2340  1765, 0, 590, 0, 291, 219, 220, 221, 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, 230,
2341  231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
2342  250, 251, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 254, 255, 256,
2343  0, 0, 0, 0, 257, 258, 0, 0, 0, 0, 0, 0, 0, 0, 259, 260, 261, 0, 0,
2344  0, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265, 25, 0, 266, 0, 0, 0,
2345  0, 0, 267, 0, 0, 268, 0, 0, 269, 0, 270, 0, 0, 0, 0, 0, 0, 42, 0,
2346  0, 0, 271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 58, 59, 0,
2347  273, 0, 274, 0, 0, 275, 0, 0, 0, 0, 0, 69, 70, 71, 72, 73, 0, 75, 76,
2348  77, 78, 79, 80, 0, 0, 0, 84, 0, 0, 0, 88, 598, 599, 600, 601, 602, 603, 604,
2349  605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 276, 0,
2350  0, 0, 1860, 0, 0, 0, 1861, 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 0, 0,
2351  0, 278, 279, 0, 0, 0, 0, 280, 281, 282, 0, 283, 284, 285, 0, 0, 0, 122, 0,
2352  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, 287, 0, 0,
2353  0, 0, 0, 288, 0, 0, 0, 0, 371, 218, 6, 0, 290, 0, 0, 291, 219, 220, 221,
2354  0, 0, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
2355  239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 0, 0, 0, 0, 0,
2356  0, 0, 0, 0, 0, 0, 0, 253, 254, 255, 256, 0, 0, 0, 0, 257, 258, 0, 0,
2357  0, 0, 0, 0, 0, 0, 259, 260, 261, 0, 0, 0, 262, 263, 264, 0, 0, 0, 0,
2358  0, 0, 0, 0, 265, 25, 0, 266, 0, 0, 0, 0, 0, 267, 0, 0, 268, 0, 0,
2359  269, 0, 270, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 271, 0, 0, 0, 0, 0,
2360  0, 0, 0, 0, 0, 0, 272, 0, 58, 59, 0, 273, 0, 274, 0, 0, 275, 0, 0,
2361  0, 0, 0, 69, 70, 71, 72, 73, 0, 75, 76, 77, 78, 79, 80, 0, 0, 0, 84,
2362  0, 0, 0, 88, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612,
2363  613, 614, 615, 0, 0, 0, 0, 616, 0, 276, 0, 0, 0, 1912, 0, 0, 0, 1913, 0,
2364  0, 0, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 278, 279, 0, 0, 0, 0, 280,
2365  281, 282, 0, 283, 284, 285, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2366  0, 0, 0, 0, 0, 0, 0, 658, 1931, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0,
2367  660, 218, 6, 0, 334, 590, 0, 291, 219, 220, 221, 0, 0, 222, 223, 224, 225, 226, 227,
2368  228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
2369  247, 248, 249, 250, 251, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253,
2370  254, 255, 256, 0, 0, 0, 0, 257, 258, 0, 0, 0, 0, 0, 0, 0, 0, 259, 260,
2371  261, 0, 0, 0, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265, 25, 0, 266,
2372  0, 0, 0, 0, 0, 267, 0, 0, 268, 0, 0, 269, 0, 270, 0, 0, 0, 0, 0,
2373  0, 42, 0, 0, 0, 271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0,
2374  58, 59, 0, 273, 0, 274, 0, 0, 275, 0, 0, 0, 0, 0, 69, 70, 71, 72, 73,
2375  0, 75, 76, 77, 78, 79, 80, 0, 0, 0, 84, 0, 0, 0, 88, 598, 599, 600, 601,
2376  602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616,
2377  0, 276, 0, 0, 0, 1943, 0, 0, 0, 1944, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2378  277, 0, 0, 0, 278, 279, 0, 0, 0, 0, 280, 281, 282, 0, 283, 284, 285, 0, 0,
2379  0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 286,
2380  287, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 289, 218, 6, 0, 290, 0, 0, 291,
2381  219, 220, 221, 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
2382  236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 0, 0,
2383  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 254, 255, 256, 0, 0, 0, 0, 257,
2384  258, 0, 0, 0, 0, 0, 0, 0, 0, 259, 260, 261, 0, 0, 0, 262, 263, 264, 0,
2385  0, 0, 0, 0, 0, 0, 0, 265, 25, 0, 266, 0, 0, 0, 0, 0, 267, 0, 0,
2386  268, 0, 0, 269, 0, 270, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 271, 0, 0,
2387  0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 58, 59, 0, 273, 0, 274, 0, 0,
2388  275, 0, 0, 0, 0, 0, 69, 70, 71, 72, 73, 0, 75, 76, 77, 78, 79, 80, 0,
2389  0, 0, 84, 0, 0, 0, 88, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
2390  610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 276, 0, 0, 0, 2117, 0, 0,
2391  0, 2118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 278, 279, 0, 0,
2392  0, 0, 280, 281, 282, 0, 283, 284, 285, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0,
2393  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, 287, 0, 0, 0, 0, 0, 288, 0,
2394  0, 0, 0, 371, 218, 6, 0, 290, 0, 0, 291, 219, 220, 221, 0, 0, 222, 223, 224,
2395  225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
2396  244, 245, 246, 247, 248, 249, 250, 251, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2397  0, 0, 253, 254, 255, 256, 0, 0, 0, 0, 257, 258, 0, 0, 0, 0, 0, 0, 0,
2398  0, 259, 260, 261, 0, 0, 0, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265,
2399  25, 0, 266, 0, 0, 0, 0, 0, 267, 0, 0, 268, 0, 0, 269, 0, 270, 0, 0,
2400  0, 0, 0, 0, 42, 0, 0, 0, 271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2401  0, 272, 0, 58, 59, 0, 273, 0, 274, 0, 0, 275, 0, 0, 0, 0, 0, 69, 70,
2402  71, 72, 73, 0, 75, 76, 77, 78, 79, 80, 0, 0, 0, 84, 0, 0, 0, 88, 598,
2403  599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0,
2404  0, 0, 616, 0, 276, 0, 0, 0, 0, 0, 0, 0, 809, 0, 0, 0, 0, 0, 0,
2405  0, 0, 0, 277, 0, 0, 0, 278, 279, 0, 0, 0, 0, 280, 281, 282, 0, 283, 284,
2406  285, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2407  0, 0, 286, 519, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 371, 218, 6, 0, 585,
2408  0, 0, 291, 219, 220, 221, 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
2409  233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
2410  252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 254, 255, 256, 0, 0,
2411  0, 0, 257, 258, 0, 0, 0, 0, 0, 0, 0, 0, 259, 260, 261, 0, 0, 0, 262,
2412  263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265, 25, 0, 266, 0, 0, 0, 0, 0,
2413  267, 0, 0, 268, 0, 0, 269, 0, 270, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0,
2414  271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 58, 59, 0, 273, 0,
2415  274, 0, 0, 275, 0, 0, 0, 0, 0, 69, 70, 71, 72, 73, 0, 75, 76, 77, 78,
2416  79, 80, 0, 0, 0, 84, 0, 0, 0, 88, 598, 599, 600, 601, 602, 603, 604, 605, 606,
2417  607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 276, 0, 0, 0,
2418  0, 0, 0, 0, 815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 278,
2419  279, 0, 0, 0, 0, 280, 281, 282, 0, 283, 284, 285, 0, 0, 0, 122, 0, 0, 0,
2420  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, 519, 0, 0, 0, 0,
2421  0, 288, 0, 0, 0, 0, 371, 218, 6, 0, 0, 590, 0, 291, 219, 220, 221, 0, 0,
2422  222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
2423  241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 0, 0, 0, 0, 0, 0, 0,
2424  0, 0, 0, 0, 0, 253, 254, 255, 256, 0, 0, 0, 0, 257, 258, 0, 0, 0, 0,
2425  0, 0, 0, 0, 259, 260, 261, 0, 0, 0, 262, 263, 264, 0, 0, 0, 0, 0, 0,
2426  0, 0, 265, 25, 0, 266, 0, 0, 0, 0, 0, 267, 0, 0, 268, 0, 0, 269, 0,
2427  270, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 271, 0, 0, 0, 0, 0, 0, 0,
2428  0, 0, 0, 0, 272, 0, 58, 59, 0, 273, 0, 274, 0, 0, 275, 0, 0, 0, 0,
2429  0, 69, 70, 71, 72, 73, 0, 75, 76, 77, 78, 79, 80, 0, 0, 0, 84, 0, 0,
2430  0, 88, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614,
2431  615, 0, 0, 0, 0, 616, 0, 276, 0, 0, 0, 0, 0, 0, 0, 817, 0, 0, 0,
2432  0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 278, 279, 0, 0, 0, 0, 280, 281, 282,
2433  0, 283, 284, 285, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2434  0, 0, 0, 0, 0, 286, 287, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 628, 218,
2435  6, 0, 290, 0, 0, 291, 219, 220, 221, 0, 0, 222, 223, 224, 225, 226, 227, 228, 229,
2436  230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
2437  249, 250, 251, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 254, 255,
2438  256, 0, 0, 0, 0, 257, 258, 0, 0, 0, 0, 0, 0, 0, 0, 259, 260, 261, 0,
2439  0, 0, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265, 25, 0, 266, 0, 0,
2440  0, 0, 0, 267, 0, 0, 268, 0, 0, 269, 0, 270, 0, 0, 0, 0, 0, 0, 42,
2441  0, 0, 0, 271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 58, 59,
2442  0, 273, 0, 274, 0, 0, 275, 0, 0, 0, 0, 0, 69, 70, 71, 72, 73, 0, 75,
2443  76, 77, 78, 79, 80, 0, 0, 0, 84, 0, 0, 0, 88, 598, 599, 600, 601, 602, 603,
2444  604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 276,
2445  0, 0, 0, 0, 0, 0, 0, 981, 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 0,
2446  0, 0, 278, 279, 0, 0, 0, 0, 280, 281, 282, 0, 283, 284, 285, 0, 0, 0, 122,
2447  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, 287, 0,
2448  0, 0, 0, 0, 288, 0, 0, 0, 0, 637, 218, 6, 0, 290, 0, 0, 291, 219, 220,
2449  221, 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
2450  238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 0, 0, 0, 0,
2451  0, 0, 0, 0, 0, 0, 0, 0, 253, 254, 255, 256, 0, 0, 0, 0, 257, 258, 0,
2452  0, 0, 0, 0, 0, 0, 0, 259, 260, 261, 0, 0, 0, 262, 263, 264, 0, 0, 0,
2453  0, 0, 0, 0, 0, 265, 25, 0, 266, 0, 0, 0, 0, 0, 267, 0, 0, 268, 0,
2454  0, 269, 0, 270, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 271, 0, 0, 0, 0,
2455  0, 0, 0, 0, 0, 0, 0, 272, 0, 58, 59, 0, 273, 0, 274, 0, 0, 275, 0,
2456  0, 0, 0, 0, 69, 70, 71, 72, 73, 0, 75, 76, 77, 78, 79, 80, 0, 0, 0,
2457  84, 0, 0, 0, 88, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748,
2458  612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 276, 0, 0, 0, 0, 0, 0, 0, 982,
2459  0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 278, 279, 0, 0, 0, 0,
2460  280, 281, 282, 0, 283, 284, 285, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0,
2461  0, 0, 0, 0, 0, 0, 0, 0, 286, 519, 0, 0, 0, 0, 0, 288, 0, 0, 0,
2462  0, 371, 218, 6, 0, 940, 0, 1422, 291, 219, 220, 221, 0, 0, 222, 223, 224, 225, 226,
2463  227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
2464  246, 247, 248, 249, 250, 251, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2465  253, 254, 255, 256, 0, 0, 0, 0, 257, 258, 0, 0, 0, 0, 0, 0, 0, 0, 259,
2466  260, 261, 0, 0, 0, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265, 25, 0,
2467  266, 0, 0, 0, 0, 0, 267, 0, 0, 268, 0, 0, 269, 0, 270, 0, 0, 0, 0,
2468  0, 0, 42, 0, 0, 0, 271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272,
2469  0, 58, 59, 0, 273, 0, 274, 0, 0, 275, 0, 0, 0, 0, 0, 69, 70, 71, 72,
2470  73, 0, 75, 76, 77, 78, 79, 80, 0, 0, 0, 84, 0, 0, 0, 88, 598, 599, 600,
2471  601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0,
2472  616, 0, 276, 0, 0, 0, 0, 0, 0, 0, 1033, 0, 0, 0, 0, 0, 0, 0, 0,
2473  0, 277, 0, 0, 0, 278, 279, 0, 0, 0, 0, 280, 281, 282, 0, 283, 284, 285, 0,
2474  0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2475  286, 519, 0, 0, 0, 0, 0, 288, 218, 6, 0, 0, 371, 1642, 0, 219, 220, 221, 0,
2476  291, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
2477  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 0, 0, 0, 0, 0, 0,
2478  0, 0, 0, 0, 0, 0, 253, 254, 255, 256, 0, 0, 0, 0, 257, 258, 0, 0, 0,
2479  0, 0, 0, 0, 0, 259, 260, 261, 0, 0, 0, 262, 263, 264, 0, 0, 0, 0, 0,
2480  0, 0, 0, 265, 25, 0, 266, 0, 0, 0, 0, 0, 267, 0, 0, 268, 0, 0, 269,
2481  0, 270, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 271, 0, 0, 0, 0, 0, 0,
2482  0, 0, 0, 0, 0, 272, 0, 58, 59, 0, 273, 0, 274, 0, 0, 275, 0, 0, 0,
2483  0, 0, 69, 70, 71, 72, 73, 0, 75, 76, 77, 78, 79, 80, 0, 0, 0, 84, 0,
2484  0, 0, 88, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613,
2485  614, 615, 0, 0, 0, 0, 616, 0, 276, 0, 0, 0, 0, 0, 0, 0, 1143, 0, 0,
2486  0, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 278, 279, 0, 0, 0, 0, 280, 281,
2487  282, 0, 283, 284, 285, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2488  0, 0, 0, 0, 0, 0, 286, 519, 0, 0, 0, 0, 0, 288, 218, 6, 0, 0, 371,
2489  0, 0, 219, 220, 221, 0, 291, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
2490  234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
2491  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 254, 255, 256, 0, 0, 0,
2492  0, 257, 258, 0, 0, 0, 0, 0, 0, 0, 0, 259, 260, 261, 0, 0, 0, 262, 263,
2493  264, 0, 0, 0, 0, 0, 0, 0, 0, 265, 25, 0, 266, 0, 0, 0, 0, 0, 267,
2494  0, 0, 268, 0, 0, 269, 0, 270, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 271,
2495  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 58, 59, 0, 273, 0, 274,
2496  0, 0, 275, 0, 0, 0, 0, 0, 69, 70, 71, 72, 73, 0, 75, 76, 77, 78, 79,
2497  80, 0, 0, 0, 84, 0, 0, 0, 88, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
2498  608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 276, 0, 0, 0, 0,
2499  0, 0, 0, 1183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 278, 279,
2500  0, 0, 0, 0, 280, 281, 282, 0, 283, 284, 285, 0, 0, 0, 122, 0, 0, 0, 0,
2501  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, 287, 0, 0, 0, 0, 0,
2502  288, 0, 0, 0, 0, 371, 218, 6, 0, 1773, 0, 0, 291, 219, 220, 221, 0, 0, 222,
2503  223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
2504  242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 0, 0, 0, 0, 0, 0, 0, 0,
2505  0, 0, 0, 0, 253, 254, 255, 256, 0, 0, 0, 0, 257, 258, 0, 0, 0, 0, 0,
2506  0, 0, 0, 259, 260, 261, 0, 0, 0, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0,
2507  0, 265, 25, 0, 266, 0, 0, 0, 0, 0, 267, 0, 0, 268, 0, 0, 269, 0, 270,
2508  0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 271, 0, 0, 0, 0, 0, 0, 0, 0,
2509  0, 0, 0, 272, 0, 58, 59, 0, 273, 0, 274, 0, 0, 275, 0, 0, 0, 0, 0,
2510  69, 70, 71, 72, 73, 0, 75, 76, 77, 78, 79, 80, 0, 0, 0, 84, 0, 0, 0,
2511  88, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615,
2512  0, 0, 0, 0, 616, 0, 276, 0, 0, 0, 0, 0, 0, 0, 1193, 0, 0, 0, 0,
2513  0, 0, 0, 0, 0, 277, 0, 0, 0, 278, 279, 0, 0, 0, 0, 280, 281, 282, 0,
2514  283, 284, 285, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2515  0, 0, 0, 0, 658, 1931, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 660, 218, 6,
2516  0, 334, 0, 0, 291, 219, 220, 221, 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, 230,
2517  231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
2518  250, 251, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 254, 255, 256,
2519  0, 0, 0, 0, 257, 258, 0, 0, 0, 0, 0, 0, 0, 0, 259, 260, 261, 0, 0,
2520  0, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265, 25, 0, 266, 0, 0, 0,
2521  0, 0, 267, 0, 0, 268, 0, 0, 269, 0, 270, 0, 0, 0, 0, 0, 0, 42, 0,
2522  0, 0, 271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 58, 59, 0,
2523  273, 0, 274, 0, 0, 275, 0, 0, 0, 0, 0, 69, 70, 71, 72, 73, 0, 75, 76,
2524  77, 78, 79, 80, 0, 0, 0, 84, 0, 0, 0, 88, 598, 599, 600, 601, 602, 603, 604,
2525  605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 276, 0,
2526  0, 0, 0, 0, 0, 0, 1194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 0, 0,
2527  0, 278, 279, 0, 0, 0, 0, 280, 281, 282, 0, 283, 284, 285, 0, 0, 0, 122, 0,
2528  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, 519, 0, 0,
2529  0, 0, 0, 288, 218, 173, 397, 0, 371, 0, 0, 219, 220, 221, 0, 291, 222, 223, 224,
2530  225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 435, 240, 241, 242, 243,
2531  244, 245, 246, 247, 0, 0, 0, 0, 0, 0, 0, 0, 398, 399, 400, 401, 402, 403, 404,
2532  405, 406, 253, 254, 255, 256, 407, 408, 409, 410, 257, 0, 0, 0, 411, 412, 413, 414, 0,
2533  0, 0, 0, 0, 415, 0, 416, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265,
2534  25, 417, 266, 0, 418, 218, 173, 397, 0, 0, 0, 0, 219, 220, 221, 0, 0, 222, 223,
2535  224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 435, 240, 241, 242,
2536  243, 244, 245, 246, 247, 0, 0, 0, 0, 0, 0, 0, 0, 398, 399, 400, 401, 402, 403,
2537  404, 405, 406, 253, 254, 255, 256, 407, 408, 409, 410, 257, 0, 0, 0, 411, 412, 413, 414,
2538  0, 0, 0, 0, 0, 415, 0, 416, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0,
2539  265, 25, 417, 266, 0, 418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2540  0, 0, 0, 277, 419, 420, 421, 278, 0, 0, 0, 0, 0, 280, 281, 282, 422, 283, 284,
2541  285, 423, 0, 424, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2542  0, 0, 286, 436, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 371, 0, 0, 0, 1661,
2543  0, 0, 291, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613,
2544  614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1195, 0, 0,
2545  0, 0, 0, 0, 277, 419, 420, 421, 278, 0, 0, 0, 0, 0, 280, 281, 282, 422, 283,
2546  284, 285, 423, 0, 424, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2547  0, 0, 0, 286, 436, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 371, 218, 173, 397,
2548  1948, 0, 0, 291, 219, 220, 221, 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
2549  232, 233, 234, 235, 236, 237, 238, 435, 240, 241, 242, 243, 244, 245, 246, 247, 0, 0, 0,
2550  0, 0, 0, 0, 0, 1665, 399, 400, 401, 402, 403, 404, 405, 406, 253, 254, 255, 256, 407,
2551  408, 409, 410, 257, 0, 0, 0, 411, 412, 413, 414, 0, 0, 0, 0, 0, 415, 0, 416,
2552  262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265, 25, 417, 266, 0, 418, 218, 173,
2553  397, 0, 0, 0, 0, 219, 220, 221, 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, 230,
2554  231, 232, 233, 234, 235, 236, 237, 238, 435, 240, 241, 242, 243, 244, 245, 246, 247, 0, 0,
2555  0, 0, 0, 0, 0, 0, 398, 399, 400, 401, 402, 403, 404, 405, 406, 253, 254, 255, 256,
2556  407, 408, 409, 410, 257, 0, 0, 0, 411, 412, 413, 414, 0, 0, 0, 0, 0, 415, 0,
2557  416, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265, 25, 417, 266, 0, 418, 0,
2558  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 419, 420, 421,
2559  278, 0, 0, 0, 0, 0, 280, 281, 282, 422, 283, 284, 285, 423, 0, 424, 122, 0, 0,
2560  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, 436, 0, 0, 0,
2561  0, 0, 288, 0, 0, 0, 0, 371, 0, 0, 0, 1830, 0, 0, 291, 598, 599, 600, 601,
2562  602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616,
2563  0, 0, 0, 0, 0, 0, 0, 0, 0, 1196, 0, 0, 0, 0, 0, 0, 277, 419, 420,
2564  421, 278, 0, 0, 0, 0, 0, 280, 281, 282, 422, 283, 284, 285, 423, 0, 424, 122, 0,
2565  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, 436, 0, 0,
2566  0, 0, 0, 288, 218, 173, 0, 0, 371, 0, 0, 219, 220, 221, 0, 291, 222, 223, 224,
2567  225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 435, 240, 241, 242, 243,
2568  244, 245, 246, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2569  0, 0, 253, 254, 255, 256, 0, 0, 0, 0, 257, 0, 0, 0, 0, 0, 0, 0, 0,
2570  0, 0, 0, 0, 0, 0, 0, 262, 263, 264, 0, 0, 0, 0, 0, 218, 173, 0, 265,
2571  25, 0, 266, 219, 220, 221, 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
2572  233, 234, 235, 236, 237, 238, 435, 240, 241, 242, 243, 244, 245, 246, 247, 0, 0, 0, 0,
2573  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 254, 255, 256, 0, 0,
2574  0, 0, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262,
2575  263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265, 25, 0, 266, 598, 599, 600, 601, 602,
2576  603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0,
2577  0, 0, 0, 277, 0, 0, 0, 278, 1197, 0, 0, 0, 0, 280, 281, 282, 0, 283, 284,
2578  285, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2579  0, 0, 286, 436, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 371, 0, 0, 0, 640,
2580  0, 0, 291, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613,
2581  614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 277, 0, 1202, 0, 278,
2582  0, 0, 0, 0, 0, 280, 281, 282, 0, 283, 284, 285, 0, 0, 0, 122, 0, 0, 0,
2583  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 658, 659, 0, 0, 0, 0,
2584  0, 288, 0, 0, 0, 0, 660, 218, 173, 0, 334, 0, 907, 291, 219, 220, 221, 0, 0,
2585  222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 435, 240,
2586  241, 242, 243, 244, 245, 246, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2587  0, 0, 0, 0, 0, 253, 254, 255, 256, 0, 0, 0, 0, 257, 0, 0, 0, 0, 0,
2588  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 263, 264, 0, 0, 0, 0, 0, 218,
2589  173, 0, 265, 25, 0, 266, 219, 220, 221, 0, 0, 222, 223, 224, 225, 226, 227, 228, 229,
2590  230, 231, 232, 233, 234, 235, 236, 237, 238, 435, 240, 241, 242, 243, 244, 245, 246, 247, 0,
2591  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 254, 255,
2592  256, 0, 0, 0, 0, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2593  0, 0, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265, 25, 0, 266, 598, 599,
2594  600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0,
2595  0, 616, 0, 0, 0, 0, 277, 0, 0, 0, 278, 1203, 0, 0, 0, 0, 280, 281, 282,
2596  0, 283, 284, 285, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2597  0, 0, 0, 0, 0, 286, 436, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 371, 0,
2598  0, 0, 0, 0, 0, 291, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
2599  748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 277, 0,
2600  1205, 0, 278, 0, 0, 0, 0, 0, 280, 281, 282, 0, 283, 284, 285, 0, 0, 0, 122,
2601  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, 436, 0,
2602  0, 0, 0, 0, 288, 218, 173, 0, 1373, 371, 1131, 0, 219, 220, 221, 0, 291, 222, 223,
2603  224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 435, 240, 241, 242,
2604  243, 244, 245, 246, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2605  0, 0, 0, 253, 254, 255, 256, 0, 0, 0, 0, 257, 0, 0, 0, 0, 0, 0, 0,
2606  0, 0, 0, 0, 0, 0, 0, 0, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0,
2607  265, 25, 0, 266, 218, 173, 0, 1538, 0, 0, 0, 219, 220, 221, 0, 0, 222, 223, 224,
2608  225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 435, 240, 241, 242, 243,
2609  244, 245, 246, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2610  0, 0, 253, 254, 255, 256, 0, 0, 0, 0, 257, 0, 0, 0, 0, 0, 0, 0, 0,
2611  0, 0, 0, 0, 0, 0, 0, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265,
2612  25, 0, 266, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612,
2613  613, 614, 615, 0, 277, 0, 0, 616, 278, 0, 0, 0, 0, 0, 280, 281, 282, 1323, 283,
2614  284, 285, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2615  0, 0, 0, 286, 436, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 371, 0, 0, 0,
2616  0, 0, 0, 291, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612,
2617  613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1346, 0,
2618  0, 0, 0, 277, 0, 0, 0, 278, 0, 0, 0, 0, 0, 280, 281, 282, 0, 283, 284,
2619  285, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2620  0, 0, 286, 436, 0, 0, 0, 0, 0, 288, 218, 173, 0, 1604, 371, 0, 0, 219, 220,
2621  221, 0, 291, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
2622  238, 435, 240, 241, 242, 243, 244, 245, 246, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2623  0, 0, 0, 0, 0, 0, 0, 0, 253, 254, 255, 256, 0, 0, 0, 0, 257, 0, 0,
2624  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 263, 264, 0, 0, 0,
2625  0, 0, 218, 173, 0, 265, 25, 0, 266, 219, 220, 221, 0, 0, 222, 223, 224, 225, 226,
2626  227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 435, 240, 241, 242, 243, 244, 245,
2627  246, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2628  253, 254, 255, 256, 0, 0, 0, 0, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2629  0, 0, 0, 0, 0, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265, 25, 0,
2630  266, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615,
2631  0, 0, 0, 0, 616, 0, 0, 0, 0, 277, 0, 0, 0, 278, 1432, 0, 0, 0, 0,
2632  280, 281, 282, 0, 283, 284, 285, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0,
2633  0, 0, 0, 0, 0, 0, 0, 0, 286, 436, 0, 0, 0, 0, 0, 288, 0, 0, 0,
2634  0, 371, 0, 0, 0, 0, 0, 0, 291, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
2635  608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0,
2636  0, 277, 0, 1436, 0, 278, 0, 0, 0, 0, 0, 280, 281, 282, 0, 283, 284, 285, 0,
2637  0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2638  286, 436, 0, 0, 0, 0, 0, 288, 218, 173, 0, 0, 371, 1658, 0, 219, 220, 221, 0,
2639  291, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 435,
2640  240, 241, 242, 243, 244, 245, 246, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2641  0, 0, 0, 0, 0, 0, 253, 254, 255, 256, 0, 0, 0, 0, 257, 0, 0, 0, 0,
2642  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 263, 264, 0, 0, 0, 0, 0,
2643  218, 173, 0, 265, 25, 0, 266, 219, 220, 221, 0, 0, 222, 223, 224, 225, 226, 227, 228,
2644  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 435, 240, 241, 242, 243, 244, 245, 246, 247,
2645  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 254,
2646  255, 256, 0, 0, 0, 0, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2647  0, 0, 0, 262, 263, 264, 0, 0, 0, 0, 0, 0, 0, 0, 265, 25, 0, 266, 598,
2648  599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0,
2649  0, 0, 616, 0, 0, 0, 0, 277, 0, 0, 0, 278, 1532, 0, 0, 0, 0, 280, 281,
2650  282, 0, 283, 284, 285, 0, 0, 0, 122, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0,
2651  0, 0, 0, 0, 0, 0, 286, 436, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 371,
2652  1995, 0, 0, 0, 0, 0, 291, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 598,
2653  599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 277,
2654  0, 0, 616, 278, 0, 0, 0, 0, 0, 280, 281, 282, 1533, 283, 284, 285, 0, 0, 0,
2655  122, 0, 0, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 0, 286, 436,
2656  43, 44, 45, 46, 0, 288, 48, 0, 0, 0, 371, 0, 7, 8, 0, 790, 57, 291, 0,
2657  60, 791, 0, 792, 793, 0, 794, 0, 0, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
2658  39, 40, 41, 0, 0, 81, 43, 44, 45, 46, 0, 0, 48, 0, 0, 0, 0, 0, 0,
2659  0, 0, 790, 57, 0, 0, 60, 791, 0, 792, 793, 0, 794, 98, 99, 100, 7, 8, 0,
2660  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0,
2661  0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
2662  98, 99, 100, 43, 44, 45, 46, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 790,
2663  57, 0, 0, 60, 791, 0, 792, 793, 0, 794, 0, 0, 0, 0, 816, 0, 0, 0, 0,
2664  0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 29, 30, 31, 32, 33, 34, 35, 36, 37,
2665  38, 39, 40, 41, 0, 7, 8, 43, 44, 45, 46, 0, 0, 48, 0, 0, 98, 99, 100,
2666  0, 989, 0, 790, 57, 0, 0, 60, 791, 0, 792, 793, 0, 794, 0, 0, 0, 0, 0,
2667  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0,
2668  0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0,
2669  0, 98, 99, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1014, 29,
2670  30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 0, 0, 0, 43, 44, 45, 46,
2671  0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 790, 57, 0, 0, 60, 791, 0, 792,
2672  793, 0, 794, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2673  0, 81, 1065, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 0, 0, 0,
2674  43, 44, 45, 46, 0, 0, 48, 0, 0, 98, 99, 100, 7, 8, 0, 790, 57, 0, 0,
2675  60, 791, 0, 792, 793, 0, 794, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2676  0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2677  29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 98, 99, 100, 43, 44, 45,
2678  46, 0, 0, 48, 0, 0, 0, 0, 0, 0, 1067, 0, 790, 57, 0, 0, 60, 791, 0,
2679  792, 793, 0, 794, 0, 0, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
2680  0, 0, 81, 43, 44, 45, 46, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 790,
2681  57, 0, 0, 60, 791, 0, 792, 793, 0, 794, 98, 99, 100, 0, 1272, 7, 8, 0, 0,
2682  0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606,
2683  607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 98, 99, 100,
2684  0, 0, 7, 8, 1580, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748,
2685  612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 1274, 0, 0, 0, 0, 0, 0, 1708,
2686  0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
2687  39, 40, 41, 0, 0, 0, 43, 44, 45, 46, 0, 0, 48, 0, 0, 0, 0, 1275, 7,
2688  8, 0, 790, 57, 0, 0, 60, 791, 0, 792, 793, 0, 794, 0, 0, 29, 30, 31, 32,
2689  33, 34, 35, 36, 37, 38, 39, 40, 41, 0, 0, 81, 43, 44, 45, 46, 0, 0, 48,
2690  0, 0, 0, 0, 0, 0, 0, 0, 790, 57, 0, 0, 60, 791, 0, 792, 793, 0, 794,
2691  98, 99, 100, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0,
2692  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 33, 34, 35,
2693  36, 37, 38, 39, 40, 41, 98, 99, 100, 43, 44, 45, 46, 0, 0, 48, 0, 0, 0,
2694  0, 0, 0, 0, 0, 790, 57, 0, 0, 60, 791, 0, 792, 793, 0, 794, 0, 0, 0,
2695  0, 1294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 29, 30, 31,
2696  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 0, 7, 8, 43, 44, 45, 46, 0, 0,
2697  48, 0, 0, 98, 99, 100, 0, 1313, 0, 790, 57, 0, 0, 60, 791, 0, 792, 793, 0,
2698  794, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,
2699  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0,
2700  0, 0, 0, 0, 0, 0, 0, 98, 99, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2701  0, 0, 0, 0, 1331, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 0,
2702  0, 0, 43, 44, 45, 46, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 790, 57,
2703  0, 0, 60, 791, 0, 792, 793, 0, 794, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0,
2704  0, 0, 0, 0, 0, 0, 0, 81, 1365, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
2705  39, 40, 41, 0, 0, 0, 43, 44, 45, 46, 0, 0, 48, 0, 0, 98, 99, 100, 0,
2706  0, 0, 790, 57, 0, 0, 60, 791, 0, 792, 793, 0, 794, 0, 0, 0, 0, 0, 0,
2707  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0,
2708  0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
2709  98, 99, 100, 43, 44, 45, 46, 0, 0, 48, 0, 0, 0, 0, 0, 0, 1530, 0, 790,
2710  57, 0, 0, 60, 791, 0, 792, 793, 0, 794, 0, 0, 0, 0, 0, -4, 1, 0, 0,
2711  -4, 0, 0, 0, 0, 0, 0, 0, 81, -4, -4, 0, 0, 0, 0, 0, 598, 599, 600,
2712  601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 98, 99, 100,
2713  616, 2176, 0, 0, -4, -4, -4, 0, 0, 0, 1709, 0, 0, 0, 0, 0, 0, 0, 0,
2714  0, 0, 0, 0, 0, 0, -4, -4, -4, 0, 0, 0, 0, -4, -4, 0, 0, 0, 0,
2715  -4, 0, 0, 0, 0, -4, -4, -4, -4, -4, 0, -4, -4, 0, -4, 0, 0, 0, 0,
2716  -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, 2233, -4,
2717  -4, -4, -4, -4, -4, 0, -4, 0, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4,
2718  -4, -4, -4, -4, -4, -4, 0, 0, -4, -4, -4, 0, -4, -4, -4, -4, -4, -4, -4,
2719  -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, 0,
2720  0, -4, -4, -4, 0, 0, 0, -4, 0, 0, 0, 0, -4, -4, -4, -4, 0, 0, -4,
2721  0, -4, 0, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, 6,
2722  0, 0, 0, 0, -4, -4, -4, -4, 7, 8, 0, 0, 0, 0, 0, 0, -4, 0, -4,
2723  -4, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613,
2724  614, 615, 0, 9, 10, 11, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1710, 0, 0,
2725  0, 0, 0, 0, 0, 12, 13, 14, 0, 0, 0, 0, 15, 16, 0, 0, 0, 0, 17,
2726  0, 0, 0, 0, 18, 19, 20, 21, 22, 0, 23, 24, 0, 25, 0, 0, 0, 0, 26,
2727  27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 0, 0, 42, 43,
2728  44, 45, 46, 47, 0, 48, 0, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
2729  61, 62, 63, 64, 65, 0, 0, 66, 67, 68, 0, 69, 70, 71, 72, 73, 74, 75, 76,
2730  77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 0, 0, 0,
2731  93, 94, 95, 0, 0, 0, 96, 0, 0, 0, 0, 97, 98, 99, 100, 173, 397, 101, 0,
2732  102, 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, 0, 0,
2733  0, 0, 0, 117, 118, 119, 120, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 122, 123,
2734  0, 0, 0, 398, 399, 400, 401, 402, 403, 404, 405, 406, 0, 0, 0, 0, 407, 408, 409,
2735  410, 173, 397, 0, 0, 411, 412, 413, 414, 0, 0, 0, 0, 0, 415, 0, 416, 0, 0,
2736  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 417, 0, 0, 418, 0, 0, 0, 179,
2737  428, 397, 180, 0, 0, 181, 0, 182, 398, 399, 400, 401, 402, 403, 404, 405, 406, 0, 46,
2738  0, 0, 407, 408, 409, 410, 0, 0, 0, 0, 411, 412, 413, 414, 0, 0, 0, 0, 450,
2739  415, 0, 416, 0, 0, 0, 0, 398, 399, 400, 401, 402, 403, 404, 405, 406, 417, 0, 0,
2740  418, 407, 408, 409, 410, 0, 0, 0, 0, 411, 412, 413, 414, 0, 0, 0, 0, 0, 415,
2741  0, 416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 417, 0, 0, 418,
2742  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419, 420, 421, 0, 0,
2743  0, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 423, 0, 424, 122, 0, 0, 0, 0,
2744  0, 0, 0, 0, 0, 7, 8, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
2745  608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0,
2746  419, 420, 421, 1858, 0, 0, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 423, 0, 424,
2747  122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 419,
2748  420, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 423, 0, 424, 29,
2749  30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 0, 0, 0, 43, 44, 45, 46,
2750  0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 790, 57, 0, 0, 60, 791, 0, 792,
2751  793, 0, 794, 0, 0, 0, 1077, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2752  0, 81, 0, 0, 0, 1078, 0, 0, 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
2753  608, 609, 610, 748, 612, 613, 614, 615, 0, 98, 99, 100, 616, 0, 0, 0, 0, 0, 0,
2754  0, 0, 0, 1982, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612,
2755  613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1983, 598,
2756  599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0,
2757  0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2015, 598, 599, 600, 601, 602, 603,
2758  604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0,
2759  0, 0, 0, 0, 0, 0, 0, 2087, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
2760  609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0,
2761  0, 0, 2144, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613,
2762  614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 598, 599,
2763  600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0,
2764  0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2160, 598, 599, 600, 601, 602, 603, 604,
2765  605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0,
2766  0, 0, 0, 0, 0, 0, 2194, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
2767  610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0,
2768  0, 2221, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614,
2769  615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2226, 598, 599, 600,
2770  601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0,
2771  616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2227, 598, 599, 600, 601, 602, 603, 604, 605,
2772  606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0,
2773  0, 849, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614,
2774  615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 1112, 598, 599, 600, 601, 602, 603, 604,
2775  605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0,
2776  0, 0, 1170, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613,
2777  614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 1218, 598, 599, 600, 601, 602, 603,
2778  604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0,
2779  0, 0, 0, 1219, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612,
2780  613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 1264, 598, 599, 600, 601, 602,
2781  603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0,
2782  0, 0, 0, 0, 1297, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748,
2783  612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 1311, 598, 599, 600, 601,
2784  602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616,
2785  0, 0, 0, 0, 0, 1318, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
2786  748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 1379, 598, 599, 600,
2787  601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0,
2788  616, 0, 0, 0, 0, 0, 1399, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
2789  610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 1435, 598, 599,
2790  600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0,
2791  0, 616, 0, 0, 0, 0, 0, 1484, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
2792  609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 1485, 598,
2793  599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0,
2794  0, 0, 616, 0, 0, 0, 0, 0, 1486, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
2795  608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 1489,
2796  598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0,
2797  0, 0, 0, 616, 0, 0, 0, 0, 0, 1534, 598, 599, 600, 601, 602, 603, 604, 605, 606,
2798  607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0,
2799  1610, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615,
2800  0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 1910, 598, 599, 600, 601, 602, 603, 604, 605,
2801  606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0,
2802  0, 1921, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614,
2803  615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 1962, 598, 599, 600, 601, 602, 603, 604,
2804  605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0,
2805  0, 0, 2036, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613,
2806  614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 2052, 598, 599, 600, 601, 602, 603,
2807  604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0,
2808  0, 0, 0, 2064, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612,
2809  613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 2088, 598, 599, 600, 601, 602,
2810  603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0,
2811  0, 0, 0, 0, 2123, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748,
2812  612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 2133, 598, 599, 600, 601,
2813  602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616,
2814  0, 0, 0, 0, 0, 2134, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
2815  748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 2158, 598, 599, 600,
2816  601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0,
2817  616, 0, 0, 0, 0, 0, 2207, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
2818  610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 2246, 598, 599,
2819  600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0,
2820  0, 616, 0, 0, 0, 0, 0, 2264, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
2821  609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 2282, 598,
2822  599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0,
2823  0, 0, 616, 0, 0, 0, 0, 0, 2283, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
2824  608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 749, 598,
2825  599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0,
2826  0, 0, 616, 0, 0, 0, 0, 973, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
2827  609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 0, 2029, 598, 599,
2828  600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0,
2829  0, 616, 0, 776, 0, 777, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
2830  748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 1039, 598, 599, 600, 601, 602,
2831  603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0,
2832  0, 0, 1088, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613,
2833  614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 1243, 598, 599, 600, 601, 602, 603, 604, 605,
2834  606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 1312,
2835  598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0,
2836  0, 0, 0, 616, 0, 0, 0, 1314, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
2837  609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 1321, 598, 599, 600,
2838  601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0,
2839  616, 0, 0, 0, 1322, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748,
2840  612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 1414, 598, 599, 600, 601, 602, 603,
2841  604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0,
2842  0, 1428, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614,
2843  615, 0, 0, 0, 0, 616, 0, 0, 0, 1639, 598, 599, 600, 601, 602, 603, 604, 605, 606,
2844  607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 1729, 598,
2845  599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0,
2846  0, 0, 616, 0, 0, 0, 1782, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
2847  610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 1974, 598, 599, 600, 601,
2848  602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616,
2849  0, 0, 0, 2019, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612,
2850  613, 614, 615, 0, 0, 0, 0, 616, 0, 0, 0, 2037, 598, 599, 600, 601, 602, 603, 604,
2851  605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 830, 598,
2852  599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0,
2853  0, 0, 616, 0, 831, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748,
2854  612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 832, 598, 599, 600, 601, 602, 603, 604, 605,
2855  606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 834, 598, 599,
2856  600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0,
2857  0, 616, 0, 835, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612,
2858  613, 614, 615, 0, 0, 0, 0, 616, 0, 836, 598, 599, 600, 601, 602, 603, 604, 605, 606,
2859  607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 838, 598, 599, 600,
2860  601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0,
2861  616, 0, 839, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613,
2862  614, 615, 0, 0, 0, 0, 616, 0, 840, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
2863  608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 841, 598, 599, 600, 601,
2864  602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616,
2865  0, 842, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614,
2866  615, 0, 0, 0, 0, 616, 0, 843, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
2867  609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 844, 598, 599, 600, 601, 602,
2868  603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0,
2869  846, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615,
2870  0, 0, 0, 0, 616, 0, 847, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
2871  610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 848, 598, 599, 600, 601, 602, 603,
2872  604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 920,
2873  598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0,
2874  0, 0, 0, 616, 0, 954, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
2875  748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1003, 598, 599, 600, 601, 602, 603, 604,
2876  605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1020, 598,
2877  599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0,
2878  0, 0, 616, 0, 1028, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748,
2879  612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1030, 598, 599, 600, 601, 602, 603, 604, 605,
2880  606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1031, 598, 599,
2881  600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0,
2882  0, 616, 0, 1037, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612,
2883  613, 614, 615, 0, 0, 0, 0, 616, 0, 1038, 598, 599, 600, 601, 602, 603, 604, 605, 606,
2884  607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1076, 598, 599, 600,
2885  601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0,
2886  616, 0, 1087, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613,
2887  614, 615, 0, 0, 0, 0, 616, 0, 1148, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
2888  608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1152, 598, 599, 600, 601,
2889  602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616,
2890  0, 1164, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614,
2891  615, 0, 0, 0, 0, 616, 0, 1242, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
2892  609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1252, 598, 599, 600, 601, 602,
2893  603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0,
2894  1253, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615,
2895  0, 0, 0, 0, 616, 0, 1254, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
2896  610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1263, 598, 599, 600, 601, 602, 603,
2897  604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1265,
2898  598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0,
2899  0, 0, 0, 616, 0, 1266, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
2900  748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1296, 598, 599, 600, 601, 602, 603, 604,
2901  605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1298, 598,
2902  599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0,
2903  0, 0, 616, 0, 1299, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748,
2904  612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1300, 598, 599, 600, 601, 602, 603, 604, 605,
2905  606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1301, 598, 599,
2906  600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0,
2907  0, 616, 0, 1302, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612,
2908  613, 614, 615, 0, 0, 0, 0, 616, 0, 1303, 598, 599, 600, 601, 602, 603, 604, 605, 606,
2909  607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1304, 598, 599, 600,
2910  601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0,
2911  616, 0, 1310, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613,
2912  614, 615, 0, 0, 0, 0, 616, 0, 1324, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
2913  608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1326, 598, 599, 600, 601,
2914  602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616,
2915  0, 1364, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614,
2916  615, 0, 0, 0, 0, 616, 0, 1413, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608,
2917  609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1427, 598, 599, 600, 601, 602,
2918  603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0,
2919  1640, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615,
2920  0, 0, 0, 0, 616, 0, 1675, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
2921  610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1716, 598, 599, 600, 601, 602, 603,
2922  604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1728,
2923  598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0,
2924  0, 0, 0, 616, 0, 1845, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610,
2925  748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1847, 598, 599, 600, 601, 602, 603, 604,
2926  605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1850, 598,
2927  599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0,
2928  0, 0, 616, 0, 1857, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748,
2929  612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1911, 598, 599, 600, 601, 602, 603, 604, 605,
2930  606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 1920, 598, 599,
2931  600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0,
2932  0, 616, 0, 1947, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612,
2933  613, 614, 615, 0, 0, 0, 0, 616, 0, 2018, 598, 599, 600, 601, 602, 603, 604, 605, 606,
2934  607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 2085, 598, 599, 600,
2935  601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0,
2936  616, 0, 2086, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613,
2937  614, 615, 0, 0, 0, 0, 616, 0, 2220, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
2938  608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616, 0, 2261, 598, 599, 600, 601,
2939  602, 603, 604, 605, 606, 607, 608, 609, 610, 748, 612, 613, 614, 615, 0, 0, 0, 0, 616};
2940 
2941 static const yytype_int16 yycheck[] = {
2942  3, 1295, 3, 327, 1291, 773, 655, 656, 163, 1493, 6, 779, 1767, 64, 167, 1813, 4, 1815, 149,
2943  96, 460, 4, 25, 4, 4, 25, 4, 4, 1998, 4, 108, 7, 6, 108, 1800, 4, 6, 144,
2944  5, 4, 4, 112, 5, 114, 6, 9, 5, 5, 14, 4, 4, 6, 4, 56, 4, 4, 7,
2945  105, 6, 6, 108, 109, 110, 6, 4, 6, 165, 6, 253, 254, 260, 4, 262, 121, 259, 4,
2946  102, 108, 149, 269, 7, 6, 85, 9, 36, 37, 36, 37, 91, 196, 9, 108, 261, 96, 193,
2947  121, 36, 37, 101, 1865, 269, 7, 133, 36, 37, 9, 144, 178, 264, 112, 209, 210, 268, 184,
2948  105, 102, 133, 108, 105, 9, 9, 108, 260, 110, 162, 0, 264, 1882, 205, 94, 121, 9, 248,
2949  249, 121, 173, 174, 175, 215, 263, 188, 179, 180, 6, 260, 269, 149, 102, 264, 150, 261, 154,
2950  155, 156, 6, 6, 248, 249, 269, 6, 163, 111, 112, 149, 150, 70, 71, 7, 73, 155, 6,
2951  111, 112, 265, 108, 248, 249, 7, 111, 112, 620, 260, 260, 2153, 7, 260, 339, 248, 249, 250,
2952  251, 252, 253, 254, 7, 169, 269, 200, 259, 248, 249, 260, 205, 248, 249, 358, 209, 210, 259,
2953  260, 261, 181, 215, 216, 217, 261, 260, 257, 258, 181, 269, 248, 249, 269, 269, 276, 266, 265,
2954  208, 183, 184, 185, 186, 261, 311, 312, 313, 1721, 266, 204, 261, 195, 269, 197, 198, 199, 200,
2955  201, 269, 263, 231, 205, 206, 231, 208, 269, 231, 233, 234, 235, 236, 260, 231, 1550, 260, 264,
2956  231, 231, 264, 272, 260, 2026, 260, 265, 351, 352, 353, 269, 431, 262, 433, 264, 231, 260, 287,
2957  268, 267, 290, 291, 264, 443, 291, 369, 257, 258, 264, 260, 264, 262, 264, 264, 264, 266, 306,
2958  307, 264, 264, 310, 311, 312, 313, 265, 261, 753, 263, 266, 264, 264, 321, 1087, 1088, 264, 325,
2959  264, 327, 264, 2081, 233, 234, 235, 236, 260, 149, 260, 260, 262, 262, 154, 155, 156, 266, 260,
2960  105, 262, 264, 108, 349, 787, 351, 352, 353, 257, 258, 257, 258, 4, 260, 260, 262, 263, 266,
2961  260, 266, 262, 804, 264, 369, 257, 258, 372, 260, 260, 262, 262, 814, 4, 266, 266, 449, 257,
2962  258, 261, 260, 200, 262, 248, 249, 6, 266, 269, 2188, 243, 244, 233, 234, 235, 236, 248, 249,
2963  6, 217, 248, 249, 233, 234, 235, 236, 243, 244, 564, 233, 234, 235, 236, 4, 260, 4, 257,
2964  258, 264, 233, 234, 235, 236, 261, 330, 331, 257, 258, 248, 249, 8, 269, 338, 339, 6, 439,
2965  265, 441, 248, 249, 269, 445, 446, 257, 258, 36, 37, 36, 37, 269, 248, 249, 248, 249, 248,
2966  249, 260, 461, 262, 269, 102, 6, 266, 105, 468, 269, 108, 2223, 248, 249, 265, 269, 102, 269,
2967  269, 269, 106, 248, 249, 121, 260, 922, 112, 113, 264, 115, 116, 248, 249, 493, 644, 266, 646,
2968  647, 269, 261, 261, 575, 269, 149, 150, 151, 152, 269, 269, 155, 144, 137, 269, 663, 582, 248,
2969  249, 6, 164, 519, 144, 2273, 168, 1169, 111, 112, 111, 112, 162, 261, 6, 263, 682, 262, 261,
2970  2016, 269, 269, 162, 173, 174, 175, 269, 262, 544, 179, 180, 248, 249, 173, 174, 175, 260, 553,
2971  554, 179, 180, 260, 558, 709, 560, 561, 562, 563, 564, 717, 248, 249, 269, 261, 570, 263, 248,
2972  249, 574, 575, 576, 269, 578, 579, 580, 581, 260, 583, 581, 585, 583, 269, 260, 248, 249, 260,
2973  144, 269, 248, 249, 149, 150, 260, 749, 248, 249, 155, 248, 249, 264, 193, 194, 193, 194, 162,
2974  611, 56, 248, 249, 269, 264, 617, 144, 248, 249, 173, 174, 175, 269, 439, 123, 179, 180, 248,
2975  249, 265, 257, 258, 269, 264, 162, 257, 258, 639, 640, 265, 265, 260, 264, 773, 269, 173, 174,
2976  175, 269, 265, 1089, 179, 180, 269, 264, 655, 656, 1305, 248, 249, 730, 237, 238, 239, 240, 241,
2977  242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 269, 248, 249, 260, 259, 248,
2978  249, 688, 689, 690, 265, 105, 248, 249, 108, 696, 110, 261, 260, 263, 265, 261, 269, 263, 269,
2979  269, 269, 121, 105, 269, 260, 108, 265, 110, 715, 716, 717, 718, 719, 720, 721, 722, 723, 260,
2980  725, 726, 727, 728, 729, 260, 731, 732, 733, 734, 735, 265, 734, 738, 261, 269, 263, 6, 7,
2981  558, 793, 560, 269, 562, 563, 750, 653, 654, 260, 1519, 265, 658, 257, 258, 269, 260, 829, 262,
2982  763, 578, 579, 250, 251, 252, 253, 254, 261, 216, 263, 264, 259, 257, 258, 778, 260, 260, 262,
2983  262, 264, 784, 257, 258, 6, 260, 1226, 262, 1228, 265, 260, 265, 108, 269, 110, 269, 8, 800,
2984  801, 108, 265, 1241, 265, 806, 269, 808, 269, 265, 811, 812, 265, 269, 265, 261, 269, 263, 269,
2985  820, 6, 822, 951, 110, 265, 265, 977, 272, 269, 269, 265, 264, 264, 1271, 269, 242, 243, 244,
2986  245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 260, 1615, 265, 852, 259, 854, 269, 260, 265,
2987  265, 264, 1625, 269, 269, 108, 265, 265, 310, 3, 269, 269, 265, 265, 265, 264, 269, 269, 269,
2988  321, 265, 265, 265, 325, 269, 269, 269, 265, 2177, 260, 265, 269, 890, 27, 269, 105, 260, 265,
2989  964, 1334, 1335, 269, 900, 260, 716, 262, 718, 719, 720, 721, 722, 723, 264, 725, 726, 727, 728,
2990  108, 265, 731, 732, 733, 269, 266, 1359, 268, 924, 2209, 265, 63, 265, 1366, 269, 265, 269, 265,
2991  265, 269, 264, 269, 269, 260, 940, 262, 265, 2234, 8, 1073, 269, 265, 1385, 265, 265, 269, 952,
2992  269, 269, 260, 264, 262, 265, 1087, 1088, 961, 269, 105, 265, 265, 265, 2251, 269, 269, 269, 6,
2993  105, 973, 265, 1412, 1104, 4, 269, 6, 265, 117, 265, 8, 269, 108, 269, 265, 265, 1426, 265,
2994  269, 269, 108, 269, 265, 1433, 811, 4, 269, 265, 445, 446, 265, 269, 265, 265, 269, 822, 269,
2995  269, 265, 265, 149, 4, 269, 269, 461, 154, 155, 156, 6, 265, 1091, 4, 4, 269, 163, 237,
2996  238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 261, 260,
2997  263, 264, 259, 6, 260, 260, 6, 6, 265, 262, 260, 262, 264, 6, 268, 264, 200, 6, 260,
2998  9, 1389, 268, 260, 260, 260, 260, 260, 196, 196, 260, 980, 196, 264, 217, 1082, 264, 133, 987,
2999  260, 260, 260, 991, 1090, 260, 196, 264, 260, 260, 260, 264, 1098, 260, 4, 264, 264, 260, 264,
3000  264, 1752, 1753, 260, 260, 260, 1111, 260, 260, 1242, 1243, 1116, 561, 6, 260, 6, 6, 258, 262,
3001  264, 7, 264, 264, 262, 264, 574, 6, 576, 264, 262, 262, 6, 196, 274, 275, 264, 260, 260,
3002  6, 260, 6, 1146, 1147, 260, 1149, 1150, 1151, 260, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161,
3003  1162, 260, 260, 1165, 7, 8, 260, 262, 264, 1169, 6, 237, 238, 239, 240, 241, 242, 243, 244,
3004  245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 8, 6, 8, 260, 259, 264, 261, 7, 263,
3005  6, 264, 264, 6, 264, 97, 7, 1207, 1208, 1209, 265, 269, 237, 238, 239, 240, 241, 242, 243,
3006  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 269, 261, 6, 1233, 259, 6, 261, 261,
3007  264, 67, 8, 264, 264, 1145, 264, 264, 264, 259, 7, 1249, 1250, 1251, 237, 238, 239, 240, 241,
3008  242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 266, 7, 260, 6, 259, 261,
3009  7, 264, 6, 193, 7, 6, 6, 265, 265, 1413, 1414, 264, 263, 265, 261, 6, 264, 266, 7,
3010  6, 262, 1618, 260, 264, 6, 6, 1116, 439, 6, 6, 1306, 1305, 6, 262, 7, 261, 7, 7,
3011  450, 7, 7, 7, 7, 763, 7, 7, 7, 7, 7, 1325, 7, 1327, 1328, 7, 7, 7, 264,
3012  6, 261, 263, 472, 1337, 269, 269, 269, 265, 1342, 269, 261, 7, 1346, 265, 7, 264, 266, 487,
3013  264, 4, 6, 1355, 266, 1357, 265, 265, 1360, 144, 264, 7, 6, 266, 7, 7, 7, 1437, 261,
3014  1439, 261, 269, 269, 9, 1376, 261, 196, 269, 263, 268, 1819, 7, 264, 266, 2032, 165, 265, 1389,
3015  6, 6, 6, 49, 1208, 1209, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
3016  250, 251, 252, 253, 254, 1414, 266, 49, 260, 259, 1419, 264, 1421, 558, 260, 560, 264, 562, 563,
3017  564, 260, 266, 266, 7, 260, 7, 7, 269, 261, 196, 1439, 7, 7, 578, 579, 5, 7, 6,
3018  269, 261, 7, 7, 1451, 7, 1603, 7, 1455, 7, 1607, 239, 240, 241, 242, 243, 244, 245, 246,
3019  247, 248, 249, 250, 251, 252, 253, 254, 1626, 1627, 4, 120, 259, 264, 924, 6, 6, 260, 7,
3020  7, 7, 1615, 49, 50, 51, 52, 53, 54, 55, 56, 57, 7, 7, 7, 7, 62, 63, 64,
3021  65, 7, 1827, 264, 102, 70, 71, 72, 73, 1513, 1514, 1515, 6, 961, 79, 6, 81, 1521, 1522,
3022  1523, 6, 661, 108, 7, 1342, 7, 1598, 6, 1346, 6, 95, 7, 7, 98, 4, 269, 1540, 1355,
3023  261, 1357, 267, 6, 1360, 269, 264, 685, 264, 1551, 264, 6, 6, 265, 7, 6, 262, 1559, 6,
3024  6, 6, 1563, 260, 264, 6, 260, 6, 6, 6, 6, 6, 137, 1574, 6, 1576, 265, 6, 715,
3025  716, 717, 718, 719, 720, 721, 722, 723, 263, 725, 726, 727, 728, 1661, 266, 731, 732, 733, 269,
3026  1727, 1414, 6, 6, 6, 6, 741, 6, 6, 744, 6, 6, 6, 6, 5, 261, 265, 261, 6,
3027  1618, 6, 4, 757, 7, 6, 6, 262, 1626, 1627, 264, 264, 7, 6, 1632, 264, 264, 264, 6,
3028  264, 1082, 264, 6, 264, 264, 264, 264, 6, 265, 1549, 6, 192, 1650, 212, 213, 214, 1098, 264,
3029  792, 264, 794, 6, 261, 1661, 264, 224, 269, 269, 1666, 228, 6, 230, 269, 269, 6, 266, 7,
3030  811, 260, 264, 1830, 6, 1748, 6, 265, 6, 6, 4, 822, 7, 6, 260, 260, 6, 6, 6,
3031  144, 106, 6, 5, 261, 264, 6, 269, 1146, 1147, 6, 1149, 1150, 1151, 264, 1153, 1154, 1155, 1156,
3032  1157, 1158, 1159, 1160, 1161, 1162, 6, 264, 6, 144, 144, 269, 1793, 6, 6, 6, 6, 6, 6,
3033  1800, 1801, 269, 261, 269, 6, 6, 1739, 6, 6, 269, 6, 1744, 1745, 264, 2068, 264, 6, 6,
3034  6, 264, 1821, 1752, 1753, 7, 148, 6, 264, 264, 264, 5, 1207, 261, 6, 6, 1767, 264, 6,
3035  264, 6, 265, 1773, 265, 7, 1678, 6, 1778, 264, 6, 191, 261, 7, 265, 6, 6, 1787, 265,
3036  1233, 266, 265, 6, 6, 6, 1795, 264, 6, 1798, 6, 265, 6, 6, 261, 6, 1249, 6, 264,
3037  194, 6, 264, 6, 6, 6, 6, 6, 1816, 265, 265, 260, 1820, 264, 261, 265, 6, 6, 6,
3038  1827, 144, 1829, 1830, 264, 264, 6, 264, 264, 1650, 264, 261, 6, 976, 6, 978, 979, 6, 265,
3039  265, 6, 6, 6, 6, 6, 6, 6, 6, 264, 992, 264, 6, 6, 6, 6, 1306, 264, 6,
3040  1865, 1768, 1769, 1770, 1771, 1772, 1773, 6, 2190, 1425, 1487, 1012, 490, 1673, 1999, 1959, 1325, 1882, 1327,
3041  1328, 1735, 3, 3, 3, 1100, 1450, 2041, 3, 1961, 1894, 1895, 2028, 632, 1034, 237, 238, 239, 240,
3042  241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 3, 1595, 1919, 1800, 259,
3043  1820, 1627, -1, -1, -1, -1, -1, -1, -1, 1931, 1376, 811, -1, 1071, 2004, -1, -1, -1, -1,
3044  -1, -1, -1, -1, -1, -1, -1, 1948, -1, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
3045  247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1,
3046  -1, 1116, 1795, -1, -1, 1798, 1985, -1, -1, 2138, -1, -1, -1, -1, -1, -1, 1439, -1, -1,
3047  -1, -1, 2000, -1, -1, -1, -1, 2005, -1, 1451, 2008, 2009, 6, 1455, -1, -1, -1, -1, -1,
3048  -1, -1, -1, -1, -1, -1, -1, -1, -1, 2026, -1, 2178, 2029, -1, -1, -1, -1, 2032, -1,
3049  -1, -1, -1, -1, 2040, -1, -1, -1, 2044, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
3050  247, 248, 249, 250, 251, 252, 253, 254, -1, -1, 6, -1, 259, 2068, 1513, 1514, 1515, 1208, 1209,
3051  -1, -1, -1, 1521, 1522, 1523, -1, 2081, -1, -1, -1, -1, 2154, -1, -1, -1, -1, -1, -1,
3052  -1, -1, -1, 1540, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1551, -1, -1, 2110, -1,
3053  -1, -1, -1, 1559, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1574,
3054  -1, 1576, -1, -1, -1, -1, 1273, -1, -1, -1, -1, -1, 2045, 2046, 2047, 2048, 2049, -1, -1,
3055  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2162, -1, -1, -1, -1, -1, -1,
3056  -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 2180, 2181, 2182, 2183, 2184, -1, -1, -1,
3057  1632, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, 1342,
3058  2109, 259, -1, 1346, 2113, -1, -1, -1, -1, 6, 1661, -1, 1355, -1, 1357, -1, 2223, 1360, -1,
3059  -1, -1, -1, -1, -1, -1, -1, -1, 1370, -1, -1, -1, -1, 2239, -1, 237, 238, 239, 240,
3060  241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, 2260, -1, 2164, 259,
3061  -1, -1, 2168, -1, -1, -1, -1, -1, -1, 2273, -1, -1, -1, -1, 1414, 2279, 2280, -1, 2184,
3062  -1, 6, -1, 4, 5, -1, -1, -1, -1, 2292, -1, -1, 1739, 237, 238, 239, 240, 241, 242,
3063  243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1,
3064  -1, -1, 1767, -1, -1, -1, 2229, 2230, -1, -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
3065  -1, -1, -1, 1787, 62, 63, 64, 65, -1, -1, -1, -1, 70, 71, 72, 73, -1, -1, -1,
3066  -1, -1, 79, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, 1816, -1, -1, -1, -1, 95,
3067  -1, -1, 98, -1, -1, -1, 102, 1829, -1, 105, -1, -1, 108, -1, 110, -1, -1, -1, -1,
3068  -1, -1, -1, -1, -1, -1, 121, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
3069  249, 250, 251, 252, 253, 254, 140, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1,
3070  -1, -1, -1, 1882, -1, -1, -1, -1, -1, -1, -1, 2260, 237, 238, 239, 240, 241, 242, 243,
3071  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 2279, 2280, -1, -1, 259, -1, -1, -1,
3072  -1, -1, 1919, -1, -1, 2292, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1626, 1627,
3073  -1, -1, 212, 213, 214, -1, -1, -1, -1, -1, -1, -1, -1, -1, 224, -1, -1, -1, 228,
3074  -1, 230, 231, 1650, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
3075  252, 253, 254, -1, -1, -1, -1, 259, -1, 257, 258, 1985, 121, -1, -1, 144, 264, -1, 266,
3076  -1, -1, -1, -1, -1, -1, -1, 2000, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3077  -1, -1, 149, -1, -1, -1, 153, -1, -1, -1, -1, 158, -1, -1, 2026, -1, -1, -1, 165,
3078  -1, -1, 168, -1, -1, 13, 14, -1, -1, 2040, -1, -1, 6, -1, -1, -1, -1, -1, -1,
3079  185, 186, 187, -1, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203,
3080  204, -1, -1, -1, -1, 209, 210, -1, -1, -1, -1, -1, 2081, 237, 238, 239, 240, 241, 242,
3081  243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, 1795, 259, -1, 1798,
3082  -1, 6, -1, 2110, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1813, -1, 1815, -1, 102,
3083  103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 1830, -1, -1, 118, 119, 120, 121,
3084  -1, -1, 124, -1, -1, -1, 286, 287, 288, 289, 290, 133, 134, -1, -1, 137, 138, -1, 140,
3085  141, -1, 143, -1, -1, -1, 305, 306, 307, 1865, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3086  -1, 161, -1, -1, -1, 323, -1, -1, -1, -1, -1, -1, -1, -1, -1, 333, 334, -1, -1,
3087  -1, -1, 339, -1, -1, -1, -1, -1, -1, 188, 189, 190, 349, 350, -1, -1, -1, -1, -1,
3088  -1, -1, 2223, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 371, 372, -1, -1,
3089  -1, -1, -1, -1, -1, -1, -1, 382, -1, 384, 385, -1, 387, -1, -1, -1, 391, 392, 393,
3090  -1, -1, 396, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2273, 237, 238, 239, 240,
3091  241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259,
3092  -1, -1, -1, -1, 436, -1, -1, -1, -1, 441, 442, -1, -1, -1, -1, -1, -1, -1, -1,
3093  -1, -1, -1, -1, -1, -1, -1, 458, 459, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3094  -1, -1, -1, 473, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
3095  252, 253, 254, -1, -1, -1, 495, 259, -1, -1, -1, 500, -1, -1, -1, 504, -1, -1, -1,
3096  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 518, 519, -1, -1, -1, -1, 524, -1, -1,
3097  -1, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
3098  546, 547, 548, 549, 550, 551, 552, 553, 554, -1, 556, 557, -1, 559, -1, -1, -1, -1, -1,
3099  2122, -1, -1, -1, 569, -1, -1, 572, 573, -1, -1, -1, -1, 209, 210, 580, -1, -1, -1,
3100  -1, 585, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 597, 598, 599, 600, 601, 602,
3101  603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, -1, 618, 619, -1, -1,
3102  -1, -1, -1, -1, 626, 627, 628, -1, -1, 2188, -1, -1, 634, 635, 636, 637, -1, 639, 640,
3103  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2210, -1, -1, -1, -1, 658, 659,
3104  660, -1, -1, -1, 664, 665, 666, 667, 668, 669, 670, 671, 672, -1, -1, 306, 307, -1, 678,
3105  679, -1, 681, -1, -1, 684, -1, -1, -1, 688, 689, 690, 691, -1, -1, -1, 695, 696, 697,
3106  698, 699, -1, -1, 702, 2260, 704, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3107  -1, 349, -1, -1, -1, 2279, 2280, 724, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2292,
3108  -1, -1, 738, -1, -1, -1, -1, -1, -1, 745, 746, -1, 748, -1, -1, 751, 752, -1, -1,
3109  -1, -1, -1, -1, -1, 760, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3110  -1, -1, -1, -1, 778, -1, 780, -1, -1, 209, 210, 785, 786, -1, -1, -1, -1, -1, -1,
3111  -1, -1, -1, -1, -1, -1, -1, 800, -1, 802, 803, -1, -1, 806, -1, 808, 809, 441, -1,
3112  -1, 813, -1, 815, -1, 817, -1, -1, -1, -1, -1, 823, -1, -1, -1, 827, -1, -1, -1,
3113  237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1,
3114  850, -1, 852, 259, 854, 261, -1, 263, -1, -1, -1, 287, -1, 269, 290, -1, -1, -1, -1,
3115  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 306, 307, -1, -1, -1, -1, -1, -1,
3116  -1, -1, 890, -1, -1, -1, -1, -1, -1, -1, -1, -1, 900, 901, 902, 903, -1, -1, -1,
3117  -1, -1, -1, -1, -1, 912, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 349, -1, -1,
3118  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 940, -1, -1, -1, -1,
3119  -1, 372, -1, -1, -1, -1, -1, 952, -1, 585, -1, -1, -1, -1, -1, 960, -1, -1, -1,
3120  964, -1, -1, -1, -1, -1, 970, -1, -1, 973, -1, -1, -1, -1, -1, -1, -1, 981, 982,
3121  -1, -1, -1, -1, 987, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3122  -1, -1, 1004, -1, -1, 1007, 639, 640, -1, -1, -1, -1, -1, 441, -1, -1, -1, -1, -1,
3123  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1033, -1, 1035, 1036, -1, -1, -1,
3124  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1054, 6, -1, 688, 689,
3125  690, -1, -1, -1, -1, -1, 696, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3126  1078, -1, -1, -1, -1, -1, -1, 1085, -1, -1, -1, -1, -1, -1, 1092, 519, -1, -1, -1,
3127  -1, -1, -1, -1, -1, -1, -1, -1, 1105, 1106, 738, -1, -1, -1, 1111, -1, -1, -1, -1,
3128  -1, -1, 544, -1, -1, -1, -1, -1, -1, -1, -1, 553, 554, -1, -1, -1, -1, -1, -1,
3129  -1, -1, -1, -1, -1, -1, -1, -1, 1143, -1, -1, -1, 778, -1, -1, -1, -1, -1, -1,
3130  580, -1, -1, -1, -1, 585, -1, -1, -1, -1, -1, 1165, -1, -1, -1, 800, -1, -1, -1,
3131  -1, -1, 806, -1, 808, -1, -1, -1, -1, -1, 1183, -1, 611, -1, -1, -1, -1, -1, -1,
3132  -1, 1193, 1194, 1195, 1196, 1197, -1, -1, -1, -1, 1202, 1203, -1, 1205, -1, -1, -1, -1, -1,
3133  -1, -1, 639, 640, -1, -1, -1, -1, -1, -1, 1221, 1222, -1, -1, -1, -1, -1, -1, 1229,
3134  1230, -1, -1, -1, -1, -1, -1, -1, 1238, 1239, -1, -1, -1, -1, 1244, 1245, -1, -1, -1,
3135  -1, 1250, 1251, -1, -1, -1, -1, -1, -1, -1, 890, -1, -1, 688, 689, 690, -1, -1, -1,
3136  -1, 900, 696, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1285, 237,
3137  238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1,
3138  -1, -1, 259, 940, -1, -1, 738, -1, -1, -1, -1, -1, -1, -1, -1, 952, -1, 1323, -1,
3139  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1337, -1, -1, -1, -1, 973, -1,
3140  -1, 1345, -1, -1, -1, -1, -1, -1, 778, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3141  -1, -1, -1, -1, 1367, 1368, -1, -1, -1, 1372, -1, 800, -1, -1, -1, -1, -1, 806, -1,
3142  808, 1383, -1, -1, 1386, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3143  4, 5, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1415, -1, -1, 1418, 1419,
3144  1420, 1421, -1, -1, -1, -1, 852, -1, 854, 1429, -1, -1, 1432, -1, 1434, -1, 1436, 1437, 8,
3145  -1, 1440, 1441, -1, -1, -1, -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, -1, -1,
3146  -1, 62, 63, 64, 65, -1, 890, -1, -1, 70, 71, 72, 73, -1, -1, -1, 900, -1, 79,
3147  -1, 81, -1, 1111, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 95, -1, -1, 98,
3148  -1, -1, -1, 102, -1, -1, 105, -1, -1, 108, -1, 110, -1, -1, -1, -1, -1, -1, 940,
3149  -1, -1, -1, 121, -1, 1520, -1, -1, -1, -1, -1, 952, -1, -1, -1, -1, 1531, 1532, 1533,
3150  1165, -1, -1, 140, -1, -1, 1540, -1, 1542, -1, -1, -1, -1, 973, -1, 1549, -1, -1, -1,
3151  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1563, -1, -1, -1, -1, -1, 1569, 1570, -1,
3152  -1, -1, -1, -1, -1, -1, -1, -1, 1580, 1581, 1582, -1, -1, -1, -1, -1, -1, -1, 1590,
3153  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1601, -1, -1, -1, -1, -1, -1, -1, 212,
3154  213, 214, -1, -1, -1, -1, -1, -1, -1, 1250, 1251, 224, 1622, -1, -1, 228, -1, 230, 231,
3155  -1, 1630, 1631, 6, -1, -1, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
3156  250, 251, 252, 253, 254, -1, -1, -1, -1, 259, 261, 463, 263, 264, -1, -1, -1, -1, 1666,
3157  237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 1111,
3158  -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3159  -1, 1337, -1, 1708, 1709, 1710, -1, -1, -1, -1, -1, -1, -1, 6, 1719, -1, -1, -1, -1,
3160  1724, 1725, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1737, -1, 1165, -1, -1, -1,
3161  -1, 1744, 1745, 1746, -1, 1748, -1, -1, -1, -1, -1, 1754, 1755, -1, -1, -1, -1, -1, -1,
3162  -1, -1, -1, -1, 570, -1, -1, -1, -1, -1, -1, 1773, -1, -1, -1, -1, 1778, 1779, -1,
3163  -1, -1, -1, -1, -1, -1, -1, 1419, -1, 1421, -1, -1, 1793, -1, -1, 1796, -1, -1, -1,
3164  1800, -1, -1, -1, -1, -1, -1, -1, -1, 1809, 1810, -1, 1812, -1, -1, -1, -1, -1, 622,
3165  -1, -1, -1, 1822, -1, 1250, 1251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1836, -1,
3166  -1, -1, -1, 1841, 1842, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1855, -1,
3167  -1, 1858, 1859, -1, 1861, -1, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
3168  250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, 1894,
3169  1895, -1, -1, -1, -1, -1, 1901, 1902, -1, -1, -1, -1, -1, -1, -1, -1, 1337, -1, 1913,
3170  -1, -1, -1, -1, -1, -1, -1, -1, 1922, -1, -1, -1, -1, -1, -1, -1, -1, 1931, 1563,
3171  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1944, 1945, -1, -1, 1948, 237, 238, 239,
3172  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1,
3173  259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1982, 1983, -1, -1, -1, -1, -1, -1,
3174  -1, -1, -1, 1419, -1, 1421, -1, -1, -1, -1, -1, -1, -1, 2003, -1, -1, -1, -1, 2008,
3175  2009, 2010, -1, -1, -1, -1, 2015, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3176  -1, 2029, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2044, -1, -1,
3177  -1, -1, -1, -1, -1, -1, 2053, -1, -1, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869,
3178  870, -1, 872, 873, 874, 875, -1, 877, 878, 879, 880, -1, 2078, -1, -1, 26, -1, 28, 2084,
3179  -1, -1, 2087, -1, 893, -1, 895, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 906, -1,
3180  -1, -1, -1, -1, -1, -1, 914, 915, -1, 1744, 1745, -1, -1, -1, 2118, 923, -1, -1, 6,
3181  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1563, -1, -1, -1, -1,
3182  -1, -1, 2144, 2145, -1, 1778, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2159, 2160,
3183  -1, 2162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2175, -1, -1, -1, -1,
3184  2180, 2181, 2182, 2183, 2184, -1, -1, -1, -1, -1, 2190, -1, -1, -1, 2194, -1, -1, -1, -1,
3185  -1, -1, -1, -1, -1, 149, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3186  -1, -1, -1, 2221, -1, -1, -1, -1, 2226, 2227, -1, -1, -1, -1, -1, -1, -1, -1, 1040,
3187  1041, 1042, 2239, 1666, -1, 1046, 1047, -1, -1, 1050, 1051, 1052, 1053, -1, 1055, -1, -1, -1, -1,
3188  1060, -1, -1, -1, -1, -1, -1, 1894, 1895, -1, 2266, 2267, -1, -1, -1, -1, -1, -1, -1,
3189  -1, -1, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
3190  239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, -1, 255, 256, -1,
3191  -1, -1, -1, -1, 1948, 1744, 1745, 265, 266, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3192  6, 278, 279, 4, 5, -1, 1142, -1, 1144, -1, -1, -1, -1, -1, -1, 1773, -1, -1, -1,
3193  -1, 1778, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
3194  254, -1, -1, -1, -1, 259, -1, 2008, 2009, -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
3195  -1, -1, -1, -1, 62, 63, 64, 65, -1, 2029, -1, -1, 70, 71, 72, 73, -1, -1, -1,
3196  -1, -1, 79, -1, 81, 2044, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 95,
3197  -1, -1, 98, -1, -1, -1, 102, -1, -1, 105, -1, -1, 108, -1, 110, -1, 1247, -1, -1,
3198  -1, -1, -1, -1, -1, -1, 121, 398, 399, 400, -1, -1, -1, 404, 405, 406, 407, 408, 409,
3199  410, -1, 412, 1894, 1895, -1, 140, 417, 418, -1, 6, 421, -1, -1, -1, -1, -1, -1, -1,
3200  -1, -1, -1, -1, -1, -1, 435, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3201  -1, -1, 1931, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3202  1948, -1, -1, -1, -1, -1, 6, -1, -1, 2162, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3203  -1, -1, 212, 213, 214, -1, -1, -1, 2180, 2181, 2182, 2183, 2184, -1, 224, -1, -1, -1, 228,
3204  -1, 230, 231, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
3205  253, 254, -1, 2008, 2009, -1, 259, -1, -1, -1, -1, -1, 1395, -1, -1, -1, 264, -1, -1,
3206  -1, -1, -1, -1, -1, 2029, -1, -1, -1, -1, 2239, -1, -1, -1, -1, -1, -1, -1, -1,
3207  -1, 2044, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1438, -1,
3208  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 593, -1, -1, -1, -1, -1, -1,
3209  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1470, 1471, 1472, 1473, 1474, 1475, 1476, -1,
3210  -1, -1, -1, 1481, 1482, -1, -1, -1, -1, -1, 1488, -1, -1, 1491, -1, -1, -1, 1495, -1,
3211  -1, 1498, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1509, 237, 238, 239, 240, 241, 242,
3212  243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1,
3213  -1, -1, -1, -1, -1, 2162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3214  -1, -1, -1, -1, 2180, 2181, 2182, 2183, 2184, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
3215  247, 248, 249, 250, 251, 252, 253, 254, 6, -1, -1, -1, 259, 1586, -1, 1588, -1, -1, -1,
3216  1592, -1, 1594, -1, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
3217  252, 253, 254, -1, -1, -1, 2239, 259, -1, 261, -1, -1, -1, -1, -1, 1626, -1, 269, -1,
3218  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, -1, -1, -1,
3219  -1, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
3220  28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 6,
3221  -1, -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
3222  66, 67, -1, -1, 70, 71, 72, 73, -1, -1, 76, 77, 78, 79, -1, 81, 82, 83, 84,
3223  7, 1726, -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, -1, 98, -1, -1, -1, 102, -1,
3224  -1, 105, -1, -1, 108, -1, 110, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, 121, -1,
3225  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, 135, 136, 918, 138, -1, 140, -1,
3226  -1, 143, -1, -1, -1, -1, -1, 149, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160,
3227  -1, -1, -1, 164, -1, -1, -1, 168, -1, 951, -1, 237, 238, 239, 240, 241, 242, 243, 244,
3228  245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, 1832, 193, 259, 1835, -1, -1, -1,
3229  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, 212, 213, 214, 215, 216, -1,
3230  -1, -1, -1, 221, 222, 223, 224, 225, 226, 227, 228, -1, 230, 231, -1, -1, -1, -1, -1,
3231  -1, -1, -1, -1, -1, -1, -1, 1884, 1885, -1, 1887, 248, 249, -1, -1, -1, -1, -1, 255,
3232  -1, -1, -1, -1, 260, -1, -1, -1, 264, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1,
3233  -1, -1, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
3234  254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1952,
3235  1953, -1, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
3236  254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
3237  4, 5, -1, -1, 1136, -1, 10, 11, 12, -1, 2001, 15, 16, 17, 18, 19, 20, 21, 22,
3238  23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
3239  42, 43, 44, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
3240  61, 62, 63, 64, 65, 66, 67, -1, -1, 70, 71, 72, 73, -1, -1, 76, 77, 78, 79,
3241  -1, 81, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, -1, 98,
3242  -1, -1, -1, 102, -1, -1, 105, 1234, -1, 108, -1, 110, -1, -1, -1, -1, -1, -1, 117,
3243  -1, -1, -1, 121, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, 135, 136,
3244  -1, 138, -1, 140, -1, -1, 143, -1, -1, -1, -1, -1, 149, 150, 151, 152, 153, -1, 155,
3245  156, 157, 158, 159, 160, 8, -1, -1, 164, -1, -1, -1, 168, -1, -1, -1, -1, -1, -1,
3246  -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, 193,
3247  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, 211, 212,
3248  213, 214, 215, 216, -1, -1, -1, -1, 221, 222, 223, 224, 225, 226, 227, 228, -1, 230, 231,
3249  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, 249, -1,
3250  -1, -1, -1, -1, 255, -1, -1, -1, -1, 260, 2248, -1, -1, 264, -1, -1, 267, 1396, 1397,
3251  -1, 3, 4, 5, -1, 7, -1, -1, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20,
3252  21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
3253  40, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
3254  59, 60, 61, 62, 63, 64, 65, 66, -1, -1, -1, 70, 71, 72, 73, -1, -1, -1, -1,
3255  -1, 79, -1, 81, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, 96,
3256  1493, 98, -1, -1, -1, 102, -1, -1, 105, 1502, -1, 108, -1, 110, -1, -1, -1, -1, -1,
3257  -1, -1, -1, -1, -1, 121, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
3258  250, 251, 252, 253, 254, 140, -1, -1, -1, 259, 237, 238, 239, 240, 241, 242, 243, 244, 245,
3259  246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, 237, 238, 239, 240, 241,
3260  242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1,
3261  -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, 204, -1, -1, -1, -1, -1, -1,
3262  211, 212, 213, 214, 215, -1, -1, -1, -1, -1, 221, 222, 223, 224, 225, 226, 227, 228, -1,
3263  230, 231, -1, 233, 234, 235, 236, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248,
3264  249, -1, -1, -1, -1, -1, 255, -1, 257, 258, -1, 260, -1, 262, 3, 4, 5, 266, 267,
3265  -1, 1665, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
3266  27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
3267  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, -1, -1, -1,
3268  -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, -1, -1, -1, 82, 83,
3269  84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, 96, -1, -1, -1, -1, -1, 102,
3270  -1, -1, 105, -1, -1, 108, -1, 110, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, 121,
3271  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, 135, 136, -1, 138, -1, 140,
3272  -1, -1, 143, -1, -1, -1, -1, -1, 149, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159,
3273  160, -1, -1, -1, 164, -1, -1, -1, 168, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
3274  247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 193, -1, -1, -1, -1,
3275  8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, -1, -1, -1, 215, 216,
3276  -1, -1, -1, -1, 221, 222, 223, -1, 225, 226, 227, -1, -1, -1, 231, -1, -1, -1, -1,
3277  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, 249, -1, -1, -1, -1, -1,
3278  255, -1, -1, -1, -1, 260, 3, 4, -1, 264, -1, 8, 267, 10, 11, 12, -1, -1, 15,
3279  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
3280  35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1,
3281  -1, -1, -1, -1, 58, 59, 60, 61, -1, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1,
3282  -1, -1, -1, 76, 77, 78, -1, -1, -1, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1,
3283  -1, 93, 94, -1, 96, -1, -1, -1, -1, -1, 102, -1, -1, 105, -1, -1, 108, -1, 110,
3284  -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, 121, -1, -1, -1, -1, -1, -1, -1, -1,
3285  -1, -1, -1, 133, -1, 135, 136, -1, 138, -1, 140, -1, -1, 143, -1, -1, -1, -1, -1,
3286  149, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, -1, -1, -1, 164, -1, -1, -1,
3287  168, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
3288  -1, -1, -1, -1, 259, -1, 193, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3289  -1, -1, -1, -1, -1, 211, -1, -1, -1, 215, 216, -1, -1, -1, -1, 221, 222, 223, -1,
3290  225, 226, 227, -1, -1, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3291  -1, -1, -1, -1, 248, 249, -1, -1, -1, -1, -1, 255, -1, -1, -1, -1, 260, 3, 4,
3292  5, -1, 265, -1, 267, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23,
3293  24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
3294  43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 61,
3295  -1, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, -1, -1,
3296  -1, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, 96, -1, -1, -1,
3297  -1, -1, 102, -1, -1, 105, -1, -1, 108, -1, 110, -1, -1, -1, -1, -1, -1, 117, -1,
3298  -1, -1, 121, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, 135, 136, -1,
3299  138, -1, 140, -1, -1, 143, -1, -1, -1, -1, -1, 149, 150, 151, 152, 153, -1, 155, 156,
3300  157, 158, 159, 160, -1, -1, -1, 164, -1, -1, -1, 168, 237, 238, 239, 240, 241, 242, 243,
3301  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 193, -1,
3302  -1, -1, 265, -1, -1, -1, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, -1, -1,
3303  -1, 215, 216, -1, -1, -1, -1, 221, 222, 223, -1, 225, 226, 227, -1, -1, -1, 231, -1,
3304  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, 249, -1, -1,
3305  -1, -1, -1, 255, -1, -1, -1, -1, 260, 3, 4, -1, 264, -1, -1, 267, 10, 11, 12,
3306  -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
3307  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, -1, -1,
3308  -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, -1, -1, -1, -1, 66, 67, -1, -1,
3309  -1, -1, -1, -1, -1, -1, 76, 77, 78, -1, -1, -1, 82, 83, 84, -1, -1, -1, -1,
3310  -1, -1, -1, -1, 93, 94, -1, 96, -1, -1, -1, -1, -1, 102, -1, -1, 105, -1, -1,
3311  108, -1, 110, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, 121, -1, -1, -1, -1, -1,
3312  -1, -1, -1, -1, -1, -1, 133, -1, 135, 136, -1, 138, -1, 140, -1, -1, 143, -1, -1,
3313  -1, -1, -1, 149, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, -1, -1, -1, 164,
3314  -1, -1, -1, 168, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
3315  252, 253, 254, -1, -1, -1, -1, 259, -1, 193, -1, -1, -1, 265, -1, -1, -1, 269, -1,
3316  -1, -1, -1, -1, -1, -1, -1, -1, 211, -1, -1, -1, 215, 216, -1, -1, -1, -1, 221,
3317  222, 223, -1, 225, 226, 227, -1, -1, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3318  -1, -1, -1, -1, -1, -1, -1, 248, 249, -1, -1, -1, -1, -1, 255, -1, -1, -1, -1,
3319  260, 3, 4, -1, 264, 265, -1, 267, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20,
3320  21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
3321  40, 41, 42, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58,
3322  59, 60, 61, -1, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
3323  78, -1, -1, -1, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, 96,
3324  -1, -1, -1, -1, -1, 102, -1, -1, 105, -1, -1, 108, -1, 110, -1, -1, -1, -1, -1,
3325  -1, 117, -1, -1, -1, 121, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1,
3326  135, 136, -1, 138, -1, 140, -1, -1, 143, -1, -1, -1, -1, -1, 149, 150, 151, 152, 153,
3327  -1, 155, 156, 157, 158, 159, 160, -1, -1, -1, 164, -1, -1, -1, 168, 237, 238, 239, 240,
3328  241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259,
3329  -1, 193, -1, -1, -1, 265, -1, -1, -1, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3330  211, -1, -1, -1, 215, 216, -1, -1, -1, -1, 221, 222, 223, -1, 225, 226, 227, -1, -1,
3331  -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248,
3332  249, -1, -1, -1, -1, -1, 255, -1, -1, -1, -1, 260, 3, 4, -1, 264, -1, -1, 267,
3333  10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
3334  29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, -1, -1,
3335  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, -1, -1, -1, -1, 66,
3336  67, -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, -1, -1, -1, 82, 83, 84, -1,
3337  -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, 96, -1, -1, -1, -1, -1, 102, -1, -1,
3338  105, -1, -1, 108, -1, 110, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, 121, -1, -1,
3339  -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, 135, 136, -1, 138, -1, 140, -1, -1,
3340  143, -1, -1, -1, -1, -1, 149, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, -1,
3341  -1, -1, 164, -1, -1, -1, 168, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
3342  249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 193, -1, -1, -1, 265, -1, -1,
3343  -1, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, -1, -1, -1, 215, 216, -1, -1,
3344  -1, -1, 221, 222, 223, -1, 225, 226, 227, -1, -1, -1, 231, -1, -1, -1, -1, -1, -1,
3345  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, 249, -1, -1, -1, -1, -1, 255, -1,
3346  -1, -1, -1, 260, 3, 4, -1, 264, -1, -1, 267, 10, 11, 12, -1, -1, 15, 16, 17,
3347  18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
3348  37, 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3349  -1, -1, 58, 59, 60, 61, -1, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
3350  -1, 76, 77, 78, -1, -1, -1, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93,
3351  94, -1, 96, -1, -1, -1, -1, -1, 102, -1, -1, 105, -1, -1, 108, -1, 110, -1, -1,
3352  -1, -1, -1, -1, 117, -1, -1, -1, 121, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3353  -1, 133, -1, 135, 136, -1, 138, -1, 140, -1, -1, 143, -1, -1, -1, -1, -1, 149, 150,
3354  151, 152, 153, -1, 155, 156, 157, 158, 159, 160, -1, -1, -1, 164, -1, -1, -1, 168, 237,
3355  238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1,
3356  -1, -1, 259, -1, 193, -1, -1, -1, -1, -1, -1, -1, 269, -1, -1, -1, -1, -1, -1,
3357  -1, -1, -1, 211, -1, -1, -1, 215, 216, -1, -1, -1, -1, 221, 222, 223, -1, 225, 226,
3358  227, -1, -1, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3359  -1, -1, 248, 249, -1, -1, -1, -1, -1, 255, -1, -1, -1, -1, 260, 3, 4, -1, 264,
3360  -1, -1, 267, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
3361  26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
3362  45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, -1, -1,
3363  -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, -1, -1, -1, 82,
3364  83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, 96, -1, -1, -1, -1, -1,
3365  102, -1, -1, 105, -1, -1, 108, -1, 110, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1,
3366  121, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, 135, 136, -1, 138, -1,
3367  140, -1, -1, 143, -1, -1, -1, -1, -1, 149, 150, 151, 152, 153, -1, 155, 156, 157, 158,
3368  159, 160, -1, -1, -1, 164, -1, -1, -1, 168, 237, 238, 239, 240, 241, 242, 243, 244, 245,
3369  246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 193, -1, -1, -1,
3370  -1, -1, -1, -1, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, -1, -1, -1, 215,
3371  216, -1, -1, -1, -1, 221, 222, 223, -1, 225, 226, 227, -1, -1, -1, 231, -1, -1, -1,
3372  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, 249, -1, -1, -1, -1,
3373  -1, 255, -1, -1, -1, -1, 260, 3, 4, -1, -1, 265, -1, 267, 10, 11, 12, -1, -1,
3374  15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
3375  34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1,
3376  -1, -1, -1, -1, -1, 58, 59, 60, 61, -1, -1, -1, -1, 66, 67, -1, -1, -1, -1,
3377  -1, -1, -1, -1, 76, 77, 78, -1, -1, -1, 82, 83, 84, -1, -1, -1, -1, -1, -1,
3378  -1, -1, 93, 94, -1, 96, -1, -1, -1, -1, -1, 102, -1, -1, 105, -1, -1, 108, -1,
3379  110, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, 121, -1, -1, -1, -1, -1, -1, -1,
3380  -1, -1, -1, -1, 133, -1, 135, 136, -1, 138, -1, 140, -1, -1, 143, -1, -1, -1, -1,
3381  -1, 149, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, -1, -1, -1, 164, -1, -1,
3382  -1, 168, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
3383  254, -1, -1, -1, -1, 259, -1, 193, -1, -1, -1, -1, -1, -1, -1, 269, -1, -1, -1,
3384  -1, -1, -1, -1, -1, -1, 211, -1, -1, -1, 215, 216, -1, -1, -1, -1, 221, 222, 223,
3385  -1, 225, 226, 227, -1, -1, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3386  -1, -1, -1, -1, -1, 248, 249, -1, -1, -1, -1, -1, 255, -1, -1, -1, -1, 260, 3,
3387  4, -1, 264, -1, -1, 267, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22,
3388  23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
3389  42, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60,
3390  61, -1, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, -1,
3391  -1, -1, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, 96, -1, -1,
3392  -1, -1, -1, 102, -1, -1, 105, -1, -1, 108, -1, 110, -1, -1, -1, -1, -1, -1, 117,
3393  -1, -1, -1, 121, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, 135, 136,
3394  -1, 138, -1, 140, -1, -1, 143, -1, -1, -1, -1, -1, 149, 150, 151, 152, 153, -1, 155,
3395  156, 157, 158, 159, 160, -1, -1, -1, 164, -1, -1, -1, 168, 237, 238, 239, 240, 241, 242,
3396  243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 193,
3397  -1, -1, -1, -1, -1, -1, -1, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, -1,
3398  -1, -1, 215, 216, -1, -1, -1, -1, 221, 222, 223, -1, 225, 226, 227, -1, -1, -1, 231,
3399  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, 249, -1,
3400  -1, -1, -1, -1, 255, -1, -1, -1, -1, 260, 3, 4, -1, 264, -1, -1, 267, 10, 11,
3401  12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
3402  31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, -1,
3403  -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, -1, -1, -1, -1, 66, 67, -1,
3404  -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, -1, -1, -1, 82, 83, 84, -1, -1, -1,
3405  -1, -1, -1, -1, -1, 93, 94, -1, 96, -1, -1, -1, -1, -1, 102, -1, -1, 105, -1,
3406  -1, 108, -1, 110, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, 121, -1, -1, -1, -1,
3407  -1, -1, -1, -1, -1, -1, -1, 133, -1, 135, 136, -1, 138, -1, 140, -1, -1, 143, -1,
3408  -1, -1, -1, -1, 149, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, -1, -1, -1,
3409  164, -1, -1, -1, 168, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
3410  251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 193, -1, -1, -1, -1, -1, -1, -1, 269,
3411  -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, -1, -1, -1, 215, 216, -1, -1, -1, -1,
3412  221, 222, 223, -1, 225, 226, 227, -1, -1, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1,
3413  -1, -1, -1, -1, -1, -1, -1, -1, 248, 249, -1, -1, -1, -1, -1, 255, -1, -1, -1,
3414  -1, 260, 3, 4, -1, 264, -1, 8, 267, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19,
3415  20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
3416  39, 40, 41, 42, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3417  58, 59, 60, 61, -1, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, 76,
3418  77, 78, -1, -1, -1, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1,
3419  96, -1, -1, -1, -1, -1, 102, -1, -1, 105, -1, -1, 108, -1, 110, -1, -1, -1, -1,
3420  -1, -1, 117, -1, -1, -1, 121, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133,
3421  -1, 135, 136, -1, 138, -1, 140, -1, -1, 143, -1, -1, -1, -1, -1, 149, 150, 151, 152,
3422  153, -1, 155, 156, 157, 158, 159, 160, -1, -1, -1, 164, -1, -1, -1, 168, 237, 238, 239,
3423  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1,
3424  259, -1, 193, -1, -1, -1, -1, -1, -1, -1, 269, -1, -1, -1, -1, -1, -1, -1, -1,
3425  -1, 211, -1, -1, -1, 215, 216, -1, -1, -1, -1, 221, 222, 223, -1, 225, 226, 227, -1,
3426  -1, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3427  248, 249, -1, -1, -1, -1, -1, 255, 3, 4, -1, -1, 260, 8, -1, 10, 11, 12, -1,
3428  267, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
3429  33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, -1, -1, -1,
3430  -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, -1, -1, -1, -1, 66, 67, -1, -1, -1,
3431  -1, -1, -1, -1, -1, 76, 77, 78, -1, -1, -1, 82, 83, 84, -1, -1, -1, -1, -1,
3432  -1, -1, -1, 93, 94, -1, 96, -1, -1, -1, -1, -1, 102, -1, -1, 105, -1, -1, 108,
3433  -1, 110, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, 121, -1, -1, -1, -1, -1, -1,
3434  -1, -1, -1, -1, -1, 133, -1, 135, 136, -1, 138, -1, 140, -1, -1, 143, -1, -1, -1,
3435  -1, -1, 149, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, -1, -1, -1, 164, -1,
3436  -1, -1, 168, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
3437  253, 254, -1, -1, -1, -1, 259, -1, 193, -1, -1, -1, -1, -1, -1, -1, 269, -1, -1,
3438  -1, -1, -1, -1, -1, -1, -1, 211, -1, -1, -1, 215, 216, -1, -1, -1, -1, 221, 222,
3439  223, -1, 225, 226, 227, -1, -1, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3440  -1, -1, -1, -1, -1, -1, 248, 249, -1, -1, -1, -1, -1, 255, 3, 4, -1, -1, 260,
3441  -1, -1, 10, 11, 12, -1, 267, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
3442  27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
3443  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, -1, -1, -1,
3444  -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, -1, -1, -1, 82, 83,
3445  84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, 96, -1, -1, -1, -1, -1, 102,
3446  -1, -1, 105, -1, -1, 108, -1, 110, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, 121,
3447  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, 135, 136, -1, 138, -1, 140,
3448  -1, -1, 143, -1, -1, -1, -1, -1, 149, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159,
3449  160, -1, -1, -1, 164, -1, -1, -1, 168, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
3450  247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 193, -1, -1, -1, -1,
3451  -1, -1, -1, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, -1, -1, -1, 215, 216,
3452  -1, -1, -1, -1, 221, 222, 223, -1, 225, 226, 227, -1, -1, -1, 231, -1, -1, -1, -1,
3453  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, 249, -1, -1, -1, -1, -1,
3454  255, -1, -1, -1, -1, 260, 3, 4, -1, 264, -1, -1, 267, 10, 11, 12, -1, -1, 15,
3455  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
3456  35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1,
3457  -1, -1, -1, -1, 58, 59, 60, 61, -1, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1,
3458  -1, -1, -1, 76, 77, 78, -1, -1, -1, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1,
3459  -1, 93, 94, -1, 96, -1, -1, -1, -1, -1, 102, -1, -1, 105, -1, -1, 108, -1, 110,
3460  -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, 121, -1, -1, -1, -1, -1, -1, -1, -1,
3461  -1, -1, -1, 133, -1, 135, 136, -1, 138, -1, 140, -1, -1, 143, -1, -1, -1, -1, -1,
3462  149, 150, 151, 152, 153, -1, 155, 156, 157, 158, 159, 160, -1, -1, -1, 164, -1, -1, -1,
3463  168, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
3464  -1, -1, -1, -1, 259, -1, 193, -1, -1, -1, -1, -1, -1, -1, 269, -1, -1, -1, -1,
3465  -1, -1, -1, -1, -1, 211, -1, -1, -1, 215, 216, -1, -1, -1, -1, 221, 222, 223, -1,
3466  225, 226, 227, -1, -1, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3467  -1, -1, -1, -1, 248, 249, -1, -1, -1, -1, -1, 255, -1, -1, -1, -1, 260, 3, 4,
3468  -1, 264, -1, -1, 267, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23,
3469  24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
3470  43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 61,
3471  -1, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, 78, -1, -1,
3472  -1, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, 96, -1, -1, -1,
3473  -1, -1, 102, -1, -1, 105, -1, -1, 108, -1, 110, -1, -1, -1, -1, -1, -1, 117, -1,
3474  -1, -1, 121, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, 135, 136, -1,
3475  138, -1, 140, -1, -1, 143, -1, -1, -1, -1, -1, 149, 150, 151, 152, 153, -1, 155, 156,
3476  157, 158, 159, 160, -1, -1, -1, 164, -1, -1, -1, 168, 237, 238, 239, 240, 241, 242, 243,
3477  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 193, -1,
3478  -1, -1, -1, -1, -1, -1, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, -1, -1,
3479  -1, 215, 216, -1, -1, -1, -1, 221, 222, 223, -1, 225, 226, 227, -1, -1, -1, 231, -1,
3480  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, 249, -1, -1,
3481  -1, -1, -1, 255, 3, 4, 5, -1, 260, -1, -1, 10, 11, 12, -1, 267, 15, 16, 17,
3482  18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
3483  37, 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, 51, 52, 53, 54, 55,
3484  56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, -1, -1, 70, 71, 72, 73, -1,
3485  -1, -1, -1, -1, 79, -1, 81, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93,
3486  94, 95, 96, -1, 98, 3, 4, 5, -1, -1, -1, -1, 10, 11, 12, -1, -1, 15, 16,
3487  17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
3488  36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, 51, 52, 53, 54,
3489  55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, -1, -1, 70, 71, 72, 73,
3490  -1, -1, -1, -1, -1, 79, -1, 81, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
3491  93, 94, 95, 96, -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3492  -1, -1, -1, 211, 212, 213, 214, 215, -1, -1, -1, -1, -1, 221, 222, 223, 224, 225, 226,
3493  227, 228, -1, 230, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3494  -1, -1, 248, 249, -1, -1, -1, -1, -1, 255, -1, -1, -1, -1, 260, -1, -1, -1, 264,
3495  -1, -1, 267, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
3496  253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, -1,
3497  -1, -1, -1, -1, 211, 212, 213, 214, 215, -1, -1, -1, -1, -1, 221, 222, 223, 224, 225,
3498  226, 227, 228, -1, 230, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3499  -1, -1, -1, 248, 249, -1, -1, -1, -1, -1, 255, -1, -1, -1, -1, 260, 3, 4, 5,
3500  264, -1, -1, 267, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
3501  25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1,
3502  -1, -1, -1, -1, -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
3503  63, 64, 65, 66, -1, -1, -1, 70, 71, 72, 73, -1, -1, -1, -1, -1, 79, -1, 81,
3504  82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, -1, 98, 3, 4,
3505  5, -1, -1, -1, -1, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23,
3506  24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1,
3507  -1, -1, -1, -1, -1, -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
3508  62, 63, 64, 65, 66, -1, -1, -1, 70, 71, 72, 73, -1, -1, -1, -1, -1, 79, -1,
3509  81, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, -1, 98, -1,
3510  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, 212, 213, 214,
3511  215, -1, -1, -1, -1, -1, 221, 222, 223, 224, 225, 226, 227, 228, -1, 230, 231, -1, -1,
3512  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, 249, -1, -1, -1,
3513  -1, -1, 255, -1, -1, -1, -1, 260, -1, -1, -1, 264, -1, -1, 267, 237, 238, 239, 240,
3514  241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259,
3515  -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, -1, -1, -1, -1, -1, 211, 212, 213,
3516  214, 215, -1, -1, -1, -1, -1, 221, 222, 223, 224, 225, 226, 227, 228, -1, 230, 231, -1,
3517  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, 249, -1, -1,
3518  -1, -1, -1, 255, 3, 4, -1, -1, 260, -1, -1, 10, 11, 12, -1, 267, 15, 16, 17,
3519  18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
3520  37, 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3521  -1, -1, 58, 59, 60, 61, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1,
3522  -1, -1, -1, -1, -1, -1, -1, 82, 83, 84, -1, -1, -1, -1, -1, 3, 4, -1, 93,
3523  94, -1, 96, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
3524  26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1,
3525  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, -1, -1,
3526  -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82,
3527  83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, 96, 237, 238, 239, 240, 241,
3528  242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1,
3529  -1, -1, -1, 211, -1, -1, -1, 215, 269, -1, -1, -1, -1, 221, 222, 223, -1, 225, 226,
3530  227, -1, -1, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3531  -1, -1, 248, 249, -1, -1, -1, -1, -1, 255, -1, -1, -1, -1, 260, -1, -1, -1, 264,
3532  -1, -1, 267, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
3533  253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, 211, -1, 269, -1, 215,
3534  -1, -1, -1, -1, -1, 221, 222, 223, -1, 225, 226, 227, -1, -1, -1, 231, -1, -1, -1,
3535  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, 249, -1, -1, -1, -1,
3536  -1, 255, -1, -1, -1, -1, 260, 3, 4, -1, 264, -1, 8, 267, 10, 11, 12, -1, -1,
3537  15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
3538  34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3539  -1, -1, -1, -1, -1, 58, 59, 60, 61, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1,
3540  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, 83, 84, -1, -1, -1, -1, -1, 3,
3541  4, -1, 93, 94, -1, 96, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22,
3542  23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1,
3543  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60,
3544  61, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3545  -1, -1, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, 96, 237, 238,
3546  239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1,
3547  -1, 259, -1, -1, -1, -1, 211, -1, -1, -1, 215, 269, -1, -1, -1, -1, 221, 222, 223,
3548  -1, 225, 226, 227, -1, -1, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3549  -1, -1, -1, -1, -1, 248, 249, -1, -1, -1, -1, -1, 255, -1, -1, -1, -1, 260, -1,
3550  -1, -1, -1, -1, -1, 267, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
3551  250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, 211, -1,
3552  269, -1, 215, -1, -1, -1, -1, -1, 221, 222, 223, -1, 225, 226, 227, -1, -1, -1, 231,
3553  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, 249, -1,
3554  -1, -1, -1, -1, 255, 3, 4, -1, 6, 260, 261, -1, 10, 11, 12, -1, 267, 15, 16,
3555  17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
3556  36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3557  -1, -1, -1, 58, 59, 60, 61, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1,
3558  -1, -1, -1, -1, -1, -1, -1, -1, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
3559  93, 94, -1, 96, 3, 4, -1, 6, -1, -1, -1, 10, 11, 12, -1, -1, 15, 16, 17,
3560  18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
3561  37, 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3562  -1, -1, 58, 59, 60, 61, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1,
3563  -1, -1, -1, -1, -1, -1, -1, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93,
3564  94, -1, 96, -1, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
3565  252, 253, 254, -1, 211, -1, -1, 259, 215, -1, -1, -1, -1, -1, 221, 222, 223, 269, 225,
3566  226, 227, -1, -1, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3567  -1, -1, -1, 248, 249, -1, -1, -1, -1, -1, 255, -1, -1, -1, -1, 260, -1, -1, -1,
3568  -1, -1, -1, 267, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
3569  252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1,
3570  -1, -1, -1, 211, -1, -1, -1, 215, -1, -1, -1, -1, -1, 221, 222, 223, -1, 225, 226,
3571  227, -1, -1, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3572  -1, -1, 248, 249, -1, -1, -1, -1, -1, 255, 3, 4, -1, 6, 260, -1, -1, 10, 11,
3573  12, -1, 267, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
3574  31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3575  -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, -1, -1, -1, -1, 66, -1, -1,
3576  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, 83, 84, -1, -1, -1,
3577  -1, -1, 3, 4, -1, 93, 94, -1, 96, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19,
3578  20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
3579  39, 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3580  58, 59, 60, 61, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3581  -1, -1, -1, -1, -1, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1,
3582  96, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
3583  -1, -1, -1, -1, 259, -1, -1, -1, -1, 211, -1, -1, -1, 215, 269, -1, -1, -1, -1,
3584  221, 222, 223, -1, 225, 226, 227, -1, -1, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1,
3585  -1, -1, -1, -1, -1, -1, -1, -1, 248, 249, -1, -1, -1, -1, -1, 255, -1, -1, -1,
3586  -1, 260, -1, -1, -1, -1, -1, -1, 267, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
3587  247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1,
3588  -1, 211, -1, 269, -1, 215, -1, -1, -1, -1, -1, 221, 222, 223, -1, 225, 226, 227, -1,
3589  -1, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3590  248, 249, -1, -1, -1, -1, -1, 255, 3, 4, -1, -1, 260, 261, -1, 10, 11, 12, -1,
3591  267, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
3592  33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3593  -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, -1, -1, -1, -1, 66, -1, -1, -1, -1,
3594  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, 83, 84, -1, -1, -1, -1, -1,
3595  3, 4, -1, 93, 94, -1, 96, 10, 11, 12, -1, -1, 15, 16, 17, 18, 19, 20, 21,
3596  22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3597  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59,
3598  60, 61, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3599  -1, -1, -1, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, 96, 237,
3600  238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1,
3601  -1, -1, 259, -1, -1, -1, -1, 211, -1, -1, -1, 215, 269, -1, -1, -1, -1, 221, 222,
3602  223, -1, 225, 226, 227, -1, -1, -1, 231, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1,
3603  -1, -1, -1, -1, -1, -1, 248, 249, -1, -1, -1, -1, -1, 255, -1, -1, -1, -1, 260,
3604  261, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, 13, 14, -1, 237,
3605  238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, 211,
3606  -1, -1, 259, 215, -1, -1, -1, -1, -1, 221, 222, 223, 269, 225, 226, 227, -1, -1, -1,
3607  231, -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, -1, 248, 249,
3608  118, 119, 120, 121, -1, 255, 124, -1, -1, -1, 260, -1, 13, 14, -1, 133, 134, 267, -1,
3609  137, 138, -1, 140, 141, -1, 143, -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
3610  112, 113, 114, -1, -1, 161, 118, 119, 120, 121, -1, -1, 124, -1, -1, -1, -1, -1, -1,
3611  -1, -1, 133, 134, -1, -1, 137, 138, -1, 140, 141, -1, 143, 188, 189, 190, 13, 14, -1,
3612  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, -1, -1, -1, -1, -1, -1,
3613  -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
3614  188, 189, 190, 118, 119, 120, 121, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, 133,
3615  134, -1, -1, 137, 138, -1, 140, 141, -1, 143, -1, -1, -1, -1, 265, -1, -1, -1, -1,
3616  -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110,
3617  111, 112, 113, 114, -1, 13, 14, 118, 119, 120, 121, -1, -1, 124, -1, -1, 188, 189, 190,
3618  -1, 265, -1, 133, 134, -1, -1, 137, 138, -1, 140, 141, -1, 143, -1, -1, -1, -1, -1,
3619  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, -1, -1, -1, -1, -1,
3620  -1, -1, -1, -1, -1, -1, -1, -1, -1, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1,
3621  -1, 188, 189, 190, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 265, 102,
3622  103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, -1, -1, -1, 118, 119, 120, 121,
3623  -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, 133, 134, -1, -1, 137, 138, -1, 140,
3624  141, -1, 143, -1, -1, -1, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3625  -1, 161, 265, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, -1, -1, -1,
3626  118, 119, 120, 121, -1, -1, 124, -1, -1, 188, 189, 190, 13, 14, -1, 133, 134, -1, -1,
3627  137, 138, -1, 140, 141, -1, 143, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3628  -1, -1, -1, -1, -1, 161, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3629  102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 188, 189, 190, 118, 119, 120,
3630  121, -1, -1, 124, -1, -1, -1, -1, -1, -1, 265, -1, 133, 134, -1, -1, 137, 138, -1,
3631  140, 141, -1, 143, -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
3632  -1, -1, 161, 118, 119, 120, 121, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, 133,
3633  134, -1, -1, 137, 138, -1, 140, 141, -1, 143, 188, 189, 190, -1, 265, 13, 14, -1, -1,
3634  -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, 237, 238, 239, 240, 241, 242, 243, 244, 245,
3635  246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, 188, 189, 190,
3636  -1, -1, 13, 14, 269, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
3637  251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, 265, -1, -1, -1, -1, -1, -1, 269,
3638  -1, -1, -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
3639  112, 113, 114, -1, -1, -1, 118, 119, 120, 121, -1, -1, 124, -1, -1, -1, -1, 265, 13,
3640  14, -1, 133, 134, -1, -1, 137, 138, -1, 140, 141, -1, 143, -1, -1, 102, 103, 104, 105,
3641  106, 107, 108, 109, 110, 111, 112, 113, 114, -1, -1, 161, 118, 119, 120, 121, -1, -1, 124,
3642  -1, -1, -1, -1, -1, -1, -1, -1, 133, 134, -1, -1, 137, 138, -1, 140, 141, -1, 143,
3643  188, 189, 190, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1,
3644  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, 108,
3645  109, 110, 111, 112, 113, 114, 188, 189, 190, 118, 119, 120, 121, -1, -1, 124, -1, -1, -1,
3646  -1, -1, -1, -1, -1, 133, 134, -1, -1, 137, 138, -1, 140, 141, -1, 143, -1, -1, -1,
3647  -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, 102, 103, 104,
3648  105, 106, 107, 108, 109, 110, 111, 112, 113, 114, -1, 13, 14, 118, 119, 120, 121, -1, -1,
3649  124, -1, -1, 188, 189, 190, -1, 265, -1, 133, 134, -1, -1, 137, 138, -1, 140, 141, -1,
3650  143, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161,
3651  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 13, 14, -1, -1,
3652  -1, -1, -1, -1, -1, -1, -1, 188, 189, 190, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3653  -1, -1, -1, -1, 265, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, -1,
3654  -1, -1, 118, 119, 120, 121, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, 133, 134,
3655  -1, -1, 137, 138, -1, 140, 141, -1, 143, -1, -1, -1, 13, 14, -1, -1, -1, -1, -1,
3656  -1, -1, -1, -1, -1, -1, -1, 161, 265, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
3657  112, 113, 114, -1, -1, -1, 118, 119, 120, 121, -1, -1, 124, -1, -1, 188, 189, 190, -1,
3658  -1, -1, 133, 134, -1, -1, 137, 138, -1, 140, 141, -1, 143, -1, -1, -1, -1, -1, -1,
3659  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, -1, -1, -1, -1, -1, -1,
3660  -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
3661  188, 189, 190, 118, 119, 120, 121, -1, -1, 124, -1, -1, -1, -1, -1, -1, 265, -1, 133,
3662  134, -1, -1, 137, 138, -1, 140, 141, -1, 143, -1, -1, -1, -1, -1, 0, 1, -1, -1,
3663  4, -1, -1, -1, -1, -1, -1, -1, 161, 13, 14, -1, -1, -1, -1, -1, 237, 238, 239,
3664  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, 188, 189, 190,
3665  259, 265, -1, -1, 46, 47, 48, -1, -1, -1, 269, -1, -1, -1, -1, -1, -1, -1, -1,
3666  -1, -1, -1, -1, -1, -1, 67, 68, 69, -1, -1, -1, -1, 74, 75, -1, -1, -1, -1,
3667  80, -1, -1, -1, -1, 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, -1, -1, -1, -1,
3668  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, -1, 265, 117,
3669  118, 119, 120, 121, 122, -1, 124, -1, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
3670  137, 138, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, 155,
3671  156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, -1, -1,
3672  -1, 176, 177, 178, -1, -1, -1, 182, -1, -1, -1, -1, 187, 188, 189, 190, -1, -1, 193,
3673  -1, 195, -1, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, -1, 4,
3674  -1, -1, -1, -1, 217, 218, 219, 220, 13, 14, -1, -1, -1, -1, -1, -1, 229, -1, 231,
3675  232, -1, -1, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
3676  253, 254, -1, 46, 47, 48, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, -1, -1,
3677  -1, -1, -1, -1, -1, 67, 68, 69, -1, -1, -1, -1, 74, 75, -1, -1, -1, -1, 80,
3678  -1, -1, -1, -1, 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, -1, -1, -1, -1, 99,
3679  100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, -1, -1, 117, 118,
3680  119, 120, 121, 122, -1, 124, -1, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3681  138, 139, 140, 141, 142, -1, -1, 145, 146, 147, -1, 149, 150, 151, 152, 153, 154, 155, 156,
3682  157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, -1, -1, -1,
3683  176, 177, 178, -1, -1, -1, 182, -1, -1, -1, -1, 187, 188, 189, 190, 4, 5, 193, -1,
3684  195, -1, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, -1, -1, -1,
3685  -1, -1, -1, 217, 218, 219, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 232,
3686  -1, -1, -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, -1, -1, -1, 62, 63, 64,
3687  65, 4, 5, -1, -1, 70, 71, 72, 73, -1, -1, -1, -1, -1, 79, -1, 81, -1, -1,
3688  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 95, -1, -1, 98, -1, -1, -1, 102,
3689  4, 5, 105, -1, -1, 108, -1, 110, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 121,
3690  -1, -1, 62, 63, 64, 65, -1, -1, -1, -1, 70, 71, 72, 73, -1, -1, -1, -1, 140,
3691  79, -1, 81, -1, -1, -1, -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, 95, -1, -1,
3692  98, 62, 63, 64, 65, -1, -1, -1, -1, 70, 71, 72, 73, -1, -1, -1, -1, -1, 79,
3693  -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 95, -1, -1, 98,
3694  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 212, 213, 214, -1, -1,
3695  -1, -1, -1, -1, -1, -1, -1, 224, -1, -1, -1, 228, -1, 230, 231, -1, -1, -1, -1,
3696  -1, -1, -1, -1, -1, 13, 14, -1, -1, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
3697  247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1,
3698  212, 213, 214, 269, -1, -1, -1, -1, -1, -1, -1, -1, 224, -1, -1, -1, 228, -1, 230,
3699  231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 212,
3700  213, 214, -1, -1, -1, -1, -1, -1, -1, -1, -1, 224, -1, -1, -1, 228, -1, 230, 102,
3701  103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, -1, -1, -1, 118, 119, 120, 121,
3702  -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, 133, 134, -1, -1, 137, 138, -1, 140,
3703  141, -1, 143, -1, -1, -1, 147, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3704  -1, 161, -1, -1, -1, 165, -1, -1, -1, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
3705  247, 248, 249, 250, 251, 252, 253, 254, -1, 188, 189, 190, 259, -1, -1, -1, -1, -1, -1,
3706  -1, -1, -1, 269, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
3707  252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 237,
3708  238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1,
3709  -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 237, 238, 239, 240, 241, 242,
3710  243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1,
3711  -1, -1, -1, -1, -1, -1, -1, 269, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
3712  248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1,
3713  -1, -1, 269, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
3714  253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 237, 238,
3715  239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1,
3716  -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 237, 238, 239, 240, 241, 242, 243,
3717  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1,
3718  -1, -1, -1, -1, -1, -1, 269, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
3719  249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1,
3720  -1, 269, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
3721  254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 237, 238, 239,
3722  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1,
3723  259, -1, -1, -1, -1, -1, -1, -1, -1, -1, 269, 237, 238, 239, 240, 241, 242, 243, 244,
3724  245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1,
3725  -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
3726  254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, 265, 237, 238, 239, 240, 241, 242, 243,
3727  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1,
3728  -1, -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
3729  253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, 265, 237, 238, 239, 240, 241, 242,
3730  243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1,
3731  -1, -1, -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
3732  252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, 265, 237, 238, 239, 240, 241,
3733  242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1,
3734  -1, -1, -1, -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
3735  251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, 265, 237, 238, 239, 240,
3736  241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259,
3737  -1, -1, -1, -1, -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
3738  250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, 265, 237, 238, 239,
3739  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1,
3740  259, -1, -1, -1, -1, -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
3741  249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, 265, 237, 238,
3742  239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1,
3743  -1, 259, -1, -1, -1, -1, -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
3744  248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, 265, 237,
3745  238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1,
3746  -1, -1, 259, -1, -1, -1, -1, -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
3747  247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, 265,
3748  237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1,
3749  -1, -1, -1, 259, -1, -1, -1, -1, -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245,
3750  246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1,
3751  265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
3752  -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, 265, 237, 238, 239, 240, 241, 242, 243, 244,
3753  245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1,
3754  -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
3755  254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, 265, 237, 238, 239, 240, 241, 242, 243,
3756  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1,
3757  -1, -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
3758  253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, 265, 237, 238, 239, 240, 241, 242,
3759  243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1,
3760  -1, -1, -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
3761  252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, 265, 237, 238, 239, 240, 241,
3762  242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1,
3763  -1, -1, -1, -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
3764  251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, 265, 237, 238, 239, 240,
3765  241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259,
3766  -1, -1, -1, -1, -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
3767  250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, 265, 237, 238, 239,
3768  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1,
3769  259, -1, -1, -1, -1, -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
3770  249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, 265, 237, 238,
3771  239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1,
3772  -1, 259, -1, -1, -1, -1, -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
3773  248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, 265, 237,
3774  238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1,
3775  -1, -1, 259, -1, -1, -1, -1, -1, 265, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
3776  247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, 264, 237,
3777  238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1,
3778  -1, -1, 259, -1, -1, -1, -1, 264, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
3779  248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, -1, 264, 237, 238,
3780  239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1,
3781  -1, 259, -1, 261, -1, 263, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
3782  250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, 263, 237, 238, 239, 240, 241,
3783  242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1,
3784  -1, -1, 263, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
3785  253, 254, -1, -1, -1, -1, 259, -1, -1, -1, 263, 237, 238, 239, 240, 241, 242, 243, 244,
3786  245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, 263,
3787  237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1,
3788  -1, -1, -1, 259, -1, -1, -1, 263, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
3789  248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, 263, 237, 238, 239,
3790  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1,
3791  259, -1, -1, -1, 263, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
3792  251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, 263, 237, 238, 239, 240, 241, 242,
3793  243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1,
3794  -1, 263, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
3795  254, -1, -1, -1, -1, 259, -1, -1, -1, 263, 237, 238, 239, 240, 241, 242, 243, 244, 245,
3796  246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, 263, 237,
3797  238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1,
3798  -1, -1, 259, -1, -1, -1, 263, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
3799  249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, 263, 237, 238, 239, 240,
3800  241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259,
3801  -1, -1, -1, 263, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
3802  252, 253, 254, -1, -1, -1, -1, 259, -1, -1, -1, 263, 237, 238, 239, 240, 241, 242, 243,
3803  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237,
3804  238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1,
3805  -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
3806  251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244,
3807  245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238,
3808  239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1,
3809  -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
3810  252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245,
3811  246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239,
3812  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1,
3813  259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
3814  253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
3815  247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240,
3816  241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259,
3817  -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
3818  254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
3819  248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241,
3820  242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1,
3821  261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
3822  -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
3823  249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242,
3824  243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261,
3825  237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1,
3826  -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
3827  250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243,
3828  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237,
3829  238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1,
3830  -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
3831  251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244,
3832  245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238,
3833  239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1,
3834  -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
3835  252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245,
3836  246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239,
3837  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1,
3838  259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
3839  253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
3840  247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240,
3841  241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259,
3842  -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
3843  254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
3844  248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241,
3845  242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1,
3846  261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
3847  -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
3848  249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242,
3849  243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261,
3850  237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1,
3851  -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
3852  250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243,
3853  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237,
3854  238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1,
3855  -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
3856  251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244,
3857  245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238,
3858  239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1,
3859  -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
3860  252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245,
3861  246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239,
3862  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1,
3863  259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
3864  253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
3865  247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240,
3866  241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259,
3867  -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
3868  254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
3869  248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241,
3870  242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1,
3871  261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
3872  -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
3873  249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242,
3874  243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261,
3875  237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1,
3876  -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
3877  250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243,
3878  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237,
3879  238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1,
3880  -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
3881  251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244,
3882  245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238,
3883  239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1,
3884  -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
3885  252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245,
3886  246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239,
3887  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1,
3888  259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
3889  253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
3890  247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259, -1, 261, 237, 238, 239, 240,
3891  241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, -1, -1, -1, -1, 259};
3892 
3893 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
3894  symbol of state STATE-NUM. */
3895 static const yytype_uint16 yystos[] = {
3896  0, 1, 271, 272, 6, 0, 4, 13, 14, 46, 47, 48, 67, 68, 69, 74, 75, 80, 85, 86, 87, 88, 89,
3897  91, 92, 94, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 117, 118, 119, 120,
3898  121, 122, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 145, 146, 147,
3899  149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
3900  172, 176, 177, 178, 182, 187, 188, 189, 190, 193, 195, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
3901  209, 210, 217, 218, 219, 220, 229, 231, 232, 273, 275, 276, 297, 316, 318, 322, 325, 326, 327, 328, 329, 330, 331,
3902  332, 333, 340, 342, 343, 349, 350, 351, 352, 358, 382, 383, 264, 268, 14, 108, 260, 260, 260, 6, 264, 6, 6,
3903  6, 6, 260, 6, 264, 6, 264, 264, 6, 6, 262, 262, 4, 360, 383, 260, 262, 294, 102, 105, 108, 110, 318,
3904  294, 260, 260, 260, 4, 260, 260, 260, 4, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 264, 123, 108,
3905  6, 6, 264, 264, 102, 105, 108, 121, 321, 110, 260, 3, 10, 11, 12, 15, 16, 17, 18, 19, 20, 21, 22,
3906  23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
3907  58, 59, 60, 61, 66, 67, 76, 77, 78, 82, 83, 84, 93, 96, 102, 105, 108, 110, 121, 133, 138, 140, 143,
3908  193, 211, 215, 216, 221, 222, 223, 225, 226, 227, 248, 249, 255, 260, 264, 267, 318, 319, 322, 333, 340, 342, 353,
3909  354, 358, 360, 366, 368, 383, 260, 264, 264, 108, 108, 133, 105, 108, 110, 318, 105, 108, 109, 110, 121, 188, 319,
3910  105, 108, 260, 105, 165, 193, 209, 210, 264, 248, 249, 260, 264, 363, 364, 363, 264, 264, 363, 4, 102, 106, 112,
3911  113, 115, 116, 137, 264, 260, 108, 110, 108, 105, 4, 94, 204, 264, 383, 4, 6, 102, 6, 105, 108, 105, 108,
3912  121, 320, 5, 260, 264, 366, 367, 108, 4, 4, 4, 367, 4, 108, 260, 108, 260, 260, 4, 264, 370, 383, 4,
3913  260, 260, 260, 6, 6, 262, 5, 49, 50, 51, 52, 53, 54, 55, 56, 57, 62, 63, 64, 65, 70, 71, 72,
3914  73, 79, 81, 95, 98, 212, 213, 214, 224, 228, 230, 374, 383, 260, 4, 374, 5, 264, 5, 264, 318, 32, 249,
3915  353, 383, 262, 6, 264, 260, 264, 6, 260, 264, 6, 268, 7, 140, 204, 233, 234, 235, 236, 257, 258, 260, 262,
3916  266, 292, 293, 294, 318, 353, 373, 374, 383, 4, 322, 323, 324, 264, 6, 353, 373, 374, 383, 373, 373, 353, 373,
3917  380, 381, 383, 353, 324, 353, 299, 303, 260, 362, 9, 374, 260, 374, 353, 353, 353, 260, 353, 353, 353, 260, 353,
3918  353, 353, 353, 353, 353, 353, 373, 353, 353, 353, 353, 367, 260, 249, 353, 368, 369, 369, 264, 367, 366, 373, 294,
3919  294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
3920  294, 260, 262, 294, 294, 294, 294, 294, 294, 260, 294, 294, 260, 318, 319, 319, 319, 294, 294, 5, 264, 264, 133,
3921  318, 318, 319, 260, 294, 294, 260, 260, 260, 353, 264, 353, 368, 353, 353, 265, 369, 360, 383, 196, 5, 264, 8,
3922  237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 259, 9, 260, 262, 266,
3923  293, 294, 353, 369, 369, 260, 260, 260, 366, 367, 367, 367, 317, 260, 264, 260, 260, 366, 264, 264, 353, 4, 366,
3924  264, 370, 264, 264, 363, 363, 363, 353, 353, 248, 249, 264, 264, 363, 248, 249, 260, 324, 363, 264, 260, 264, 260,
3925  260, 260, 260, 260, 260, 260, 369, 353, 367, 367, 367, 260, 264, 4, 262, 264, 6, 262, 324, 6, 6, 264, 264,
3926  264, 264, 367, 353, 8, 7, 264, 262, 262, 262, 6, 6, 260, 353, 260, 353, 353, 266, 353, 264, 196, 353, 353,
3927  353, 353, 294, 294, 294, 260, 260, 260, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 260, 260, 294, 260, 262,
3928  6, 6, 264, 6, 8, 324, 6, 8, 324, 260, 294, 353, 250, 264, 9, 260, 262, 266, 373, 369, 353, 324, 366,
3929  366, 264, 374, 318, 7, 353, 353, 4, 36, 37, 111, 112, 193, 194, 296, 366, 6, 261, 263, 264, 295, 264, 6,
3930  264, 6, 9, 260, 262, 266, 383, 265, 133, 138, 140, 141, 143, 316, 318, 353, 6, 261, 269, 9, 260, 262, 266,
3931  261, 269, 261, 269, 269, 261, 269, 9, 260, 266, 269, 265, 269, 263, 269, 298, 263, 298, 97, 361, 359, 383, 269,
3932  353, 269, 261, 261, 261, 353, 261, 261, 261, 353, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 265, 7,
3933  353, 250, 265, 269, 265, 353, 6, 6, 261, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353,
3934  353, 353, 353, 368, 353, 353, 353, 353, 353, 353, 353, 353, 353, 368, 368, 383, 264, 353, 353, 373, 353, 373, 366,
3935  373, 373, 380, 264, 264, 264, 264, 353, 295, 383, 8, 353, 353, 367, 366, 264, 373, 373, 368, 360, 374, 360, 369,
3936  261, 265, 266, 294, 67, 8, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 264, 353, 368,
3937  353, 353, 353, 353, 353, 383, 353, 353, 296, 264, 295, 261, 265, 265, 353, 353, 353, 7, 7, 346, 346, 260, 353,
3938  353, 353, 353, 6, 169, 369, 369, 264, 261, 6, 324, 264, 324, 324, 269, 269, 269, 363, 363, 323, 323, 269, 353,
3939  265, 337, 269, 324, 353, 353, 353, 353, 353, 353, 353, 353, 353, 265, 261, 7, 347, 6, 7, 353, 353, 6, 353,
3940  324, 353, 265, 369, 369, 369, 353, 6, 261, 265, 353, 369, 353, 353, 353, 353, 261, 353, 261, 261, 193, 269, 324,
3941  264, 8, 261, 261, 263, 380, 373, 380, 373, 373, 373, 373, 373, 373, 353, 373, 373, 373, 373, 267, 376, 383, 374,
3942  373, 373, 373, 360, 383, 369, 265, 265, 265, 265, 353, 353, 353, 324, 383, 296, 263, 265, 261, 147, 165, 341, 261,
3943  265, 269, 353, 6, 264, 366, 261, 263, 266, 7, 7, 292, 293, 6, 369, 7, 236, 292, 353, 277, 383, 353, 353,
3944  296, 262, 260, 133, 318, 319, 318, 264, 265, 6, 243, 244, 274, 369, 383, 353, 353, 296, 6, 369, 6, 369, 353,
3945  6, 373, 381, 383, 261, 296, 353, 353, 6, 383, 6, 373, 353, 261, 262, 353, 269, 374, 7, 7, 7, 261, 7,
3946  7, 7, 261, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 353, 261, 264, 353, 368, 6, 264, 265, 6, 295,
3947  295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 269, 295, 295, 295, 295, 295, 295, 295, 295, 295, 269, 269, 269,
3948  269, 269, 261, 263, 263, 369, 269, 269, 295, 269, 295, 269, 269, 269, 261, 369, 353, 353, 353, 355, 295, 265, 265,
3949  265, 353, 269, 269, 295, 295, 261, 266, 261, 266, 269, 294, 356, 265, 7, 296, 295, 366, 265, 8, 8, 369, 266,
3950  261, 263, 260, 262, 293, 294, 369, 7, 264, 264, 261, 261, 261, 353, 366, 4, 345, 6, 312, 353, 374, 261, 265,
3951  261, 261, 353, 265, 265, 369, 266, 265, 324, 265, 265, 363, 353, 353, 265, 265, 353, 363, 144, 144, 162, 173, 174,
3952  175, 179, 180, 338, 339, 363, 265, 334, 261, 265, 261, 261, 261, 261, 261, 261, 261, 264, 7, 353, 6, 353, 261,
3953  265, 263, 265, 263, 265, 265, 265, 265, 6, 265, 263, 263, 269, 261, 7, 261, 7, 7, 266, 353, 265, 353, 353,
3954  7, 266, 295, 269, 295, 295, 261, 261, 269, 295, 295, 269, 269, 295, 295, 295, 295, 353, 295, 9, 375, 269, 261,
3955  269, 295, 266, 269, 357, 263, 265, 261, 265, 266, 260, 262, 268, 196, 7, 165, 6, 353, 265, 264, 6, 366, 265,
3956  353, 6, 7, 292, 293, 266, 292, 293, 296, 264, 371, 383, 374, 353, 6, 265, 49, 49, 366, 265, 4, 183, 184,
3957  185, 186, 265, 280, 284, 287, 289, 290, 332, 266, 261, 263, 260, 353, 353, 260, 264, 260, 264, 8, 369, 373, 261,
3958  266, 261, 263, 260, 261, 261, 269, 266, 260, 265, 269, 7, 294, 4, 36, 37, 306, 307, 308, 295, 353, 295, 363,
3959  366, 366, 7, 366, 366, 366, 7, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 6, 7, 369, 323, 353, 353,
3960  353, 353, 353, 353, 265, 353, 353, 353, 366, 373, 373, 265, 265, 265, 265, 269, 305, 265, 353, 353, 296, 296, 353,
3961  353, 261, 366, 294, 353, 353, 265, 296, 293, 266, 293, 353, 353, 295, 265, 366, 369, 369, 7, 7, 7, 144, 344,
3962  6, 261, 269, 7, 7, 7, 6, 7, 7, 265, 4, 296, 265, 269, 269, 269, 265, 265, 120, 4, 6, 353, 264,
3963  6, 260, 6, 181, 6, 181, 265, 339, 269, 338, 7, 6, 7, 7, 7, 7, 7, 7, 7, 323, 366, 6, 264,
3964  102, 6, 6, 6, 108, 7, 7, 6, 6, 353, 7, 366, 7, 366, 366, 4, 269, 8, 8, 261, 296, 296, 369,
3965  373, 353, 373, 267, 269, 309, 373, 373, 296, 373, 261, 269, 6, 296, 264, 318, 264, 6, 353, 6, 264, 366, 265,
3966  265, 353, 6, 193, 194, 296, 353, 6, 7, 370, 372, 6, 262, 6, 6, 295, 294, 294, 6, 281, 260, 260, 264,
3967  291, 6, 296, 266, 373, 353, 263, 261, 353, 8, 369, 353, 369, 265, 265, 6, 6, 274, 296, 266, 353, 6, 6,
3968  353, 296, 261, 6, 353, 264, 353, 374, 295, 49, 264, 366, 374, 377, 353, 353, 263, 269, 6, 261, 6, 6, 137,
3969  314, 314, 366, 6, 6, 6, 366, 144, 196, 313, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 265, 265, 295,
3970  295, 295, 295, 295, 295, 295, 269, 269, 269, 261, 295, 295, 307, 295, 261, 295, 261, 294, 356, 295, 6, 295, 260,
3971  262, 294, 296, 261, 263, 295, 6, 265, 265, 366, 366, 366, 4, 6, 292, 353, 366, 366, 366, 264, 264, 7, 6,
3972  7, 353, 353, 353, 264, 264, 264, 262, 6, 353, 366, 353, 6, 6, 353, 363, 265, 5, 366, 264, 264, 264, 264,
3973  264, 264, 264, 366, 265, 6, 369, 264, 264, 353, 353, 263, 366, 6, 366, 6, 192, 353, 353, 353, 6, 6, 7,
3974  295, 269, 269, 295, 269, 353, 4, 208, 310, 311, 295, 261, 295, 357, 374, 260, 262, 353, 264, 324, 6, 324, 269,
3975  6, 6, 266, 7, 7, 292, 293, 6, 370, 265, 269, 353, 292, 264, 295, 378, 379, 380, 378, 260, 353, 353, 365,
3976  366, 264, 260, 4, 6, 261, 6, 261, 265, 265, 261, 265, 6, 6, 373, 260, 4, 261, 269, 260, 265, 269, 366,
3977  374, 7, 294, 304, 353, 368, 308, 6, 363, 6, 6, 6, 144, 315, 102, 121, 106, 6, 5, 264, 6, 353, 353,
3978  353, 353, 261, 356, 353, 353, 295, 293, 264, 264, 6, 313, 6, 353, 366, 144, 144, 4, 6, 369, 369, 353, 353,
3979  374, 265, 261, 265, 269, 323, 323, 353, 353, 265, 269, 261, 265, 269, 6, 6, 365, 363, 363, 363, 363, 363, 249,
3980  363, 6, 265, 369, 353, 6, 6, 6, 6, 6, 366, 265, 269, 8, 265, 261, 264, 353, 374, 373, 353, 373, 353,
3981  374, 377, 379, 374, 269, 261, 269, 265, 353, 341, 341, 366, 296, 371, 374, 353, 6, 6, 370, 263, 366, 380, 6,
3982  295, 295, 278, 353, 269, 269, 265, 269, 279, 353, 353, 6, 6, 6, 6, 353, 353, 261, 6, 353, 300, 302, 264,
3983  379, 265, 269, 7, 7, 148, 6, 264, 264, 264, 5, 365, 295, 295, 269, 295, 261, 261, 263, 369, 369, 6, 6,
3984  353, 353, 264, 265, 265, 264, 6, 6, 264, 353, 265, 265, 265, 263, 6, 366, 7, 264, 353, 265, 269, 269, 269,
3985  269, 269, 269, 6, 265, 265, 191, 353, 353, 369, 6, 6, 261, 295, 295, 311, 374, 265, 265, 265, 265, 7, 6,
3986  6, 6, 266, 6, 265, 6, 6, 261, 269, 353, 353, 264, 366, 265, 269, 261, 261, 269, 265, 305, 309, 366, 295,
3987  353, 374, 383, 369, 369, 353, 6, 265, 353, 356, 265, 265, 6, 6, 365, 149, 150, 155, 348, 149, 150, 348, 369,
3988  323, 265, 269, 6, 265, 366, 324, 265, 6, 369, 363, 363, 363, 363, 363, 6, 353, 265, 265, 265, 261, 6, 264,
3989  6, 370, 194, 282, 353, 269, 269, 365, 6, 353, 353, 6, 265, 265, 301, 7, 260, 265, 265, 265, 264, 269, 261,
3990  264, 265, 264, 363, 366, 6, 264, 363, 6, 265, 265, 353, 6, 144, 265, 335, 264, 265, 269, 269, 269, 269, 269,
3991  6, 6, 6, 324, 6, 264, 353, 353, 265, 269, 305, 374, 261, 353, 353, 369, 6, 363, 6, 363, 6, 6, 265,
3992  353, 338, 324, 6, 369, 369, 369, 369, 363, 369, 341, 279, 261, 269, 6, 264, 353, 265, 269, 269, 265, 269, 269,
3993  6, 265, 265, 336, 265, 265, 265, 265, 269, 265, 265, 265, 285, 353, 365, 265, 353, 353, 363, 363, 338, 6, 6,
3994  6, 6, 369, 6, 6, 6, 264, 261, 265, 6, 265, 295, 269, 269, 265, 265, 283, 373, 288, 264, 6, 353, 353,
3995  6, 265, 269, 264, 365, 265, 265, 6, 373, 286, 373, 265, 6, 6, 265, 269, 6, 6, 373};
3996 
3997 #define yyerrok (yyerrstatus = 0)
3998 #define yyclearin (yychar = YYEMPTY)
3999 #define YYEMPTY (-2)
4000 #define YYEOF 0
4002 #define YYACCEPT goto yyacceptlab
4003 #define YYABORT goto yyabortlab
4004 #define YYERROR goto yyerrorlab
4006 /* Like YYERROR except do call yyerror. This remains here temporarily
4007  to ease the transition to the new meaning of YYERROR, for GCC.
4008  Once GCC version 2 has supplanted version 1, this can go. */
4009 
4010 #define YYFAIL goto yyerrlab
4012 #define YYRECOVERING() (!!yyerrstatus)
4014 #define YYBACKUP(Token, Value) \
4015  do \
4016  if (yychar == YYEMPTY && yylen == 1) \
4017  { \
4018  yychar = (Token); \
4019  yylval = (Value); \
4020  yytoken = YYTRANSLATE(yychar); \
4021  YYPOPSTACK(1); \
4022  goto yybackup; \
4023  } \
4024  else \
4025  { \
4026  yyerror(YY_("syntax error: cannot back up")); \
4027  YYERROR; \
4028  } \
4029  while (YYID(0))
4030 
4031 #define YYTERROR 1
4032 #define YYERRCODE 256
4034 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
4035  If N is 0, then set CURRENT to the empty location which ends
4036  the previous symbol: RHS[0] (always defined). */
4037 
4038 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
4039 #ifndef YYLLOC_DEFAULT
4040 #define YYLLOC_DEFAULT(Current, Rhs, N) \
4041  do \
4042  if (YYID(N)) \
4043  { \
4044  (Current).first_line = YYRHSLOC(Rhs, 1).first_line; \
4045  (Current).first_column = YYRHSLOC(Rhs, 1).first_column; \
4046  (Current).last_line = YYRHSLOC(Rhs, N).last_line; \
4047  (Current).last_column = YYRHSLOC(Rhs, N).last_column; \
4048  } \
4049  else \
4050  { \
4051  (Current).first_line = (Current).last_line = YYRHSLOC(Rhs, 0).last_line; \
4052  (Current).first_column = (Current).last_column = YYRHSLOC(Rhs, 0).last_column; \
4053  } \
4054  while (YYID(0))
4055 #endif
4056 
4057 /* YY_LOCATION_PRINT -- Print the location on the stream.
4058  This macro was not mandated originally: define only if we know
4059  we won't break user code: when these are the locations we know. */
4060 
4061 #ifndef YY_LOCATION_PRINT
4062 #if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
4063 #define YY_LOCATION_PRINT(File, Loc) \
4064  fprintf(File, "%d.%d-%d.%d", (Loc).first_line, (Loc).first_column, (Loc).last_line, (Loc).last_column)
4065 #else
4066 #define YY_LOCATION_PRINT(File, Loc) ((void)0)
4067 #endif
4068 #endif
4069 
4070 /* YYLEX -- calling `yylex' with the right arguments. */
4071 
4072 #ifdef YYLEX_PARAM
4073 #define YYLEX yylex(YYLEX_PARAM)
4074 #else
4075 #define YYLEX yylex()
4076 #endif
4077 
4078 /* Enable debugging if requested. */
4079 #if YYDEBUG
4080 
4081 #ifndef YYFPRINTF
4082 #include <stdio.h> /* INFRINGES ON USER NAME SPACE */
4083 #define YYFPRINTF fprintf
4084 #endif
4085 
4086 #define YYDPRINTF(Args) \
4087  do \
4088  { \
4089  if (yydebug) \
4090  YYFPRINTF Args; \
4091  } while (YYID(0))
4092 
4093 #define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
4094  do \
4095  { \
4096  if (yydebug) \
4097  { \
4098  YYFPRINTF(stderr, "%s ", Title); \
4099  yy_symbol_print(stderr, Type, Value); \
4100  YYFPRINTF(stderr, "\n"); \
4101  } \
4102  } while (YYID(0))
4103 
4104 /*--------------------------------.
4105 | Print this symbol on YYOUTPUT. |
4106 `--------------------------------*/
4107 
4108 /*ARGSUSED*/
4109 #if (defined __STDC__ || defined __C99__FUNC__ || defined __cplusplus || defined _MSC_VER)
4110 static void yy_symbol_value_print(FILE *yyoutput, int yytype, YYSTYPE const *const yyvaluep)
4111 #else
4112 static void yy_symbol_value_print(yyoutput, yytype, yyvaluep) FILE *yyoutput;
4113 int yytype;
4114 YYSTYPE const *const yyvaluep;
4115 #endif
4116 {
4117  if (!yyvaluep)
4118  return;
4119 #ifdef YYPRINT
4120  if (yytype < YYNTOKENS)
4121  YYPRINT(yyoutput, yytoknum[yytype], *yyvaluep);
4122 #else
4123  YYUSE(yyoutput);
4124 #endif
4125  switch (yytype)
4126  {
4127  default:
4128  break;
4129  }
4130 }
4131 
4132 /*--------------------------------.
4133 | Print this symbol on YYOUTPUT. |
4134 `--------------------------------*/
4135 
4136 #if (defined __STDC__ || defined __C99__FUNC__ || defined __cplusplus || defined _MSC_VER)
4137 static void yy_symbol_print(FILE *yyoutput, int yytype, YYSTYPE const *const yyvaluep)
4138 #else
4139 static void yy_symbol_print(yyoutput, yytype, yyvaluep) FILE *yyoutput;
4140 int yytype;
4141 YYSTYPE const *const yyvaluep;
4142 #endif
4143 {
4144  if (yytype < YYNTOKENS)
4145  YYFPRINTF(yyoutput, "token %s (", yytname[yytype]);
4146  else
4147  YYFPRINTF(yyoutput, "nterm %s (", yytname[yytype]);
4148 
4149  yy_symbol_value_print(yyoutput, yytype, yyvaluep);
4150  YYFPRINTF(yyoutput, ")");
4151 }
4152 
4153 /*------------------------------------------------------------------.
4154 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
4155 | TOP (included). |
4156 `------------------------------------------------------------------*/
4157 
4158 #if (defined __STDC__ || defined __C99__FUNC__ || defined __cplusplus || defined _MSC_VER)
4159 static void yy_stack_print(yytype_int16 *bottom, yytype_int16 *top)
4160 #else
4161 static void yy_stack_print(bottom, top) yytype_int16 *bottom;
4162 yytype_int16 *top;
4163 #endif
4164 {
4165  YYFPRINTF(stderr, "Stack now");
4166  for (; bottom <= top; ++bottom)
4167  YYFPRINTF(stderr, " %d", *bottom);
4168  YYFPRINTF(stderr, "\n");
4169 }
4170 
4171 #define YY_STACK_PRINT(Bottom, Top) \
4172  do \
4173  { \
4174  if (yydebug) \
4175  yy_stack_print((Bottom), (Top)); \
4176  } while (YYID(0))
4177 
4178 /*------------------------------------------------.
4179 | Report that the YYRULE is going to be reduced. |
4180 `------------------------------------------------*/
4181 
4182 #if (defined __STDC__ || defined __C99__FUNC__ || defined __cplusplus || defined _MSC_VER)
4183 static void yy_reduce_print(YYSTYPE *yyvsp, int yyrule)
4184 #else
4185 static void yy_reduce_print(yyvsp, yyrule) YYSTYPE *yyvsp;
4186 int yyrule;
4187 #endif
4188 {
4189  int yynrhs = yyr2[yyrule];
4190  int yyi;
4191  unsigned long int yylno = yyrline[yyrule];
4192  YYFPRINTF(stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno);
4193  /* The symbols being reduced. */
4194  for (yyi = 0; yyi < yynrhs; yyi++)
4195  {
4196  fprintf(stderr, " $%d = ", yyi + 1);
4197  yy_symbol_print(stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]));
4198  fprintf(stderr, "\n");
4199  }
4200 }
4201 
4202 #define YY_REDUCE_PRINT(Rule) \
4203  do \
4204  { \
4205  if (yydebug) \
4206  yy_reduce_print(yyvsp, Rule); \
4207  } while (YYID(0))
4208 
4209 /* Nonzero means print parse trace. It is left uninitialized so that
4210  multiple parsers can coexist. */
4211 int yydebug;
4212 #else /* !YYDEBUG */
4213 #define YYDPRINTF(Args)
4214 #define YY_SYMBOL_PRINT(Title, Type, Value, Location)
4215 #define YY_STACK_PRINT(Bottom, Top)
4216 #define YY_REDUCE_PRINT(Rule)
4217 #endif /* !YYDEBUG */
4218 
4219 /* YYINITDEPTH -- initial size of the parser's stacks. */
4220 #ifndef YYINITDEPTH
4221 #define YYINITDEPTH 200
4222 #endif
4223 
4224 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
4225  if the built-in stack extension method is used).
4226 
4227  Do not make this value too large; the results are undefined if
4228  YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
4229  evaluated with infinite-precision integer arithmetic. */
4230 
4231 #ifndef YYMAXDEPTH
4232 #define YYMAXDEPTH 10000
4233 #endif
4234 
4235 #if YYERROR_VERBOSE
4236 
4237 #ifndef yystrlen
4238 #if defined __GLIBC__ && defined _STRING_H
4239 #define yystrlen strlen
4240 #else
4241 /* Return the length of YYSTR. */
4242 #if (defined __STDC__ || defined __C99__FUNC__ || defined __cplusplus || defined _MSC_VER)
4243 static YYSIZE_T yystrlen(const char *yystr)
4244 #else
4245 static YYSIZE_T yystrlen(yystr) const char *yystr;
4246 #endif
4247 {
4248  YYSIZE_T yylen;
4249  for (yylen = 0; yystr[yylen]; yylen++)
4250  continue;
4251  return yylen;
4252 }
4253 #endif
4254 #endif
4255 
4256 #ifndef yystpcpy
4257 #if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
4258 #define yystpcpy stpcpy
4259 #else
4260 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
4261  YYDEST. */
4262 #if (defined __STDC__ || defined __C99__FUNC__ || defined __cplusplus || defined _MSC_VER)
4263 static char *yystpcpy(char *yydest, const char *yysrc)
4264 #else
4265 static char *yystpcpy(yydest, yysrc) char *yydest;
4266 const char *yysrc;
4267 #endif
4268 {
4269  char *yyd = yydest;
4270  const char *yys = yysrc;
4271 
4272  while ((*yyd++ = *yys++) != '\0')
4273  continue;
4274 
4275  return yyd - 1;
4276 }
4277 #endif
4278 #endif
4279 
4280 #ifndef yytnamerr
4281 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
4282  quotes and backslashes, so that it's suitable for yyerror. The
4283  heuristic is that double-quoting is unnecessary unless the string
4284  contains an apostrophe, a comma, or backslash (other than
4285  backslash-backslash). YYSTR is taken from yytname. If YYRES is
4286  null, do not copy; instead, return the length of what the result
4287  would have been. */
4288 static YYSIZE_T yytnamerr(char *yyres, const char *yystr)
4289 {
4290  if (*yystr == '"')
4291  {
4292  YYSIZE_T yyn = 0;
4293  char const *yyp = yystr;
4294 
4295  for (;;)
4296  switch (*++yyp)
4297  {
4298  case '\'':
4299  case ',':
4300  goto do_not_strip_quotes;
4301 
4302  case '\\':
4303  if (*++yyp != '\\')
4304  goto do_not_strip_quotes;
4305  /* Fall through. */
4306  default:
4307  if (yyres)
4308  yyres[yyn] = *yyp;
4309  yyn++;
4310  break;
4311 
4312  case '"':
4313  if (yyres)
4314  yyres[yyn] = '\0';
4315  return yyn;
4316  }
4317  do_not_strip_quotes:;
4318  }
4319 
4320  if (!yyres)
4321  return yystrlen(yystr);
4322 
4323  return yystpcpy(yyres, yystr) - yyres;
4324 }
4325 #endif
4326 
4327 /* Copy into YYRESULT an error message about the unexpected token
4328  YYCHAR while in state YYSTATE. Return the number of bytes copied,
4329  including the terminating null byte. If YYRESULT is null, do not
4330  copy anything; just return the number of bytes that would be
4331  copied. As a special case, return 0 if an ordinary "syntax error"
4332  message will do. Return YYSIZE_MAXIMUM if overflow occurs during
4333  size calculation. */
4334 static YYSIZE_T yysyntax_error(char *yyresult, int yystate, int yychar)
4335 {
4336  int yyn = yypact[yystate];
4337 
4338  if (!(YYPACT_NINF < yyn && yyn <= YYLAST))
4339  return 0;
4340  else
4341  {
4342  int yytype = YYTRANSLATE(yychar);
4343  YYSIZE_T yysize0 = yytnamerr(0, yytname[yytype]);
4344  YYSIZE_T yysize = yysize0;
4345  YYSIZE_T yysize1;
4346  int yysize_overflow = 0;
4347  enum
4348  {
4349  YYERROR_VERBOSE_ARGS_MAXIMUM = 5
4350  };
4351  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
4352  int yyx;
4353 
4354 #if 0
4355  /* This is so xgettext sees the translatable formats that are
4356  constructed on the fly. */
4357  YY_("syntax error, unexpected %s");
4358  YY_("syntax error, unexpected %s, expecting %s");
4359  YY_("syntax error, unexpected %s, expecting %s or %s");
4360  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
4361  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
4362 #endif
4363  char *yyfmt;
4364  char const *yyf;
4365  static char const yyunexpected[] = "syntax error, unexpected %s";
4366  static char const yyexpecting[] = ", expecting %s";
4367  static char const yyor[] = " or %s";
4368  char yyformat[sizeof yyunexpected + sizeof yyexpecting - 1 +
4369  ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) * (sizeof yyor - 1))];
4370  char const *yyprefix = yyexpecting;
4371 
4372  /* Start YYX at -YYN if negative to avoid negative indexes in
4373  YYCHECK. */
4374  int yyxbegin = yyn < 0 ? -yyn : 0;
4375 
4376  /* Stay within bounds of both yycheck and yytname. */
4377  int yychecklim = YYLAST - yyn + 1;
4378  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
4379  int yycount = 1;
4380 
4381  yyarg[0] = yytname[yytype];
4382  yyfmt = yystpcpy(yyformat, yyunexpected);
4383 
4384  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
4385  if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
4386  {
4387  if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
4388  {
4389  yycount = 1;
4390  yysize = yysize0;
4391  yyformat[sizeof yyunexpected - 1] = '\0';
4392  break;
4393  }
4394  yyarg[yycount++] = yytname[yyx];
4395  yysize1 = yysize + yytnamerr(0, yytname[yyx]);
4396  yysize_overflow |= (yysize1 < yysize);
4397  yysize = yysize1;
4398  yyfmt = yystpcpy(yyfmt, yyprefix);
4399  yyprefix = yyor;
4400  }
4401 
4402  yyf = YY_(yyformat);
4403  yysize1 = yysize + yystrlen(yyf);
4404  yysize_overflow |= (yysize1 < yysize);
4405  yysize = yysize1;
4406 
4407  if (yysize_overflow)
4408  return YYSIZE_MAXIMUM;
4409 
4410  if (yyresult)
4411  {
4412  /* Avoid sprintf, as that infringes on the user's name space.
4413  Don't have undefined behavior even if the translation
4414  produced a string with the wrong number of "%s"s. */
4415  char *yyp = yyresult;
4416  int yyi = 0;
4417  while ((*yyp = *yyf) != '\0')
4418  {
4419  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
4420  {
4421  yyp += yytnamerr(yyp, yyarg[yyi++]);
4422  yyf += 2;
4423  }
4424  else
4425  {
4426  yyp++;
4427  yyf++;
4428  }
4429  }
4430  }
4431  return yysize;
4432  }
4433 }
4434 #endif /* YYERROR_VERBOSE */
4435 
4436 /*-----------------------------------------------.
4437 | Release the memory associated to this symbol. |
4438 `-----------------------------------------------*/
4439 
4440 /*ARGSUSED*/
4441 #if (defined __STDC__ || defined __C99__FUNC__ || defined __cplusplus || defined _MSC_VER)
4442 static void yydestruct(const char *yymsg, int yytype, YYSTYPE *yyvaluep)
4443 #else
4444 static void yydestruct(yymsg, yytype, yyvaluep) const char *yymsg;
4447 #endif
4448 {
4449  YYUSE(yyvaluep);
4450 
4451  if (!yymsg)
4452  yymsg = "Deleting";
4454 
4455  switch (yytype)
4456  {
4457 
4458  default:
4459  break;
4460  }
4461 }
4462 
4463 /* Prevent warnings from -Wmissing-prototypes. */
4464 
4465 #ifdef YYPARSE_PARAM
4466 #if defined __STDC__ || defined __cplusplus
4467 int yyparse(void *YYPARSE_PARAM);
4468 #else
4469 int yyparse();
4470 #endif
4471 #else /* ! YYPARSE_PARAM */
4472 #if defined __STDC__ || defined __cplusplus
4473 int yyparse(void);
4474 #else
4475 int yyparse();
4476 #endif
4477 #endif /* ! YYPARSE_PARAM */
4478 
4479 /* The look-ahead symbol. */
4481 
4482 /* The semantic value of the look-ahead symbol. */
4484 
4485 /* Number of syntax errors so far. */
4487 
4488 /*----------.
4489 | yyparse. |
4490 `----------*/
4491 
4492 #ifdef YYPARSE_PARAM
4493 #if (defined __STDC__ || defined __C99__FUNC__ || defined __cplusplus || defined _MSC_VER)
4494 int yyparse(void *YYPARSE_PARAM)
4495 #else
4496 int yyparse(YYPARSE_PARAM) void *YYPARSE_PARAM;
4497 #endif
4498 #else /* ! YYPARSE_PARAM */
4499 #if (defined __STDC__ || defined __C99__FUNC__ || defined __cplusplus || defined _MSC_VER)
4500 int yyparse(void)
4501 #else
4502 int yyparse()
4503 
4504 #endif
4505 #endif
4506 {
4507 
4508  int yystate;
4509  int yyn;
4510  int yyresult;
4511  /* Number of tokens to shift before error messages enabled. */
4512  int yyerrstatus;
4513  /* Look-ahead token as an internal (translated) token number. */
4514  int yytoken = 0;
4515 #if YYERROR_VERBOSE
4516  /* Buffer for error messages, and its allocated size. */
4517  char yymsgbuf[128];
4518  char *yymsg = yymsgbuf;
4519  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
4520 #endif
4521 
4522  /* Three stacks and their tools:
4523  `yyss': related to states,
4524  `yyvs': related to semantic values,
4525  `yyls': related to locations.
4526 
4527  Refer to the stacks thru separate pointers, to allow yyoverflow
4528  to reallocate them elsewhere. */
4529 
4530  /* The state stack. */
4531  yytype_int16 yyssa[YYINITDEPTH];
4532  yytype_int16 *yyss = yyssa;
4533  yytype_int16 *yyssp;
4534 
4535  /* The semantic value stack. */
4536  YYSTYPE yyvsa[YYINITDEPTH];
4537  YYSTYPE *yyvs = yyvsa;
4538  YYSTYPE *yyvsp;
4539 
4540 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
4541 
4542  YYSIZE_T yystacksize = YYINITDEPTH;
4543 
4544  /* The variables used to return semantic value and location from the
4545  action routines. */
4546  YYSTYPE yyval;
4547 
4548  /* The number of symbols on the RHS of the reduced rule.
4549  Keep to zero when no symbol should be popped. */
4550  int yylen = 0;
4551 
4552  YYDPRINTF((stderr, "Starting parse\n"));
4553 
4554  yystate = 0;
4555  yyerrstatus = 0;
4556  yynerrs = 0;
4557  yychar = YYEMPTY; /* Cause a token to be read. */
4558 
4559  /* Initialize stack pointers.
4560  Waste one element of value and location stack
4561  so that they stay on the same level as the state stack.
4562  The wasted elements are never initialized. */
4563 
4564  yyssp = yyss;
4565  yyvsp = yyvs;
4566 
4567  goto yysetstate;
4568 
4569  /*------------------------------------------------------------.
4570  | yynewstate -- Push a new state, which is found in yystate. |
4571  `------------------------------------------------------------*/
4572 yynewstate:
4573  /* In all cases, when you get here, the value and location stacks
4574  have just been pushed. So pushing a state here evens the stacks. */
4575  yyssp++;
4576 
4577 yysetstate:
4578  *yyssp = yystate;
4579 
4580  if (yyss + yystacksize - 1 <= yyssp)
4581  {
4582  /* Get the current used size of the three stacks, in elements. */
4583  YYSIZE_T yysize = yyssp - yyss + 1;
4584 
4585 #ifdef yyoverflow
4586  {
4587  /* Give user a chance to reallocate the stack. Use copies of
4588  these so that the &'s don't force the real ones into
4589  memory. */
4590  YYSTYPE *yyvs1 = yyvs;
4591  yytype_int16 *yyss1 = yyss;
4592 
4593  /* Each stack pointer address is followed by the size of the
4594  data in use in that stack, in bytes. This used to be a
4595  conditional around just the two extra args, but that might
4596  be undefined if yyoverflow is a macro. */
4597  yyoverflow(YY_("memory exhausted"), &yyss1, yysize * sizeof(*yyssp), &yyvs1, yysize * sizeof(*yyvsp),
4598 
4599  &yystacksize);
4600 
4601  yyss = yyss1;
4602  yyvs = yyvs1;
4603  }
4604 #else /* no yyoverflow */
4605 #ifndef YYSTACK_RELOCATE
4606  goto yyexhaustedlab;
4607 #else
4608  /* Extend the stack our own way. */
4609  if (YYMAXDEPTH <= yystacksize)
4610  goto yyexhaustedlab;
4611  yystacksize *= 2;
4612  if (YYMAXDEPTH < yystacksize)
4613  yystacksize = YYMAXDEPTH;
4614 
4615  {
4616  yytype_int16 *yyss1 = yyss;
4617  union yyalloc *yyptr = (union yyalloc *)YYSTACK_ALLOC(YYSTACK_BYTES(yystacksize));
4618  if (!yyptr)
4619  goto yyexhaustedlab;
4622 
4623 #undef YYSTACK_RELOCATE
4624  if (yyss1 != yyssa)
4625  YYSTACK_FREE(yyss1);
4626  }
4627 #endif
4628 #endif /* no yyoverflow */
4629 
4630  yyssp = yyss + yysize - 1;
4631  yyvsp = yyvs + yysize - 1;
4632 
4633  YYDPRINTF((stderr, "Stack size increased to %lu\n", (unsigned long int)yystacksize));
4634 
4635  if (yyss + yystacksize - 1 <= yyssp)
4636  YYABORT;
4637  }
4638 
4639  YYDPRINTF((stderr, "Entering state %d\n", yystate));
4640 
4641  goto yybackup;
4642 
4643 /*-----------.
4644 | yybackup. |
4645 `-----------*/
4646 yybackup:
4647 
4648  /* Do appropriate processing given the current state. Read a
4649  look-ahead token if we need one and don't already have one. */
4650 
4651  /* First try to decide what to do without reference to look-ahead token. */
4652  yyn = yypact[yystate];
4653  if (yyn == YYPACT_NINF)
4654  goto yydefault;
4655 
4656  /* Not known => get a look-ahead token if don't already have one. */
4657 
4658  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
4659  if (yychar == YYEMPTY)
4660  {
4661  YYDPRINTF((stderr, "Reading a token: "));
4662  yychar = YYLEX;
4663  }
4664 
4665  if (yychar <= YYEOF)
4666  {
4667  yychar = yytoken = YYEOF;
4668  YYDPRINTF((stderr, "Now at end of input.\n"));
4669  }
4670  else
4671  {
4672  yytoken = YYTRANSLATE(yychar);
4673  YY_SYMBOL_PRINT("Next token is", yytoken, &yylval, &yylloc);
4674  }
4675 
4676  /* If the proper action on seeing token YYTOKEN is to reduce or to
4677  detect an error, take that action. */
4678  yyn += yytoken;
4679  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
4680  goto yydefault;
4681  yyn = yytable[yyn];
4682  if (yyn <= 0)
4683  {
4684  if (yyn == 0 || yyn == YYTABLE_NINF)
4685  goto yyerrlab;
4686  yyn = -yyn;
4687  goto yyreduce;
4688  }
4689 
4690  if (yyn == YYFINAL)
4691  YYACCEPT;
4692 
4693  /* Count tokens shifted since error; after three, turn off error
4694  status. */
4695  if (yyerrstatus)
4696  yyerrstatus--;
4697 
4698  /* Shift the look-ahead token. */
4699  YY_SYMBOL_PRINT("Shifting", yytoken, &yylval, &yylloc);
4700 
4701  /* Discard the shifted token unless it is eof. */
4702  if (yychar != YYEOF)
4703  yychar = YYEMPTY;
4704 
4705  yystate = yyn;
4706  *++yyvsp = yylval;
4707 
4708  goto yynewstate;
4709 
4710 /*-----------------------------------------------------------.
4711 | yydefault -- do the default action for the current state. |
4712 `-----------------------------------------------------------*/
4713 yydefault:
4714  yyn = yydefact[yystate];
4715  if (yyn == 0)
4716  goto yyerrlab;
4717  goto yyreduce;
4718 
4719 /*-----------------------------.
4720 | yyreduce -- Do a reduction. |
4721 `-----------------------------*/
4722 yyreduce:
4723  /* yyn is the number of a rule to reduce with. */
4724  yylen = yyr2[yyn];
4725 
4726  /* If YYLEN is nonzero, implement the default value of the action:
4727  `$$ = $1'.
4728 
4729  Otherwise, the following line sets YYVAL to garbage.
4730  This behavior is undocumented and Bison
4731  users should not rely upon it. Assigning to YYVAL
4732  unconditionally makes the parser a bit smaller, and it avoids a
4733  GCC warning that YYVAL may be used uninitialized. */
4734  yyval = yyvsp[1 - yylen];
4735 
4736  YY_REDUCE_PRINT(yyn);
4737  switch (yyn)
4738  {
4739  case 3:
4740 #line 276 "Gmsh.y"
4741  {
4742  yyerrok;
4743  return 1;
4744  ;
4745  }
4746  break;
4747 
4748  case 6:
4749 #line 287 "Gmsh.y"
4750  {
4751  return 1;
4752  ;
4753  }
4754  break;
4755 
4756  case 7:
4757 #line 288 "Gmsh.y"
4758  {
4759  return 1;
4760  ;
4761  }
4762  break;
4763 
4764  case 8:
4765 #line 289 "Gmsh.y"
4766  {
4767  return 1;
4768  ;
4769  }
4770  break;
4771 
4772  case 9:
4773 #line 291 "Gmsh.y"
4774  {
4775  // synchronize with GModel before switching kernel
4776  if (GModel::current()->getGEOInternals()->getChanged())
4778  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
4780  gmsh_yyfactory = (yyvsp[(3) - (5)].c);
4781  if (gmsh_yyfactory == "OpenCASCADE")
4782  {
4783  if (!GModel::current()->getOCCInternals())
4785  for (int dim = -2; dim <= 3; dim++)
4787  dim, std::max(GModel::current()->getOCCInternals()->getMaxTag(dim),
4789  }
4790  else
4791  {
4792  if (gmsh_yyfactory != "Built-in" && gmsh_yyfactory != "Gmsh")
4793  yymsg(1, "Unknown factory \"%s\" - using \"Built-in\" instead", (yyvsp[(3) - (5)].c));
4794  if (GModel::current()->getOCCInternals())
4795  {
4796  for (int dim = -2; dim <= 3; dim++)
4798  dim, std::max(GModel::current()->getGEOInternals()->getMaxTag(dim),
4799  GModel::current()->getOCCInternals()->getMaxTag(dim)));
4800  }
4801  }
4802  Free((yyvsp[(3) - (5)].c));
4803  ;
4804  }
4805  break;
4806 
4807  case 10:
4808 #line 319 "Gmsh.y"
4809  {
4810  return 1;
4811  ;
4812  }
4813  break;
4814 
4815  case 11:
4816 #line 320 "Gmsh.y"
4817  {
4818  List_Delete((yyvsp[(1) - (1)].l));
4819  return 1;
4820  ;
4821  }
4822  break;
4823 
4824  case 12:
4825 #line 321 "Gmsh.y"
4826  {
4827  return 1;
4828  ;
4829  }
4830  break;
4831 
4832  case 13:
4833 #line 322 "Gmsh.y"
4834  {
4835  return 1;
4836  ;
4837  }
4838  break;
4839 
4840  case 14:
4841 #line 323 "Gmsh.y"
4842  {
4843  return 1;
4844  ;
4845  }
4846  break;
4847 
4848  case 15:
4849 #line 324 "Gmsh.y"
4850  {
4851  return 1;
4852  ;
4853  }
4854  break;
4855 
4856  case 16:
4857 #line 325 "Gmsh.y"
4858  {
4859  List_Delete((yyvsp[(1) - (1)].l));
4860  return 1;
4861  ;
4862  }
4863  break;
4864 
4865  case 17:
4866 #line 326 "Gmsh.y"
4867  {
4868  List_Delete((yyvsp[(1) - (1)].l));
4869  return 1;
4870  ;
4871  }
4872  break;
4873 
4874  case 18:
4875 #line 327 "Gmsh.y"
4876  {
4877  return 1;
4878  ;
4879  }
4880  break;
4881 
4882  case 19:
4883 #line 328 "Gmsh.y"
4884  {
4885  return 1;
4886  ;
4887  }
4888  break;
4889 
4890  case 20:
4891 #line 329 "Gmsh.y"
4892  {
4893  return 1;
4894  ;
4895  }
4896  break;
4897 
4898  case 21:
4899 #line 330 "Gmsh.y"
4900  {
4901  return 1;
4902  ;
4903  }
4904  break;
4905 
4906  case 22:
4907 #line 331 "Gmsh.y"
4908  {
4909  return 1;
4910  ;
4911  }
4912  break;
4913 
4914  case 23:
4915 #line 332 "Gmsh.y"
4916  {
4917  return 1;
4918  ;
4919  }
4920  break;
4921 
4922  case 24:
4923 #line 333 "Gmsh.y"
4924  {
4925  return 1;
4926  ;
4927  }
4928  break;
4929 
4930  case 25:
4931 #line 334 "Gmsh.y"
4932  {
4933  return 1;
4934  ;
4935  }
4936  break;
4937 
4938  case 26:
4939 #line 339 "Gmsh.y"
4940  {
4941  (yyval.c) = (char *)"w";
4942  ;
4943  }
4944  break;
4945 
4946  case 27:
4947 #line 343 "Gmsh.y"
4948  {
4949  (yyval.c) = (char *)"a";
4950  ;
4951  }
4952  break;
4953 
4954  case 28:
4955 #line 350 "Gmsh.y"
4956  {
4957  Msg::Direct((yyvsp[(3) - (5)].c));
4958  Free((yyvsp[(3) - (5)].c));
4959  ;
4960  }
4961  break;
4962 
4963  case 29:
4964 #line 355 "Gmsh.y"
4965  {
4966  Msg::Warning((yyvsp[(3) - (5)].c));
4967  Free((yyvsp[(3) - (5)].c));
4968  ;
4969  }
4970  break;
4971 
4972  case 30:
4973 #line 360 "Gmsh.y"
4974  {
4975  Msg::Error((yyvsp[(3) - (5)].c));
4976  Free((yyvsp[(3) - (5)].c));
4977  ;
4978  }
4979  break;
4980 
4981  case 31:
4982 #line 365 "Gmsh.y"
4983  {
4984  std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(6) - (7)].c));
4985  FILE *fp = Fopen(tmp.c_str(), (yyvsp[(5) - (7)].c));
4986  if (!fp)
4987  {
4988  yymsg(0, "Unable to open file '%s'", tmp.c_str());
4989  }
4990  else
4991  {
4992  fprintf(fp, "%s\n", (yyvsp[(3) - (7)].c));
4993  fclose(fp);
4994  }
4995  Free((yyvsp[(3) - (7)].c));
4996  Free((yyvsp[(6) - (7)].c));
4997  ;
4998  }
4999  break;
5000 
5001  case 32:
5002 #line 379 "Gmsh.y"
5003  {
5004  char tmpstring[5000];
5005  int i = printListOfDouble((yyvsp[(3) - (7)].c), (yyvsp[(5) - (7)].l), tmpstring);
5006  if (i < 0)
5007  yymsg(0, "Too few arguments in Printf");
5008  else if (i > 0)
5009  yymsg(0, "%d extra argument%s in Printf", i, (i > 1) ? "s" : "");
5010  else
5011  Msg::Direct(tmpstring);
5012  Free((yyvsp[(3) - (7)].c));
5013  List_Delete((yyvsp[(5) - (7)].l));
5014  ;
5015  }
5016  break;
5017 
5018  case 33:
5019 #line 392 "Gmsh.y"
5020  {
5021  char tmpstring[5000];
5022  int i = printListOfDouble((yyvsp[(3) - (7)].c), (yyvsp[(5) - (7)].l), tmpstring);
5023  if (i < 0)
5024  yymsg(1, "Too few arguments in Error");
5025  else if (i > 0)
5026  yymsg(1, "%d extra argument%s in Error", i, (i > 1) ? "s" : "");
5027  else
5028  Msg::Warning(tmpstring);
5029  Free((yyvsp[(3) - (7)].c));
5030  List_Delete((yyvsp[(5) - (7)].l));
5031  ;
5032  }
5033  break;
5034 
5035  case 34:
5036 #line 405 "Gmsh.y"
5037  {
5038  char tmpstring[5000];
5039  int i = printListOfDouble((yyvsp[(3) - (7)].c), (yyvsp[(5) - (7)].l), tmpstring);
5040  if (i < 0)
5041  yymsg(0, "Too few arguments in Error");
5042  else if (i > 0)
5043  yymsg(0, "%d extra argument%s in Error", i, (i > 1) ? "s" : "");
5044  else
5045  Msg::Error(tmpstring);
5046  Free((yyvsp[(3) - (7)].c));
5047  List_Delete((yyvsp[(5) - (7)].l));
5048  ;
5049  }
5050  break;
5051 
5052  case 35:
5053 #line 418 "Gmsh.y"
5054  {
5055  char tmpstring[5000];
5056  int i = printListOfDouble((yyvsp[(3) - (9)].c), (yyvsp[(5) - (9)].l), tmpstring);
5057  if (i < 0)
5058  yymsg(0, "Too few arguments in Printf");
5059  else if (i > 0)
5060  yymsg(0, "%d extra argument%s in Printf", i, (i > 1) ? "s" : "");
5061  else
5062  {
5063  std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(8) - (9)].c));
5064  FILE *fp = Fopen(tmp.c_str(), (yyvsp[(7) - (9)].c));
5065  if (!fp)
5066  {
5067  yymsg(0, "Unable to open file '%s'", tmp.c_str());
5068  }
5069  else
5070  {
5071  fprintf(fp, "%s\n", tmpstring);
5072  fclose(fp);
5073  }
5074  }
5075  Free((yyvsp[(3) - (9)].c));
5076  Free((yyvsp[(8) - (9)].c));
5077  List_Delete((yyvsp[(5) - (9)].l));
5078  ;
5079  }
5080  break;
5081 
5082  case 36:
5083 #line 446 "Gmsh.y"
5084  {
5085 #if defined(HAVE_POST)
5086  if (!strcmp((yyvsp[(1) - (6)].c), "View") && ViewData->finalize())
5087  {
5088  ViewData->setName((yyvsp[(2) - (6)].c));
5089  ViewData->setFileName(gmsh_yyname);
5090  ViewData->setFileIndex(gmsh_yyviewindex++);
5091  new PView(ViewData);
5092  }
5093  else
5094  delete ViewData;
5095 #endif
5096  Free((yyvsp[(1) - (6)].c));
5097  Free((yyvsp[(2) - (6)].c));
5098  ;
5099  }
5100  break;
5101 
5102  case 37:
5103 #line 460 "Gmsh.y"
5104  {
5105 #if defined(HAVE_POST)
5106  if (!strcmp((yyvsp[(2) - (6)].c), "View"))
5107  {
5108  int index = (int)(yyvsp[(4) - (6)].d);
5109  if (index >= 0 && index < (int)PView::list.size())
5110  new PView(PView::list[index], false);
5111  else
5112  yymsg(0, "Unknown view %d", index);
5113  }
5114 #endif
5115  Free((yyvsp[(2) - (6)].c));
5116  ;
5117  }
5118  break;
5119 
5120  case 38:
5121 #line 473 "Gmsh.y"
5122  {
5123 #if defined(HAVE_POST)
5124  if (!strcmp((yyvsp[(2) - (6)].c), "View"))
5125  {
5126  int index = (int)(yyvsp[(4) - (6)].d);
5127  if (index >= 0 && index < (int)PView::list.size())
5128  new PView(PView::list[index], true);
5129  else
5130  yymsg(0, "Unknown view %d", index);
5131  }
5132 #endif
5133  Free((yyvsp[(2) - (6)].c));
5134  ;
5135  }
5136  break;
5137 
5138  case 39:
5139 #line 486 "Gmsh.y"
5140  {
5141 #if defined(HAVE_POST)
5142  if (!strcmp((yyvsp[(2) - (8)].c), "View"))
5143  {
5144  int index = (int)(yyvsp[(4) - (8)].d), index2 = (int)(yyvsp[(6) - (8)].d);
5145  if (index >= 0 && index < (int)PView::list.size() && index2 >= 0 && index2 < (int)PView::list.size())
5146  {
5147  PView::list[index2]->setOptions(PView::list[index]->getOptions());
5148  }
5149  else
5150  yymsg(0, "Unknown view %d or %d", index, index2);
5151  }
5152 #endif
5153  Free((yyvsp[(2) - (8)].c));
5154  ;
5155  }
5156  break;
5157 
5158  case 40:
5159 #line 504 "Gmsh.y"
5160  {
5161 #if defined(HAVE_POST)
5162  ViewData = new PViewDataList();
5163 #endif
5164  ;
5165  }
5166  break;
5167 
5168  case 47:
5169 #line 519 "Gmsh.y"
5170  {
5171  ViewCoord.push_back((yyvsp[(1) - (1)].d));
5172  ;
5173  }
5174  break;
5175 
5176  case 48:
5177 #line 521 "Gmsh.y"
5178  {
5179  ViewCoord.push_back((yyvsp[(3) - (3)].d));
5180  ;
5181  }
5182  break;
5183 
5184  case 49:
5185 #line 526 "Gmsh.y"
5186  {
5187  if (ViewValueList)
5188  ViewValueList->push_back((yyvsp[(1) - (1)].d));
5189  ;
5190  }
5191  break;
5192 
5193  case 50:
5194 #line 528 "Gmsh.y"
5195  {
5196  if (ViewValueList)
5197  ViewValueList->push_back((yyvsp[(3) - (3)].d));
5198  ;
5199  }
5200  break;
5201 
5202  case 51:
5203 #line 533 "Gmsh.y"
5204  {
5205 #if defined(HAVE_POST)
5206  if (!strncmp((yyvsp[(1) - (1)].c), "SP", 2))
5207  {
5208  ViewValueList = &ViewData->SP;
5209  ViewNumList = &ViewData->NbSP;
5210  }
5211  else if (!strncmp((yyvsp[(1) - (1)].c), "VP", 2))
5212  {
5213  ViewValueList = &ViewData->VP;
5214  ViewNumList = &ViewData->NbVP;
5215  }
5216  else if (!strncmp((yyvsp[(1) - (1)].c), "TP", 2))
5217  {
5218  ViewValueList = &ViewData->TP;
5219  ViewNumList = &ViewData->NbTP;
5220  }
5221  else if (!strncmp((yyvsp[(1) - (1)].c), "SL", 2))
5222  {
5223  ViewValueList = &ViewData->SL;
5224  ViewNumList = &ViewData->NbSL;
5225  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5226  ViewData->setOrder2(TYPE_LIN);
5227  }
5228  else if (!strncmp((yyvsp[(1) - (1)].c), "VL", 2))
5229  {
5230  ViewValueList = &ViewData->VL;
5231  ViewNumList = &ViewData->NbVL;
5232  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5233  ViewData->setOrder2(TYPE_LIN);
5234  }
5235  else if (!strncmp((yyvsp[(1) - (1)].c), "TL", 2))
5236  {
5237  ViewValueList = &ViewData->TL;
5238  ViewNumList = &ViewData->NbTL;
5239  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5240  ViewData->setOrder2(TYPE_LIN);
5241  }
5242  else if (!strncmp((yyvsp[(1) - (1)].c), "ST", 2))
5243  {
5244  ViewValueList = &ViewData->ST;
5245  ViewNumList = &ViewData->NbST;
5246  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5247  ViewData->setOrder2(TYPE_TRI);
5248  }
5249  else if (!strncmp((yyvsp[(1) - (1)].c), "VT", 2))
5250  {
5251  ViewValueList = &ViewData->VT;
5252  ViewNumList = &ViewData->NbVT;
5253  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5254  ViewData->setOrder2(TYPE_TRI);
5255  }
5256  else if (!strncmp((yyvsp[(1) - (1)].c), "TT", 2))
5257  {
5258  ViewValueList = &ViewData->TT;
5259  ViewNumList = &ViewData->NbTT;
5260  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5261  ViewData->setOrder2(TYPE_TRI);
5262  }
5263  else if (!strncmp((yyvsp[(1) - (1)].c), "SQ", 2))
5264  {
5265  ViewValueList = &ViewData->SQ;
5266  ViewNumList = &ViewData->NbSQ;
5267  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5268  ViewData->setOrder2(TYPE_QUA);
5269  }
5270  else if (!strncmp((yyvsp[(1) - (1)].c), "VQ", 2))
5271  {
5272  ViewValueList = &ViewData->VQ;
5273  ViewNumList = &ViewData->NbVQ;
5274  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5275  ViewData->setOrder2(TYPE_QUA);
5276  }
5277  else if (!strncmp((yyvsp[(1) - (1)].c), "TQ", 2))
5278  {
5279  ViewValueList = &ViewData->TQ;
5280  ViewNumList = &ViewData->NbTQ;
5281  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5282  ViewData->setOrder2(TYPE_QUA);
5283  }
5284  else if (!strncmp((yyvsp[(1) - (1)].c), "SS", 2))
5285  {
5286  ViewValueList = &ViewData->SS;
5287  ViewNumList = &ViewData->NbSS;
5288  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5289  ViewData->setOrder2(TYPE_TET);
5290  }
5291  else if (!strncmp((yyvsp[(1) - (1)].c), "VS", 2))
5292  {
5293  ViewValueList = &ViewData->VS;
5294  ViewNumList = &ViewData->NbVS;
5295  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5296  ViewData->setOrder2(TYPE_TET);
5297  }
5298  else if (!strncmp((yyvsp[(1) - (1)].c), "TS", 2))
5299  {
5300  ViewValueList = &ViewData->TS;
5301  ViewNumList = &ViewData->NbTS;
5302  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5303  ViewData->setOrder2(TYPE_TET);
5304  }
5305  else if (!strncmp((yyvsp[(1) - (1)].c), "SH", 2))
5306  {
5307  ViewValueList = &ViewData->SH;
5308  ViewNumList = &ViewData->NbSH;
5309  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5310  ViewData->setOrder2(TYPE_HEX);
5311  }
5312  else if (!strncmp((yyvsp[(1) - (1)].c), "VH", 2))
5313  {
5314  ViewValueList = &ViewData->VH;
5315  ViewNumList = &ViewData->NbVH;
5316  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5317  ViewData->setOrder2(TYPE_HEX);
5318  }
5319  else if (!strncmp((yyvsp[(1) - (1)].c), "TH", 2))
5320  {
5321  ViewValueList = &ViewData->TH;
5322  ViewNumList = &ViewData->NbTH;
5323  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5324  ViewData->setOrder2(TYPE_HEX);
5325  }
5326  else if (!strncmp((yyvsp[(1) - (1)].c), "SI", 2))
5327  {
5328  ViewValueList = &ViewData->SI;
5329  ViewNumList = &ViewData->NbSI;
5330  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5331  ViewData->setOrder2(TYPE_PRI);
5332  }
5333  else if (!strncmp((yyvsp[(1) - (1)].c), "VI", 2))
5334  {
5335  ViewValueList = &ViewData->VI;
5336  ViewNumList = &ViewData->NbVI;
5337  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5338  ViewData->setOrder2(TYPE_PRI);
5339  }
5340  else if (!strncmp((yyvsp[(1) - (1)].c), "TI", 2))
5341  {
5342  ViewValueList = &ViewData->TI;
5343  ViewNumList = &ViewData->NbTI;
5344  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5345  ViewData->setOrder2(TYPE_PRI);
5346  }
5347  else if (!strncmp((yyvsp[(1) - (1)].c), "SY", 2))
5348  {
5349  ViewValueList = &ViewData->SY;
5350  ViewNumList = &ViewData->NbSY;
5351  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5352  ViewData->setOrder2(TYPE_PYR);
5353  }
5354  else if (!strncmp((yyvsp[(1) - (1)].c), "VY", 2))
5355  {
5356  ViewValueList = &ViewData->VY;
5357  ViewNumList = &ViewData->NbVY;
5358  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5359  ViewData->setOrder2(TYPE_PYR);
5360  }
5361  else if (!strncmp((yyvsp[(1) - (1)].c), "TY", 2))
5362  {
5363  ViewValueList = &ViewData->TY;
5364  ViewNumList = &ViewData->NbTY;
5365  if (strlen((yyvsp[(1) - (1)].c)) > 2)
5366  ViewData->setOrder2(TYPE_PYR);
5367  }
5368  else
5369  {
5370  yymsg(0, "Unknown element type '%s'", (yyvsp[(1) - (1)].c));
5371  ViewValueList = 0;
5372  ViewNumList = 0;
5373  }
5374 #endif
5375  ViewCoord.clear();
5376  Free((yyvsp[(1) - (1)].c));
5377  ;
5378  }
5379  break;
5380 
5381  case 52:
5382 #line 637 "Gmsh.y"
5383  {
5384 #if defined(HAVE_POST)
5385  if (ViewValueList)
5386  {
5387  for (int i = 0; i < 3; i++)
5388  for (std::size_t j = 0; j < ViewCoord.size() / 3; j++)
5389  ViewValueList->push_back(ViewCoord[3 * j + i]);
5390  }
5391 #endif
5392  ;
5393  }
5394  break;
5395 
5396  case 53:
5397 #line 647 "Gmsh.y"
5398  {
5399 #if defined(HAVE_POST)
5400  if (ViewValueList)
5401  (*ViewNumList)++;
5402 #endif
5403  ;
5404  }
5405  break;
5406 
5407  case 54:
5408 #line 656 "Gmsh.y"
5409  {
5410 #if defined(HAVE_POST)
5411  for (int i = 0; i < (int)strlen((yyvsp[(1) - (1)].c)) + 1; i++)
5412  ViewData->T2C.push_back((yyvsp[(1) - (1)].c)[i]);
5413 #endif
5414  Free((yyvsp[(1) - (1)].c));
5415  ;
5416  }
5417  break;
5418 
5419  case 55:
5420 #line 663 "Gmsh.y"
5421  {
5422 #if defined(HAVE_POST)
5423  for (int i = 0; i < (int)strlen((yyvsp[(3) - (3)].c)) + 1; i++)
5424  ViewData->T2C.push_back((yyvsp[(3) - (3)].c)[i]);
5425 #endif
5426  Free((yyvsp[(3) - (3)].c));
5427  ;
5428  }
5429  break;
5430 
5431  case 56:
5432 #line 673 "Gmsh.y"
5433  {
5434 #if defined(HAVE_POST)
5435  ViewData->T2D.push_back((yyvsp[(3) - (8)].d));
5436  ViewData->T2D.push_back((yyvsp[(5) - (8)].d));
5437  ViewData->T2D.push_back((yyvsp[(7) - (8)].d));
5438  ViewData->T2D.push_back(ViewData->T2C.size());
5439 #endif
5440  ;
5441  }
5442  break;
5443 
5444  case 57:
5445 #line 682 "Gmsh.y"
5446  {
5447 #if defined(HAVE_POST)
5448  ViewData->NbT2++;
5449 #endif
5450  ;
5451  }
5452  break;
5453 
5454  case 58:
5455 #line 691 "Gmsh.y"
5456  {
5457 #if defined(HAVE_POST)
5458  for (int i = 0; i < (int)strlen((yyvsp[(1) - (1)].c)) + 1; i++)
5459  ViewData->T3C.push_back((yyvsp[(1) - (1)].c)[i]);
5460 #endif
5461  Free((yyvsp[(1) - (1)].c));
5462  ;
5463  }
5464  break;
5465 
5466  case 59:
5467 #line 698 "Gmsh.y"
5468  {
5469 #if defined(HAVE_POST)
5470  for (int i = 0; i < (int)strlen((yyvsp[(3) - (3)].c)) + 1; i++)
5471  ViewData->T3C.push_back((yyvsp[(3) - (3)].c)[i]);
5472 #endif
5473  Free((yyvsp[(3) - (3)].c));
5474  ;
5475  }
5476  break;
5477 
5478  case 60:
5479 #line 708 "Gmsh.y"
5480  {
5481 #if defined(HAVE_POST)
5482  ViewData->T3D.push_back((yyvsp[(3) - (10)].d));
5483  ViewData->T3D.push_back((yyvsp[(5) - (10)].d));
5484  ViewData->T3D.push_back((yyvsp[(7) - (10)].d));
5485  ViewData->T3D.push_back((yyvsp[(9) - (10)].d));
5486  ViewData->T3D.push_back(ViewData->T3C.size());
5487 #endif
5488  ;
5489  }
5490  break;
5491 
5492  case 61:
5493 #line 716 "Gmsh.y"
5494  {
5495 #if defined(HAVE_POST)
5496  ViewData->NbT3++;
5497 #endif
5498  ;
5499  }
5500  break;
5501 
5502  case 62:
5503 #line 726 "Gmsh.y"
5504  {
5505 #if defined(HAVE_POST)
5506  int type = (ViewData->NbSL || ViewData->NbVL)
5507  ? TYPE_LIN
5508  : (ViewData->NbST || ViewData->NbVT)
5509  ? TYPE_TRI
5510  : (ViewData->NbSQ || ViewData->NbVQ)
5511  ? TYPE_QUA
5512  : (ViewData->NbSS || ViewData->NbVS)
5513  ? TYPE_TET
5514  : (ViewData->NbSY || ViewData->NbVY)
5515  ? TYPE_PYR
5516  : (ViewData->NbSI || ViewData->NbVI)
5517  ? TYPE_PRI
5518  : (ViewData->NbSH || ViewData->NbVH) ? TYPE_HEX : 0;
5519  ViewData->setInterpolationMatrices(type, ListOfListOfDouble2Matrix((yyvsp[(3) - (8)].l)),
5520  ListOfListOfDouble2Matrix((yyvsp[(6) - (8)].l)));
5521 #endif
5522  ;
5523  }
5524  break;
5525 
5526  case 63:
5527 #line 745 "Gmsh.y"
5528  {
5529 #if defined(HAVE_POST)
5530  int type = (ViewData->NbSL || ViewData->NbVL)
5531  ? TYPE_LIN
5532  : (ViewData->NbST || ViewData->NbVT)
5533  ? TYPE_TRI
5534  : (ViewData->NbSQ || ViewData->NbVQ)
5535  ? TYPE_QUA
5536  : (ViewData->NbSS || ViewData->NbVS)
5537  ? TYPE_TET
5538  : (ViewData->NbSH || ViewData->NbVH) ? TYPE_HEX : 0;
5539  ViewData->setInterpolationMatrices(
5540  type, ListOfListOfDouble2Matrix((yyvsp[(3) - (14)].l)), ListOfListOfDouble2Matrix((yyvsp[(6) - (14)].l)),
5541  ListOfListOfDouble2Matrix((yyvsp[(9) - (14)].l)), ListOfListOfDouble2Matrix((yyvsp[(12) - (14)].l)));
5542 #endif
5543  ;
5544  }
5545  break;
5546 
5547  case 64:
5548 #line 764 "Gmsh.y"
5549  {
5550 #if defined(HAVE_POST)
5551  ViewValueList = &ViewData->Time;
5552 #endif
5553  ;
5554  }
5555  break;
5556 
5557  case 65:
5558 #line 770 "Gmsh.y"
5559  {
5560  ;
5561  }
5562  break;
5563 
5564  case 66:
5565 #line 777 "Gmsh.y"
5566  {
5567  (yyval.i) = 0;
5568  ;
5569  }
5570  break;
5571 
5572  case 67:
5573 #line 778 "Gmsh.y"
5574  {
5575  (yyval.i) = 1;
5576  ;
5577  }
5578  break;
5579 
5580  case 68:
5581 #line 779 "Gmsh.y"
5582  {
5583  (yyval.i) = 2;
5584  ;
5585  }
5586  break;
5587 
5588  case 69:
5589 #line 780 "Gmsh.y"
5590  {
5591  (yyval.i) = 3;
5592  ;
5593  }
5594  break;
5595 
5596  case 70:
5597 #line 781 "Gmsh.y"
5598  {
5599  (yyval.i) = 4;
5600  ;
5601  }
5602  break;
5603 
5604  case 71:
5605 #line 785 "Gmsh.y"
5606  {
5607  (yyval.i) = 1;
5608  ;
5609  }
5610  break;
5611 
5612  case 72:
5613 #line 786 "Gmsh.y"
5614  {
5615  (yyval.i) = -1;
5616  ;
5617  }
5618  break;
5619 
5620  case 73:
5621 #line 792 "Gmsh.y"
5622  {
5623  (yyval.c) = (char *)"(";
5624  ;
5625  }
5626  break;
5627 
5628  case 74:
5629 #line 792 "Gmsh.y"
5630  {
5631  (yyval.c) = (char *)"[";
5632  ;
5633  }
5634  break;
5635 
5636  case 75:
5637 #line 794 "Gmsh.y"
5638  {
5639  (yyval.c) = (char *)")";
5640  ;
5641  }
5642  break;
5643 
5644  case 76:
5645 #line 794 "Gmsh.y"
5646  {
5647  (yyval.c) = (char *)"]";
5648  ;
5649  }
5650  break;
5651 
5652  case 77:
5653 #line 799 "Gmsh.y"
5654  {
5655  (yyval.c) = (yyvsp[(1) - (1)].c);
5656  ;
5657  }
5658  break;
5659 
5660  case 78:
5661 #line 800 "Gmsh.y"
5662  {
5663  (yyval.c) = (char *)Malloc(4 * sizeof(char));
5664  strcpy((yyval.c), "Min");
5665  ;
5666  }
5667  break;
5668 
5669  case 79:
5670 #line 801 "Gmsh.y"
5671  {
5672  (yyval.c) = (char *)Malloc(4 * sizeof(char));
5673  strcpy((yyval.c), "Max");
5674  ;
5675  }
5676  break;
5677 
5678  case 80:
5679 #line 802 "Gmsh.y"
5680  {
5681  (yyval.c) = (char *)Malloc(4 * sizeof(char));
5682  strcpy((yyval.c), "Box");
5683  ;
5684  }
5685  break;
5686 
5687  case 81:
5688 #line 803 "Gmsh.y"
5689  {
5690  (yyval.c) = (char *)Malloc(9 * sizeof(char));
5691  strcpy((yyval.c), "Cylinder");
5692  ;
5693  }
5694  break;
5695 
5696  case 85:
5697 #line 813 "Gmsh.y"
5698  {
5699  Msg::SetOnelabNumber((yyvsp[(3) - (7)].c), (yyvsp[(5) - (7)].d));
5700  Free((yyvsp[(3) - (7)].c));
5701  ;
5702  }
5703  break;
5704 
5705  case 86:
5706 #line 818 "Gmsh.y"
5707  {
5708  Msg::SetOnelabString((yyvsp[(3) - (7)].c), (yyvsp[(5) - (7)].c));
5709  Free((yyvsp[(3) - (7)].c));
5710  Free((yyvsp[(5) - (7)].c));
5711  ;
5712  }
5713  break;
5714 
5715  case 87:
5716 #line 824 "Gmsh.y"
5717  {
5718  if (!gmsh_yysymbols.count((yyvsp[(1) - (4)].c)) && (yyvsp[(2) - (4)].i) && List_Nbr((yyvsp[(3) - (4)].l)) == 1)
5719  {
5720  yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (4)].c));
5721  }
5722  else
5723  {
5724  gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(1) - (4)].c)]);
5725  if (!(yyvsp[(2) - (4)].i))
5726  s.list = (List_Nbr((yyvsp[(3) - (4)].l)) != 1); // list if 0 or > 1 elements
5727  if (!s.list)
5728  { // single expression
5729  if (List_Nbr((yyvsp[(3) - (4)].l)) != 1)
5730  {
5731  yymsg(0, "Cannot assign list to variable '%s'", (yyvsp[(1) - (4)].c));
5732  }
5733  else
5734  {
5735  double d;
5736  List_Read((yyvsp[(3) - (4)].l), 0, &d);
5737  if (s.value.empty())
5738  {
5739  if ((yyvsp[(2) - (4)].i))
5740  yymsg(1, "Uninitialized variable '%s'", (yyvsp[(1) - (4)].c));
5741  s.value.resize(1, 0.);
5742  }
5743  switch ((yyvsp[(2) - (4)].i))
5744  {
5745  case 0:
5746  s.value[0] = d;
5747  break;
5748  case 1:
5749  s.value[0] += d;
5750  break;
5751  case 2:
5752  s.value[0] -= d;
5753  break;
5754  case 3:
5755  s.value[0] *= d;
5756  break;
5757  case 4:
5758  if (d)
5759  s.value[0] /= d;
5760  else
5761  yymsg(0, "Division by zero in '%s /= %g'", (yyvsp[(1) - (4)].c), d);
5762  break;
5763  }
5764  }
5765  }
5766  else
5767  {
5768  // list of expressions; this is not recommended (should use [] or ()
5769  // notation instead)
5770  switch ((yyvsp[(2) - (4)].i))
5771  {
5772  case 0: // affect
5773  s.value.clear(); // fall-through
5774  case 1: // append
5775  for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
5776  {
5777  double d;
5778  List_Read((yyvsp[(3) - (4)].l), i, &d);
5779  s.value.push_back(d);
5780  }
5781  break;
5782  case 2: // remove
5783  for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
5784  {
5785  double d;
5786  List_Read((yyvsp[(3) - (4)].l), i, &d);
5787  auto it = std::find(s.value.begin(), s.value.end(), d);
5788  if (it != s.value.end())
5789  s.value.erase(it);
5790  }
5791  break;
5792  default:
5793  yymsg(0, "Operators *= and /= not available for lists");
5794  break;
5795  }
5796  }
5797  }
5798  Free((yyvsp[(1) - (4)].c));
5799  List_Delete((yyvsp[(3) - (4)].l));
5800  ;
5801  }
5802  break;
5803 
5804  case 88:
5805 #line 885 "Gmsh.y"
5806  {
5807  if (!gmsh_yysymbols.count((yyvsp[(1) - (3)].c)))
5808  yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (3)].c));
5809  else
5810  {
5811  gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(1) - (3)].c)]);
5812  if (!s.list && s.value.empty())
5813  yymsg(0, "Uninitialized variable '%s'", (yyvsp[(1) - (3)].c));
5814  else if (!s.list)
5815  s.value[0] += (yyvsp[(2) - (3)].i);
5816  else
5817  yymsg(0, "Variable '%s' is a list", (yyvsp[(1) - (3)].c));
5818  }
5819  Free((yyvsp[(1) - (3)].c));
5820  ;
5821  }
5822  break;
5823 
5824  case 89:
5825 #line 900 "Gmsh.y"
5826  {
5827  gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(1) - (6)].c)]);
5828  s.list = true;
5829  double d;
5830  switch ((yyvsp[(4) - (6)].i))
5831  {
5832  case 0: // affect
5833  s.value.clear(); // fall-through
5834  case 1: // append
5835  for (int i = 0; i < List_Nbr((yyvsp[(5) - (6)].l)); i++)
5836  {
5837  List_Read((yyvsp[(5) - (6)].l), i, &d);
5838  s.value.push_back(d);
5839  }
5840  break;
5841  case 2: // remove
5842  for (int i = 0; i < List_Nbr((yyvsp[(5) - (6)].l)); i++)
5843  {
5844  List_Read((yyvsp[(5) - (6)].l), i, &d);
5845  auto it = std::find(s.value.begin(), s.value.end(), d);
5846  if (it != s.value.end())
5847  s.value.erase(it);
5848  }
5849  break;
5850  default:
5851  yymsg(0, "Operators *= and /= not available for lists");
5852  break;
5853  }
5854  Free((yyvsp[(1) - (6)].c));
5855  List_Delete((yyvsp[(5) - (6)].l));
5856  ;
5857  }
5858  break;
5859 
5860  case 90:
5861 #line 928 "Gmsh.y"
5862  {
5863  assignVariables((yyvsp[(1) - (9)].c), (yyvsp[(4) - (9)].l), (yyvsp[(7) - (9)].i), (yyvsp[(8) - (9)].l));
5864  Free((yyvsp[(1) - (9)].c));
5865  List_Delete((yyvsp[(4) - (9)].l));
5866  List_Delete((yyvsp[(8) - (9)].l));
5867  ;
5868  }
5869  break;
5870 
5871  case 91:
5872 #line 938 "Gmsh.y"
5873  {
5874  assignVariable((yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(5) - (7)].i), (yyvsp[(6) - (7)].d));
5875  Free((yyvsp[(1) - (7)].c));
5876  ;
5877  }
5878  break;
5879 
5880  case 92:
5881 #line 943 "Gmsh.y"
5882  {
5883  incrementVariable((yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].i));
5884  Free((yyvsp[(1) - (6)].c));
5885  ;
5886  }
5887  break;
5888 
5889  case 93:
5890 #line 951 "Gmsh.y"
5891  {
5892  assignVariable((yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(5) - (7)].i), (yyvsp[(6) - (7)].d));
5893  Free((yyvsp[(1) - (7)].c));
5894  ;
5895  }
5896  break;
5897 
5898  case 94:
5899 #line 956 "Gmsh.y"
5900  {
5901  incrementVariable((yyvsp[(1) - (6)].c), (yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].i));
5902  Free((yyvsp[(1) - (6)].c));
5903  ;
5904  }
5905  break;
5906 
5907  case 95:
5908 #line 964 "Gmsh.y"
5909  {
5910  gmsh_yystringsymbols[(yyvsp[(1) - (4)].c)] = std::vector<std::string>(1, (yyvsp[(3) - (4)].c));
5911  Free((yyvsp[(1) - (4)].c));
5912  Free((yyvsp[(3) - (4)].c));
5913  ;
5914  }
5915  break;
5916 
5917  case 96:
5918 #line 973 "Gmsh.y"
5919  {
5920  gmsh_yystringsymbols[(yyvsp[(1) - (8)].c)] = std::vector<std::string>();
5921  Free((yyvsp[(1) - (8)].c));
5922  ;
5923  }
5924  break;
5925 
5926  case 97:
5927 #line 978 "Gmsh.y"
5928  {
5929  std::vector<std::string> s;
5930  for (int i = 0; i < List_Nbr((yyvsp[(7) - (9)].l)); i++)
5931  {
5932  char **c = (char **)List_Pointer((yyvsp[(7) - (9)].l), i);
5933  s.push_back(*c);
5934  Free(*c);
5935  }
5936  gmsh_yystringsymbols[(yyvsp[(1) - (9)].c)] = s;
5937  Free((yyvsp[(1) - (9)].c));
5938  List_Delete((yyvsp[(7) - (9)].l));
5939  ;
5940  }
5941  break;
5942 
5943  case 98:
5944 #line 990 "Gmsh.y"
5945  {
5946  if (gmsh_yystringsymbols.count((yyvsp[(1) - (9)].c)))
5947  {
5948  for (int i = 0; i < List_Nbr((yyvsp[(7) - (9)].l)); i++)
5949  {
5950  char **c = (char **)List_Pointer((yyvsp[(7) - (9)].l), i);
5951  gmsh_yystringsymbols[(yyvsp[(1) - (9)].c)].push_back(*c);
5952  Free(*c);
5953  }
5954  }
5955  else
5956  yymsg(0, "Uninitialized variable '%s'", (yyvsp[(1) - (9)].c));
5957  Free((yyvsp[(1) - (9)].c));
5958  List_Delete((yyvsp[(7) - (9)].l));
5959  ;
5960  }
5961  break;
5962 
5963  case 99:
5964 #line 1007 "Gmsh.y"
5965  {
5966  std::string tmp((yyvsp[(5) - (6)].c));
5967  StringOption(GMSH_SET | GMSH_GUI, (yyvsp[(1) - (6)].c), 0, (yyvsp[(3) - (6)].c), tmp);
5968  Free((yyvsp[(1) - (6)].c));
5969  Free((yyvsp[(3) - (6)].c));
5970  Free((yyvsp[(5) - (6)].c));
5971  ;
5972  }
5973  break;
5974 
5975  case 100:
5976 #line 1013 "Gmsh.y"
5977  {
5978  std::string tmp((yyvsp[(8) - (9)].c));
5979  StringOption(GMSH_SET | GMSH_GUI, (yyvsp[(1) - (9)].c), (int)(yyvsp[(3) - (9)].d), (yyvsp[(6) - (9)].c), tmp);
5980  Free((yyvsp[(1) - (9)].c));
5981  Free((yyvsp[(6) - (9)].c));
5982  Free((yyvsp[(8) - (9)].c));
5983  ;
5984  }
5985  break;
5986 
5987  case 101:
5988 #line 1022 "Gmsh.y"
5989  {
5990  double d = 0.;
5991  if (NumberOption(GMSH_GET, (yyvsp[(1) - (6)].c), 0, (yyvsp[(3) - (6)].c), d))
5992  {
5993  switch ((yyvsp[(4) - (6)].i))
5994  {
5995  case 0:
5996  d = (yyvsp[(5) - (6)].d);
5997  break;
5998  case 1:
5999  d += (yyvsp[(5) - (6)].d);
6000  break;
6001  case 2:
6002  d -= (yyvsp[(5) - (6)].d);
6003  break;
6004  case 3:
6005  d *= (yyvsp[(5) - (6)].d);
6006  break;
6007  case 4:
6008  if ((yyvsp[(5) - (6)].d))
6009  d /= (yyvsp[(5) - (6)].d);
6010  else
6011  yymsg(0, "Division by zero in '%s.%s /= %g'", (yyvsp[(1) - (6)].c), (yyvsp[(3) - (6)].c),
6012  (yyvsp[(5) - (6)].d));
6013  break;
6014  }
6015  NumberOption(GMSH_SET | GMSH_GUI, (yyvsp[(1) - (6)].c), 0, (yyvsp[(3) - (6)].c), d);
6016  }
6017  Free((yyvsp[(1) - (6)].c));
6018  Free((yyvsp[(3) - (6)].c));
6019  ;
6020  }
6021  break;
6022 
6023  case 102:
6024 #line 1040 "Gmsh.y"
6025  {
6026  double d = 0.;
6027  if (NumberOption(GMSH_GET, (yyvsp[(1) - (9)].c), (int)(yyvsp[(3) - (9)].d), (yyvsp[(6) - (9)].c), d))
6028  {
6029  switch ((yyvsp[(7) - (9)].i))
6030  {
6031  case 0:
6032  d = (yyvsp[(8) - (9)].d);
6033  break;
6034  case 1:
6035  d += (yyvsp[(8) - (9)].d);
6036  break;
6037  case 2:
6038  d -= (yyvsp[(8) - (9)].d);
6039  break;
6040  case 3:
6041  d *= (yyvsp[(8) - (9)].d);
6042  break;
6043  case 4:
6044  if ((yyvsp[(8) - (9)].d))
6045  d /= (yyvsp[(8) - (9)].d);
6046  else
6047  yymsg(0, "Division by zero in '%s[%d].%s /= %g'", (yyvsp[(1) - (9)].c), (int)(yyvsp[(3) - (9)].d),
6048  (yyvsp[(6) - (9)].c), (yyvsp[(8) - (9)].d));
6049  break;
6050  }
6051  NumberOption(GMSH_SET | GMSH_GUI, (yyvsp[(1) - (9)].c), (int)(yyvsp[(3) - (9)].d), (yyvsp[(6) - (9)].c), d);
6052  }
6053  Free((yyvsp[(1) - (9)].c));
6054  Free((yyvsp[(6) - (9)].c));
6055  ;
6056  }
6057  break;
6058 
6059  case 103:
6060 #line 1058 "Gmsh.y"
6061  {
6062  double d = 0.;
6063  if (NumberOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(3) - (5)].c), d))
6064  {
6065  d += (yyvsp[(4) - (5)].i);
6066  NumberOption(GMSH_SET | GMSH_GUI, (yyvsp[(1) - (5)].c), 0, (yyvsp[(3) - (5)].c), d);
6067  }
6068  Free((yyvsp[(1) - (5)].c));
6069  Free((yyvsp[(3) - (5)].c));
6070  ;
6071  }
6072  break;
6073 
6074  case 104:
6075 #line 1067 "Gmsh.y"
6076  {
6077  double d = 0.;
6078  if (NumberOption(GMSH_GET, (yyvsp[(1) - (8)].c), (int)(yyvsp[(3) - (8)].d), (yyvsp[(6) - (8)].c), d))
6079  {
6080  d += (yyvsp[(7) - (8)].i);
6081  NumberOption(GMSH_SET | GMSH_GUI, (yyvsp[(1) - (8)].c), (int)(yyvsp[(3) - (8)].d), (yyvsp[(6) - (8)].c), d);
6082  }
6083  Free((yyvsp[(1) - (8)].c));
6084  Free((yyvsp[(6) - (8)].c));
6085  ;
6086  }
6087  break;
6088 
6089  case 105:
6090 #line 1079 "Gmsh.y"
6091  {
6092  ColorOption(GMSH_SET | GMSH_GUI, (yyvsp[(1) - (8)].c), 0, (yyvsp[(5) - (8)].c), (yyvsp[(7) - (8)].u));
6093  Free((yyvsp[(1) - (8)].c));
6094  Free((yyvsp[(5) - (8)].c));
6095  ;
6096  }
6097  break;
6098 
6099  case 106:
6100 #line 1084 "Gmsh.y"
6101  {
6102  ColorOption(GMSH_SET | GMSH_GUI, (yyvsp[(1) - (11)].c), (int)(yyvsp[(3) - (11)].d), (yyvsp[(8) - (11)].c),
6103  (yyvsp[(10) - (11)].u));
6104  Free((yyvsp[(1) - (11)].c));
6105  Free((yyvsp[(8) - (11)].c));
6106  ;
6107  }
6108  break;
6109 
6110  case 107:
6111 #line 1092 "Gmsh.y"
6112  {
6113  GmshColorTable *ct = GetColorTable(0);
6114  if (!ct)
6115  yymsg(0, "View[%d] does not exist", 0);
6116  else
6117  {
6118  ct->size = List_Nbr((yyvsp[(5) - (6)].l));
6119  if (ct->size > COLORTABLE_NBMAX_COLOR)
6120  yymsg(0, "Too many (%d>%d) colors in View[%d].ColorTable", ct->size, COLORTABLE_NBMAX_COLOR, 0);
6121  else
6122  for (int i = 0; i < ct->size; i++)
6123  List_Read((yyvsp[(5) - (6)].l), i, &ct->table[i]);
6124  if (ct->size == 1)
6125  {
6126  ct->size = 2;
6127  ct->table[1] = ct->table[0];
6128  }
6129  }
6130  Free((yyvsp[(1) - (6)].c));
6131  List_Delete((yyvsp[(5) - (6)].l));
6132  ;
6133  }
6134  break;
6135 
6136  case 108:
6137 #line 1112 "Gmsh.y"
6138  {
6139  GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (9)].d));
6140  if (!ct)
6141  yymsg(0, "View[%d] does not exist", (int)(yyvsp[(3) - (9)].d));
6142  else
6143  {
6144  ct->size = List_Nbr((yyvsp[(8) - (9)].l));
6145  if (ct->size > COLORTABLE_NBMAX_COLOR)
6146  yymsg(0, "Too many (%d>%d) colors in View[%d].ColorTable", ct->size, COLORTABLE_NBMAX_COLOR,
6147  (int)(yyvsp[(3) - (9)].d));
6148  else
6149  for (int i = 0; i < ct->size; i++)
6150  List_Read((yyvsp[(8) - (9)].l), i, &ct->table[i]);
6151  if (ct->size == 1)
6152  {
6153  ct->size = 2;
6154  ct->table[1] = ct->table[0];
6155  }
6156  }
6157  Free((yyvsp[(1) - (9)].c));
6158  List_Delete((yyvsp[(8) - (9)].l));
6159  ;
6160  }
6161  break;
6162 
6163  case 109:
6164 #line 1135 "Gmsh.y"
6165  {
6166 #if defined(HAVE_MESH)
6167  std::vector<int> tags;
6168  ListOfDouble2Vector((yyvsp[(4) - (5)].l), tags);
6169  if (!strcmp((yyvsp[(1) - (5)].c), "Background"))
6170  {
6171  if (tags.size() > 1)
6172  yymsg(0, "Only 1 field can be set as a background field.");
6173  else if (tags.size() == 0)
6174  yymsg(1, "No field given (Background Field).");
6175  else
6177  }
6178  else if (!strcmp((yyvsp[(1) - (5)].c), "BoundaryLayer"))
6180  else
6181  yymsg(0, "Unknown command '%s Field'", (yyvsp[(1) - (5)].c));
6182 #endif
6183  Free((yyvsp[(1) - (5)].c));
6184  List_Delete((yyvsp[(4) - (5)].l));
6185  ;
6186  }
6187  break;
6188 
6189  case 110:
6190 #line 1155 "Gmsh.y"
6191  {
6192 #if defined(HAVE_MESH)
6193  if (!GModel::current()->getFields()->newField((int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c)))
6194  yymsg(0, "Cannot create field %i of type '%s'", (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c));
6195 #endif
6196  Free((yyvsp[(6) - (7)].c));
6197  ;
6198  }
6199  break;
6200 
6201  case 111:
6202 #line 1163 "Gmsh.y"
6203  {
6204 #if defined(HAVE_MESH)
6205  Field *field = GModel::current()->getFields()->get((int)(yyvsp[(3) - (9)].d));
6206  if (field)
6207  {
6208  FieldOption *option = field->options[(yyvsp[(6) - (9)].c)];
6209  if (option)
6210  option->numericalValue((yyvsp[(8) - (9)].d));
6211  else
6212  yymsg(0, "Unknown option '%s' in field %i of type '%s'", (yyvsp[(6) - (9)].c),
6213  (int)(yyvsp[(3) - (9)].d), field->getName());
6214  }
6215  else
6216  yymsg(0, "No field with id %i", (int)(yyvsp[(3) - (9)].d));
6217 #endif
6218  Free((yyvsp[(6) - (9)].c));
6219  ;
6220  }
6221  break;
6222 
6223  case 112:
6224 #line 1180 "Gmsh.y"
6225  {
6226 #if defined(HAVE_MESH)
6227  Field *field = GModel::current()->getFields()->get((int)(yyvsp[(3) - (9)].d));
6228  if (field)
6229  {
6230  FieldOption *option = field->options[(yyvsp[(6) - (9)].c)];
6231  if (option)
6232  option->string((yyvsp[(8) - (9)].c));
6233  else
6234  yymsg(0, "Unknown option '%s' in field %i of type '%s'", (yyvsp[(6) - (9)].c),
6235  (int)(yyvsp[(3) - (9)].d), field->getName());
6236  }
6237  else
6238  yymsg(0, "No field with id %i", (int)(yyvsp[(3) - (9)].d));
6239 #endif
6240  Free((yyvsp[(6) - (9)].c));
6241  Free((yyvsp[(8) - (9)].c));
6242  ;
6243  }
6244  break;
6245 
6246  case 113:
6247 #line 1198 "Gmsh.y"
6248  {
6249 #if defined(HAVE_MESH)
6250  Field *field = GModel::current()->getFields()->get((int)(yyvsp[(3) - (11)].d));
6251  if (field)
6252  {
6253  FieldOption *option = field->options[(yyvsp[(6) - (11)].c)];
6254  if (option)
6255  {
6256  if (option->getType() == FIELD_OPTION_LIST)
6257  {
6258  std::list<int> vl = option->list();
6259  vl.clear();
6260  for (int i = 0; i < List_Nbr((yyvsp[(9) - (11)].l)); i++)
6261  {
6262  double id;
6263  List_Read((yyvsp[(9) - (11)].l), i, &id);
6264  vl.push_back((int)id);
6265  }
6266  option->list(vl);
6267  }
6268  else
6269  {
6270  std::list<double> vl = option->listdouble();
6271  vl.clear();
6272  for (int i = 0; i < List_Nbr((yyvsp[(9) - (11)].l)); i++)
6273  {
6274  double id;
6275  List_Read((yyvsp[(9) - (11)].l), i, &id);
6276  vl.push_back(id);
6277  }
6278  option->listdouble(vl);
6279  }
6280  }
6281  else
6282  yymsg(0, "Unknown option '%s' in field %i of type '%s'", (yyvsp[(6) - (11)].c),
6283  (int)(yyvsp[(3) - (11)].d), field->getName());
6284  }
6285  else
6286  yymsg(0, "No field with id %i", (int)(yyvsp[(3) - (11)].d));
6287 #endif
6288  Free((yyvsp[(6) - (11)].c));
6289  List_Delete((yyvsp[(9) - (11)].l));
6290  ;
6291  }
6292  break;
6293 
6294  case 114:
6295 #line 1236 "Gmsh.y"
6296  {
6297 #if defined(HAVE_MESH)
6298  Field *field = GModel::current()->getFields()->get((int)(yyvsp[(3) - (7)].d));
6299  if (field)
6300  {
6301  FieldCallback *callback = field->callbacks[(yyvsp[(6) - (7)].c)];
6302  if (callback)
6303  {
6304  callback->run();
6305  }
6306  else
6307  yymsg(0, "Unknown callback '%s' in field %i of type '%s'", (yyvsp[(6) - (7)].c),
6308  (int)(yyvsp[(3) - (7)].d), field->getName());
6309  }
6310  else
6311  yymsg(0, "No field with id %i", (int)(yyvsp[(3) - (7)].d));
6312 #endif
6313  Free((yyvsp[(6) - (7)].c));
6314  ;
6315  }
6316  break;
6317 
6318  case 115:
6319 #line 1257 "Gmsh.y"
6320  {
6321 #if defined(HAVE_PLUGINS)
6322  try
6323  {
6324  PluginManager::instance()->setPluginOption((yyvsp[(3) - (9)].c), (yyvsp[(6) - (9)].c),
6325  (yyvsp[(8) - (9)].d));
6326  }
6327  catch (...)
6328  {
6329  yymsg(0, "Unknown option '%s' or plugin '%s'", (yyvsp[(6) - (9)].c), (yyvsp[(3) - (9)].c));
6330  }
6331 #endif
6332  Free((yyvsp[(3) - (9)].c));
6333  Free((yyvsp[(6) - (9)].c));
6334  ;
6335  }
6336  break;
6337 
6338  case 116:
6339 #line 1269 "Gmsh.y"
6340  {
6341 #if defined(HAVE_PLUGINS)
6342  try
6343  {
6344  PluginManager::instance()->setPluginOption((yyvsp[(3) - (9)].c), (yyvsp[(6) - (9)].c),
6345  (yyvsp[(8) - (9)].c));
6346  }
6347  catch (...)
6348  {
6349  yymsg(0, "Unknown option '%s' or plugin '%s'", (yyvsp[(6) - (9)].c), (yyvsp[(3) - (9)].c));
6350  }
6351 #endif
6352  Free((yyvsp[(3) - (9)].c));
6353  Free((yyvsp[(6) - (9)].c));
6354  Free((yyvsp[(8) - (9)].c));
6355  ;
6356  }
6357  break;
6358 
6359  case 120:
6360 #line 1287 "Gmsh.y"
6361  {
6362  std::string key((yyvsp[(3) - (3)].c));
6363  std::vector<double> val(1, 0.);
6364  if (!gmsh_yysymbols.count(key))
6365  {
6366  gmsh_yysymbols[key].value = val;
6367  }
6368  Free((yyvsp[(3) - (3)].c));
6369  ;
6370  }
6371  break;
6372 
6373  case 121:
6374 #line 1296 "Gmsh.y"
6375  {
6376  std::string key((yyvsp[(3) - (5)].c));
6377  std::vector<double> val(1, (yyvsp[(5) - (5)].d));
6378  if (!gmsh_yysymbols.count(key))
6379  {
6380  gmsh_yysymbols[key].value = val;
6381  }
6382  Free((yyvsp[(3) - (5)].c));
6383  ;
6384  }
6385  break;
6386 
6387  case 122:
6388 #line 1305 "Gmsh.y"
6389  {
6390  init_options();
6391  ;
6392  }
6393  break;
6394 
6395  case 123:
6396 #line 1307 "Gmsh.y"
6397  {
6398  if (List_Nbr((yyvsp[(6) - (9)].l)) != 1)
6399  yymsg(1, "List notation should be used to define list '%s[]'", (yyvsp[(3) - (9)].c));
6400  std::string key((yyvsp[(3) - (9)].c));
6401  std::vector<double> val;
6402  for (int i = 0; i < List_Nbr((yyvsp[(6) - (9)].l)); i++)
6403  {
6404  double d;
6405  List_Read((yyvsp[(6) - (9)].l), i, &d);
6406  val.push_back(d);
6407  }
6408  if (!gmsh_yysymbols.count(key))
6409  {
6411  gmsh_yysymbols[key].value = val;
6412  }
6413  Free((yyvsp[(3) - (9)].c));
6414  List_Delete((yyvsp[(6) - (9)].l));
6415  ;
6416  }
6417  break;
6418 
6419  case 124:
6420 #line 1325 "Gmsh.y"
6421  {
6422  init_options();
6423  ;
6424  }
6425  break;
6426 
6427  case 125:
6428 #line 1327 "Gmsh.y"
6429  {
6430  std::string key((yyvsp[(3) - (11)].c));
6431  std::vector<double> val;
6432  for (int i = 0; i < List_Nbr((yyvsp[(8) - (11)].l)); i++)
6433  {
6434  double d;
6435  List_Read((yyvsp[(8) - (11)].l), i, &d);
6436  val.push_back(d);
6437  }
6438  if (!gmsh_yysymbols.count(key))
6439  {
6441  gmsh_yysymbols[key].value = val;
6442  }
6443  Free((yyvsp[(3) - (11)].c));
6444  List_Delete((yyvsp[(8) - (11)].l));
6445  ;
6446  }
6447  break;
6448 
6449  case 126:
6450 #line 1343 "Gmsh.y"
6451  {
6452  std::string key((yyvsp[(3) - (5)].c)), val((yyvsp[(5) - (5)].c));
6453  if (!gmsh_yystringsymbols.count(key))
6454  {
6455  gmsh_yystringsymbols[key] = std::vector<std::string>(1, val);
6456  }
6457  Free((yyvsp[(3) - (5)].c));
6458  Free((yyvsp[(5) - (5)].c));
6459  ;
6460  }
6461  break;
6462 
6463  case 127:
6464 #line 1352 "Gmsh.y"
6465  {
6466  init_options();
6467  ;
6468  }
6469  break;
6470 
6471  case 128:
6472 #line 1354 "Gmsh.y"
6473  {
6474  std::string key((yyvsp[(3) - (9)].c)), val((yyvsp[(6) - (9)].c));
6475  if (!gmsh_yystringsymbols.count(key))
6476  {
6478  gmsh_yystringsymbols[key] = std::vector<std::string>(1, val);
6479  }
6480  Free((yyvsp[(3) - (9)].c));
6481  Free((yyvsp[(6) - (9)].c));
6482  ;
6483  }
6484  break;
6485 
6486  case 130:
6487 #line 1368 "Gmsh.y"
6488  {
6489  std::string name((yyvsp[(3) - (3)].c));
6491  Free((yyvsp[(3) - (3)].c));
6492  ;
6493  }
6494  break;
6495 
6496  case 131:
6497 #line 1376 "Gmsh.y"
6498  {
6499  (yyval.l) = List_Create(20, 20, sizeof(doubleXstring));
6500  doubleXstring v = {(yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].c)};
6501  List_Add((yyval.l), &v);
6502  ;
6503  }
6504  break;
6505 
6506  case 132:
6507 #line 1382 "Gmsh.y"
6508  {
6509  doubleXstring v = {(yyvsp[(3) - (5)].d), (yyvsp[(5) - (5)].c)};
6510  List_Add((yyval.l), &v);
6511  ;
6512  }
6513  break;
6514 
6515  case 133:
6516 #line 1387 "Gmsh.y"
6517  {
6518  (yyval.l) = List_Create(20, 20, sizeof(doubleXstring));
6519  int n = List_Nbr((yyvsp[(1) - (5)].l));
6520  if (!gmsh_yystringsymbols.count((yyvsp[(3) - (5)].c)))
6521  {
6522  yymsg(0, "Unknown string variable '%s'", (yyvsp[(3) - (5)].c));
6523  }
6524  else
6525  {
6526  std::vector<std::string> &s(gmsh_yystringsymbols[(yyvsp[(3) - (5)].c)]);
6527  int m = s.size();
6528  if (n == m)
6529  {
6530  for (int i = 0; i < n; i++)
6531  {
6532  double d;
6533  List_Read((yyvsp[(1) - (5)].l), i, &d);
6534  doubleXstring v = {d, strsave((char *)s[i].c_str())};
6535  List_Add((yyval.l), &v);
6536  }
6537  }
6538  else
6539  {
6540  yymsg(0, "Size mismatch in enumeration: %d != %d", n, m);
6541  }
6542  }
6543  List_Delete((yyvsp[(1) - (5)].l));
6544  Free((yyvsp[(3) - (5)].c));
6545  ;
6546  }
6547  break;
6548 
6549  case 140:
6550 #line 1430 "Gmsh.y"
6551  {
6552  std::string key((yyvsp[(1) - (2)].c));
6553  for (int i = 0; i < List_Nbr((yyvsp[(2) - (2)].l)); i++)
6554  {
6555  double v;
6556  List_Read((yyvsp[(2) - (2)].l), i, &v);
6557  floatOptions[key].push_back(v);
6558  if (flag_Enum && !i)
6559  {
6560  member_ValMax = (int)v;
6561  }
6562  }
6563  Free((yyvsp[(1) - (2)].c));
6564  List_Delete((yyvsp[(2) - (2)].l));
6565  ;
6566  }
6567  break;
6568 
6569  case 141:
6570 #line 1442 "Gmsh.y"
6571  {
6572  floatOptions["Min"].push_back((yyvsp[(2) - (2)].d));
6573  ;
6574  }
6575  break;
6576 
6577  case 142:
6578 #line 1446 "Gmsh.y"
6579  {
6580  floatOptions["Max"].push_back((yyvsp[(2) - (2)].d));
6581  ;
6582  }
6583  break;
6584 
6585  case 143:
6586 #line 1450 "Gmsh.y"
6587  {
6588  std::string key((yyvsp[(1) - (1)].c));
6589  double v;
6590  if (!flag_Enum)
6591  {
6592  v = 1.;
6593  if (key == "Enum")
6594  flag_Enum = 1;
6595  }
6596  else
6597  v = (double)++member_ValMax;
6598  floatOptions[key].push_back(v);
6599  Free((yyvsp[(1) - (1)].c));
6600  ;
6601  }
6602  break;
6603 
6604  case 144:
6605 #line 1463 "Gmsh.y"
6606  {
6607  std::string key((yyvsp[(1) - (4)].c));
6608  for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
6609  {
6610  doubleXstring v;
6611  List_Read((yyvsp[(3) - (4)].l), i, &v);
6612  floatOptions[key].push_back(v.d);
6613  charOptions[key].push_back(v.s);
6614  }
6615  Free((yyvsp[(1) - (4)].c));
6616  for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
6617  Free(((doubleXstring *)List_Pointer((yyvsp[(3) - (4)].l), i))->s);
6618  List_Delete((yyvsp[(3) - (4)].l));
6619  ;
6620  }
6621  break;
6622 
6623  case 145:
6624 #line 1477 "Gmsh.y"
6625  {
6626  std::string key((yyvsp[(1) - (2)].c));
6627  std::string val((yyvsp[(2) - (2)].c));
6628  charOptions[key].push_back(val);
6629  Free((yyvsp[(1) - (2)].c));
6630  Free((yyvsp[(2) - (2)].c));
6631  ;
6632  }
6633  break;
6634 
6635  case 146:
6636 #line 1485 "Gmsh.y"
6637  {
6638  std::string key((yyvsp[(1) - (2)].c));
6639  for (int i = 0; i < List_Nbr((yyvsp[(2) - (2)].l)); i++)
6640  {
6641  char *v;
6642  List_Read((yyvsp[(2) - (2)].l), i, &v);
6643  charOptions[key].push_back(v);
6644  }
6645  Free((yyvsp[(1) - (2)].c));
6646  List_Delete((yyvsp[(2) - (2)].l));
6647  ;
6648  }
6649  break;
6650 
6651  case 151:
6652 #line 1510 "Gmsh.y"
6653  {
6654  std::string key((yyvsp[(1) - (2)].c));
6655  double val = (yyvsp[(2) - (2)].d);
6656  floatOptions[key].push_back(val);
6657  Free((yyvsp[(1) - (2)].c));
6658  ;
6659  }
6660  break;
6661 
6662  case 152:
6663 #line 1518 "Gmsh.y"
6664  {
6665  std::string key((yyvsp[(1) - (2)].c));
6666  std::string val((yyvsp[(2) - (2)].c));
6667  charOptions[key].push_back(val);
6668  Free((yyvsp[(1) - (2)].c));
6669  Free((yyvsp[(2) - (2)].c));
6670  ;
6671  }
6672  break;
6673 
6674  case 153:
6675 #line 1527 "Gmsh.y"
6676  {
6677  std::string key("Macro");
6678  std::string val((yyvsp[(2) - (2)].c));
6679  charOptions[key].push_back(val);
6680  Free((yyvsp[(2) - (2)].c));
6681  ;
6682  }
6683  break;
6684 
6685  case 154:
6686 #line 1535 "Gmsh.y"
6687  {
6688  std::string key((yyvsp[(1) - (2)].c));
6689  for (int i = 0; i < List_Nbr((yyvsp[(2) - (2)].l)); i++)
6690  {
6691  char *s;
6692  List_Read((yyvsp[(2) - (2)].l), i, &s);
6693  std::string val(s);
6694  Free(s);
6695  charOptions[key].push_back(val);
6696  }
6697  Free((yyvsp[(1) - (2)].c));
6698  List_Delete((yyvsp[(2) - (2)].l));
6699  ;
6700  }
6701  break;
6702 
6703  case 155:
6704 #line 1549 "Gmsh.y"
6705  {
6706  std::string key((yyvsp[(1) - (2)].c));
6707  for (int i = 0; i < List_Nbr((yyvsp[(2) - (2)].l)); i++)
6708  {
6709  char *s;
6710  List_Read((yyvsp[(2) - (2)].l), i, &s);
6711  std::string val(s);
6712  Free(s);
6713  charOptions[key].push_back(val);
6714  }
6715  Free((yyvsp[(1) - (2)].c));
6716  List_Delete((yyvsp[(2) - (2)].l));
6717  ;
6718  }
6719  break;
6720 
6721  case 156:
6722 #line 1567 "Gmsh.y"
6723  {
6724  (yyval.i) = (int)(yyvsp[(1) - (1)].d);
6725  ;
6726  }
6727  break;
6728 
6729  case 157:
6730 #line 1571 "Gmsh.y"
6731  {
6734  (yyval.i) = GModel::current()->setPhysicalName(std::string((yyvsp[(1) - (1)].c)), dim_entity, t + 1);
6735  Free((yyvsp[(1) - (1)].c));
6736  ;
6737  }
6738  break;
6739 
6740  case 158:
6741 #line 1578 "Gmsh.y"
6742  {
6743  (yyval.i) =
6744  GModel::current()->setPhysicalName(std::string((yyvsp[(1) - (3)].c)), dim_entity, (yyvsp[(3) - (3)].d));
6745  Free((yyvsp[(1) - (3)].c));
6746  ;
6747  }
6748  break;
6749 
6750  case 159:
6751 #line 1586 "Gmsh.y"
6752  {
6753  (yyval.l) = 0;
6754  ;
6755  }
6756  break;
6757 
6758  case 160:
6759 #line 1590 "Gmsh.y"
6760  {
6761  (yyval.l) = List_Create(1, 1, sizeof(double));
6762  double p = (yyvsp[(4) - (5)].d);
6763  List_Add((yyval.l), &p);
6764  ;
6765  }
6766  break;
6767 
6768  case 161:
6769 #line 1596 "Gmsh.y"
6770  {
6771  (yyval.l) = (yyvsp[(4) - (5)].l);
6772  ;
6773  }
6774  break;
6775 
6776  case 162:
6777 #line 1600 "Gmsh.y"
6778  {
6779  (yyval.l) = List_Create(10, 10, sizeof(double));
6780  double flag = -1;
6781  List_Add((yyval.l), &flag);
6782  for (int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++)
6783  List_Add((yyval.l), List_Pointer((yyvsp[(4) - (5)].l), i));
6784  List_Delete((yyvsp[(4) - (5)].l));
6785  ;
6786  }
6787  break;
6788 
6789  case 163:
6790 #line 1611 "Gmsh.y"
6791  {
6792  for (int i = 0; i < 4; i++)
6793  (yyval.v)[i] = 0.;
6794  ;
6795  }
6796  break;
6797 
6798  case 164:
6799 #line 1615 "Gmsh.y"
6800  {
6801  for (int i = 0; i < 4; i++)
6802  (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i];
6803  ;
6804  }
6805  break;
6806 
6807  case 165:
6808 #line 1621 "Gmsh.y"
6809  {
6810  (yyval.d) = 0;
6811  ;
6812  }
6813  break;
6814 
6815  case 166:
6816 #line 1625 "Gmsh.y"
6817  {
6818  (yyval.d) = 1;
6819  ;
6820  }
6821  break;
6822 
6823  case 167:
6824 #line 1631 "Gmsh.y"
6825  {
6826  int num = (int)(yyvsp[(3) - (7)].d);
6827  double x = CTX::instance()->geom.scalingFactor * (yyvsp[(6) - (7)].v)[0];
6828  double y = CTX::instance()->geom.scalingFactor * (yyvsp[(6) - (7)].v)[1];
6829  double z = CTX::instance()->geom.scalingFactor * (yyvsp[(6) - (7)].v)[2];
6830  double lc = CTX::instance()->geom.scalingFactor * (yyvsp[(6) - (7)].v)[3];
6831  bool r = true;
6832  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
6833  {
6834  r = GModel::current()->getOCCInternals()->addVertex(num, x, y, z, lc);
6835  }
6836  else
6837  {
6838  if (!myGmshSurface)
6839  r = GModel::current()->getGEOInternals()->addVertex(num, x, y, z, lc);
6840  else
6841  r = GModel::current()->getGEOInternals()->addVertex(num, x, y, myGmshSurface, lc);
6842  }
6843  if (!r)
6844  yymsg(0, "Could not add point");
6846  (yyval.s).Type = MSH_POINT;
6847  (yyval.s).Num = num;
6848  ;
6849  }
6850  break;
6851 
6852  case 168:
6853 #line 1654 "Gmsh.y"
6854  {
6855  int num = (int)(yyvsp[(3) - (7)].d);
6856  std::vector<int> tags;
6857  ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags);
6858  bool r = true;
6859  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
6860  {
6861  r = GModel::current()->getOCCInternals()->addLine(num, tags);
6862  }
6863  else
6864  {
6865  r = GModel::current()->getGEOInternals()->addLine(num, tags);
6866  }
6867  if (!r)
6868  yymsg(0, "Could not add line");
6869  List_Delete((yyvsp[(6) - (7)].l));
6870  (yyval.s).Type = MSH_SEGM_LINE;
6871  (yyval.s).Num = num;
6872  ;
6873  }
6874  break;
6875 
6876  case 169:
6877 #line 1670 "Gmsh.y"
6878  {
6879  int num = (int)(yyvsp[(3) - (7)].d);
6880  std::vector<int> tags;
6881  ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags);
6882  bool r = true;
6883  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
6884  {
6886  }
6887  else
6888  {
6890  }
6891  if (!r)
6892  yymsg(0, "Could not add spline");
6893  List_Delete((yyvsp[(6) - (7)].l));
6894  (yyval.s).Type = MSH_SEGM_SPLN;
6895  (yyval.s).Num = num;
6896  ;
6897  }
6898  break;
6899 
6900  case 170:
6901 #line 1686 "Gmsh.y"
6902  {
6903  int num = (int)(yyvsp[(4) - (10)].d);
6904  std::vector<int> tags;
6905  ListOfDouble2Vector((yyvsp[(7) - (10)].l), tags);
6906  bool r = true;
6907  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
6908  {
6909  yymsg(0, "Compound spline only available with built-in geometry kernel");
6910  }
6911  else
6912  {
6913  r = GModel::current()->getGEOInternals()->addCompoundSpline(num, tags, (int)(yyvsp[(9) - (10)].d));
6914  }
6915  if (!r)
6916  yymsg(0, "Could not add compound spline");
6917  List_Delete((yyvsp[(7) - (10)].l));
6918  (yyval.s).Type = MSH_SEGM_SPLN;
6919  (yyval.s).Num = num;
6920  ;
6921  }
6922  break;
6923 
6924  case 171:
6925 #line 1703 "Gmsh.y"
6926  {
6927  int num = (int)(yyvsp[(4) - (10)].d);
6928  std::vector<int> tags;
6929  ListOfDouble2Vector((yyvsp[(7) - (10)].l), tags);
6930  bool r = true;
6931  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
6932  {
6933  yymsg(0, "Compound spline only available with built-in geometry kernel");
6934  }
6935  else
6936  {
6937  r = GModel::current()->getGEOInternals()->addCompoundBSpline(num, tags, (int)(yyvsp[(9) - (10)].d));
6938  }
6939  if (!r)
6940  yymsg(0, "Could not add compound spline");
6941  List_Delete((yyvsp[(7) - (10)].l));
6942  (yyval.s).Type = MSH_SEGM_BSPLN;
6943  (yyval.s).Num = num;
6944  ;
6945  }
6946  break;
6947 
6948  case 172:
6949 #line 1720 "Gmsh.y"
6950  {
6951  int num = (int)(yyvsp[(3) - (8)].d);
6952  std::vector<int> tags;
6953  ListOfDouble2Vector((yyvsp[(6) - (8)].l), tags);
6954  std::vector<double> param;
6955  ListOfDouble2Vector((yyvsp[(6) - (8)].l), param);
6956  bool r = true;
6957  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
6958  {
6959  if (tags.size() == 3)
6960  {
6961  r = GModel::current()->getOCCInternals()->addCircleArc(num, tags[0], tags[1], tags[2]);
6962  }
6963  else if (param.size() >= 4 && param.size() <= 6)
6964  {
6965  double r = param[3];
6966  double a1 = (param.size() == 6) ? param[4] : 0.;
6967  double a2 = (param.size() == 6) ? param[5] : (param.size() == 5) ? param[4] : 2. * M_PI;
6968  r = GModel::current()->getOCCInternals()->addCircle(num, param[0], param[1], param[2], r, a1, a2);
6969  }
6970  else
6971  {
6972  yymsg(0, "Circle requires 3 points or 4 to 6 parameters");
6973  }
6974  }
6975  else
6976  {
6977  if (tags.size() == 3)
6978  {
6979  r = GModel::current()->getGEOInternals()->addCircleArc(num, tags[0], tags[1], tags[2],
6980  (yyvsp[(7) - (8)].v)[0], (yyvsp[(7) - (8)].v)[1],
6981  (yyvsp[(7) - (8)].v)[2]);
6982  }
6983  else
6984  {
6985  yymsg(0, "Circle requires 3 points");
6986  }
6987  }
6988  if (!r)
6989  yymsg(0, "Could not add circle");
6990  List_Delete((yyvsp[(6) - (8)].l));
6991  (yyval.s).Type = MSH_SEGM_CIRC;
6992  (yyval.s).Num = num;
6993  ;
6994  }
6995  break;
6996 
6997  case 173:
6998 #line 1757 "Gmsh.y"
6999  {
7000  int num = (int)(yyvsp[(3) - (8)].d);
7001  std::vector<int> tags;
7002  ListOfDouble2Vector((yyvsp[(6) - (8)].l), tags);
7003  std::vector<double> param;
7004  ListOfDouble2Vector((yyvsp[(6) - (8)].l), param);
7005  bool r = true;
7006  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7007  {
7008  if (tags.size() == 3)
7009  { // keep this for backward compatibility
7010  r = GModel::current()->getOCCInternals()->addEllipseArc(num, tags[0], tags[1], tags[0], tags[2]);
7011  }
7012  else if (tags.size() == 4)
7013  {
7014  r = GModel::current()->getOCCInternals()->addEllipseArc(num, tags[0], tags[1], tags[2], tags[3]);
7015  }
7016  else if (param.size() >= 5 && param.size() <= 7)
7017  {
7018  double a1 = (param.size() == 7) ? param[5] : 0.;
7019  double a2 = (param.size() == 7) ? param[6] : (param.size() == 6) ? param[5] : 2. * M_PI;
7020  r = GModel::current()->getOCCInternals()->addEllipse(num, param[0], param[1], param[2], param[3],
7021  param[4], a1, a2);
7022  }
7023  else
7024  {
7025  yymsg(0, "Ellipse requires 4 points, or 5 to 7 parameters");
7026  }
7027  }
7028  else
7029  {
7030  if (tags.size() == 3)
7031  { // to match occ
7033  num, tags[0], tags[1], tags[0], tags[2], (yyvsp[(7) - (8)].v)[0], (yyvsp[(7) - (8)].v)[1],
7034  (yyvsp[(7) - (8)].v)[2]);
7035  }
7036  else if (tags.size() == 4)
7037  {
7039  num, tags[0], tags[1], tags[2], tags[3], (yyvsp[(7) - (8)].v)[0], (yyvsp[(7) - (8)].v)[1],
7040  (yyvsp[(7) - (8)].v)[2]);
7041  }
7042  else
7043  {
7044  yymsg(0, "Ellipse requires 4 points");
7045  }
7046  }
7047  if (!r)
7048  yymsg(0, "Could not add ellipse");
7049  List_Delete((yyvsp[(6) - (8)].l));
7050  (yyval.s).Type = MSH_SEGM_ELLI;
7051  (yyval.s).Num = num;
7052  ;
7053  }
7054  break;
7055 
7056  case 174:
7057 #line 1801 "Gmsh.y"
7058  {
7059  int num = (int)(yyvsp[(3) - (7)].d);
7060  std::vector<int> tags;
7061  ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags);
7062  bool r = true;
7063  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7064  {
7066  }
7067  else
7068  {
7070  }
7071  if (!r)
7072  yymsg(0, "Could not add BSpline");
7073  List_Delete((yyvsp[(6) - (7)].l));
7074  (yyval.s).Type = MSH_SEGM_BSPLN;
7075  (yyval.s).Num = num;
7076  ;
7077  }
7078  break;
7079 
7080  case 175:
7081 #line 1817 "Gmsh.y"
7082  {
7083  int num = (int)(yyvsp[(3) - (7)].d);
7084  std::vector<int> tags;
7085  ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags);
7086  bool r = true;
7087  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7088  {
7090  }
7091  else
7092  {
7094  }
7095  if (!r)
7096  yymsg(0, "Could not add Bezier");
7097  List_Delete((yyvsp[(6) - (7)].l));
7098  (yyval.s).Type = MSH_SEGM_BEZIER;
7099  (yyval.s).Num = num;
7100  ;
7101  }
7102  break;
7103 
7104  case 176:
7105 #line 1834 "Gmsh.y"
7106  {
7107  int num = (int)(yyvsp[(3) - (11)].d);
7108  std::vector<int> tags;
7109  ListOfDouble2Vector((yyvsp[(6) - (11)].l), tags);
7110  std::vector<double> seqknots;
7111  ListOfDouble2Vector((yyvsp[(8) - (11)].l), seqknots);
7112  bool r = true;
7113  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7114  {
7115  int degree = (int)(yyvsp[(10) - (11)].d);
7116  std::vector<double> weights, knots;
7117  std::vector<int> mults;
7118  for (std::size_t i = 0; i < seqknots.size(); i++)
7119  {
7120  if (!i || (i && fabs(seqknots[i] - seqknots[i - 1]) > 1e-12))
7121  {
7122  knots.push_back(seqknots[i]);
7123  mults.push_back(1);
7124  }
7125  else
7126  {
7127  mults.back() += 1;
7128  }
7129  }
7130  r = GModel::current()->getOCCInternals()->addBSpline(num, tags, degree, weights, knots, mults);
7131  }
7132  else
7133  {
7134  r = GModel::current()->getGEOInternals()->addBSpline(num, tags, seqknots);
7135  }
7136  if (!r)
7137  yymsg(0, "Could not add nurbs");
7138  List_Delete((yyvsp[(6) - (11)].l));
7139  List_Delete((yyvsp[(8) - (11)].l));
7140  (yyval.s).Type = MSH_SEGM_NURBS;
7141  (yyval.s).Num = num;
7142  ;
7143  }
7144  break;
7145 
7146  case 177:
7147 #line 1865 "Gmsh.y"
7148  {
7149  int num = (int)(yyvsp[(3) - (7)].d);
7150  std::vector<int> tags;
7151  ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags);
7152  bool r = true;
7153  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7154  {
7155  r = GModel::current()->getOCCInternals()->addWire(num, tags, false);
7156  }
7157  else
7158  {
7159  yymsg(0, "Wire only available with OpenCASCADE geometry kernel");
7160  }
7161  if (!r)
7162  yymsg(0, "Could not add wire");
7163  List_Delete((yyvsp[(6) - (7)].l));
7164  (yyval.s).Type = MSH_SEGM_LOOP;
7165  (yyval.s).Num = num;
7166  ;
7167  }
7168  break;
7169 
7170  case 178:
7171 #line 1881 "Gmsh.y"
7172  {
7173  int num = (int)(yyvsp[(4) - (8)].d);
7174  std::vector<int> tags;
7175  ListOfDouble2Vector((yyvsp[(7) - (8)].l), tags);
7176  bool r = true;
7177  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7178  {
7180  }
7181  else
7182  {
7184  }
7185  if (!r)
7186  yymsg(0, "Could not add curve loop");
7187  List_Delete((yyvsp[(7) - (8)].l));
7188  Free((yyvsp[(2) - (8)].c));
7189  (yyval.s).Type = MSH_SEGM_LOOP;
7190  (yyval.s).Num = num;
7191  ;
7192  }
7193  break;
7194 
7195  case 179:
7196 #line 1898 "Gmsh.y"
7197  {
7198  int num = (int)(yyvsp[(4) - (8)].d);
7199  std::vector<int> tags;
7200  ListOfDouble2Vector((yyvsp[(7) - (8)].l), tags);
7201  bool r = true;
7202  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7203  {
7205  }
7206  else
7207  {
7209  }
7210  if (!r)
7211  yymsg(0, "Could not add plane surface");
7212  List_Delete((yyvsp[(7) - (8)].l));
7213  (yyval.s).Type = MSH_SURF_PLAN;
7214  (yyval.s).Num = num;
7215  ;
7216  }
7217  break;
7218 
7219  case 180:
7220 #line 1914 "Gmsh.y"
7221  {
7222  int num = (int)(yyvsp[(3) - (8)].d);
7223  std::vector<int> wires;
7224  ListOfDouble2Vector((yyvsp[(6) - (8)].l), wires);
7225  bool r = true;
7226  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7227  {
7228  if (wires.size() != 1)
7229  {
7230  yymsg(0, "OpenCASCADE surface filling requires a single curve loop");
7231  }
7232  else
7233  {
7234  std::vector<int> constraints;
7235  ListOfDouble2Vector((yyvsp[(7) - (8)].l), constraints);
7236  std::vector<int> points, surfaces, continuity;
7237  if (constraints.size() >= 3 && constraints[0] < 0)
7238  {
7239  // {-1, type, ent, type, ent, ...}
7240  for (std::size_t i = 2; i < constraints.size(); i += 2)
7241  {
7242  int type = constraints[i - 1];
7243  if (type == 0)
7244  {
7245  points.push_back(constraints[i]);
7246  }
7247  else if (type == 1 || type == 2)
7248  {
7249  surfaces.push_back(constraints[i]);
7250  continuity.push_back(type);
7251  }
7252  else
7253  yymsg(0, "Unknown type of constraint for surface filling");
7254  }
7255  }
7256  else if (constraints.size() > 0)
7257  {
7258  // {point, point, ...}
7259  points = constraints;
7260  }
7261  r = GModel::current()->getOCCInternals()->addSurfaceFilling(num, wires[0], points, surfaces,
7262  continuity);
7263  }
7264  }
7265  else
7266  {
7267  int sphereCenter = -1;
7268  if (List_Nbr((yyvsp[(7) - (8)].l)) == 1)
7269  {
7270  double d;
7271  List_Read((yyvsp[(7) - (8)].l), 0, &d);
7272  sphereCenter = (int)d;
7273  }
7274  r = GModel::current()->getGEOInternals()->addSurfaceFilling(num, wires, sphereCenter);
7275  }
7276  if (!r)
7277  yymsg(0, "Could not add surface");
7278  List_Delete((yyvsp[(6) - (8)].l));
7279  List_Delete((yyvsp[(7) - (8)].l));
7280  (yyval.s).Type = MSH_SURF_REGL;
7281  (yyval.s).Num = num;
7282  ;
7283  }
7284  break;
7285 
7286  case 181:
7287 #line 1964 "Gmsh.y"
7288  {
7289  yymsg(2, "'Ruled Surface' command is deprecated: use 'Surface' instead");
7290  int num = (int)(yyvsp[(4) - (9)].d);
7291  std::vector<int> wires;
7292  ListOfDouble2Vector((yyvsp[(7) - (9)].l), wires);
7293  int sphereCenter = -1;
7294  if (List_Nbr((yyvsp[(8) - (9)].l)) == 1)
7295  {
7296  double d;
7297  List_Read((yyvsp[(8) - (9)].l), 0, &d);
7298  sphereCenter = (int)d;
7299  }
7300  bool r = GModel::current()->getGEOInternals()->addSurfaceFilling(num, wires, sphereCenter);
7301  if (!r)
7302  yymsg(0, "Could not add surface");
7303  List_Delete((yyvsp[(7) - (9)].l));
7304  List_Delete((yyvsp[(8) - (9)].l));
7305  (yyval.s).Type = MSH_SURF_REGL;
7306  (yyval.s).Num = num;
7307  ;
7308  }
7309  break;
7310 
7311  case 182:
7312 #line 1982 "Gmsh.y"
7313  {
7314  int num = (int)(yyvsp[(4) - (8)].d);
7315  std::vector<int> wires;
7316  ListOfDouble2Vector((yyvsp[(7) - (8)].l), wires);
7317  bool r = true;
7318  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7319  {
7320  if (wires.size() != 1)
7321  {
7322  yymsg(0, "OpenCASCADE BSpline filling requires a single curve loop");
7323  }
7324  else
7325  {
7326  r = GModel::current()->getOCCInternals()->addBSplineFilling(num, wires[0]);
7327  }
7328  }
7329  else
7330  {
7331  yymsg(0, "BSpline surface only available with OpenCASCADE geometry kernel");
7332  }
7333  if (!r)
7334  yymsg(0, "Could not add BSpline surface");
7335  List_Delete((yyvsp[(7) - (8)].l));
7336  (yyval.s).Type = MSH_SURF_REGL;
7337  (yyval.s).Num = num;
7338  ;
7339  }
7340  break;
7341 
7342  case 183:
7343 #line 2003 "Gmsh.y"
7344  {
7345  int num = (int)(yyvsp[(4) - (8)].d);
7346  std::vector<int> wires;
7347  ListOfDouble2Vector((yyvsp[(7) - (8)].l), wires);
7348  bool r = true;
7349  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7350  {
7351  if (wires.size() != 1)
7352  {
7353  yymsg(0, "OpenCASCADE BSpline filling requires a single curve loop");
7354  }
7355  else
7356  {
7357  r = GModel::current()->getOCCInternals()->addBezierFilling(num, wires[0]);
7358  }
7359  }
7360  else
7361  {
7362  yymsg(0, "Bezier surface only available with OpenCASCADE geometry kernel");
7363  }
7364  if (!r)
7365  yymsg(0, "Could not add Bezier surface");
7366  List_Delete((yyvsp[(7) - (8)].l));
7367  (yyval.s).Type = MSH_SURF_REGL;
7368  (yyval.s).Num = num;
7369  ;
7370  }
7371  break;
7372 
7373  case 184:
7374 #line 2024 "Gmsh.y"
7375  {
7376  myGmshSurface = 0;
7377  (yyval.s).Type = 0;
7378  (yyval.s).Num = 0;
7379  ;
7380  }
7381  break;
7382 
7383  case 185:
7384 #line 2030 "Gmsh.y"
7385  {
7386  myGmshSurface = gmshSurface::getSurface((int)(yyvsp[(3) - (4)].d));
7387  (yyval.s).Type = 0;
7388  (yyval.s).Num = 0;
7389  ;
7390  }
7391  break;
7392 
7393  case 186:
7394 #line 2036 "Gmsh.y"
7395  {
7396  int num = (int)(yyvsp[(4) - (10)].d);
7397  myGmshSurface = gmshParametricSurface::NewParametricSurface(num, (yyvsp[(7) - (10)].c), (yyvsp[(8) - (10)].c),
7398  (yyvsp[(9) - (10)].c));
7399  (yyval.s).Type = 0;
7400  (yyval.s).Num = num;
7401  ;
7402  }
7403  break;
7404 
7405  case 187:
7406 #line 2043 "Gmsh.y"
7407  {
7408  int num = (int)(yyvsp[(3) - (7)].d);
7409  std::vector<int> tags;
7410  ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags);
7411  std::vector<double> param;
7412  ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
7413  (yyval.s).Type = 0;
7414  bool r = true;
7415  if (param.size() >= 4 && param.size() <= 7)
7416  {
7417  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7418  {
7419  double a1 = (param.size() >= 5) ? param[4] : -M_PI / 2;
7420  double a2 = (param.size() >= 6) ? param[5] : M_PI / 2;
7421  double a3 = (param.size() >= 7) ? param[6] : 2. * M_PI;
7422  r = GModel::current()->getOCCInternals()->addSphere(num, param[0], param[1], param[2], param[3], a1, a2,
7423  a3);
7424  }
7425  else
7426  {
7427  yymsg(0, "Sphere only available with OpenCASCADE geometry kernel");
7428  }
7429  (yyval.s).Type = MSH_VOLUME;
7430  }
7431  else if (tags.size() == 2)
7432  {
7434  }
7435  else
7436  {
7437  yymsg(0, "Sphere requires 2 points or from 4 to 7 parameters");
7438  }
7439  if (!r)
7440  yymsg(0, "Could not add sphere");
7441  List_Delete((yyvsp[(6) - (7)].l));
7442  (yyval.s).Num = num;
7443  ;
7444  }
7445  break;
7446 
7447  case 188:
7448 #line 2074 "Gmsh.y"
7449  {
7450  int num = (int)(yyvsp[(3) - (7)].d);
7451  std::vector<int> tags;
7452  ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags);
7453  if (tags.size() == 2)
7454  {
7456  }
7457  else
7458  {
7459  yymsg(0, "PolarSphere requires 2 points");
7460  }
7461  List_Delete((yyvsp[(6) - (7)].l));
7462  (yyval.s).Type = 0;
7463  (yyval.s).Num = num;
7464  ;
7465  }
7466  break;
7467 
7468  case 189:
7469 #line 2089 "Gmsh.y"
7470  {
7471  int num = (int)(yyvsp[(3) - (7)].d);
7472  std::vector<double> param;
7473  ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
7474  bool r = true;
7475  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7476  {
7477  if (param.size() == 6)
7478  {
7479  r = GModel::current()->getOCCInternals()->addBox(num, param[0], param[1], param[2], param[3], param[4],
7480  param[5]);
7481  }
7482  else
7483  {
7484  yymsg(0, "Box requires 6 parameters");
7485  }
7486  }
7487  else
7488  {
7489  yymsg(0, "Box only available with OpenCASCADE geometry kernel");
7490  }
7491  if (!r)
7492  yymsg(0, "Could not add block");
7493  List_Delete((yyvsp[(6) - (7)].l));
7494  (yyval.s).Type = MSH_VOLUME;
7495  (yyval.s).Num = num;
7496  ;
7497  }
7498  break;
7499 
7500  case 190:
7501 #line 2111 "Gmsh.y"
7502  {
7503  int num = (int)(yyvsp[(3) - (7)].d);
7504  std::vector<double> param;
7505  ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
7506  bool r = true;
7507  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7508  {
7509  if (param.size() == 5 || param.size() == 6)
7510  {
7511  double alpha = (param.size() == 6) ? param[5] : 2 * M_PI;
7512  r = GModel::current()->getOCCInternals()->addTorus(num, param[0], param[1], param[2], param[3],
7513  param[4], alpha);
7514  }
7515  else
7516  {
7517  yymsg(0, "Torus requires 5 ou 6 parameters");
7518  }
7519  }
7520  else
7521  {
7522  yymsg(0, "Torus only available with OpenCASCADE geometry kernel");
7523  }
7524  if (!r)
7525  yymsg(0, "Could not add torus");
7526  List_Delete((yyvsp[(6) - (7)].l));
7527  (yyval.s).Type = MSH_VOLUME;
7528  (yyval.s).Num = num;
7529  ;
7530  }
7531  break;
7532 
7533  case 191:
7534 #line 2134 "Gmsh.y"
7535  {
7536  int num = (int)(yyvsp[(3) - (7)].d);
7537  std::vector<double> param;
7538  ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
7539  bool r = true;
7540  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7541  {
7542  if (param.size() == 5 || param.size() == 6)
7543  {
7544  double r = (param.size() == 6) ? param[5] : 0.;
7545  r = GModel::current()->getOCCInternals()->addRectangle(num, param[0], param[1], param[2], param[3],
7546  param[4], r);
7547  }
7548  else
7549  {
7550  yymsg(0, "Rectangle requires 5 ou 6 parameters");
7551  }
7552  }
7553  else
7554  {
7555  yymsg(0, "Rectangle only available with OpenCASCADE geometry kernel");
7556  }
7557  if (!r)
7558  yymsg(0, "Could not add rectangle");
7559  List_Delete((yyvsp[(6) - (7)].l));
7560  (yyval.s).Type = MSH_SURF_PLAN;
7561  (yyval.s).Num = num;
7562  ;
7563  }
7564  break;
7565 
7566  case 192:
7567 #line 2157 "Gmsh.y"
7568  {
7569  int num = (int)(yyvsp[(3) - (7)].d);
7570  std::vector<double> param;
7571  ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
7572  bool r = true;
7573  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7574  {
7575  if (param.size() == 4 || param.size() == 5)
7576  {
7577  double ry = (param.size() == 5) ? param[4] : param[3];
7578  r = GModel::current()->getOCCInternals()->addDisk(num, param[0], param[1], param[2], param[3], ry);
7579  }
7580  else
7581  {
7582  yymsg(0, "Disk requires 4 or 5 parameters");
7583  }
7584  }
7585  else
7586  {
7587  yymsg(0, "Disk only available with OpenCASCADE geometry kernel");
7588  }
7589  if (!r)
7590  yymsg(0, "Could not add disk");
7591  List_Delete((yyvsp[(6) - (7)].l));
7592  (yyval.s).Type = MSH_SURF_PLAN;
7593  (yyval.s).Num = num;
7594  ;
7595  }
7596  break;
7597 
7598  case 193:
7599 #line 2180 "Gmsh.y"
7600  {
7601  int num = (int)(yyvsp[(3) - (7)].d);
7602  std::vector<double> param;
7603  ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
7604  bool r = true;
7605  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7606  {
7607  if (param.size() == 7 || param.size() == 8)
7608  {
7609  double angle = (param.size() == 8) ? param[7] : 2 * M_PI;
7610  r = GModel::current()->getOCCInternals()->addCylinder(num, param[0], param[1], param[2], param[3],
7611  param[4], param[5], param[6], angle);
7612  }
7613  else
7614  {
7615  yymsg(0, "Cylinder requires 7 or 8 parameters");
7616  }
7617  }
7618  else
7619  {
7620  yymsg(0, "Cylinder only available with OpenCASCADE geometry kernel");
7621  }
7622  if (!r)
7623  yymsg(0, "Could not add cylinder");
7624  List_Delete((yyvsp[(6) - (7)].l));
7625  (yyval.s).Type = MSH_VOLUME;
7626  (yyval.s).Num = num;
7627  ;
7628  }
7629  break;
7630 
7631  case 194:
7632 #line 2204 "Gmsh.y"
7633  {
7634  int num = (int)(yyvsp[(3) - (7)].d);
7635  std::vector<double> param;
7636  ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
7637  bool r = true;
7638  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7639  {
7640  if (param.size() == 8 || param.size() == 9)
7641  {
7642  double alpha = (param.size() == 9) ? param[8] : 2 * M_PI;
7643  r = GModel::current()->getOCCInternals()->addCone(num, param[0], param[1], param[2], param[3], param[4],
7644  param[5], param[6], param[7], alpha);
7645  }
7646  else
7647  {
7648  yymsg(0, "Cone requires 8 or 9 parameters");
7649  }
7650  }
7651  else
7652  {
7653  yymsg(0, "Cone only available with OpenCASCADE geometry kernel");
7654  }
7655  if (!r)
7656  yymsg(0, "Could not add cone");
7657  List_Delete((yyvsp[(6) - (7)].l));
7658  (yyval.s).Type = MSH_VOLUME;
7659  (yyval.s).Num = num;
7660  ;
7661  }
7662  break;
7663 
7664  case 195:
7665 #line 2228 "Gmsh.y"
7666  {
7667  int num = (int)(yyvsp[(3) - (7)].d);
7668  std::vector<double> param;
7669  ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
7670  bool r = true;
7671  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7672  {
7673  if (param.size() == 6 || param.size() == 7)
7674  {
7675  double ltx = (param.size() == 7) ? param[6] : 0.;
7676  r = GModel::current()->getOCCInternals()->addWedge(num, param[0], param[1], param[2], param[3],
7677  param[4], param[5], ltx);
7678  }
7679  else
7680  {
7681  yymsg(0, "Wedge requires 7 parameters");
7682  }
7683  }
7684  else
7685  {
7686  yymsg(0, "Wedge only available with OpenCASCADE geometry kernel");
7687  }
7688  if (!r)
7689  yymsg(0, "Could not add wedge");
7690  List_Delete((yyvsp[(6) - (7)].l));
7691  (yyval.s).Type = MSH_VOLUME;
7692  (yyval.s).Num = num;
7693  ;
7694  }
7695  break;
7696 
7697  case 196:
7698 #line 2252 "Gmsh.y"
7699  {
7700  int num = (int)(yyvsp[(3) - (7)].d);
7701  std::vector<double> param;
7702  ListOfDouble2Vector((yyvsp[(6) - (7)].l), param);
7703  bool r = true;
7704  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7705  {
7706  if (param.size() >= 2)
7707  {
7708  int in = (int)param[0];
7709  double offset = param[1];
7710  std::vector<int> exclude;
7711  for (std::size_t i = 2; i < param.size(); i++)
7712  exclude.push_back(param[i]);
7713  std::vector<std::pair<int, int>> outDimTags;
7714  r = GModel::current()->getOCCInternals()->addThickSolid(num, in, exclude, offset, outDimTags);
7715  }
7716  else
7717  {
7718  yymsg(0, "ThickSolid requires at least 2 parameters");
7719  }
7720  }
7721  else
7722  {
7723  yymsg(0, "ThickSolid only available with OpenCASCADE geometry kernel");
7724  }
7725  if (!r)
7726  yymsg(0, "Could not add thick solid");
7727  List_Delete((yyvsp[(6) - (7)].l));
7728  ;
7729  }
7730  break;
7731 
7732  case 197:
7733 #line 2278 "Gmsh.y"
7734  {
7735  int num = (int)(yyvsp[(4) - (9)].d);
7736  std::vector<int> tags;
7737  ListOfDouble2Vector((yyvsp[(7) - (9)].l), tags);
7738  bool r = true;
7739  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7740  {
7741  r = GModel::current()->getOCCInternals()->addSurfaceLoop(num, tags, (yyvsp[(8) - (9)].d));
7742  }
7743  else
7744  {
7746  }
7747  if (!r)
7748  yymsg(0, "Could not add surface loop");
7749  List_Delete((yyvsp[(7) - (9)].l));
7750  Free((yyvsp[(2) - (9)].c));
7751  (yyval.s).Type = MSH_SURF_LOOP;
7752  (yyval.s).Num = num;
7753  ;
7754  }
7755  break;
7756 
7757  case 198:
7758 #line 2295 "Gmsh.y"
7759  {
7760  int num = (int)(yyvsp[(3) - (7)].d);
7761  std::vector<int> tags;
7762  ListOfDouble2Vector((yyvsp[(6) - (7)].l), tags);
7763  bool r = true;
7764  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7765  {
7767  }
7768  else
7769  {
7771  }
7772  if (!r)
7773  yymsg(0, "Could not add volume");
7774  List_Delete((yyvsp[(6) - (7)].l));
7775  (yyval.s).Type = MSH_VOLUME;
7776  (yyval.s).Num = num;
7777  ;
7778  }
7779  break;
7780 
7781  case 199:
7782 #line 2311 "Gmsh.y"
7783  {
7784  int num = (int)(yyvsp[(3) - (7)].d);
7785  std::vector<int> wires;
7786  ListOfDouble2Vector((yyvsp[(6) - (7)].l), wires);
7787  bool r = true;
7788  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7789  {
7790  std::vector<std::pair<int, int>> outDimTags;
7791  r = GModel::current()->getOCCInternals()->addThruSections(num, wires, true, false, outDimTags);
7792  }
7793  else
7794  {
7795  yymsg(0, "ThruSections only available with OpenCASCADE geometry kernel");
7796  }
7797  if (!r)
7798  yymsg(0, "Could not add thrusections");
7799  List_Delete((yyvsp[(6) - (7)].l));
7800  (yyval.s).Type = MSH_VOLUME;
7801  (yyval.s).Num = num;
7802  ;
7803  }
7804  break;
7805 
7806  case 200:
7807 #line 2329 "Gmsh.y"
7808  {
7809  int num = (int)(yyvsp[(4) - (8)].d);
7810  std::vector<int> wires;
7811  ListOfDouble2Vector((yyvsp[(7) - (8)].l), wires);
7812  bool r = true;
7813  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
7814  {
7815  std::vector<std::pair<int, int>> outDimTags;
7816  r = GModel::current()->getOCCInternals()->addThruSections(num, wires, true, true, outDimTags);
7817  }
7818  else
7819  {
7820  yymsg(0, "ThruSections only available with OpenCASCADE geometry kernel");
7821  }
7822  if (!r)
7823  yymsg(0, "Could not add ruled thrusections");
7824  List_Delete((yyvsp[(7) - (8)].l));
7825  (yyval.s).Type = MSH_VOLUME;
7826  (yyval.s).Num = num;
7827  ;
7828  }
7829  break;
7830 
7831  case 201:
7832 #line 2347 "Gmsh.y"
7833  {
7834  if ((yyvsp[(2) - (8)].i) == 1)
7835  yymsg(0, "`Compound Line (...) = {...};' is deprecated: use `Compound "
7836  "Spline|BSpline (...) = {...} Using ...;' instead, or the compound "
7837  "meshing constraint `Compound Curve {...};'");
7838  else
7839  yymsg(0, "`Compound Surface (...) = {...};' is deprecated: use the "
7840  "compound meshing constraint `Compound Surface {...};' instead");
7841  (yyval.s).Type = 0;
7842  (yyval.s).Num = 0;
7843  ;
7844  }
7845  break;
7846 
7847  case 202:
7848 #line 2360 "Gmsh.y"
7849  {
7850  if ((yyvsp[(2) - (12)].i) == 1)
7851  yymsg(0, "`Compound Line (...) = {...};' is deprecated: use `Compound "
7852  "Spline|BSpline (...) = {...} Using ...;' instead, or the compound "
7853  "meshing constraint `Compound Curve {...};'");
7854  else
7855  yymsg(0, "`Compound Surface (...) = {...};' is deprecated: use the "
7856  "compound meshing constraint `Compound Surface {...};' instead");
7857  (yyval.s).Type = 0;
7858  (yyval.s).Num = 0;
7859  ;
7860  }
7861  break;
7862 
7863  case 203:
7864 #line 2372 "Gmsh.y"
7865  {
7866  dim_entity = (yyvsp[(2) - (2)].i);
7867  ;
7868  }
7869  break;
7870 
7871  case 204:
7872 #line 2376 "Gmsh.y"
7873  {
7874  int num = (int)(yyvsp[(5) - (9)].i);
7875  int op = (yyvsp[(7) - (9)].i);
7876  std::vector<int> tags;
7877  ListOfDouble2Vector((yyvsp[(8) - (9)].l), tags);
7878  bool r = GModel::current()->getGEOInternals()->modifyPhysicalGroup((yyvsp[(2) - (9)].i), num, op, tags);
7879  if (!r)
7880  switch ((yyvsp[(2) - (9)].i))
7881  {
7882  case 0:
7883  yymsg(0, "Could not modify physical point");
7884  break;
7885  case 1:
7886  yymsg(0, "Could not modify physical line");
7887  break;
7888  case 2:
7889  yymsg(0, "Could not modify physical surface");
7890  break;
7891  case 3:
7892  yymsg(0, "Could not modify physical volume");
7893  break;
7894  }
7895  List_Delete((yyvsp[(8) - (9)].l));
7896  switch ((yyvsp[(2) - (9)].i))
7897  {
7898  case 0:
7899  (yyval.s).Type = MSH_PHYSICAL_POINT;
7900  break;
7901  case 1:
7902  (yyval.s).Type = MSH_PHYSICAL_LINE;
7903  break;
7904  case 2:
7905  (yyval.s).Type = MSH_PHYSICAL_SURFACE;
7906  break;
7907  case 3:
7908  (yyval.s).Type = MSH_PHYSICAL_VOLUME;
7909  break;
7910  }
7911  (yyval.s).Num = num;
7912  ;
7913  }
7914  break;
7915 
7916  case 205:
7917 #line 2402 "Gmsh.y"
7918  {
7919  (yyval.i) = 0;
7920  ;
7921  }
7922  break;
7923 
7924  case 206:
7925 #line 2404 "Gmsh.y"
7926  {
7927  (yyval.i) = 1;
7928  ;
7929  }
7930  break;
7931 
7932  case 207:
7933 #line 2406 "Gmsh.y"
7934  {
7935  (yyval.i) = 2;
7936  ;
7937  }
7938  break;
7939 
7940  case 208:
7941 #line 2408 "Gmsh.y"
7942  {
7943  (yyval.i) = 3;
7944  ;
7945  }
7946  break;
7947 
7948  case 209:
7949 #line 2410 "Gmsh.y"
7950  {
7951  (yyval.i) = (int)(yyvsp[(3) - (4)].d);
7952  if ((yyval.i) < 0 || (yyval.i) > 3)
7953  yymsg(0, "GeoEntity dim out of range [0,3]");
7954  ;
7955  }
7956  break;
7957 
7958  case 210:
7959 #line 2418 "Gmsh.y"
7960  {
7961  (yyval.i) = 1;
7962  ;
7963  }
7964  break;
7965 
7966  case 211:
7967 #line 2420 "Gmsh.y"
7968  {
7969  (yyval.i) = 2;
7970  ;
7971  }
7972  break;
7973 
7974  case 212:
7975 #line 2422 "Gmsh.y"
7976  {
7977  (yyval.i) = 3;
7978  ;
7979  }
7980  break;
7981 
7982  case 213:
7983 #line 2424 "Gmsh.y"
7984  {
7985  (yyval.i) = (int)(yyvsp[(3) - (4)].d);
7986  if ((yyval.i) < 1 || (yyval.i) > 3)
7987  yymsg(0, "GeoEntity dim out of range [1,3]");
7988  ;
7989  }
7990  break;
7991 
7992  case 214:
7993 #line 2432 "Gmsh.y"
7994  {
7995  (yyval.i) = 1;
7996  ;
7997  }
7998  break;
7999 
8000  case 215:
8001 #line 2434 "Gmsh.y"
8002  {
8003  (yyval.i) = 2;
8004  ;
8005  }
8006  break;
8007 
8008  case 216:
8009 #line 2436 "Gmsh.y"
8010  {
8011  (yyval.i) = (int)(yyvsp[(3) - (4)].d);
8012  if ((yyval.i) < 1 || (yyval.i) > 2)
8013  yymsg(0, "GeoEntity dim out of range [1,2]");
8014  ;
8015  }
8016  break;
8017 
8018  case 217:
8019 #line 2444 "Gmsh.y"
8020  {
8021  (yyval.i) = 0;
8022  ;
8023  }
8024  break;
8025 
8026  case 218:
8027 #line 2446 "Gmsh.y"
8028  {
8029  (yyval.i) = 1;
8030  ;
8031  }
8032  break;
8033 
8034  case 219:
8035 #line 2448 "Gmsh.y"
8036  {
8037  (yyval.i) = 2;
8038  ;
8039  }
8040  break;
8041 
8042  case 220:
8043 #line 2450 "Gmsh.y"
8044  {
8045  (yyval.i) = (int)(yyvsp[(3) - (4)].d);
8046  if ((yyval.i) < 0 || (yyval.i) > 2)
8047  yymsg(0, "GeoEntity dim out of range [0,2]");
8048  ;
8049  }
8050  break;
8051 
8052  case 221:
8053 #line 2460 "Gmsh.y"
8054  {
8055  std::vector<std::pair<int, int>> dimTags;
8056  ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags);
8057  bool r = true;
8058  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
8059  {
8060  r = GModel::current()->getOCCInternals()->translate(dimTags, (yyvsp[(2) - (5)].v)[0],
8061  (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2]);
8062  }
8063  else
8064  {
8065  r = GModel::current()->getGEOInternals()->translate(dimTags, (yyvsp[(2) - (5)].v)[0],
8066  (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2]);
8067  }
8068  if (!r)
8069  yymsg(0, "Could not translate shapes");
8070  (yyval.l) = (yyvsp[(4) - (5)].l);
8071  ;
8072  }
8073  break;
8074 
8075  case 222:
8076 #line 2476 "Gmsh.y"
8077  {
8078  std::vector<std::pair<int, int>> dimTags;
8079  ListOfShapes2VectorOfPairs((yyvsp[(10) - (11)].l), dimTags);
8080  bool r = true;
8081  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
8082  {
8084  dimTags, (yyvsp[(5) - (11)].v)[0], (yyvsp[(5) - (11)].v)[1], (yyvsp[(5) - (11)].v)[2],
8085  (yyvsp[(3) - (11)].v)[0], (yyvsp[(3) - (11)].v)[1], (yyvsp[(3) - (11)].v)[2], (yyvsp[(7) - (11)].d));
8086  }
8087  else
8088  {
8090  dimTags, (yyvsp[(5) - (11)].v)[0], (yyvsp[(5) - (11)].v)[1], (yyvsp[(5) - (11)].v)[2],
8091  (yyvsp[(3) - (11)].v)[0], (yyvsp[(3) - (11)].v)[1], (yyvsp[(3) - (11)].v)[2], (yyvsp[(7) - (11)].d));
8092  }
8093  if (!r)
8094  yymsg(0, "Could not rotate shapes");
8095  (yyval.l) = (yyvsp[(10) - (11)].l);
8096  ;
8097  }
8098  break;
8099 
8100  case 223:
8101 #line 2492 "Gmsh.y"
8102  {
8103  std::vector<std::pair<int, int>> dimTags;
8104  ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags);
8105  bool r = true;
8106  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
8107  {
8108  r = GModel::current()->getOCCInternals()->symmetry(dimTags, (yyvsp[(2) - (5)].v)[0],
8109  (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2],
8110  (yyvsp[(2) - (5)].v)[3]);
8111  }
8112  else
8113  {
8114  r = GModel::current()->getGEOInternals()->symmetry(dimTags, (yyvsp[(2) - (5)].v)[0],
8115  (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2],
8116  (yyvsp[(2) - (5)].v)[3]);
8117  }
8118  if (!r)
8119  yymsg(0, "Could not apply symmetry transform");
8120  (yyval.l) = (yyvsp[(4) - (5)].l);
8121  ;
8122  }
8123  break;
8124 
8125  case 224:
8126 #line 2508 "Gmsh.y"
8127  {
8128  std::vector<std::pair<int, int>> dimTags;
8129  ListOfShapes2VectorOfPairs((yyvsp[(8) - (9)].l), dimTags);
8130  bool r = true;
8131  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
8132  {
8133  r = GModel::current()->getOCCInternals()->dilate(dimTags, (yyvsp[(3) - (9)].v)[0], (yyvsp[(3) - (9)].v)[1],
8134  (yyvsp[(3) - (9)].v)[2], (yyvsp[(5) - (9)].d),
8135  (yyvsp[(5) - (9)].d), (yyvsp[(5) - (9)].d));
8136  }
8137  else
8138  {
8139  r = GModel::current()->getGEOInternals()->dilate(dimTags, (yyvsp[(3) - (9)].v)[0], (yyvsp[(3) - (9)].v)[1],
8140  (yyvsp[(3) - (9)].v)[2], (yyvsp[(5) - (9)].d),
8141  (yyvsp[(5) - (9)].d), (yyvsp[(5) - (9)].d));
8142  }
8143  if (!r)
8144  yymsg(0, "Could not dilate shapes");
8145  (yyval.l) = (yyvsp[(8) - (9)].l);
8146  ;
8147  }
8148  break;
8149 
8150  case 225:
8151 #line 2524 "Gmsh.y"
8152  {
8153  std::vector<std::pair<int, int>> dimTags;
8154  ListOfShapes2VectorOfPairs((yyvsp[(8) - (9)].l), dimTags);
8155  bool r = true;
8156  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
8157  {
8158  r = GModel::current()->getOCCInternals()->dilate(dimTags, (yyvsp[(3) - (9)].v)[0], (yyvsp[(3) - (9)].v)[1],
8159  (yyvsp[(3) - (9)].v)[2], (yyvsp[(5) - (9)].v)[0],
8160  (yyvsp[(5) - (9)].v)[1], (yyvsp[(5) - (9)].v)[2]);
8161  }
8162  else
8163  {
8164  r = GModel::current()->getGEOInternals()->dilate(dimTags, (yyvsp[(3) - (9)].v)[0], (yyvsp[(3) - (9)].v)[1],
8165  (yyvsp[(3) - (9)].v)[2], (yyvsp[(5) - (9)].v)[0],
8166  (yyvsp[(5) - (9)].v)[1], (yyvsp[(5) - (9)].v)[2]);
8167  }
8168  if (!r)
8169  yymsg(0, "Could not dilate shapes");
8170  (yyval.l) = (yyvsp[(8) - (9)].l);
8171  ;
8172  }
8173  break;
8174 
8175  case 226:
8176 #line 2540 "Gmsh.y"
8177  {
8178  std::vector<std::pair<int, int>> dimTags;
8179  ListOfShapes2VectorOfPairs((yyvsp[(6) - (7)].l), dimTags);
8180  bool r = true;
8181  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
8182  {
8183  std::vector<double> mat;
8184  ListOfDouble2Vector((yyvsp[(3) - (7)].l), mat);
8185  r = GModel::current()->getOCCInternals()->affine(dimTags, mat);
8186  }
8187  else
8188  {
8189  yymsg(0, "Affine transform only available with OpenCASCADE geometry kernel");
8190  }
8191  if (!r)
8192  yymsg(0, "Could not transform shapes");
8193  List_Delete((yyvsp[(3) - (7)].l));
8194  (yyval.l) = (yyvsp[(6) - (7)].l);
8195  ;
8196  }
8197  break;
8198 
8199  case 227:
8200 #line 2557 "Gmsh.y"
8201  {
8202  std::vector<std::pair<int, int>> inDimTags, outDimTags;
8203  ListOfShapes2VectorOfPairs((yyvsp[(3) - (4)].l), inDimTags);
8204  (yyval.l) = (yyvsp[(3) - (4)].l);
8205  List_Reset((yyval.l));
8206  std::string action((yyvsp[(1) - (4)].c));
8207  bool r = true;
8208  if (action == "Duplicata")
8209  {
8210  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
8211  {
8212  r = GModel::current()->getOCCInternals()->copy(inDimTags, outDimTags);
8213  }
8214  else
8215  {
8216  r = GModel::current()->getGEOInternals()->copy(inDimTags, outDimTags);
8217  }
8218  }
8219  else if (action == "Boundary" || action == "CombinedBoundary" || action == "PointsOf")
8220  {
8221  // boundary operations are performed directly on GModel, which enables
8222  // to compute the boundary of hybrid CAD models; this also automatically
8223  // binds all boundary entities for OCC models
8224  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
8226  if (GModel::current()->getGEOInternals()->getChanged())
8228  r = GModel::current()->getBoundaryTags(inDimTags, outDimTags, action == "CombinedBoundary", true,
8229  action == "PointsOf");
8230  }
8231  else
8232  {
8233  yymsg(0, "Unknown action on multiple shapes '%s'", (yyvsp[(1) - (4)].c));
8234  }
8235  if (!r)
8236  yymsg(0, "Could not apply operation on shapes");
8237  VectorOfPairs2ListOfShapes(outDimTags, (yyval.l));
8238  Free((yyvsp[(1) - (4)].c));
8239  ;
8240  }
8241  break;
8242 
8243  case 228:
8244 #line 2594 "Gmsh.y"
8245  {
8246  (yyval.l) = List_Create(2, 1, sizeof(Shape));
8247  bool r = true;
8248  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
8249  {
8250  yymsg(0, "Intersect line not available with OpenCASCADE geometry kernel");
8251  }
8252  else
8253  {
8254  std::vector<int> in, out;
8255  ListOfDouble2Vector((yyvsp[(4) - (9)].l), in);
8256  r = GModel::current()->getGEOInternals()->intersectCurvesWithSurface(in, (int)(yyvsp[(8) - (9)].d), out);
8257  for (std::size_t i = 0; i < out.size(); i++)
8258  {
8259  Shape s;
8260  s.Type = MSH_POINT;
8261  s.Num = out[i];
8262  List_Add((yyval.l), &s);
8263  }
8264  }
8265  if (!r)
8266  yymsg(0, "Could not intersect line");
8267  List_Delete((yyvsp[(4) - (9)].l));
8268  ;
8269  }
8270  break;
8271 
8272  case 229:
8273 #line 2615 "Gmsh.y"
8274  {
8275  (yyval.l) = List_Create(2, 1, sizeof(Shape));
8276  bool r = true;
8277  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
8278  {
8279  yymsg(0, "Split Curve not available with OpenCASCADE geometry kernel");
8280  }
8281  else
8282  {
8283  std::vector<int> vertices, curves;
8284  ListOfDouble2Vector((yyvsp[(8) - (10)].l), vertices);
8285  r = GModel::current()->getGEOInternals()->splitCurve((int)(yyvsp[(4) - (10)].d), vertices, curves);
8286  for (std::size_t i = 0; i < curves.size(); i++)
8287  {
8288  Shape s;
8289  s.Type = MSH_SEGM_LINE;
8290  s.Num = curves[i];
8291  List_Add((yyval.l), &s);
8292  }
8293  }
8294  if (!r)
8295  yymsg(0, "Could not split curve");
8296  List_Delete((yyvsp[(8) - (10)].l));
8297  ;
8298  }
8299  break;
8300 
8301  case 230:
8302 #line 2636 "Gmsh.y"
8303  {
8304  yymsg(2, "'Split Curve(c) {...}' is deprecated: "
8305  "use 'Split Curve {c} Point {...}' instead");
8306  (yyval.l) = List_Create(2, 1, sizeof(Shape));
8307  bool r = true;
8308  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
8309  {
8310  yymsg(0, "Split Curve not available with OpenCASCADE geometry kernel");
8311  }
8312  else
8313  {
8314  std::vector<int> vertices, curves;
8315  ListOfDouble2Vector((yyvsp[(7) - (9)].l), vertices);
8316  r = GModel::current()->getGEOInternals()->splitCurve((int)(yyvsp[(4) - (9)].d), vertices, curves);
8317  for (std::size_t i = 0; i < curves.size(); i++)
8318  {
8319  Shape s;
8320  s.Type = MSH_SEGM_LINE;
8321  s.Num = curves[i];
8322  List_Add((yyval.l), &s);
8323  }
8324  }
8325  if (!r)
8326  yymsg(0, "Could not split curve");
8327  List_Delete((yyvsp[(7) - (9)].l));
8328  ;
8329  }
8330  break;
8331 
8332  case 231:
8333 #line 2661 "Gmsh.y"
8334  {
8335  (yyval.l) = (yyvsp[(1) - (1)].l);
8336  ;
8337  }
8338  break;
8339 
8340  case 232:
8341 #line 2662 "Gmsh.y"
8342  {
8343  (yyval.l) = (yyvsp[(1) - (1)].l);
8344  ;
8345  }
8346  break;
8347 
8348  case 233:
8349 #line 2667 "Gmsh.y"
8350  {
8351  (yyval.l) = List_Create(3, 3, sizeof(Shape));
8352  ;
8353  }
8354  break;
8355 
8356  case 234:
8357 #line 2671 "Gmsh.y"
8358  {
8359  List_Add((yyval.l), &(yyvsp[(2) - (2)].s));
8360  ;
8361  }
8362  break;
8363 
8364  case 235:
8365 #line 2675 "Gmsh.y"
8366  {
8367  for (int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++)
8368  {
8369  double d;
8370  List_Read((yyvsp[(4) - (6)].l), i, &d);
8371  Shape s;
8372  s.Num = (int)d;
8373  switch ((yyvsp[(2) - (6)].i))
8374  {
8375  case 0:
8376  s.Type = MSH_POINT;
8377  break;
8378  case 1:
8379  s.Type = MSH_SEGM_LINE;
8380  break;
8381  case 2:
8382  s.Type = MSH_SURF_PLAN;
8383  break; // we don't care about the actual type
8384  case 3:
8385  s.Type = MSH_VOLUME;
8386  break;
8387  }
8388  List_Add((yyval.l), &s);
8389  }
8390  List_Delete((yyvsp[(4) - (6)].l));
8391  ;
8392  }
8393  break;
8394 
8395  case 236:
8396 #line 2692 "Gmsh.y"
8397  {
8398  List_T *tmp = List_Create(10, 10, sizeof(double));
8399  getElementaryTagsForPhysicalGroups((yyvsp[(3) - (7)].i), (yyvsp[(5) - (7)].l), tmp);
8400  for (int i = 0; i < List_Nbr(tmp); i++)
8401  {
8402  double d;
8403  List_Read(tmp, i, &d);
8404  Shape s;
8405  s.Num = (int)d; // FIXME
8406  switch ((yyvsp[(3) - (7)].i))
8407  {
8408  case 0:
8409  s.Type = MSH_POINT;
8410  break;
8411  case 1:
8412  s.Type = MSH_SEGM_LINE;
8413  break;
8414  case 2:
8415  s.Type = MSH_SURF_PLAN;
8416  break; // we don't care about the actual type
8417  case 3:
8418  s.Type = MSH_VOLUME;
8419  break;
8420  }
8421  List_Add((yyval.l), &s);
8422  }
8423  List_Delete(tmp);
8424  List_Delete((yyvsp[(5) - (7)].l));
8425  ;
8426  }
8427  break;
8428 
8429  case 237:
8430 #line 2712 "Gmsh.y"
8431  {
8432  List_T *tmp = List_Create(10, 10, sizeof(double));
8433  getParentTags((yyvsp[(3) - (7)].i), (yyvsp[(5) - (7)].l), tmp);
8434  for (int i = 0; i < List_Nbr(tmp); i++)
8435  {
8436  double d;
8437  List_Read(tmp, i, &d);
8438  Shape s;
8439  s.Num = (int)d; // FIXME
8440  switch ((yyvsp[(3) - (7)].i))
8441  {
8442  case 0:
8443  s.Type = MSH_POINT;
8444  break;
8445  case 1:
8446  s.Type = MSH_SEGM_LINE;
8447  break;
8448  case 2:
8449  s.Type = MSH_SURF_PLAN;
8450  break; // we don't care about the actual type
8451  case 3:
8452  s.Type = MSH_VOLUME;
8453  break;
8454  }
8455  List_Add((yyval.l), &s);
8456  }
8457  List_Delete(tmp);
8458  List_Delete((yyvsp[(5) - (7)].l));
8459  ;
8460  }
8461  break;
8462 
8463  case 238:
8464 #line 2732 "Gmsh.y"
8465  {
8466  List_T *tmp = List_Create(10, 10, sizeof(double));
8467  getAllElementaryTags((yyvsp[(2) - (6)].i), tmp);
8468  for (int i = 0; i < List_Nbr(tmp); i++)
8469  {
8470  double d;
8471  List_Read(tmp, i, &d);
8472  Shape s;
8473  s.Num = (int)d;
8474  switch ((yyvsp[(2) - (6)].i))
8475  {
8476  case 0:
8477  s.Type = MSH_POINT;
8478  break;
8479  case 1:
8480  s.Type = MSH_SEGM_LINE;
8481  break;
8482  case 2:
8483  s.Type = MSH_SURF_PLAN;
8484  break; // we don't care about the actual type
8485  case 3:
8486  s.Type = MSH_VOLUME;
8487  break;
8488  }
8489  List_Add((yyval.l), &s);
8490  }
8491  List_Delete(tmp);
8492  ;
8493  }
8494  break;
8495 
8496  case 239:
8497 #line 2751 "Gmsh.y"
8498  {
8499  List_T *tmp = List_Create(10, 10, sizeof(double));
8500  List_T *tmp2 = List_Create(10, 10, sizeof(double));
8501  getAllPhysicalTags((yyvsp[(3) - (7)].i), tmp2);
8502  getElementaryTagsForPhysicalGroups((yyvsp[(3) - (7)].i), tmp2, tmp);
8503  for (int i = 0; i < List_Nbr(tmp); i++)
8504  {
8505  double d;
8506  List_Read(tmp, i, &d);
8507  Shape s;
8508  s.Num = (int)d; // FIXME
8509  switch ((yyvsp[(3) - (7)].i))
8510  {
8511  case 0:
8512  s.Type = MSH_POINT;
8513  break;
8514  case 1:
8515  s.Type = MSH_SEGM_LINE;
8516  break;
8517  case 2:
8518  s.Type = MSH_SURF_PLAN;
8519  break; // we don't care about the actual type
8520  case 3:
8521  s.Type = MSH_VOLUME;
8522  break;
8523  }
8524  List_Add((yyval.l), &s);
8525  }
8526  List_Delete(tmp);
8527  List_Delete(tmp2);
8528  ;
8529  }
8530  break;
8531 
8532  case 240:
8533 #line 2778 "Gmsh.y"
8534  {
8535  if (List_Nbr((yyvsp[(7) - (8)].l)) == 4)
8536  {
8537  int t = (int)(yyvsp[(4) - (8)].d);
8538  if (gLevelset::find(t))
8539  {
8540  yymsg(0, "Levelset %d already exists", t);
8541  }
8542  else
8543  {
8544  double d[4];
8545  for (int i = 0; i < 4; i++)
8546  List_Read((yyvsp[(7) - (8)].l), i, &d[i]);
8547  gLevelset *ls = new gLevelsetPlane(d[0], d[1], d[2], d[3], t);
8548  gLevelset::add(ls);
8549  }
8550  }
8551  else
8552  yymsg(0, "Wrong number of arguments for levelset definition");
8553  List_Delete((yyvsp[(7) - (8)].l));
8554  ;
8555  }
8556  break;
8557 
8558  case 241:
8559 #line 2797 "Gmsh.y"
8560  {
8561  int t = (int)(yyvsp[(4) - (10)].d);
8562  if (gLevelset::find(t))
8563  {
8564  yymsg(0, "Levelset %d already exists", t);
8565  }
8566  else
8567  {
8568  fullMatrix<double> centers(List_Nbr((yyvsp[(8) - (10)].l)), 3);
8569  for (int i = 0; i < List_Nbr((yyvsp[(8) - (10)].l)); i++)
8570  {
8571  List_T *l = *(List_T **)List_Pointer((yyvsp[(8) - (10)].l), i);
8572  for (int j = 0; j < List_Nbr(l); j++)
8573  {
8574  centers(i, j) = (double)(*(double *)List_Pointer(l, j));
8575  }
8576  }
8577  gLevelset *ls = new gLevelsetPoints(centers, t);
8578  gLevelset::add(ls);
8579  }
8580  for (int i = 0; i < List_Nbr((yyvsp[(8) - (10)].l)); i++)
8581  List_Delete(*(List_T **)List_Pointer((yyvsp[(8) - (10)].l), i));
8582  List_Delete((yyvsp[(8) - (10)].l));
8583  ;
8584  }
8585  break;
8586 
8587  case 242:
8588 #line 2819 "Gmsh.y"
8589  {
8590  int t = (int)(yyvsp[(4) - (14)].d);
8591  if (gLevelset::find(t))
8592  {
8593  yymsg(0, "Levelset %d already exists", t);
8594  }
8595  else
8596  {
8597  double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
8598  double n[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
8599  gLevelset *ls = new gLevelsetPlane(pt, n, t);
8600  gLevelset::add(ls);
8601  }
8602  List_Delete((yyvsp[(12) - (14)].l));
8603  ;
8604  }
8605  break;
8606 
8607  case 243:
8608 #line 2834 "Gmsh.y"
8609  {
8610  int t = (int)(yyvsp[(4) - (16)].d);
8611  if (gLevelset::find(t))
8612  {
8613  yymsg(0, "Levelset %d already exists", t);
8614  }
8615  else
8616  {
8617  double pt1[3] = {(yyvsp[(8) - (16)].v)[0], (yyvsp[(8) - (16)].v)[1], (yyvsp[(8) - (16)].v)[2]};
8618  double pt2[3] = {(yyvsp[(10) - (16)].v)[0], (yyvsp[(10) - (16)].v)[1], (yyvsp[(10) - (16)].v)[2]};
8619  double pt3[3] = {(yyvsp[(12) - (16)].v)[0], (yyvsp[(12) - (16)].v)[1], (yyvsp[(12) - (16)].v)[2]};
8620  gLevelset *ls = new gLevelsetPlane(pt1, pt2, pt3, t);
8621  gLevelset::add(ls);
8622  }
8623  List_Delete((yyvsp[(14) - (16)].l));
8624  ;
8625  }
8626  break;
8627 
8628  case 244:
8629 #line 2849 "Gmsh.y"
8630  {
8631  if (List_Nbr((yyvsp[(10) - (12)].l)) == 1)
8632  {
8633  int t = (int)(yyvsp[(4) - (12)].d);
8634  if (gLevelset::find(t))
8635  {
8636  yymsg(0, "Levelset %d already exists", t);
8637  }
8638  else
8639  {
8640  double d;
8641  List_Read((yyvsp[(10) - (12)].l), 0, &d);
8642  gLevelset *ls = new gLevelsetSphere((yyvsp[(8) - (12)].v)[0], (yyvsp[(8) - (12)].v)[1],
8643  (yyvsp[(8) - (12)].v)[2], d, t);
8644  gLevelset::add(ls);
8645  }
8646  }
8647  else
8648  yymsg(0, "Wrong number of arguments for levelset definition");
8649  List_Delete((yyvsp[(10) - (12)].l));
8650  ;
8651  }
8652  break;
8653 
8654  case 245:
8655 #line 2868 "Gmsh.y"
8656  {
8657  if (List_Nbr((yyvsp[(12) - (14)].l)) == 1)
8658  {
8659  int t = (int)(yyvsp[(4) - (14)].d);
8660  if (gLevelset::find(t))
8661  {
8662  yymsg(0, "Levelset %d already exists", t);
8663  }
8664  else
8665  {
8666  double d;
8667  List_Read((yyvsp[(12) - (14)].l), 0, &d);
8668  double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
8669  double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
8670  gLevelset *ls = new gLevelsetGenCylinder(pt, dir, d, t);
8671  gLevelset::add(ls);
8672  }
8673  }
8674  else if (List_Nbr((yyvsp[(12) - (14)].l)) == 2)
8675  {
8676  int t = (int)(yyvsp[(4) - (14)].d);
8677  if (gLevelset::find(t))
8678  {
8679  yymsg(0, "Levelset %d already exists", t);
8680  }
8681  else
8682  {
8683  double d[2];
8684  for (int i = 0; i < 2; i++)
8685  List_Read((yyvsp[(12) - (14)].l), i, &d[i]);
8686  double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
8687  double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
8688  gLevelset *ls = new gLevelsetCylinder(pt, dir, d[0], d[1], t);
8689  gLevelset::add(ls);
8690  }
8691  }
8692  else if (List_Nbr((yyvsp[(12) - (14)].l)) == 3)
8693  {
8694  int t = (int)(yyvsp[(4) - (14)].d);
8695  if (gLevelset::find(t))
8696  {
8697  yymsg(0, "Levelset %d already exists", t);
8698  }
8699  else
8700  {
8701  double d[3];
8702  for (int i = 0; i < 3; i++)
8703  List_Read((yyvsp[(12) - (14)].l), i, &d[i]);
8704  double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
8705  double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
8706  gLevelset *ls = new gLevelsetCylinder(pt, dir, d[0], d[1], d[2], t);
8707  gLevelset::add(ls);
8708  }
8709  }
8710  else
8711  yymsg(0, "Wrong number of arguments for levelset definition");
8712  List_Delete((yyvsp[(12) - (14)].l));
8713  ;
8714  }
8715  break;
8716 
8717  case 246:
8718 #line 2919 "Gmsh.y"
8719  {
8720  if (List_Nbr((yyvsp[(12) - (14)].l)) == 1)
8721  {
8722  int t = (int)(yyvsp[(4) - (14)].d);
8723  if (gLevelset::find(t))
8724  {
8725  yymsg(0, "Levelset %d already exists", t);
8726  }
8727  else
8728  {
8729  double d;
8730  List_Read((yyvsp[(12) - (14)].l), 0, &d);
8731  double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
8732  double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
8733  gLevelset *ls = new gLevelsetCone(pt, dir, d, t);
8734  gLevelset::add(ls);
8735  }
8736  }
8737  else
8738  yymsg(0, "Wrong number of arguments for levelset definition");
8739  List_Delete((yyvsp[(12) - (14)].l));
8740  ;
8741  }
8742  break;
8743 
8744  case 247:
8745 #line 2940 "Gmsh.y"
8746  {
8747  if (List_Nbr((yyvsp[(12) - (14)].l)) == 3)
8748  {
8749  int t = (int)(yyvsp[(4) - (14)].d);
8750  if (gLevelset::find(t))
8751  {
8752  yymsg(0, "Levelset %d already exists", t);
8753  }
8754  else
8755  {
8756  double d[3];
8757  for (int i = 0; i < 3; i++)
8758  List_Read((yyvsp[(12) - (14)].l), i, &d[i]);
8759  double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
8760  double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
8761  gLevelset *ls = new gLevelsetEllipsoid(pt, dir, d[0], d[1], d[2], t);
8762  gLevelset::add(ls);
8763  }
8764  }
8765  else
8766  yymsg(0, "Wrong number of arguments for levelset definition");
8767  List_Delete((yyvsp[(12) - (14)].l));
8768  ;
8769  }
8770  break;
8771 
8772  case 248:
8773 #line 2962 "Gmsh.y"
8774  {
8775  if (List_Nbr((yyvsp[(12) - (14)].l)) == 5)
8776  {
8777  int t = (int)(yyvsp[(4) - (14)].d);
8778  if (gLevelset::find(t))
8779  {
8780  yymsg(0, "Levelset %d already exists", t);
8781  }
8782  else
8783  {
8784  double d[5];
8785  for (int i = 0; i < 5; i++)
8786  List_Read((yyvsp[(12) - (14)].l), i, &d[i]);
8787  double pt[3] = {(yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2]};
8788  double dir[3] = {(yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2]};
8789  gLevelset *ls = new gLevelsetGeneralQuadric(pt, dir, d[0], d[1], d[2], d[3], d[4], t);
8790  gLevelset::add(ls);
8791  }
8792  }
8793  else
8794  yymsg(0, "Wrong number of arguments for levelset definition");
8795  List_Delete((yyvsp[(12) - (14)].l));
8796  ;
8797  }
8798  break;
8799 
8800  case 249:
8801 #line 2984 "Gmsh.y"
8802  {
8803  if (!strcmp((yyvsp[(2) - (8)].c), "Union"))
8804  {
8805  int t = (int)(yyvsp[(4) - (8)].d);
8806  if (gLevelset::find(t))
8807  {
8808  yymsg(0, "Levelset %d already exists", t);
8809  }
8810  else
8811  {
8812  std::vector<gLevelset *> vl;
8813  for (int i = 0; i < List_Nbr((yyvsp[(7) - (8)].l)); i++)
8814  {
8815  double d;
8816  List_Read((yyvsp[(7) - (8)].l), i, &d);
8817  gLevelset *pl = gLevelset::find((int)d);
8818  if (!pl)
8819  yymsg(0, "Unknown levelset %d", (int)d);
8820  else
8821  vl.push_back(pl);
8822  }
8823  gLevelset *ls = new gLevelsetUnion(vl, true, t);
8824  gLevelset::add(ls);
8825  }
8826  }
8827  else if (!strcmp((yyvsp[(2) - (8)].c), "Intersection"))
8828  {
8829  int t = (int)(yyvsp[(4) - (8)].d);
8830  if (gLevelset::find(t))
8831  {
8832  yymsg(0, "Levelset %d already exists", t);
8833  }
8834  else
8835  {
8836  std::vector<gLevelset *> vl;
8837  for (int i = 0; i < List_Nbr((yyvsp[(7) - (8)].l)); i++)
8838  {
8839  double d;
8840  List_Read((yyvsp[(7) - (8)].l), i, &d);
8841  gLevelset *pl = gLevelset::find((int)d);
8842  if (!pl)
8843  yymsg(0, "Unknown levelset %d", (int)d);
8844  else
8845  vl.push_back(pl);
8846  }
8847  gLevelset *ls = new gLevelsetIntersection(vl, true, t);
8848  gLevelset::add(ls);
8849  }
8850  }
8851  else if (!strcmp((yyvsp[(2) - (8)].c), "Cut"))
8852  {
8853  int t = (int)(yyvsp[(4) - (8)].d);
8854  if (gLevelset::find(t))
8855  {
8856  yymsg(0, "Levelset %d already exists", t);
8857  }
8858  else
8859  {
8860  std::vector<gLevelset *> vl;
8861  for (int i = 0; i < List_Nbr((yyvsp[(7) - (8)].l)); i++)
8862  {
8863  double d;
8864  List_Read((yyvsp[(7) - (8)].l), i, &d);
8865  gLevelset *pl = gLevelset::find((int)d);
8866  if (!pl)
8867  yymsg(0, "Unknown levelset %d", (int)d);
8868  else
8869  vl.push_back(pl);
8870  }
8871  gLevelset *ls = new gLevelsetCut(vl, true, t);
8872  gLevelset::add(ls);
8873  }
8874  }
8875  else if (!strcmp((yyvsp[(2) - (8)].c), "Crack"))
8876  {
8877  int t = (int)(yyvsp[(4) - (8)].d);
8878  if (gLevelset::find(t))
8879  {
8880  yymsg(0, "Levelset %d already exists", t);
8881  }
8882  else
8883  {
8884  std::vector<gLevelset *> vl;
8885  for (int i = 0; i < List_Nbr((yyvsp[(7) - (8)].l)); i++)
8886  {
8887  double d;
8888  List_Read((yyvsp[(7) - (8)].l), i, &d);
8889  gLevelset *pl = gLevelset::find((int)d);
8890  if (!pl)
8891  yymsg(0, "Unknown levelset %d", (int)d);
8892  else
8893  vl.push_back(pl);
8894  }
8895  gLevelset *ls = new gLevelsetCrack(vl, false, t);
8896  gLevelset::add(ls);
8897  }
8898  }
8899  else if (!strcmp((yyvsp[(2) - (8)].c), "Reverse"))
8900  {
8901  int t = (int)(yyvsp[(4) - (8)].d);
8902  if (gLevelset::find(t))
8903  {
8904  yymsg(0, "Levelset %d already exists", t);
8905  }
8906  else
8907  {
8908  double d;
8909  List_Read((yyvsp[(7) - (8)].l), 0, &d);
8910  gLevelset *pl = gLevelset::find((int)d);
8911  gLevelset *ls = nullptr;
8912  if (!pl)
8913  yymsg(0, "Unknown levelset %d", (int)d);
8914  else
8915  ls = new gLevelsetReverse(pl, t);
8916  if (ls)
8917  gLevelset::add(ls);
8918  }
8919  }
8920 #if defined(HAVE_POST)
8921  else if (!strcmp((yyvsp[(2) - (8)].c), "PostView"))
8922  {
8923  int t = (int)(yyvsp[(4) - (8)].d);
8924  if (gLevelset::find(t))
8925  {
8926  yymsg(0, "Levelset %d already exists", t);
8927  }
8928  else
8929  {
8930  if (List_Nbr((yyvsp[(7) - (8)].l)) > 0)
8931  {
8932  double d;
8933  List_Read((yyvsp[(7) - (8)].l), 0, &d);
8934  gLevelset *ls = new gLevelsetPostView((int)d, t);
8935  gLevelset::add(ls);
8936  }
8937  }
8938  }
8939 #endif
8940  else
8941  yymsg(0, "Wrong number of arguments for levelset definition");
8942  Free((yyvsp[(2) - (8)].c));
8943  List_Delete((yyvsp[(7) - (8)].l));
8944  ;
8945  }
8946  break;
8947 
8948  case 250:
8949 #line 3089 "Gmsh.y"
8950  {
8951  if (!strcmp((yyvsp[(2) - (8)].c), "MathEval"))
8952  {
8953  int t = (int)(yyvsp[(4) - (8)].d);
8954  if (gLevelset::find(t))
8955  {
8956  yymsg(0, "Levelset %d already exists", t);
8957  }
8958  else
8959  {
8960  gLevelset *ls = new gLevelsetMathEval((yyvsp[(7) - (8)].c), t);
8961  gLevelset::add(ls);
8962  }
8963  }
8964  else
8965  yymsg(0, "Unknown levelset '%s'", (yyvsp[(2) - (8)].c));
8966  Free((yyvsp[(2) - (8)].c));
8967  Free((yyvsp[(7) - (8)].c));
8968  ;
8969  }
8970  break;
8971 
8972  case 251:
8973 #line 3105 "Gmsh.y"
8974  {
8975  if (!strcmp((yyvsp[(2) - (6)].c), "CutMesh"))
8976  {
8977  int t = (int)(yyvsp[(4) - (6)].d);
8978  if (gLevelset::find(t))
8979  {
8980  GModel::current()->buildCutGModel(gLevelset::find(t), true, false);
8981  }
8982  else
8983  yymsg(0, "Unknown levelset %d", t);
8984  }
8985  else if (!strcmp((yyvsp[(2) - (6)].c), "CutMeshTri"))
8986  {
8987  int t = (int)(yyvsp[(4) - (6)].d);
8988  if (gLevelset::find(t))
8989  {
8990  GModel::current()->buildCutGModel(gLevelset::find(t), true, true);
8991  }
8992  else
8993  yymsg(0, "Unknown levelset %d", t);
8994  }
8995  else if (!strcmp((yyvsp[(2) - (6)].c), "SplitMesh"))
8996  {
8997  int t = (int)(yyvsp[(4) - (6)].d);
8998  if (gLevelset::find(t))
8999  {
9000  GModel::current()->buildCutGModel(gLevelset::find(t), false, true);
9001  }
9002  else
9003  yymsg(0, "Unknown levelset %d", t);
9004  }
9005  else
9006  yymsg(0, "Unknown levelset '%s'", (yyvsp[(2) - (6)].c));
9007  Free((yyvsp[(2) - (6)].c));
9008  ;
9009  }
9010  break;
9011 
9012  case 252:
9013 #line 3140 "Gmsh.y"
9014  {
9015  std::vector<std::pair<int, int>> dimTags;
9016  ListOfShapes2VectorOfPairs((yyvsp[(3) - (4)].l), dimTags);
9017  bool changed = false;
9018  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
9019  {
9020  GModel::current()->getOCCInternals()->remove(dimTags);
9021  changed = GModel::current()->getOCCInternals()->getChanged();
9022  if (changed)
9024  }
9025  else
9026  {
9027  GModel::current()->getGEOInternals()->remove(dimTags);
9028  changed = GModel::current()->getGEOInternals()->getChanged();
9029  if (changed)
9031  }
9032  if (!changed)
9033  {
9034  std::vector<GEntity *> removed;
9035  GModel::current()->remove(dimTags, removed);
9036  Msg::Debug("Destroying %lu entities in model", removed.size());
9037  for (std::size_t i = 0; i < removed.size(); i++)
9038  delete removed[i];
9039  }
9040  List_Delete((yyvsp[(3) - (4)].l));
9041  ;
9042  }
9043  break;
9044 
9045  case 253:
9046 #line 3165 "Gmsh.y"
9047  {
9048  std::vector<std::pair<int, int>> dimTags;
9049  ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags);
9050  bool changed = false;
9051  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
9052  {
9053  GModel::current()->getOCCInternals()->remove(dimTags, true);
9054  changed = GModel::current()->getOCCInternals()->getChanged();
9055  if (changed)
9057  }
9058  else
9059  {
9060  GModel::current()->getGEOInternals()->remove(dimTags, true);
9061  changed = GModel::current()->getGEOInternals()->getChanged();
9062  if (changed)
9064  }
9065  if (!changed)
9066  {
9067  std::vector<GEntity *> removed;
9068  GModel::current()->remove(dimTags, removed, true);
9069  Msg::Debug("Destroying %lu entities in model", removed.size());
9070  for (std::size_t i = 0; i < removed.size(); i++)
9071  delete removed[i];
9072  }
9073  List_Delete((yyvsp[(4) - (5)].l));
9074  ;
9075  }
9076  break;
9077 
9078  case 254:
9079 #line 3190 "Gmsh.y"
9080  {
9081  std::vector<std::pair<int, int>> dimTags;
9082  ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags);
9083  if (!strcmp((yyvsp[(2) - (5)].c), "Embedded"))
9084  {
9085  removeEmbedded(dimTags, -1);
9086  }
9087  else
9088  yymsg(0, "Unknown command 'Delete %s'", (yyvsp[(2) - (5)].c));
9089  List_Delete((yyvsp[(4) - (5)].l));
9090  Free((yyvsp[(2) - (5)].c));
9091  ;
9092  }
9093  break;
9094 
9095  case 255:
9096 #line 3202 "Gmsh.y"
9097  {
9098 #if defined(HAVE_MESH)
9099  GModel::current()->getFields()->deleteField((int)(yyvsp[(4) - (6)].d));
9100 #endif
9101  ;
9102  }
9103  break;
9104 
9105  case 256:
9106 #line 3208 "Gmsh.y"
9107  {
9108 #if defined(HAVE_POST)
9109  if (!strcmp((yyvsp[(2) - (6)].c), "View"))
9110  {
9111  int index = (int)(yyvsp[(4) - (6)].d);
9112  if (index >= 0 && index < (int)PView::list.size())
9113  delete PView::list[index];
9114  else
9115  yymsg(0, "Unknown view %d", index);
9116  }
9117  else
9118  yymsg(0, "Unknown command 'Delete %s'", (yyvsp[(2) - (6)].c));
9119 #endif
9120  Free((yyvsp[(2) - (6)].c));
9121  ;
9122  }
9123  break;
9124 
9125  case 257:
9126 #line 3223 "Gmsh.y"
9127  {
9128  if (!strcmp((yyvsp[(2) - (3)].c), "All"))
9129  {
9130  ClearProject();
9131  }
9132  else if (!strcmp((yyvsp[(2) - (3)].c), "Meshes"))
9133  {
9135  }
9136  else if (!strcmp((yyvsp[(2) - (3)].c), "Model"))
9137  {
9138  GModel::current()->destroy(true); // destroy, but keep name/filename
9140  }
9141  else if (!strcmp((yyvsp[(2) - (3)].c), "Physicals"))
9142  {
9145  }
9146  else if (!strcmp((yyvsp[(2) - (3)].c), "Variables"))
9147  {
9148  gmsh_yysymbols.clear();
9149  }
9150  else if (!strcmp((yyvsp[(2) - (3)].c), "Options"))
9151  {
9152  ReInitOptions(0);
9153  InitOptionsGUI(0);
9154  }
9155  else
9156  {
9157  if (gmsh_yysymbols.count((yyvsp[(2) - (3)].c)))
9158  gmsh_yysymbols.erase((yyvsp[(2) - (3)].c));
9159  else
9160  yymsg(0, "Unknown object or expression to delete '%s'", (yyvsp[(2) - (3)].c));
9161  }
9162  Free((yyvsp[(2) - (3)].c));
9163  ;
9164  }
9165  break;
9166 
9167  case 258:
9168 #line 3254 "Gmsh.y"
9169  {
9170 #if defined(HAVE_POST)
9171  if (!strcmp((yyvsp[(2) - (4)].c), "Empty") && !strcmp((yyvsp[(3) - (4)].c), "Views"))
9172  {
9173  for (int i = PView::list.size() - 1; i >= 0; i--)
9174  if (PView::list[i]->getData()->empty())
9175  delete PView::list[i];
9176  }
9177  else
9178  yymsg(0, "Unknown command 'Delete %s %s'", (yyvsp[(2) - (4)].c), (yyvsp[(3) - (4)].c));
9179 #endif
9180  Free((yyvsp[(2) - (4)].c));
9181  Free((yyvsp[(3) - (4)].c));
9182  ;
9183  }
9184  break;
9185 
9186  case 259:
9187 #line 3266 "Gmsh.y"
9188  {
9190  ;
9191  }
9192  break;
9193 
9194  case 260:
9195 #line 3275 "Gmsh.y"
9196  {
9197  std::vector<std::pair<int, int>> dimTags;
9198  ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags);
9199  setColor(dimTags, (yyvsp[(2) - (5)].u), false);
9200  List_Delete((yyvsp[(4) - (5)].l));
9201  ;
9202  }
9203  break;
9204 
9205  case 261:
9206 #line 3282 "Gmsh.y"
9207  {
9208  std::vector<std::pair<int, int>> dimTags;
9209  ListOfShapes2VectorOfPairs((yyvsp[(5) - (6)].l), dimTags);
9210  setColor(dimTags, (yyvsp[(3) - (6)].u), true);
9211  List_Delete((yyvsp[(5) - (6)].l));
9212  ;
9213  }
9214  break;
9215 
9216  case 262:
9217 #line 3294 "Gmsh.y"
9218  {
9219  yymsg(2, "'SetPartition' command is deprecated");
9220  std::vector<std::pair<int, int>> dimTags;
9221  ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags);
9222  for (std::size_t i = 0; i < dimTags.size(); i++)
9223  {
9224  GEntity *ge = GModel::current()->getEntityByTag(dimTags[i].first, dimTags[i].second);
9225  if (ge)
9226  {
9227  for (std::size_t j = 0; j < ge->getNumMeshElements(); j++)
9228  ge->getMeshElement(j)->setPartition((int)(yyvsp[(2) - (5)].d));
9229  }
9230  }
9231  List_Delete((yyvsp[(4) - (5)].l));
9232  ;
9233  }
9234  break;
9235 
9236  case 263:
9237 #line 3314 "Gmsh.y"
9238  {
9239  setVisibility(-1, 1, false);
9240  ;
9241  }
9242  break;
9243 
9244  case 264:
9245 #line 3318 "Gmsh.y"
9246  {
9247  setVisibility(-1, 1, false);
9248  Free((yyvsp[(2) - (3)].c));
9249  ;
9250  }
9251  break;
9252 
9253  case 265:
9254 #line 3323 "Gmsh.y"
9255  {
9256  setVisibility(-1, 0, false);
9257  ;
9258  }
9259  break;
9260 
9261  case 266:
9262 #line 3327 "Gmsh.y"
9263  {
9264  setVisibility(-1, 0, false);
9265  Free((yyvsp[(2) - (3)].c));
9266  ;
9267  }
9268  break;
9269 
9270  case 267:
9271 #line 3332 "Gmsh.y"
9272  {
9273  std::vector<std::pair<int, int>> dimTags;
9274  ListOfShapes2VectorOfPairs((yyvsp[(3) - (4)].l), dimTags);
9275  setVisibility(dimTags, 1, false);
9276  List_Delete((yyvsp[(3) - (4)].l));
9277  ;
9278  }
9279  break;
9280 
9281  case 268:
9282 #line 3339 "Gmsh.y"
9283  {
9284  std::vector<std::pair<int, int>> dimTags;
9285  ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags);
9286  setVisibility(dimTags, 1, true);
9287  List_Delete((yyvsp[(4) - (5)].l));
9288  ;
9289  }
9290  break;
9291 
9292  case 269:
9293 #line 3346 "Gmsh.y"
9294  {
9295  std::vector<std::pair<int, int>> dimTags;
9296  ListOfShapes2VectorOfPairs((yyvsp[(3) - (4)].l), dimTags);
9297  setVisibility(dimTags, 0, false);
9298  List_Delete((yyvsp[(3) - (4)].l));
9299  ;
9300  }
9301  break;
9302 
9303  case 270:
9304 #line 3353 "Gmsh.y"
9305  {
9306  std::vector<std::pair<int, int>> dimTags;
9307  ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), dimTags);
9308  setVisibility(dimTags, 0, true);
9309  List_Delete((yyvsp[(4) - (5)].l));
9310  ;
9311  }
9312  break;
9313 
9314  case 271:
9315 #line 3365 "Gmsh.y"
9316  {
9317  if (!strcmp((yyvsp[(1) - (3)].c), "Include"))
9318  {
9319  std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c));
9320  Msg::StatusBar(true, "Reading '%s'...", tmp.c_str());
9321  // Warning: we explicitly ask ParseFile not to fclose() the included
9322  // file, in order to allow user functions definitions in these files.
9323  // The files will be closed in the next time OpenFile terminates. If
9324  // you need to include many many files and don't have functions in
9325  // the files, use "Merge" instead of "Include", as some OSes limit
9326  // the number of files a process can open simultaneously. (A better
9327  // solution would be to modify FunctionManager to reopen the files
9328  // instead of using the FILE pointer...)
9329  ParseFile(tmp, false, true);
9330  SetBoundingBox();
9331  Msg::StatusBar(true, "Done reading '%s'", tmp.c_str());
9332  }
9333  else if (!strcmp((yyvsp[(1) - (3)].c), "Print"))
9334  {
9335  // make sure we have the latest data from CAD internals in GModel (fixes
9336  // bug where we would have no geometry in the picture if the print
9337  // command is in the same file as the geometry)
9338  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
9340  if (GModel::current()->getGEOInternals()->getChanged())
9342  std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c));
9343  CreateOutputFile(tmp, CTX::instance()->print.fileFormat);
9344  }
9345  else if (!strcmp((yyvsp[(1) - (3)].c), "Save"))
9346  {
9347  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
9349  if (GModel::current()->getGEOInternals()->getChanged())
9351  std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c));
9353  }
9354  else if (!strcmp((yyvsp[(1) - (3)].c), "Merge") || !strcmp((yyvsp[(1) - (3)].c), "MergeWithBoundingBox"))
9355  {
9356  // sync CAD internals here, so that if we e.g. import a STEP file, we
9357  // have the correct entity tags and the numberings don't clash
9358  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
9360  if (GModel::current()->getGEOInternals()->getChanged())
9362  std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c));
9363  MergeFile(tmp, true);
9364  }
9365  else if (!strcmp((yyvsp[(1) - (3)].c), "NonBlockingSystemCall"))
9366  {
9367  SystemCall((yyvsp[(2) - (3)].c));
9368  }
9369  else if (!strcmp((yyvsp[(1) - (3)].c), "System") || !strcmp((yyvsp[(1) - (3)].c), "SystemCall"))
9370  {
9371  SystemCall((yyvsp[(2) - (3)].c), true);
9372  }
9373  else if (!strcmp((yyvsp[(1) - (3)].c), "SetName"))
9374  {
9375  GModel::current()->setName((yyvsp[(2) - (3)].c));
9376  }
9377  else if (!strcmp((yyvsp[(1) - (3)].c), "CreateDir"))
9378  {
9379  std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c));
9380  CreateSingleDir(tmp);
9381  }
9382  else if (!strcmp((yyvsp[(1) - (3)].c), "OnelabRun"))
9383  {
9384  Msg::RunOnelabClient((yyvsp[(2) - (3)].c));
9385  }
9386  else if (!strcmp((yyvsp[(1) - (3)].c), "OptimizeMesh"))
9387  {
9388  GModel::current()->optimizeMesh((yyvsp[(2) - (3)].c));
9389  }
9390  else
9391  {
9392  yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (3)].c));
9393  }
9394  Free((yyvsp[(1) - (3)].c));
9395  Free((yyvsp[(2) - (3)].c));
9396  ;
9397  }
9398  break;
9399 
9400  case 272:
9401 #line 3438 "Gmsh.y"
9402  {
9403  int n = List_Nbr((yyvsp[(3) - (5)].l));
9404  if (n == 1)
9405  {
9406  char *s;
9407  List_Read((yyvsp[(3) - (5)].l), 0, &s);
9409  Free(s);
9410  }
9411  else if (n == 2)
9412  {
9413  char *s, *t;
9414  List_Read((yyvsp[(3) - (5)].l), 0, &s);
9415  List_Read((yyvsp[(3) - (5)].l), 1, &t);
9416  Msg::RunOnelabClient(s, t);
9417  Free(s);
9418  Free(t);
9419  }
9420  else
9421  {
9422  yymsg(0, "OnelabRun takes one or two arguments");
9423  }
9424  List_Delete((yyvsp[(3) - (5)].l));
9425  ;
9426  }
9427  break;
9428 
9429  case 273:
9430 #line 3456 "Gmsh.y"
9431  {
9432 #if defined(HAVE_POST)
9433  if (!strcmp((yyvsp[(2) - (7)].c), "View"))
9434  {
9435  int index = (int)(yyvsp[(4) - (7)].d);
9436  if (index >= 0 && index < (int)PView::list.size())
9437  {
9438  if (!strcmp((yyvsp[(1) - (7)].c), "Save"))
9439  {
9440  std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(6) - (7)].c));
9441  PView::list[index]->write(tmp, CTX::instance()->post.fileFormat);
9442  }
9443  else if (!strcmp((yyvsp[(1) - (7)].c), "SendToServer"))
9444  {
9445  PView::list[index]->sendToServer((yyvsp[(6) - (7)].c));
9446  }
9447  else
9448  {
9449  yymsg(0, "Unknown operation '%s' on view %d", (yyvsp[(1) - (7)].c), index);
9450  }
9451  }
9452  else
9453  yymsg(0, "Unknown view %d", index);
9454  }
9455  else
9456  yymsg(0, "Unknown command '%s %s'", (yyvsp[(1) - (7)].c), (yyvsp[(2) - (7)].c));
9457 #endif
9458  Free((yyvsp[(1) - (7)].c));
9459  Free((yyvsp[(2) - (7)].c));
9460  Free((yyvsp[(6) - (7)].c));
9461  ;
9462  }
9463  break;
9464 
9465  case 274:
9466 #line 3481 "Gmsh.y"
9467  {
9468 #if defined(HAVE_POST) && defined(HAVE_MESH)
9469  if (!strcmp((yyvsp[(1) - (7)].c), "Background") && !strcmp((yyvsp[(2) - (7)].c), "Mesh") &&
9470  !strcmp((yyvsp[(3) - (7)].c), "View"))
9471  {
9472  int index = (int)(yyvsp[(5) - (7)].d);
9473  if (index >= 0 && index < (int)PView::list.size())
9475  else
9476  yymsg(0, "Unknown view %d", index);
9477  }
9478  else
9479  yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (7)].c));
9480 #endif
9481  Free((yyvsp[(1) - (7)].c));
9482  Free((yyvsp[(2) - (7)].c));
9483  Free((yyvsp[(3) - (7)].c));
9484  ;
9485  }
9486  break;
9487 
9488  case 275:
9489 #line 3496 "Gmsh.y"
9490  {
9491  if (!strcmp((yyvsp[(1) - (3)].c), "Sleep"))
9492  {
9493  SleepInSeconds((yyvsp[(2) - (3)].d));
9494  }
9495  else if (!strcmp((yyvsp[(1) - (3)].c), "Remesh"))
9496  {
9497  yymsg(0, "Surface remeshing must be reinterfaced");
9498  }
9499  else if (!strcmp((yyvsp[(1) - (3)].c), "Mesh"))
9500  {
9501  int lock = CTX::instance()->lock;
9502  CTX::instance()->lock = 0;
9503  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
9505  if (GModel::current()->getGEOInternals()->getChanged())
9507  GModel::current()->mesh((int)(yyvsp[(2) - (3)].d));
9508  CTX::instance()->lock = lock;
9509  }
9510  else if (!strcmp((yyvsp[(1) - (3)].c), "SetOrder"))
9511  {
9512 #if defined(HAVE_MESH)
9513  SetOrderN(GModel::current(), (yyvsp[(2) - (3)].d), CTX::instance()->mesh.secondOrderLinear,
9515 #endif
9516  }
9517  else if (!strcmp((yyvsp[(1) - (3)].c), "PartitionMesh"))
9518  {
9519  GModel::current()->partitionMesh((yyvsp[(2) - (3)].d));
9520  }
9521  else if (!strcmp((yyvsp[(1) - (3)].c), "SetCurrentWindow"))
9522  {
9523 #if defined(HAVE_FLTK)
9524  FlGui::instance()->setCurrentOpenglWindow((int)(yyvsp[(2) - (3)].d));
9525 #endif
9526  }
9527  else if (!strcmp((yyvsp[(1) - (3)].c), "SplitCurrentWindowHorizontal"))
9528  {
9529 #if defined(HAVE_FLTK)
9530  FlGui::instance()->splitCurrentOpenglWindow('h', (yyvsp[(2) - (3)].d));
9531 #endif
9532  }
9533  else if (!strcmp((yyvsp[(1) - (3)].c), "SplitCurrentWindowVertical"))
9534  {
9535 #if defined(HAVE_FLTK)
9536  FlGui::instance()->splitCurrentOpenglWindow('v', (yyvsp[(2) - (3)].d));
9537 #endif
9538  }
9539  else
9540  {
9541  yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (3)].c));
9542  }
9543  Free((yyvsp[(1) - (3)].c));
9544  ;
9545  }
9546  break;
9547 
9548  case 276:
9549 #line 3545 "Gmsh.y"
9550  {
9551 #if defined(HAVE_FLTK)
9552  FlGui::instance()->splitCurrentOpenglWindow('u');
9553 #endif
9554  ;
9555  }
9556  break;
9557 
9558  case 277:
9559 #line 3551 "Gmsh.y"
9560  {
9561 #if defined(HAVE_PLUGINS)
9562  try
9563  {
9564  PluginManager::instance()->action((yyvsp[(3) - (7)].c), (yyvsp[(6) - (7)].c), 0);
9565  }
9566  catch (...)
9567  {
9568  yymsg(0, "Unknown action '%s' or plugin '%s'", (yyvsp[(6) - (7)].c), (yyvsp[(3) - (7)].c));
9569  }
9570 #endif
9571  Free((yyvsp[(3) - (7)].c));
9572  Free((yyvsp[(6) - (7)].c));
9573  ;
9574  }
9575  break;
9576 
9577  case 278:
9578 #line 3563 "Gmsh.y"
9579  {
9580 #if defined(HAVE_POST)
9581  if (!strcmp((yyvsp[(2) - (3)].c), "ElementsFromAllViews"))
9583  else if (!strcmp((yyvsp[(2) - (3)].c), "ElementsFromVisibleViews"))
9585  else if (!strcmp((yyvsp[(2) - (3)].c), "ElementsByViewName"))
9587  else if (!strcmp((yyvsp[(2) - (3)].c), "TimeStepsFromAllViews"))
9589  else if (!strcmp((yyvsp[(2) - (3)].c), "TimeStepsFromVisibleViews"))
9591  else if (!strcmp((yyvsp[(2) - (3)].c), "TimeStepsByViewName"))
9593  else if (!strcmp((yyvsp[(2) - (3)].c), "Views"))
9595  else if (!strcmp((yyvsp[(2) - (3)].c), "TimeSteps"))
9597  else
9598  yymsg(0, "Unknown 'Combine' command");
9599 #endif
9600  Free((yyvsp[(2) - (3)].c));
9601  ;
9602  }
9603  break;
9604 
9605  case 279:
9606 #line 3595 "Gmsh.y"
9607  {
9608  Msg::Exit(0);
9609  ;
9610  }
9611  break;
9612 
9613  case 280:
9614 #line 3599 "Gmsh.y"
9615  {
9616  gmsh_yyerrorstate = 999; // this will be checked when yyparse returns
9617  YYABORT;
9618  ;
9619  }
9620  break;
9621 
9622  case 281:
9623 #line 3604 "Gmsh.y"
9624  {
9625  // force sync
9626  if (GModel::current()->getOCCInternals())
9629  ;
9630  }
9631  break;
9632 
9633  case 282:
9634 #line 3611 "Gmsh.y"
9635  {
9636  new GModel();
9637  GModel::current(GModel::list.size() - 1);
9638  ;
9639  }
9640  break;
9641 
9642  case 283:
9643 #line 3616 "Gmsh.y"
9644  {
9645  CTX::instance()->forcedBBox = 0;
9646  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
9648  if (GModel::current()->getGEOInternals()->getChanged())
9650  SetBoundingBox();
9651  ;
9652  }
9653  break;
9654 
9655  case 284:
9656 #line 3626 "Gmsh.y"
9657  {
9658  CTX::instance()->forcedBBox = 1;
9659  SetBoundingBox((yyvsp[(3) - (15)].d), (yyvsp[(5) - (15)].d), (yyvsp[(7) - (15)].d), (yyvsp[(9) - (15)].d),
9660  (yyvsp[(11) - (15)].d), (yyvsp[(13) - (15)].d));
9661  ;
9662  }
9663  break;
9664 
9665  case 285:
9666 #line 3631 "Gmsh.y"
9667  {
9668 #if defined(HAVE_OPENGL)
9669  drawContext::global()->draw(false); // not rate limited
9670 #endif
9671  ;
9672  }
9673  break;
9674 
9675  case 286:
9676 #line 3637 "Gmsh.y"
9677  {
9678 #if defined(HAVE_OPENGL)
9680  for (std::size_t index = 0; index < PView::list.size(); index++)
9681  PView::list[index]->setChanged(true);
9682 #endif
9683  ;
9684  }
9685  break;
9686 
9687  case 287:
9688 #line 3645 "Gmsh.y"
9689  {
9690  if ((yyvsp[(3) - (7)].d))
9691  {
9694  }
9696  if ((yyvsp[(5) - (7)].d))
9697  {
9699  };
9700  }
9701  break;
9702 
9703  case 288:
9704 #line 3656 "Gmsh.y"
9705  {
9709  // Warning: this clears GEO_Internals!
9711  ;
9712  }
9713  break;
9714 
9715  case 289:
9716 #line 3664 "Gmsh.y"
9717  {
9718  GModel::current()->classifySurfaces((yyvsp[(3) - (9)].d), (yyvsp[(5) - (9)].d), (yyvsp[(7) - (9)].d), M_PI);
9719  ;
9720  }
9721  break;
9722 
9723  case 290:
9724 #line 3668 "Gmsh.y"
9725  {
9726  GModel::current()->classifySurfaces((yyvsp[(3) - (11)].d), (yyvsp[(5) - (11)].d), (yyvsp[(7) - (11)].d),
9727  (yyvsp[(9) - (11)].d));
9728  ;
9729  }
9730  break;
9731 
9732  case 291:
9733 #line 3672 "Gmsh.y"
9734  {
9736  ;
9737  }
9738  break;
9739 
9740  case 292:
9741 #line 3676 "Gmsh.y"
9742  {
9743  std::vector<std::pair<int, int>> dimTags;
9744  ListOfShapes2VectorOfPairs((yyvsp[(3) - (4)].l), dimTags);
9746  List_Delete((yyvsp[(3) - (4)].l));
9747  ;
9748  }
9749  break;
9750 
9751  case 293:
9752 #line 3683 "Gmsh.y"
9753  {
9755  ;
9756  }
9757  break;
9758 
9759  case 294:
9760 #line 3687 "Gmsh.y"
9761  {
9763  ;
9764  }
9765  break;
9766 
9767  case 295:
9768 #line 3691 "Gmsh.y"
9769  {
9770  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
9772  if (GModel::current()->getGEOInternals()->getChanged())
9774  GModel::current()->refineMesh(CTX::instance()->mesh.secondOrderLinear, CTX::instance()->mesh.algoSubdivide == 1,
9776  CTX::instance()->mesh.algoSubdivide == 3);
9777  ;
9778  }
9779  break;
9780 
9781  case 296:
9782 #line 3703 "Gmsh.y"
9783  {
9784  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
9786  if (GModel::current()->getGEOInternals()->getChanged())
9789  ;
9790  }
9791  break;
9792 
9793  case 297:
9794 #line 3713 "Gmsh.y"
9795  {
9796  int lock = CTX::instance()->lock;
9797  CTX::instance()->lock = 0;
9798  std::vector<int> technique;
9799  for (int i = 0; i < List_Nbr((yyvsp[(3) - (16)].l)); i++)
9800  {
9801  double d;
9802  List_Read((yyvsp[(3) - (16)].l), i, &d);
9803  technique.push_back((int)d);
9804  }
9805  if (technique.empty())
9806  {
9807  yymsg(0, "Need at least one adaptation technique");
9808  }
9809  else
9810  {
9811  std::vector<simpleFunction<double> *> f;
9812  for (int i = 0; i < List_Nbr((yyvsp[(6) - (16)].l)); i++)
9813  {
9814  double d;
9815  List_Read((yyvsp[(6) - (16)].l), i, &d);
9816  gLevelset *l = gLevelset::find((int)d);
9817  if (l)
9818  f.push_back(l);
9819  else
9820  yymsg(0, "Unknown levelset %d", (int)d);
9821  }
9822  if (technique.size() != f.size())
9823  {
9824  yymsg(0, "Number of techniques != number of levelsets");
9825  }
9826  else
9827  {
9828  if (List_Nbr((yyvsp[(9) - (16)].l)) != (int)f.size())
9829  {
9830  yymsg(0, "Number of parameters != number of levelsets");
9831  }
9832  else
9833  {
9834  std::vector<std::vector<double>> parameters;
9835  parameters.resize(List_Nbr((yyvsp[(9) - (16)].l)));
9836  for (int i = 0; i < List_Nbr((yyvsp[(9) - (16)].l)); i++)
9837  {
9838  List_T *l = *(List_T **)List_Pointer((yyvsp[(9) - (16)].l), i);
9839  for (int j = 0; j < List_Nbr(l); j++)
9840  {
9841  double d;
9842  List_Read(l, j, &d);
9843  parameters[i].push_back(d);
9844  }
9845  }
9846  int niter = (int)(yyvsp[(12) - (16)].d);
9847  bool meshAll = ((yyvsp[(14) - (16)].d) == 0) ? false : true;
9852  GModel::current()->adaptMesh(technique, f, parameters, niter, meshAll);
9853  }
9854  }
9855  }
9856  List_Delete((yyvsp[(3) - (16)].l));
9857  List_Delete((yyvsp[(6) - (16)].l));
9858  for (int i = 0; i < List_Nbr((yyvsp[(9) - (16)].l)); i++)
9859  List_Delete(*(List_T **)List_Pointer((yyvsp[(9) - (16)].l), i));
9860  List_Delete((yyvsp[(9) - (16)].l));
9861  CTX::instance()->lock = lock;
9862  ;
9863  }
9864  break;
9865 
9866  case 298:
9867 #line 3771 "Gmsh.y"
9868  {
9869  std::vector<double> affineTransform;
9870  ListOfDouble2Vector((yyvsp[(3) - (5)].l), affineTransform);
9871  if (affineTransform.size() >= 12)
9872  {
9873  std::vector<GEntity *> entities;
9874  GModel::current()->getEntities(entities);
9875  for (auto e : entities)
9876  {
9877  for (std::size_t j = 0; j < e->getNumMeshVertices(); j++)
9878  {
9879  MVertex *v = e->getMeshVertex(j);
9880  SPoint3 pt = v->point();
9881  pt.transform(affineTransform);
9882  v->setXYZ(pt);
9883  }
9884  }
9885  }
9886  else
9887  yymsg(0, "Affine transform matrix requires at least 12 entries");
9888  List_Delete((yyvsp[(3) - (5)].l));
9889  ;
9890  }
9891  break;
9892 
9893  case 299:
9894 #line 3791 "Gmsh.y"
9895  {
9896  std::vector<double> affineTransform;
9897  ListOfDouble2Vector((yyvsp[(3) - (8)].l), affineTransform);
9898  std::vector<std::pair<int, int>> dimTags;
9899  ListOfShapes2VectorOfPairs((yyvsp[(6) - (8)].l), dimTags);
9900  for (std::size_t i = 0; i < dimTags.size(); i++)
9901  {
9902  GEntity *e = GModel::current()->getEntityByTag(dimTags[i].first, dimTags[i].second);
9903  if (e)
9904  {
9905  for (std::size_t j = 0; j < e->getNumMeshVertices(); j++)
9906  {
9907  MVertex *v = e->getMeshVertex(j);
9908  SPoint3 pt = v->point();
9909  pt.transform(affineTransform);
9910  v->setXYZ(pt);
9911  }
9912  }
9913  }
9914  List_Delete((yyvsp[(3) - (8)].l));
9915  List_Delete((yyvsp[(6) - (8)].l));
9916  ;
9917  }
9918  break;
9919 
9920  case 300:
9921 #line 3817 "Gmsh.y"
9922  {
9923 #if defined(HAVE_POPPLER)
9924  std::vector<int> is;
9925  for (int i = 0; i < List_Nbr((yyvsp[(4) - (11)].l)); i++)
9926  {
9927  double d;
9928  List_Read((yyvsp[(4) - (11)].l), i, &d);
9929  is.push_back((int)d);
9930  }
9931  gmshPopplerWrapper::instance()->setMacroForPages(is, (yyvsp[(7) - (11)].c), (yyvsp[(9) - (11)].c));
9932 #endif
9933  ;
9934  }
9935  break;
9936 
9937  case 301:
9938 #line 3833 "Gmsh.y"
9939  {
9940  LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (6)].d);
9941  LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (6)].d);
9946  if ((yyvsp[(3) - (6)].d) > (yyvsp[(5) - (6)].d))
9947  skip("For", "EndFor");
9948  else
9949  ImbricatedLoop++;
9950  if (ImbricatedLoop > MAX_RECUR_LOOPS - 1)
9951  {
9952  yymsg(0, "Reached maximum number of imbricated loops");
9954  };
9955  }
9956  break;
9957 
9958  case 302:
9959 #line 3850 "Gmsh.y"
9960  {
9961  LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (8)].d);
9962  LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (8)].d);
9963  LoopControlVariablesTab[ImbricatedLoop][2] = (yyvsp[(7) - (8)].d);
9967  if (((yyvsp[(7) - (8)].d) > 0. && (yyvsp[(3) - (8)].d) > (yyvsp[(5) - (8)].d)) ||
9968  ((yyvsp[(7) - (8)].d) < 0. && (yyvsp[(3) - (8)].d) < (yyvsp[(5) - (8)].d)))
9969  skip("For", "EndFor");
9970  else
9971  ImbricatedLoop++;
9972  if (ImbricatedLoop > MAX_RECUR_LOOPS - 1)
9973  {
9974  yymsg(0, "Reached maximum number of imbricated loops");
9976  };
9977  }
9978  break;
9979 
9980  case 303:
9981 #line 3867 "Gmsh.y"
9982  {
9983  LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (8)].d);
9984  LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (8)].d);
9986  LoopControlVariablesNameTab[ImbricatedLoop] = (yyvsp[(2) - (8)].c);
9987  gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(2) - (8)].c)]);
9988  s.list = false;
9989  s.value.resize(1);
9990  s.value[0] = (yyvsp[(5) - (8)].d);
9993  if ((yyvsp[(5) - (8)].d) > (yyvsp[(7) - (8)].d))
9994  skip("For", "EndFor");
9995  else
9996  ImbricatedLoop++;
9997  if (ImbricatedLoop > MAX_RECUR_LOOPS - 1)
9998  {
9999  yymsg(0, "Reached maximum number of imbricated loops");
10001  }
10002  Free((yyvsp[(2) - (8)].c));
10003  ;
10004  }
10005  break;
10006 
10007  case 304:
10008 #line 3889 "Gmsh.y"
10009  {
10010  LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (10)].d);
10011  LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (10)].d);
10012  LoopControlVariablesTab[ImbricatedLoop][2] = (yyvsp[(9) - (10)].d);
10013  LoopControlVariablesNameTab[ImbricatedLoop] = (yyvsp[(2) - (10)].c);
10014  gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(2) - (10)].c)]);
10015  s.list = false;
10016  s.value.resize(1);
10017  s.value[0] = (yyvsp[(5) - (10)].d);
10020  if (((yyvsp[(9) - (10)].d) > 0. && (yyvsp[(5) - (10)].d) > (yyvsp[(7) - (10)].d)) ||
10021  ((yyvsp[(9) - (10)].d) < 0. && (yyvsp[(5) - (10)].d) < (yyvsp[(7) - (10)].d)))
10022  skip("For", "EndFor");
10023  else
10024  ImbricatedLoop++;
10025  if (ImbricatedLoop > MAX_RECUR_LOOPS - 1)
10026  {
10027  yymsg(0, "Reached maximum number of imbricated loops");
10029  }
10030  Free((yyvsp[(2) - (10)].c));
10031  ;
10032  }
10033  break;
10034 
10035  case 305:
10036 #line 3911 "Gmsh.y"
10037  {
10038  if (ImbricatedLoop <= 0)
10039  {
10040  yymsg(0, "Invalid For/EndFor loop");
10041  ImbricatedLoop = 0;
10042  }
10043  else
10044  {
10045  double step = LoopControlVariablesTab[ImbricatedLoop - 1][2];
10046  std::string name = LoopControlVariablesNameTab[ImbricatedLoop - 1];
10047  if (name.size())
10048  {
10049  if (!gmsh_yysymbols.count(name))
10050  yymsg(0, "Unknown loop variable '%s'", name.c_str());
10051  else
10052  {
10053  gmsh_yysymbol &s(gmsh_yysymbols[name]);
10054  if (!s.list && s.value.size())
10055  {
10056  s.value[0] += step;
10058  }
10059  else
10060  yymsg(0, "Bad loop variable %s", name.c_str());
10061  }
10062  }
10063  else
10064  {
10065  LoopControlVariablesTab[ImbricatedLoop - 1][0] += step;
10066  }
10067  double x0 = LoopControlVariablesTab[ImbricatedLoop - 1][0];
10068  double x1 = LoopControlVariablesTab[ImbricatedLoop - 1][1];
10069  if ((step > 0. && x0 <= x1) || (step < 0. && x0 >= x1))
10070  {
10073  }
10074  else
10075  ImbricatedLoop--;
10076  };
10077  }
10078  break;
10079 
10080  case 306:
10081 #line 3946 "Gmsh.y"
10082  {
10083  if (!FunctionManager::Instance()->createFunction(std::string((yyvsp[(2) - (2)].c)), gmsh_yyin, gmsh_yyname,
10084  gmsh_yylineno))
10085  yymsg(0, "Redefinition of function %s", (yyvsp[(2) - (2)].c));
10086  skip(nullptr, "Return");
10087  Free((yyvsp[(2) - (2)].c));
10088  ;
10089  }
10090  break;
10091 
10092  case 307:
10093 #line 3954 "Gmsh.y"
10094  {
10095  if (!FunctionManager::Instance()->createFunction(std::string((yyvsp[(2) - (2)].c)), gmsh_yyin, gmsh_yyname,
10096  gmsh_yylineno))
10097  yymsg(0, "Redefinition of function %s", (yyvsp[(2) - (2)].c));
10098  skip(nullptr, "Return");
10099  Free((yyvsp[(2) - (2)].c));
10100  ;
10101  }
10102  break;
10103 
10104  case 308:
10105 #line 3962 "Gmsh.y"
10106  {
10108  yymsg(0, "Error while exiting function");
10109  ;
10110  }
10111  break;
10112 
10113  case 309:
10114 #line 3968 "Gmsh.y"
10115  {
10116  if (!FunctionManager::Instance()->enterFunction(std::string((yyvsp[(2) - (3)].c)), &gmsh_yyin, gmsh_yyname,
10117  gmsh_yylineno))
10118  yymsg(0, "Unknown function '%s'", (yyvsp[(2) - (3)].c));
10119  Free((yyvsp[(2) - (3)].c));
10120  ;
10121  }
10122  break;
10123 
10124  case 310:
10125 #line 3975 "Gmsh.y"
10126  {
10127  if (!FunctionManager::Instance()->enterFunction(std::string((yyvsp[(2) - (3)].c)), &gmsh_yyin, gmsh_yyname,
10128  gmsh_yylineno))
10129  yymsg(0, "Unknown function '%s'", (yyvsp[(2) - (3)].c));
10130  Free((yyvsp[(2) - (3)].c));
10131  ;
10132  }
10133  break;
10134 
10135  case 311:
10136 #line 3982 "Gmsh.y"
10137  {
10138  ImbricatedTest++;
10139  if (ImbricatedTest > MAX_RECUR_TESTS - 1)
10140  {
10141  yymsg(0, "Reached maximum number of imbricated tests");
10143  }
10144 
10145  if ((yyvsp[(3) - (4)].d))
10146  {
10147  // Current test is true
10149  }
10150  else
10151  {
10153  // Go after the next ElseIf or Else or EndIf
10154  int type_until2 = 0;
10155  skipTest("If", "EndIf", "ElseIf", 4, &type_until2);
10156  if (!type_until2)
10157  ImbricatedTest--; // EndIf reached
10158  };
10159  }
10160  break;
10161 
10162  case 312:
10163 #line 4002 "Gmsh.y"
10164  {
10165  if (ImbricatedTest > 0)
10166  {
10168  {
10169  // Last test (If or ElseIf) was true, thus go after EndIf (out of If EndIf)
10170  skip("If", "EndIf");
10171  ImbricatedTest--;
10172  }
10173  else
10174  {
10175  // Previous test(s) (If and ElseIf) not yet true
10176  if ((yyvsp[(3) - (4)].d))
10177  {
10179  }
10180  else
10181  {
10182  // Current test still not true: statusImbricatedTests[ImbricatedTest] = 0;
10183  // Go after the next ElseIf or Else or EndIf
10184  int type_until2 = 0;
10185  skipTest("If", "EndIf", "ElseIf", 4, &type_until2);
10186  if (!type_until2)
10187  ImbricatedTest--;
10188  }
10189  }
10190  }
10191  else
10192  {
10193  yymsg(0, "Orphan ElseIf");
10194  };
10195  }
10196  break;
10197 
10198  case 313:
10199 #line 4028 "Gmsh.y"
10200  {
10201  if (ImbricatedTest > 0)
10202  {
10204  {
10205  skip("If", "EndIf");
10206  ImbricatedTest--;
10207  }
10208  }
10209  else
10210  {
10211  yymsg(0, "Orphan Else");
10212  };
10213  }
10214  break;
10215 
10216  case 314:
10217 #line 4040 "Gmsh.y"
10218  {
10219  ImbricatedTest--;
10220  if (ImbricatedTest < 0)
10221  yymsg(1, "Orphan EndIf");
10222  ;
10223  }
10224  break;
10225 
10226  case 315:
10227 #line 4051 "Gmsh.y"
10228  {
10229  std::vector<std::pair<int, int>> inDimTags, outDimTags;
10230  ListOfShapes2VectorOfPairs((yyvsp[(4) - (5)].l), inDimTags);
10231  bool r = true;
10232  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
10233  {
10235  inDimTags, (yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], outDimTags);
10236  }
10237  else
10238  {
10240  inDimTags, (yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], outDimTags);
10241  }
10242  if (!r)
10243  yymsg(0, "Could not extrude shapes");
10244  (yyval.l) = (yyvsp[(4) - (5)].l);
10245  List_Reset((yyval.l));
10246  VectorOfPairs2ListOfShapes(outDimTags, (yyval.l));
10247  ;
10248  }
10249  break;
10250 
10251  case 316:
10252 #line 4069 "Gmsh.y"
10253  {
10254  std::vector<std::pair<int, int>> inDimTags, outDimTags;
10255  ListOfShapes2VectorOfPairs((yyvsp[(10) - (11)].l), inDimTags);
10256  bool r = true;
10257  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
10258  {
10260  inDimTags, (yyvsp[(5) - (11)].v)[0], (yyvsp[(5) - (11)].v)[1], (yyvsp[(5) - (11)].v)[2],
10261  (yyvsp[(3) - (11)].v)[0], (yyvsp[(3) - (11)].v)[1], (yyvsp[(3) - (11)].v)[2], (yyvsp[(7) - (11)].d),
10262  outDimTags);
10263  }
10264  else
10265  {
10267  inDimTags, (yyvsp[(5) - (11)].v)[0], (yyvsp[(5) - (11)].v)[1], (yyvsp[(5) - (11)].v)[2],
10268  (yyvsp[(3) - (11)].v)[0], (yyvsp[(3) - (11)].v)[1], (yyvsp[(3) - (11)].v)[2], (yyvsp[(7) - (11)].d),
10269  outDimTags);
10270  }
10271  if (!r)
10272  yymsg(0, "Could not extrude shapes");
10273  (yyval.l) = (yyvsp[(10) - (11)].l);
10274  List_Reset((yyval.l));
10275  VectorOfPairs2ListOfShapes(outDimTags, (yyval.l));
10276  ;
10277  }
10278  break;
10279 
10280  case 317:
10281 #line 4087 "Gmsh.y"
10282  {
10283  std::vector<std::pair<int, int>> inDimTags, outDimTags;
10284  ListOfShapes2VectorOfPairs((yyvsp[(12) - (13)].l), inDimTags);
10285  bool r = true;
10286  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
10287  {
10288  yymsg(0, "Twisting extrude not available with OpenCASCADE geometry kernel");
10289  }
10290  else
10291  {
10293  inDimTags, (yyvsp[(7) - (13)].v)[0], (yyvsp[(7) - (13)].v)[1], (yyvsp[(7) - (13)].v)[2],
10294  (yyvsp[(3) - (13)].v)[0], (yyvsp[(3) - (13)].v)[1], (yyvsp[(3) - (13)].v)[2], (yyvsp[(5) - (13)].v)[0],
10295  (yyvsp[(5) - (13)].v)[1], (yyvsp[(5) - (13)].v)[2], (yyvsp[(9) - (13)].d), outDimTags);
10296  }
10297  if (!r)
10298  yymsg(0, "Could not extrude shapes");
10299  (yyval.l) = (yyvsp[(12) - (13)].l);
10300  List_Reset((yyval.l));
10301  VectorOfPairs2ListOfShapes(outDimTags, (yyval.l));
10302  ;
10303  }
10304  break;
10305 
10306  case 318:
10307 #line 4105 "Gmsh.y"
10308  {
10309  extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
10311  extr.mesh.ScaleLast = false;
10312  ;
10313  }
10314  break;
10315 
10316  case 319:
10317 #line 4111 "Gmsh.y"
10318  {
10319  std::vector<std::pair<int, int>> inDimTags, outDimTags;
10320  ListOfShapes2VectorOfPairs((yyvsp[(4) - (7)].l), inDimTags);
10321  bool r = true;
10322  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
10323  {
10324  r = GModel::current()->getOCCInternals()->extrude(inDimTags, (yyvsp[(2) - (7)].v)[0],
10325  (yyvsp[(2) - (7)].v)[1], (yyvsp[(2) - (7)].v)[2],
10326  outDimTags, &extr);
10327  }
10328  else
10329  {
10330  r = GModel::current()->getGEOInternals()->extrude(inDimTags, (yyvsp[(2) - (7)].v)[0],
10331  (yyvsp[(2) - (7)].v)[1], (yyvsp[(2) - (7)].v)[2],
10332  outDimTags, &extr);
10333  }
10334  if (!r)
10335  yymsg(0, "Could not extrude shapes");
10336  (yyval.l) = (yyvsp[(4) - (7)].l);
10337  List_Reset((yyval.l));
10338  VectorOfPairs2ListOfShapes(outDimTags, (yyval.l));
10339  ;
10340  }
10341  break;
10342 
10343  case 320:
10344 #line 4129 "Gmsh.y"
10345  {
10346  extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
10348  extr.mesh.ScaleLast = false;
10349  ;
10350  }
10351  break;
10352 
10353  case 321:
10354 #line 4135 "Gmsh.y"
10355  {
10356  std::vector<std::pair<int, int>> inDimTags, outDimTags;
10357  ListOfShapes2VectorOfPairs((yyvsp[(10) - (13)].l), inDimTags);
10358  bool r = true;
10359  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
10360  {
10362  inDimTags, (yyvsp[(5) - (13)].v)[0], (yyvsp[(5) - (13)].v)[1], (yyvsp[(5) - (13)].v)[2],
10363  (yyvsp[(3) - (13)].v)[0], (yyvsp[(3) - (13)].v)[1], (yyvsp[(3) - (13)].v)[2], (yyvsp[(7) - (13)].d),
10364  outDimTags, &extr);
10365  }
10366  else
10367  {
10369  inDimTags, (yyvsp[(5) - (13)].v)[0], (yyvsp[(5) - (13)].v)[1], (yyvsp[(5) - (13)].v)[2],
10370  (yyvsp[(3) - (13)].v)[0], (yyvsp[(3) - (13)].v)[1], (yyvsp[(3) - (13)].v)[2], (yyvsp[(7) - (13)].d),
10371  outDimTags, &extr);
10372  }
10373  if (!r)
10374  yymsg(0, "Could not extrude shapes");
10375  (yyval.l) = (yyvsp[(10) - (13)].l);
10376  List_Reset((yyval.l));
10377  VectorOfPairs2ListOfShapes(outDimTags, (yyval.l));
10378  ;
10379  }
10380  break;
10381 
10382  case 322:
10383 #line 4155 "Gmsh.y"
10384  {
10385  extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
10387  extr.mesh.ScaleLast = false;
10388  ;
10389  }
10390  break;
10391 
10392  case 323:
10393 #line 4161 "Gmsh.y"
10394  {
10395  std::vector<std::pair<int, int>> inDimTags, outDimTags;
10396  ListOfShapes2VectorOfPairs((yyvsp[(12) - (15)].l), inDimTags);
10397  bool r = true;
10398  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
10399  {
10400  yymsg(0, "Twisting extrude not available with OpenCASCADE geometry kernel");
10401  }
10402  else
10403  {
10405  inDimTags, (yyvsp[(7) - (15)].v)[0], (yyvsp[(7) - (15)].v)[1], (yyvsp[(7) - (15)].v)[2],
10406  (yyvsp[(3) - (15)].v)[0], (yyvsp[(3) - (15)].v)[1], (yyvsp[(3) - (15)].v)[2], (yyvsp[(5) - (15)].v)[0],
10407  (yyvsp[(5) - (15)].v)[1], (yyvsp[(5) - (15)].v)[2], (yyvsp[(9) - (15)].d), outDimTags, &extr);
10408  }
10409  if (!r)
10410  yymsg(0, "Could not extrude shapes");
10411  (yyval.l) = (yyvsp[(12) - (15)].l);
10412  List_Reset((yyval.l));
10413  VectorOfPairs2ListOfShapes(outDimTags, (yyval.l));
10414  ;
10415  }
10416  break;
10417 
10418  case 324:
10419 #line 4179 "Gmsh.y"
10420  {
10421  extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false;
10423  extr.mesh.ScaleLast = false;
10424  ;
10425  }
10426  break;
10427 
10428  case 325:
10429 #line 4185 "Gmsh.y"
10430  {
10431  std::vector<std::pair<int, int>> inDimTags, outDimTags;
10432  ListOfShapes2VectorOfPairs((yyvsp[(3) - (6)].l), inDimTags);
10433  bool r = true;
10434  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
10435  {
10436  yymsg(0, "Boundary layer extrusion not available with OpenCASCADE geometry kernel");
10437  }
10438  else
10439  {
10440  r = GModel::current()->getGEOInternals()->boundaryLayer(inDimTags, outDimTags, &extr);
10441  }
10442  if (!r)
10443  yymsg(0, "Could not extrude shapes");
10444  (yyval.l) = (yyvsp[(3) - (6)].l);
10445  List_Reset((yyval.l));
10446  VectorOfPairs2ListOfShapes(outDimTags, (yyval.l));
10447  ;
10448  }
10449  break;
10450 
10451  case 326:
10452 #line 4202 "Gmsh.y"
10453  {
10454  std::vector<std::pair<int, int>> inDimTags, outDimTags;
10455  ListOfShapes2VectorOfPairs((yyvsp[(3) - (9)].l), inDimTags);
10456  bool r = true;
10457  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
10458  {
10459  r = GModel::current()->getOCCInternals()->addPipe(inDimTags, (int)(yyvsp[(8) - (9)].d), outDimTags);
10460  }
10461  else
10462  {
10463  yymsg(0, "Pipe only available with OpenCASCADE geometry kernel");
10464  }
10465  if (!r)
10466  yymsg(0, "Could not extrude shapes");
10467  (yyval.l) = (yyvsp[(3) - (9)].l);
10468  List_Reset((yyval.l));
10469  VectorOfPairs2ListOfShapes(outDimTags, (yyval.l));
10470  ;
10471  }
10472  break;
10473 
10474  case 327:
10475 #line 4218 "Gmsh.y"
10476  {
10477  (yyval.l) = List_Create(2, 1, sizeof(Shape));
10478  bool r = true;
10479  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
10480  {
10481  std::vector<int> wires;
10482  ListOfDouble2Vector((yyvsp[(2) - (2)].l), wires);
10483  std::vector<std::pair<int, int>> outDimTags;
10484  r = GModel::current()->getOCCInternals()->addThruSections(-1, wires, false, false, outDimTags);
10485  VectorOfPairs2ListOfShapes(outDimTags, (yyval.l));
10486  }
10487  else
10488  {
10489  yymsg(0, "ThruSections only available with OpenCASCADE geometry kernel");
10490  }
10491  if (!r)
10492  yymsg(0, "Could not add thrusections");
10493  List_Delete((yyvsp[(2) - (2)].l));
10494  ;
10495  }
10496  break;
10497 
10498  case 328:
10499 #line 4235 "Gmsh.y"
10500  {
10501  (yyval.l) = List_Create(2, 1, sizeof(Shape));
10502  bool r = true;
10503  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
10504  {
10505  std::vector<int> wires;
10506  ListOfDouble2Vector((yyvsp[(3) - (3)].l), wires);
10507  std::vector<std::pair<int, int>> outDimTags;
10508  r = GModel::current()->getOCCInternals()->addThruSections(-1, wires, false, true, outDimTags);
10509  VectorOfPairs2ListOfShapes(outDimTags, (yyval.l));
10510  }
10511  else
10512  {
10513  yymsg(0, "ThruSections only available with OpenCASCADE geometry kernel");
10514  }
10515  if (!r)
10516  yymsg(0, "Could not add ruled thrusections");
10517  List_Delete((yyvsp[(3) - (3)].l));
10518  ;
10519  }
10520  break;
10521 
10522  case 329:
10523 #line 4253 "Gmsh.y"
10524  {
10525  (yyval.l) = List_Create(2, 1, sizeof(Shape));
10526  bool r = true;
10527  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
10528  {
10529  std::vector<int> regions, edges;
10530  ListOfDouble2Vector((yyvsp[(3) - (10)].l), regions);
10531  ListOfDouble2Vector((yyvsp[(6) - (10)].l), edges);
10532  std::vector<double> radii;
10533  ListOfDouble2Vector((yyvsp[(9) - (10)].l), radii);
10534  std::vector<std::pair<int, int>> outDimTags;
10535  r = GModel::current()->getOCCInternals()->fillet(regions, edges, radii, outDimTags, true);
10536  VectorOfPairs2ListOfShapes(outDimTags, (yyval.l));
10537  }
10538  else
10539  {
10540  yymsg(0, "Fillet only available with OpenCASCADE geometry kernel");
10541  }
10542  if (!r)
10543  yymsg(0, "Could not fillet shapes");
10544  List_Delete((yyvsp[(3) - (10)].l));
10545  List_Delete((yyvsp[(6) - (10)].l));
10546  List_Delete((yyvsp[(9) - (10)].l));
10547  ;
10548  }
10549  break;
10550 
10551  case 330:
10552 #line 4276 "Gmsh.y"
10553  {
10554  (yyval.l) = List_Create(2, 1, sizeof(Shape));
10555  bool r = true;
10556  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
10557  {
10558  std::vector<int> regions, edges, surfaces;
10559  ListOfDouble2Vector((yyvsp[(3) - (13)].l), regions);
10560  ListOfDouble2Vector((yyvsp[(6) - (13)].l), edges);
10561  ListOfDouble2Vector((yyvsp[(9) - (13)].l), surfaces);
10562  std::vector<double> distances;
10563  ListOfDouble2Vector((yyvsp[(12) - (13)].l), distances);
10564  std::vector<std::pair<int, int>> outDimTags;
10565  r = GModel::current()->getOCCInternals()->chamfer(regions, edges, surfaces, distances, outDimTags, true);
10566  VectorOfPairs2ListOfShapes(outDimTags, (yyval.l));
10567  }
10568  else
10569  {
10570  yymsg(0, "Chamfer only available with OpenCASCADE geometry kernel");
10571  }
10572  if (!r)
10573  yymsg(0, "Could not chamfer shapes");
10574  List_Delete((yyvsp[(3) - (13)].l));
10575  List_Delete((yyvsp[(6) - (13)].l));
10576  List_Delete((yyvsp[(9) - (13)].l));
10577  List_Delete((yyvsp[(12) - (13)].l));
10578  ;
10579  }
10580  break;
10581 
10582  case 331:
10583 #line 4303 "Gmsh.y"
10584  {
10585  ;
10586  }
10587  break;
10588 
10589  case 332:
10590 #line 4306 "Gmsh.y"
10591  {
10592  ;
10593  }
10594  break;
10595 
10596  case 333:
10597 #line 4312 "Gmsh.y"
10598  {
10599  int n = (int)fabs((yyvsp[(3) - (5)].d));
10600  if (n)
10601  { // we accept n==0 to easily disable layers
10602  extr.mesh.ExtrudeMesh = true;
10603  extr.mesh.NbLayer = 1;
10604  extr.mesh.NbElmLayer.clear();
10605  extr.mesh.hLayer.clear();
10606  extr.mesh.NbElmLayer.push_back((int)fabs((yyvsp[(3) - (5)].d)));
10607  extr.mesh.hLayer.push_back(1.);
10608  };
10609  }
10610  break;
10611 
10612  case 334:
10613 #line 4324 "Gmsh.y"
10614  {
10615  extr.mesh.ExtrudeMesh = true;
10616  extr.mesh.NbLayer = List_Nbr((yyvsp[(3) - (7)].l));
10617  if (List_Nbr((yyvsp[(3) - (7)].l)) == List_Nbr((yyvsp[(5) - (7)].l)))
10618  {
10619  extr.mesh.NbElmLayer.clear();
10620  extr.mesh.hLayer.clear();
10621  for (int i = 0; i < List_Nbr((yyvsp[(3) - (7)].l)); i++)
10622  {
10623  double d;
10624  List_Read((yyvsp[(3) - (7)].l), i, &d);
10625  extr.mesh.NbElmLayer.push_back((d > 0) ? (int)d : 1);
10626  List_Read((yyvsp[(5) - (7)].l), i, &d);
10627  extr.mesh.hLayer.push_back(d);
10628  }
10629  }
10630  else
10631  yymsg(0, "Wrong layer definition {%d, %d}", List_Nbr((yyvsp[(3) - (7)].l)), List_Nbr((yyvsp[(5) - (7)].l)));
10632  List_Delete((yyvsp[(3) - (7)].l));
10633  List_Delete((yyvsp[(5) - (7)].l));
10634  ;
10635  }
10636  break;
10637 
10638  case 335:
10639 #line 4344 "Gmsh.y"
10640  {
10641  extr.mesh.ScaleLast = true;
10642  ;
10643  }
10644  break;
10645 
10646  case 336:
10647 #line 4348 "Gmsh.y"
10648  {
10649  extr.mesh.Recombine = true;
10650  ;
10651  }
10652  break;
10653 
10654  case 337:
10655 #line 4352 "Gmsh.y"
10656  {
10657  extr.mesh.Recombine = (yyvsp[(2) - (3)].d) ? true : false;
10658  ;
10659  }
10660  break;
10661 
10662  case 338:
10663 #line 4356 "Gmsh.y"
10664  {
10666  ;
10667  }
10668  break;
10669 
10670  case 339:
10671 #line 4360 "Gmsh.y"
10672  {
10674  ;
10675  }
10676  break;
10677 
10678  case 340:
10679 #line 4364 "Gmsh.y"
10680  {
10682  ;
10683  }
10684  break;
10685 
10686  case 341:
10687 #line 4368 "Gmsh.y"
10688  {
10690  ;
10691  }
10692  break;
10693 
10694  case 342:
10695 #line 4372 "Gmsh.y"
10696  {
10697  std::vector<int> tags;
10698  ListOfDouble2Vector((yyvsp[(6) - (9)].l), tags);
10699  int num = (int)(yyvsp[(3) - (9)].d);
10701  extr.mesh.Holes[num].first = (yyvsp[(8) - (9)].d);
10702  extr.mesh.Holes[num].second = tags;
10703  List_Delete((yyvsp[(6) - (9)].l));
10704  ;
10705  }
10706  break;
10707 
10708  case 343:
10709 #line 4381 "Gmsh.y"
10710  {
10711  if (!strcmp((yyvsp[(2) - (6)].c), "Index"))
10712  extr.mesh.BoundaryLayerIndex = (yyvsp[(4) - (6)].d);
10713  else if (!strcmp((yyvsp[(2) - (6)].c), "View"))
10714  extr.mesh.ViewIndex = (yyvsp[(4) - (6)].d);
10715  Free((yyvsp[(2) - (6)].c));
10716  ;
10717  }
10718  break;
10719 
10720  case 344:
10721 #line 4393 "Gmsh.y"
10722  {
10723  (yyval.i) = OCC_Internals::Union;
10724  ;
10725  }
10726  break;
10727 
10728  case 345:
10729 #line 4394 "Gmsh.y"
10730  {
10731  (yyval.i) = OCC_Internals::Intersection;
10732  ;
10733  }
10734  break;
10735 
10736  case 346:
10737 #line 4395 "Gmsh.y"
10738  {
10739  (yyval.i) = OCC_Internals::Difference;
10740  ;
10741  }
10742  break;
10743 
10744  case 347:
10745 #line 4396 "Gmsh.y"
10746  {
10747  (yyval.i) = OCC_Internals::Section;
10748  ;
10749  }
10750  break;
10751 
10752  case 348:
10753 #line 4397 "Gmsh.y"
10754  {
10755  (yyval.i) = OCC_Internals::Fragments;
10756  ;
10757  }
10758  break;
10759 
10760  case 349:
10761 #line 4401 "Gmsh.y"
10762  {
10763  (yyval.i) = 0;
10764  ;
10765  }
10766  break;
10767 
10768  case 350:
10769 #line 4402 "Gmsh.y"
10770  {
10771  (yyval.i) = 1;
10772  ;
10773  }
10774  break;
10775 
10776  case 351:
10777 #line 4403 "Gmsh.y"
10778  {
10779  (yyval.i) = 2;
10780  ;
10781  }
10782  break;
10783 
10784  case 352:
10785 #line 4404 "Gmsh.y"
10786  {
10787  (yyval.i) = (yyvsp[(2) - (3)].d) ? 1 : 0;
10788  ;
10789  }
10790  break;
10791 
10792  case 353:
10793 #line 4405 "Gmsh.y"
10794  {
10795  (yyval.i) = (yyvsp[(3) - (4)].d) ? 2 : 0;
10796  ;
10797  }
10798  break;
10799 
10800  case 354:
10801 #line 4410 "Gmsh.y"
10802  {
10803  (yyval.l) = List_Create(2, 1, sizeof(Shape));
10804  bool r = true;
10805  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
10806  {
10807  std::vector<std::pair<int, int>> object, tool, out;
10808  std::vector<std::vector<std::pair<int, int>>> outMap;
10809  ListOfShapes2VectorOfPairs((yyvsp[(3) - (9)].l), object);
10810  ListOfShapes2VectorOfPairs((yyvsp[(7) - (9)].l), tool);
10811  // currently we don't distinguish between Delete and Recursive Delete:
10812  // we always delete recursively. Let us know if you have examples where
10813  // having the choice would be interesting
10815  -1, (OCC_Internals::BooleanOperator)(yyvsp[(1) - (9)].i), object, tool, out, outMap,
10816  (yyvsp[(4) - (9)].i), (yyvsp[(8) - (9)].i));
10817  VectorOfPairs2ListOfShapes(out, (yyval.l));
10818  }
10819  else
10820  {
10821  yymsg(0, "Boolean operators only available with OpenCASCADE geometry kernel");
10822  }
10823  if (!r)
10824  yymsg(0, "Could not apply boolean operator");
10825  List_Delete((yyvsp[(3) - (9)].l));
10826  List_Delete((yyvsp[(7) - (9)].l));
10827  ;
10828  }
10829  break;
10830 
10831  case 355:
10832 #line 4433 "Gmsh.y"
10833  {
10834  (yyval.l) = List_Create(2, 1, sizeof(Shape));
10835  bool r = true;
10836  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
10837  {
10838  std::vector<std::pair<int, int>> out;
10839  std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(3) - (4)].c));
10840  GModel::current()->getOCCInternals()->importShapes(tmp, true, out);
10841  VectorOfPairs2ListOfShapes(out, (yyval.l));
10842  }
10843  else
10844  {
10845  yymsg(0, "ShapeFromFile only available with OpenCASCADE geometry kernel");
10846  }
10847  if (!r)
10848  yymsg(0, "Could import shape");
10849  Free((yyvsp[(3) - (4)].c));
10850  ;
10851  }
10852  break;
10853 
10854  case 356:
10855 #line 4453 "Gmsh.y"
10856  {
10857  bool r = true;
10858  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
10859  {
10860  std::vector<std::pair<int, int>> object, tool, out;
10861  std::vector<std::vector<std::pair<int, int>>> outMap;
10862  ListOfShapes2VectorOfPairs((yyvsp[(7) - (14)].l), object);
10863  ListOfShapes2VectorOfPairs((yyvsp[(11) - (14)].l), tool);
10864  // currently we don't distinguish between Delete and Recursive Delete:
10865  // we always delete recursively. Let us know if you have examples where
10866  // having the choice would be interesting
10868  (int)(yyvsp[(3) - (14)].d), (OCC_Internals::BooleanOperator)(yyvsp[(1) - (14)].i), object, tool, out,
10869  outMap, (yyvsp[(8) - (14)].i), (yyvsp[(12) - (14)].i));
10870  }
10871  if (!r)
10872  yymsg(0, "Could not apply boolean operator");
10873  List_Delete((yyvsp[(7) - (14)].l));
10874  List_Delete((yyvsp[(11) - (14)].l));
10875  ;
10876  }
10877  break;
10878 
10879  case 357:
10880 #line 4474 "Gmsh.y"
10881  {
10882  (yyval.v)[0] = (yyval.v)[1] = 1.;
10883  ;
10884  }
10885  break;
10886 
10887  case 358:
10888 #line 4478 "Gmsh.y"
10889  {
10890  if (!strcmp((yyvsp[(2) - (3)].c), "Progression") || !strcmp((yyvsp[(2) - (3)].c), "Power"))
10891  (yyval.v)[0] = 1.;
10892  else if (!strcmp((yyvsp[(2) - (3)].c), "Bump"))
10893  (yyval.v)[0] = 2.;
10894  else if (!strcmp((yyvsp[(2) - (3)].c), "Beta"))
10895  (yyval.v)[0] = 3.;
10896  else
10897  {
10898  yymsg(0, "Unknown transfinite mesh type");
10899  (yyval.v)[0] = 1.;
10900  }
10901  (yyval.v)[1] = (yyvsp[(3) - (3)].d);
10902  Free((yyvsp[(2) - (3)].c));
10903  ;
10904  }
10905  break;
10906 
10907  case 359:
10908 #line 4495 "Gmsh.y"
10909  {
10910  (yyval.i) = -1; // left
10911  ;
10912  }
10913  break;
10914 
10915  case 360:
10916 #line 4499 "Gmsh.y"
10917  {
10918  if (!strcmp((yyvsp[(1) - (1)].c), "Right"))
10919  (yyval.i) = 1;
10920  else if (!strcmp((yyvsp[(1) - (1)].c), "Left"))
10921  (yyval.i) = -1;
10922  else if (!strcmp((yyvsp[(1) - (1)].c), "AlternateRight"))
10923  (yyval.i) = 2;
10924  else if (!strcmp((yyvsp[(1) - (1)].c), "AlternateLeft"))
10925  (yyval.i) = -2;
10926  else // "Alternate" -> "Alternate Right"
10927  (yyval.i) = 2;
10928  Free((yyvsp[(1) - (1)].c));
10929  ;
10930  }
10931  break;
10932 
10933  case 361:
10934 #line 4515 "Gmsh.y"
10935  {
10936  (yyval.l) = List_Create(1, 1, sizeof(double));
10937  ;
10938  }
10939  break;
10940 
10941  case 362:
10942 #line 4519 "Gmsh.y"
10943  {
10944  (yyval.l) = (yyvsp[(2) - (2)].l);
10945  ;
10946  }
10947  break;
10948 
10949  case 363:
10950 #line 4524 "Gmsh.y"
10951  {
10952  (yyval.i) = 45;
10953  ;
10954  }
10955  break;
10956 
10957  case 364:
10958 #line 4528 "Gmsh.y"
10959  {
10960  (yyval.i) = (int)(yyvsp[(2) - (2)].d);
10961  ;
10962  }
10963  break;
10964 
10965  case 365:
10966 #line 4534 "Gmsh.y"
10967  {
10968  (yyval.l) = List_Create(1, 1, sizeof(double));
10969  ;
10970  }
10971  break;
10972 
10973  case 366:
10974 #line 4538 "Gmsh.y"
10975  {
10976  (yyval.l) = (yyvsp[(2) - (2)].l);
10977  ;
10978  }
10979  break;
10980 
10981  case 367:
10982 #line 4545 "Gmsh.y"
10983  {
10984  // mesh sizes at vertices are stored in internal CAD data, as they can be
10985  // specified during vertex creation and copied around during CAD
10986  // operations
10987  List_T *tmp = (yyvsp[(2) - (5)].l);
10988  if (!(yyvsp[(2) - (5)].l))
10989  {
10990  tmp = List_Create(100, 100, sizeof(double));
10991  getAllElementaryTags(0, tmp);
10992  }
10993  for (int i = 0; i < List_Nbr(tmp); i++)
10994  {
10995  double d;
10996  List_Read(tmp, i, &d);
10997  int tag = (int)d;
10999  GModel::current()->getOCCInternals()->setMeshSize(0, tag, (yyvsp[(4) - (5)].d));
11000  GModel::current()->getGEOInternals()->setMeshSize(0, tag, (yyvsp[(4) - (5)].d));
11001  GVertex *gv = GModel::current()->getVertexByTag(tag);
11002  if (gv)
11003  gv->setPrescribedMeshSizeAtVertex((yyvsp[(4) - (5)].d));
11004  }
11005  List_Delete(tmp);
11006  ;
11007  }
11008  break;
11009 
11010  case 368:
11011 #line 4568 "Gmsh.y"
11012  {
11013  List_T *tmp = (yyvsp[(3) - (6)].l);
11014  if (!(yyvsp[(3) - (6)].l))
11015  {
11016  tmp = List_Create(100, 100, sizeof(double));
11017  getAllElementaryTags(0, tmp);
11018  }
11019  for (int i = 0; i < List_Nbr(tmp); i++)
11020  {
11021  double d;
11022  List_Read(tmp, i, &d);
11023  int tag = (int)d;
11025  GModel::current()->getOCCInternals()->setMeshSize(0, tag, (yyvsp[(5) - (6)].d));
11026  GModel::current()->getGEOInternals()->setMeshSize(0, tag, (yyvsp[(5) - (6)].d));
11027  GVertex *gv = GModel::current()->getVertexByTag(tag);
11028  if (gv)
11029  gv->setPrescribedMeshSizeAtVertex((yyvsp[(5) - (6)].d));
11030  }
11031  List_Delete(tmp);
11032  ;
11033  }
11034  break;
11035 
11036  case 369:
11037 #line 4587 "Gmsh.y"
11038  {
11039  // transfinite constraints are stored in GEO internals in addition to
11040  // GModel, as they can be copied around during GEO operations
11041  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
11043  int type = (int)(yyvsp[(6) - (7)].v)[0];
11044  double coef = fabs((yyvsp[(6) - (7)].v)[1]);
11045  int npoints = ((int)(yyvsp[(5) - (7)].d) < 2) ? 2 : (int)(yyvsp[(5) - (7)].d);
11046  if (!(yyvsp[(3) - (7)].l))
11047  {
11048  GModel::current()->getGEOInternals()->setTransfiniteLine(0, npoints, type, coef);
11049  for (GModel::eiter it = GModel::current()->firstEdge(); it != GModel::current()->lastEdge(); it++)
11050  {
11051  (*it)->meshAttributes.method = MESH_TRANSFINITE;
11052  (*it)->meshAttributes.nbPointsTransfinite = npoints;
11053  (*it)->meshAttributes.typeTransfinite = type;
11054  (*it)->meshAttributes.coeffTransfinite = coef;
11055  }
11056  }
11057  else
11058  {
11059  for (int i = 0; i < List_Nbr((yyvsp[(3) - (7)].l)); i++)
11060  {
11061  double d;
11062  List_Read((yyvsp[(3) - (7)].l), i, &d);
11063  int j = (int)fabs(d);
11064  for (int sig = -1; sig <= 1; sig += 2)
11065  {
11066  GModel::current()->getGEOInternals()->setTransfiniteLine(sig * j, npoints, type * gmsh_sign(d),
11067  coef);
11068  GEdge *ge = GModel::current()->getEdgeByTag(sig * j);
11069  if (ge)
11070  {
11072  ge->meshAttributes.nbPointsTransfinite = npoints;
11073  ge->meshAttributes.typeTransfinite = type * gmsh_sign(d);
11074  ge->meshAttributes.coeffTransfinite = coef;
11075  }
11076  }
11077  }
11078  List_Delete((yyvsp[(3) - (7)].l));
11079  };
11080  }
11081  break;
11082 
11083  case 370:
11084 #line 4628 "Gmsh.y"
11085  {
11086  // transfinite constraints are stored in GEO internals in addition to
11087  // GModel, as they can be copied around during GEO operations
11088  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
11090  std::vector<int> corners;
11091  ListOfDouble2Vector((yyvsp[(4) - (6)].l), corners);
11092  if (!(yyvsp[(3) - (6)].l))
11093  {
11094  GModel::current()->getGEOInternals()->setTransfiniteSurface(0, (yyvsp[(5) - (6)].i), corners);
11095  for (GModel::fiter it = GModel::current()->firstFace(); it != GModel::current()->lastFace(); it++)
11096  {
11097  (*it)->meshAttributes.method = MESH_TRANSFINITE;
11098  (*it)->meshAttributes.transfiniteArrangement = (yyvsp[(5) - (6)].i);
11099  }
11100  }
11101  else
11102  {
11103  for (int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++)
11104  {
11105  double d;
11106  List_Read((yyvsp[(3) - (6)].l), i, &d);
11107  int tag = (int)d;
11108  GModel::current()->getGEOInternals()->setTransfiniteSurface(tag, (yyvsp[(5) - (6)].i), corners);
11109  GFace *gf = GModel::current()->getFaceByTag(tag);
11110  if (gf)
11111  {
11113  gf->meshAttributes.transfiniteArrangement = (yyvsp[(5) - (6)].i);
11114  if (corners.empty() || corners.size() == 3 || corners.size() == 4)
11115  {
11116  for (std::size_t j = 0; j < corners.size(); j++)
11117  {
11118  GVertex *gv = GModel::current()->getVertexByTag(corners[j]);
11119  if (gv)
11120  gf->meshAttributes.corners.push_back(gv);
11121  else
11122  yymsg(0, "Unknown model point with tag %d", corners[j]);
11123  }
11124  }
11125  else
11126  {
11127  yymsg(0, "Transfinite surface requires 3 or 4 corners vertices");
11128  }
11129  }
11130  }
11131  List_Delete((yyvsp[(3) - (6)].l));
11132  }
11133  List_Delete((yyvsp[(4) - (6)].l));
11134  ;
11135  }
11136  break;
11137 
11138  case 371:
11139 #line 4672 "Gmsh.y"
11140  {
11141  // transfinite constraints are stored in GEO internals in addition to
11142  // GModel, as they can be copied around during GEO operations
11143  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
11145  std::vector<int> corners;
11146  ListOfDouble2Vector((yyvsp[(4) - (5)].l), corners);
11147  if (!(yyvsp[(3) - (5)].l))
11148  {
11150  for (GModel::riter it = GModel::current()->firstRegion(); it != GModel::current()->lastRegion(); it++)
11151  {
11152  (*it)->meshAttributes.method = MESH_TRANSFINITE;
11153  }
11154  }
11155  else
11156  {
11157  for (int i = 0; i < List_Nbr((yyvsp[(3) - (5)].l)); i++)
11158  {
11159  double d;
11160  List_Read((yyvsp[(3) - (5)].l), i, &d);
11161  int tag = (int)d;
11163  GRegion *gr = GModel::current()->getRegionByTag(tag);
11164  if (gr)
11165  {
11167  if (corners.empty() || corners.size() == 6 || corners.size() == 8)
11168  {
11169  for (std::size_t i = 0; i < corners.size(); i++)
11170  {
11171  GVertex *gv = GModel::current()->getVertexByTag(corners[i]);
11172  if (gv)
11173  gr->meshAttributes.corners.push_back(gv);
11174  else
11175  yymsg(0, "Unknown model point with tag %d", corners[i]);
11176  }
11177  }
11178  }
11179  }
11180  List_Delete((yyvsp[(3) - (5)].l));
11181  }
11182  List_Delete((yyvsp[(4) - (5)].l));
11183  ;
11184  }
11185  break;
11186 
11187  case 372:
11188 #line 4711 "Gmsh.y"
11189  {
11190  // transfinite constraints are stored in GEO internals in addition to
11191  // GModel, as they can be copied around during GEO operations
11192  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
11194  if (!(yyvsp[(2) - (3)].l))
11195  {
11197  for (GModel::riter it = GModel::current()->firstRegion(); it != GModel::current()->lastRegion(); it++)
11198  (*it)->meshAttributes.QuadTri = TRANSFINITE_QUADTRI_1;
11199  }
11200  else
11201  {
11202  for (int i = 0; i < List_Nbr((yyvsp[(2) - (3)].l)); i++)
11203  {
11204  double d;
11205  List_Read((yyvsp[(2) - (3)].l), i, &d);
11206  int tag = (int)d;
11208  GRegion *gr = GModel::current()->getRegionByTag(tag);
11209  if (gr)
11211  }
11212  List_Delete((yyvsp[(2) - (3)].l));
11213  };
11214  }
11215  break;
11216 
11217  case 373:
11218 #line 4736 "Gmsh.y"
11219  {
11220  int dim = (int)(yyvsp[(2) - (8)].i);
11221  int tag = (int)(yyvsp[(4) - (8)].d);
11222  int new_tag = (int)(yyvsp[(6) - (8)].d);
11223  GModel::current()->changeEntityTag(dim, tag, new_tag);
11224  ;
11225  }
11226  break;
11227 
11228  case 374:
11229 #line 4743 "Gmsh.y"
11230  {
11231  int dim = (int)(yyvsp[(2) - (6)].i);
11232  int tag = (int)(yyvsp[(4) - (6)].d);
11233  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
11234  {
11235  GModel::current()->getOCCInternals()->setMaxTag(dim, tag);
11236  }
11237  else
11238  {
11239  GModel::current()->getGEOInternals()->setMaxTag(dim, tag);
11240  };
11241  }
11242  break;
11243 
11244  case 375:
11245 #line 4754 "Gmsh.y"
11246  {
11247  // mesh algorithm constraints are stored in GEO internals in addition to
11248  // GModel, as they can be copied around during GEO operations
11249  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
11251  for (int i = 0; i < List_Nbr((yyvsp[(4) - (8)].l)); i++)
11252  {
11253  double d;
11254  List_Read((yyvsp[(4) - (8)].l), i, &d);
11255  int tag = (int)d;
11256  GModel::current()->getGEOInternals()->setMeshAlgorithm(2, tag, (int)(yyvsp[(7) - (8)].d));
11257  GFace *gf = GModel::current()->getFaceByTag(tag);
11258  if (gf)
11259  gf->setMeshingAlgo((int)(yyvsp[(7) - (8)].d));
11260  }
11261  List_Delete((yyvsp[(4) - (8)].l));
11262  ;
11263  }
11264  break;
11265 
11266  case 376:
11267 #line 4771 "Gmsh.y"
11268  {
11269  // mesh size from boundary onstraints are stored in GEO internals in
11270  // addition to GModel, as they can be copied around during GEO operations
11271  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
11273  for (int i = 0; i < List_Nbr((yyvsp[(4) - (8)].l)); i++)
11274  {
11275  double d;
11276  List_Read((yyvsp[(4) - (8)].l), i, &d);
11277  int tag = (int)d;
11278  GModel::current()->getGEOInternals()->setMeshSizeFromBoundary(2, tag, (int)(yyvsp[(7) - (8)].d));
11279  GFace *gf = GModel::current()->getFaceByTag(tag);
11280  if (gf)
11281  gf->setMeshSizeFromBoundary((int)(yyvsp[(7) - (8)].d));
11282  }
11283  List_Delete((yyvsp[(4) - (8)].l));
11284  ;
11285  }
11286  break;
11287 
11288  case 377:
11289 #line 4788 "Gmsh.y"
11290  {
11291  // recombine constraints are stored in GEO internals in addition to
11292  // GModel, as they can be copied around during GEO operations
11293  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
11295  if (!(yyvsp[(3) - (5)].l))
11296  {
11297  GModel::current()->getGEOInternals()->setRecombine(2, 0, (yyvsp[(4) - (5)].i));
11298  for (GModel::fiter it = GModel::current()->firstFace(); it != GModel::current()->lastFace(); it++)
11299  {
11300  (*it)->meshAttributes.recombine = 1;
11301  (*it)->meshAttributes.recombineAngle = (yyvsp[(4) - (5)].i);
11302  }
11303  }
11304  else
11305  {
11306  for (int i = 0; i < List_Nbr((yyvsp[(3) - (5)].l)); i++)
11307  {
11308  double d;
11309  List_Read((yyvsp[(3) - (5)].l), i, &d);
11310  int tag = (int)d;
11311  GModel::current()->getGEOInternals()->setRecombine(2, tag, (yyvsp[(4) - (5)].i));
11312  GFace *gf = GModel::current()->getFaceByTag(tag);
11313  if (gf)
11314  {
11315  gf->meshAttributes.recombine = 1;
11316  gf->meshAttributes.recombineAngle = (yyvsp[(4) - (5)].i);
11317  }
11318  }
11319  List_Delete((yyvsp[(3) - (5)].l));
11320  };
11321  }
11322  break;
11323 
11324  case 378:
11325 #line 4818 "Gmsh.y"
11326  {
11327  // recombine constraints are stored in GEO internals in addition to
11328  // GModel, as they can be copied around during GEO operations
11329  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
11331  if (!(yyvsp[(3) - (4)].l))
11332  {
11334  for (GModel::riter it = GModel::current()->firstRegion(); it != GModel::current()->lastRegion(); it++)
11335  {
11336  (*it)->meshAttributes.recombine3D = 1;
11337  }
11338  }
11339  else
11340  {
11341  for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
11342  {
11343  double d;
11344  List_Read((yyvsp[(3) - (4)].l), i, &d);
11345  int tag = (int)d;
11346  GModel::current()->getGEOInternals()->setRecombine(3, tag, 0.);
11347  GRegion *gr = GModel::current()->getRegionByTag(tag);
11348  if (gr)
11349  gr->meshAttributes.recombine3D = 1;
11350  }
11351  List_Delete((yyvsp[(3) - (4)].l));
11352  };
11353  }
11354  break;
11355 
11356  case 379:
11357 #line 4844 "Gmsh.y"
11358  {
11359  // smoothing constraints are stored in GEO internals in addition to
11360  // GModel, as they can be copied around during GEO operations
11361  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
11363  if (!(yyvsp[(3) - (6)].l))
11364  {
11365  GModel::current()->getGEOInternals()->setSmoothing(0, (int)(yyvsp[(5) - (6)].d));
11366  for (GModel::fiter it = GModel::current()->firstFace(); it != GModel::current()->lastFace(); it++)
11367  {
11368  (*it)->meshAttributes.transfiniteSmoothing = (int)(yyvsp[(5) - (6)].d);
11369  }
11370  }
11371  else
11372  {
11373  for (int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++)
11374  {
11375  double d;
11376  List_Read((yyvsp[(3) - (6)].l), i, &d);
11377  int tag = (int)d;
11378  GModel::current()->getGEOInternals()->setSmoothing(tag, (int)(yyvsp[(5) - (6)].d));
11379  GFace *gf = GModel::current()->getFaceByTag(tag);
11380  if (gf)
11381  gf->meshAttributes.transfiniteSmoothing = (int)(yyvsp[(5) - (6)].d);
11382  }
11383  List_Delete((yyvsp[(3) - (6)].l));
11384  };
11385  }
11386  break;
11387 
11388  case 380:
11389 #line 4871 "Gmsh.y"
11390  {
11391  if (List_Nbr((yyvsp[(4) - (11)].l)) != List_Nbr((yyvsp[(8) - (11)].l)))
11392  {
11393  yymsg(0, "Wrong number of curves in periodicity constraint (%d -> %d)", List_Nbr((yyvsp[(8) - (11)].l)),
11394  List_Nbr((yyvsp[(4) - (11)].l)));
11395  }
11396  else
11397  {
11398  std::vector<double> transfo;
11399  if (List_Nbr((yyvsp[(10) - (11)].l)) != 0)
11400  {
11401  if (List_Nbr((yyvsp[(10) - (11)].l)) < 12)
11402  {
11403  yymsg(0,
11404  "Affine transformation requires at least 12 entries "
11405  "(%d provided)",
11406  List_Nbr((yyvsp[(10) - (11)].l)));
11407  }
11408  else
11409  {
11410  transfo.resize(List_Nbr((yyvsp[(10) - (11)].l)));
11411  for (int i = 0; i < List_Nbr((yyvsp[(10) - (11)].l)); i++)
11412  List_Read((yyvsp[(10) - (11)].l), i, &transfo[i]);
11413  }
11414  }
11415  for (int i = 0; i < List_Nbr((yyvsp[(4) - (11)].l)); i++)
11416  {
11417  double d_master, d_slave;
11418  List_Read((yyvsp[(8) - (11)].l), i, &d_master);
11419  List_Read((yyvsp[(4) - (11)].l), i, &d_slave);
11420  int j_master = (int)d_master;
11421  int j_slave = (int)d_slave;
11422  addPeriodicEdge(j_slave, j_master, transfo);
11423  }
11424  }
11425  List_Delete((yyvsp[(4) - (11)].l));
11426  List_Delete((yyvsp[(8) - (11)].l));
11427  ;
11428  }
11429  break;
11430 
11431  case 381:
11432 #line 4903 "Gmsh.y"
11433  {
11434  if (List_Nbr((yyvsp[(4) - (11)].l)) != List_Nbr((yyvsp[(8) - (11)].l)))
11435  {
11436  yymsg(0, "Wrong number surfaces in periodicity constraint (%d -> %d)", List_Nbr((yyvsp[(8) - (11)].l)),
11437  List_Nbr((yyvsp[(4) - (11)].l)));
11438  }
11439  else
11440  {
11441  if (List_Nbr((yyvsp[(10) - (11)].l)) < 12)
11442  {
11443  // FIXME full automatic case here if List_Nbr($10) == 0)
11444  yymsg(0,
11445  "Affine transformation requires at least 12 entries "
11446  "(%d provided)",
11447  List_Nbr((yyvsp[(10) - (11)].l)));
11448  }
11449  else
11450  {
11451  std::vector<double> transfo(16, 0);
11452  for (int i = 0; i < List_Nbr((yyvsp[(10) - (11)].l)); i++)
11453  List_Read((yyvsp[(10) - (11)].l), i, &transfo[i]);
11454  for (int i = 0; i < List_Nbr((yyvsp[(4) - (11)].l)); i++)
11455  {
11456  double d_master, d_slave;
11457  List_Read((yyvsp[(8) - (11)].l), i, &d_master);
11458  List_Read((yyvsp[(4) - (11)].l), i, &d_slave);
11459  addPeriodicFace(d_slave, d_master, transfo);
11460  }
11461  }
11462  }
11463  List_Delete((yyvsp[(4) - (11)].l));
11464  List_Delete((yyvsp[(8) - (11)].l));
11465  ;
11466  }
11467  break;
11468 
11469  case 382:
11470 #line 4931 "Gmsh.y"
11471  {
11472  if (List_Nbr((yyvsp[(4) - (18)].l)) != List_Nbr((yyvsp[(8) - (18)].l)))
11473  {
11474  yymsg(0, "Wrong number of curves in periodicity constraint (%d -> %d)", List_Nbr((yyvsp[(8) - (18)].l)),
11475  List_Nbr((yyvsp[(4) - (18)].l)));
11476  }
11477  else
11478  {
11479  SPoint3 axis((yyvsp[(12) - (18)].v)[0], (yyvsp[(12) - (18)].v)[1], (yyvsp[(12) - (18)].v)[2]);
11480  SPoint3 origin((yyvsp[(14) - (18)].v)[0], (yyvsp[(14) - (18)].v)[1], (yyvsp[(14) - (18)].v)[2]);
11481  double angle((yyvsp[(16) - (18)].d));
11482  SPoint3 translation(0, 0, 0);
11483 
11484  std::vector<double> transfo;
11485  computeAffineTransformation(origin, axis, angle, translation, transfo);
11486 
11487  for (int i = 0; i < List_Nbr((yyvsp[(4) - (18)].l)); i++)
11488  {
11489  double d_master, d_slave;
11490  List_Read((yyvsp[(8) - (18)].l), i, &d_master);
11491  List_Read((yyvsp[(4) - (18)].l), i, &d_slave);
11492  addPeriodicEdge(d_slave, d_master, transfo);
11493  }
11494  }
11495  List_Delete((yyvsp[(4) - (18)].l));
11496  List_Delete((yyvsp[(8) - (18)].l));
11497  ;
11498  }
11499  break;
11500 
11501  case 383:
11502 #line 4957 "Gmsh.y"
11503  {
11504  if (List_Nbr((yyvsp[(4) - (18)].l)) != List_Nbr((yyvsp[(8) - (18)].l)))
11505  {
11506  yymsg(0, "Wrong number of surfaces in periodicity constraint (%d -> %d)", List_Nbr((yyvsp[(8) - (18)].l)),
11507  List_Nbr((yyvsp[(4) - (18)].l)));
11508  }
11509  else
11510  {
11511  SPoint3 origin((yyvsp[(14) - (18)].v)[0], (yyvsp[(14) - (18)].v)[1], (yyvsp[(14) - (18)].v)[2]);
11512  SPoint3 axis((yyvsp[(12) - (18)].v)[0], (yyvsp[(12) - (18)].v)[1], (yyvsp[(12) - (18)].v)[2]);
11513  double angle((yyvsp[(16) - (18)].d));
11514  SPoint3 translation(0, 0, 0);
11515 
11516  std::vector<double> transfo;
11517  computeAffineTransformation(origin, axis, angle, translation, transfo);
11518 
11519  for (int i = 0; i < List_Nbr((yyvsp[(4) - (18)].l)); i++)
11520  {
11521  double d_master, d_slave;
11522  List_Read((yyvsp[(8) - (18)].l), i, &d_master);
11523  List_Read((yyvsp[(4) - (18)].l), i, &d_slave);
11524  addPeriodicFace(d_slave, d_master, transfo);
11525  }
11526  }
11527  List_Delete((yyvsp[(4) - (18)].l));
11528  List_Delete((yyvsp[(8) - (18)].l));
11529  ;
11530  }
11531  break;
11532 
11533  case 384:
11534 #line 4983 "Gmsh.y"
11535  {
11536  if (List_Nbr((yyvsp[(4) - (12)].l)) != List_Nbr((yyvsp[(8) - (12)].l)))
11537  {
11538  yymsg(0, "Wrong number of curves in periodicity constraint (%d -> %d)", List_Nbr((yyvsp[(8) - (12)].l)),
11539  List_Nbr((yyvsp[(4) - (12)].l)));
11540  }
11541  else
11542  {
11543  SPoint3 origin(0, 0, 0);
11544  SPoint3 axis(0, 0, 0);
11545  double angle(0);
11546  SPoint3 translation((yyvsp[(11) - (12)].v)[0], (yyvsp[(11) - (12)].v)[1], (yyvsp[(11) - (12)].v)[2]);
11547 
11548  std::vector<double> transfo;
11549  computeAffineTransformation(origin, axis, angle, translation, transfo);
11550 
11551  for (int i = 0; i < List_Nbr((yyvsp[(4) - (12)].l)); i++)
11552  {
11553  double d_master, d_slave;
11554  List_Read((yyvsp[(8) - (12)].l), i, &d_master);
11555  List_Read((yyvsp[(4) - (12)].l), i, &d_slave);
11556  addPeriodicEdge(d_slave, d_master, transfo);
11557  }
11558  }
11559  List_Delete((yyvsp[(4) - (12)].l));
11560  List_Delete((yyvsp[(8) - (12)].l));
11561  ;
11562  }
11563  break;
11564 
11565  case 385:
11566 #line 5009 "Gmsh.y"
11567  {
11568  if (List_Nbr((yyvsp[(4) - (12)].l)) != List_Nbr((yyvsp[(8) - (12)].l)))
11569  {
11570  yymsg(0, "Wrong number of surfaces in periodicity constraint (%d -> %d)", List_Nbr((yyvsp[(8) - (12)].l)),
11571  List_Nbr((yyvsp[(4) - (12)].l)));
11572  }
11573  else
11574  {
11575  SPoint3 origin(0, 0, 0);
11576  SPoint3 axis(0, 0, 0);
11577  double angle(0);
11578  SPoint3 translation((yyvsp[(11) - (12)].v)[0], (yyvsp[(11) - (12)].v)[1], (yyvsp[(11) - (12)].v)[2]);
11579 
11580  std::vector<double> transfo;
11581  computeAffineTransformation(origin, axis, angle, translation, transfo);
11582 
11583  for (int i = 0; i < List_Nbr((yyvsp[(4) - (12)].l)); i++)
11584  {
11585  double d_master, d_slave;
11586  List_Read((yyvsp[(8) - (12)].l), i, &d_master);
11587  List_Read((yyvsp[(4) - (12)].l), i, &d_slave);
11588  addPeriodicFace(d_slave, d_master, transfo);
11589  }
11590  }
11591  List_Delete((yyvsp[(4) - (12)].l));
11592  List_Delete((yyvsp[(8) - (12)].l));
11593  ;
11594  }
11595  break;
11596 
11597  case 386:
11598 #line 5035 "Gmsh.y"
11599  {
11600  if (List_Nbr((yyvsp[(5) - (12)].l)) != List_Nbr((yyvsp[(10) - (12)].l)))
11601  {
11602  yymsg(0, "Wrong number of surface curves in periodicity constraint (%d -> %d)",
11603  List_Nbr((yyvsp[(10) - (12)].l)), List_Nbr((yyvsp[(5) - (12)].l)));
11604  }
11605  else
11606  {
11607  int j_master = (int)(yyvsp[(8) - (12)].d);
11608  int j_slave = (int)(yyvsp[(3) - (12)].d);
11609  std::map<int, int> edgeCounterParts;
11610  for (int i = 0; i < List_Nbr((yyvsp[(5) - (12)].l)); i++)
11611  {
11612  double ds, dm;
11613  List_Read((yyvsp[(5) - (12)].l), i, &ds);
11614  List_Read((yyvsp[(10) - (12)].l), i, &dm);
11615  edgeCounterParts[(int)ds] = (int)dm;
11616  }
11617  addPeriodicFace(j_slave, j_master, edgeCounterParts);
11618  }
11619  List_Delete((yyvsp[(5) - (12)].l));
11620  List_Delete((yyvsp[(10) - (12)].l));
11621  ;
11622  }
11623  break;
11624 
11625  case 387:
11626 #line 5056 "Gmsh.y"
11627  {
11628  if (((yyvsp[(6) - (10)].i) == 2 || (yyvsp[(6) - (10)].i) == 3) && (yyvsp[(1) - (10)].i) < (yyvsp[(6) - (10)].i))
11629  {
11630  std::vector<int> tags;
11631  ListOfDouble2Vector((yyvsp[(3) - (10)].l), tags);
11632  addEmbedded((yyvsp[(1) - (10)].i), tags, (yyvsp[(6) - (10)].i), (int)(yyvsp[(8) - (10)].d));
11633  }
11634  else
11635  {
11636  yymsg(0, "Entity of dimension %d cannot be embedded in entity of dimension %d", (yyvsp[(1) - (10)].i),
11637  (yyvsp[(6) - (10)].i));
11638  }
11639  List_Delete((yyvsp[(3) - (10)].l));
11640  ;
11641  }
11642  break;
11643 
11644  case 388:
11645 #line 5068 "Gmsh.y"
11646  {
11647  // reverse mesh constraints are stored in GEO internals in addition to
11648  // GModel, as they can be copied around during GEO operations
11649  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
11651  if (!(yyvsp[(3) - (4)].l))
11652  {
11653  GModel::current()->getGEOInternals()->setReverseMesh((yyvsp[(2) - (4)].i), 0);
11654  switch ((yyvsp[(2) - (4)].i))
11655  {
11656  case 1:
11657  for (GModel::eiter it = GModel::current()->firstEdge(); it != GModel::current()->lastEdge(); it++)
11658  {
11659  (*it)->meshAttributes.reverseMesh = 1;
11660  }
11661  break;
11662  case 2:
11663  for (GModel::fiter it = GModel::current()->firstFace(); it != GModel::current()->lastFace(); it++)
11664  {
11665  (*it)->meshAttributes.reverseMesh = 1;
11666  }
11667  break;
11668  }
11669  }
11670  else
11671  {
11672  for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
11673  {
11674  double d;
11675  List_Read((yyvsp[(3) - (4)].l), i, &d);
11676  int num = (int)d;
11677  GModel::current()->getGEOInternals()->setReverseMesh((yyvsp[(2) - (4)].i), num);
11678  switch ((yyvsp[(2) - (4)].i))
11679  {
11680  case 1:
11681  {
11682  GEdge *ge = GModel::current()->getEdgeByTag(num);
11683  if (ge)
11684  ge->meshAttributes.reverseMesh = 1;
11685  }
11686  break;
11687  case 2:
11688  {
11689  GFace *gf = GModel::current()->getFaceByTag(num);
11690  if (gf)
11691  gf->meshAttributes.reverseMesh = 1;
11692  }
11693  break;
11694  }
11695  }
11696  List_Delete((yyvsp[(3) - (4)].l));
11697  };
11698  }
11699  break;
11700 
11701  case 389:
11702 #line 5116 "Gmsh.y"
11703  {
11704  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
11706  if (GModel::current()->getGEOInternals()->getChanged())
11708  if (!(yyvsp[(3) - (4)].l))
11709  {
11710  switch ((yyvsp[(2) - (4)].i))
11711  {
11712  case 0:
11713  for (GModel::viter it = GModel::current()->firstVertex(); it != GModel::current()->lastVertex(); it++)
11714  (*it)->relocateMeshVertices();
11715  break;
11716  case 1:
11717  for (GModel::eiter it = GModel::current()->firstEdge(); it != GModel::current()->lastEdge(); it++)
11718  (*it)->relocateMeshVertices();
11719  break;
11720  case 2:
11721  for (GModel::fiter it = GModel::current()->firstFace(); it != GModel::current()->lastFace(); it++)
11722  (*it)->relocateMeshVertices();
11723  break;
11724  }
11725  }
11726  else
11727  {
11728  for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
11729  {
11730  double d;
11731  List_Read((yyvsp[(3) - (4)].l), i, &d);
11732  switch ((yyvsp[(2) - (4)].i))
11733  {
11734  case 0:
11735  {
11736  GVertex *gv = GModel::current()->getVertexByTag((int)d);
11737  if (gv)
11738  gv->relocateMeshVertices();
11739  }
11740  break;
11741  case 1:
11742  {
11743  GEdge *ge = GModel::current()->getEdgeByTag((int)d);
11744  if (ge)
11745  ge->relocateMeshVertices();
11746  }
11747  break;
11748  case 2:
11749  {
11750  GFace *gf = GModel::current()->getFaceByTag((int)d);
11751  if (gf)
11752  gf->relocateMeshVertices();
11753  }
11754  break;
11755  }
11756  }
11757  List_Delete((yyvsp[(3) - (4)].l));
11758  };
11759  }
11760  break;
11761 
11762  case 390:
11763 #line 5170 "Gmsh.y"
11764  {
11765  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
11767  if (GModel::current()->getGEOInternals()->getChanged())
11769  for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
11770  {
11771  double d;
11772  List_Read((yyvsp[(3) - (4)].l), i, &d);
11773  GRegion *gr = GModel::current()->getRegionByTag((int)d);
11774  if (gr)
11776  }
11777  List_Delete((yyvsp[(3) - (4)].l));
11778  ;
11779  }
11780  break;
11781 
11782  case 391:
11783 #line 5185 "Gmsh.y"
11784  {
11785  for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
11786  {
11787  double dnum;
11788  List_Read((yyvsp[(3) - (4)].l), i, &dnum);
11789  int num = (int)dnum;
11791  GEdge *ge = GModel::current()->getEdgeByTag(num);
11792  if (ge)
11793  ge->setTooSmall(true);
11794  }
11795  List_Delete((yyvsp[(3) - (4)].l));
11796  ;
11797  }
11798  break;
11799 
11800  case 392:
11801 #line 5197 "Gmsh.y"
11802  {
11803  std::vector<int> tags;
11804  ListOfDouble2Vector((yyvsp[(3) - (4)].l), tags);
11805  GModel::current()->getGEOInternals()->setCompoundMesh((yyvsp[(2) - (4)].i), tags);
11806  List_Delete((yyvsp[(3) - (4)].l));
11807  ;
11808  }
11809  break;
11810 
11811  case 393:
11812 #line 5203 "Gmsh.y"
11813  {
11814  std::vector<int> tags;
11815  ListOfDouble2Vector((yyvsp[(3) - (6)].l), tags);
11816  tags.push_back(-(int)(yyvsp[(5) - (6)].d));
11817  GModel::current()->getGEOInternals()->setCompoundMesh((yyvsp[(2) - (6)].i), tags);
11818  List_Delete((yyvsp[(3) - (6)].l));
11819  ;
11820  }
11821  break;
11822 
11823  case 394:
11824 #line 5215 "Gmsh.y"
11825  {
11826  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
11828  else
11830  ;
11831  }
11832  break;
11833 
11834  case 395:
11835 #line 5222 "Gmsh.y"
11836  {
11837  if (!strcmp((yyvsp[(2) - (3)].c), "Geometry"))
11838  {
11839  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
11841  else
11843  }
11844  else if (!strcmp((yyvsp[(2) - (3)].c), "Mesh"))
11845  {
11847  }
11848  else
11849  yymsg(0, "Unknown coherence command");
11850  Free((yyvsp[(2) - (3)].c));
11851  ;
11852  }
11853  break;
11854 
11855  case 396:
11856 #line 5237 "Gmsh.y"
11857  {
11858  std::vector<int> tags;
11859  ListOfDouble2Vector((yyvsp[(4) - (6)].l), tags);
11860  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
11862  else
11864  List_Delete((yyvsp[(4) - (6)].l));
11865  ;
11866  }
11867  break;
11868 
11869  case 397:
11870 #line 5246 "Gmsh.y"
11871  {
11872  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
11873  {
11874  std::vector<std::pair<int, int>> in, out;
11876  in, out, CTX::instance()->geom.tolerance, CTX::instance()->geom.occFixDegenerated,
11879  }
11880  else
11881  {
11882  yymsg(0, "HealShapes only available with OpenCASCADE geometry kernel");
11883  };
11884  }
11885  break;
11886 
11887  case 398:
11888 #line 5266 "Gmsh.y"
11889  {
11890  (yyval.c) = (char *)"Homology";
11891  ;
11892  }
11893  break;
11894 
11895  case 399:
11896 #line 5267 "Gmsh.y"
11897  {
11898  (yyval.c) = (char *)"Cohomology";
11899  ;
11900  }
11901  break;
11902 
11903  case 400:
11904 #line 5268 "Gmsh.y"
11905  {
11906  (yyval.c) = (char *)"Betti";
11907  ;
11908  }
11909  break;
11910 
11911  case 401:
11912 #line 5273 "Gmsh.y"
11913  {
11914  std::vector<int> domain, subdomain, dim;
11915  for (int i = 0; i < 4; i++)
11916  dim.push_back(i);
11917  GModel::current()->addHomologyRequest((yyvsp[(1) - (2)].c), domain, subdomain, dim);
11918  ;
11919  }
11920  break;
11921 
11922  case 402:
11923 #line 5279 "Gmsh.y"
11924  {
11925  std::vector<int> domain, subdomain, dim;
11926  for (int i = 0; i < List_Nbr((yyvsp[(3) - (5)].l)); i++)
11927  {
11928  double d;
11929  List_Read((yyvsp[(3) - (5)].l), i, &d);
11930  domain.push_back((int)d);
11931  }
11932  for (int i = 0; i < 4; i++)
11933  dim.push_back(i);
11934  GModel::current()->addHomologyRequest((yyvsp[(1) - (5)].c), domain, subdomain, dim);
11935  List_Delete((yyvsp[(3) - (5)].l));
11936  ;
11937  }
11938  break;
11939 
11940  case 403:
11941 #line 5291 "Gmsh.y"
11942  {
11943  std::vector<int> domain, subdomain, dim;
11944  for (int i = 0; i < List_Nbr((yyvsp[(3) - (7)].l)); i++)
11945  {
11946  double d;
11947  List_Read((yyvsp[(3) - (7)].l), i, &d);
11948  domain.push_back((int)d);
11949  }
11950  for (int i = 0; i < List_Nbr((yyvsp[(5) - (7)].l)); i++)
11951  {
11952  double d;
11953  List_Read((yyvsp[(5) - (7)].l), i, &d);
11954  subdomain.push_back((int)d);
11955  }
11956  for (int i = 0; i < 4; i++)
11957  dim.push_back(i);
11958  GModel::current()->addHomologyRequest((yyvsp[(1) - (7)].c), domain, subdomain, dim);
11959  List_Delete((yyvsp[(3) - (7)].l));
11960  List_Delete((yyvsp[(5) - (7)].l));
11961  ;
11962  }
11963  break;
11964 
11965  case 404:
11966 #line 5309 "Gmsh.y"
11967  {
11968  std::vector<int> domain, subdomain, dim;
11969  for (int i = 0; i < List_Nbr((yyvsp[(6) - (10)].l)); i++)
11970  {
11971  double d;
11972  List_Read((yyvsp[(6) - (10)].l), i, &d);
11973  domain.push_back((int)d);
11974  }
11975  for (int i = 0; i < List_Nbr((yyvsp[(8) - (10)].l)); i++)
11976  {
11977  double d;
11978  List_Read((yyvsp[(8) - (10)].l), i, &d);
11979  subdomain.push_back((int)d);
11980  }
11981  for (int i = 0; i < List_Nbr((yyvsp[(3) - (10)].l)); i++)
11982  {
11983  double d;
11984  List_Read((yyvsp[(3) - (10)].l), i, &d);
11985  dim.push_back((int)d);
11986  }
11987  GModel::current()->addHomologyRequest((yyvsp[(1) - (10)].c), domain, subdomain, dim);
11988  List_Delete((yyvsp[(6) - (10)].l));
11989  List_Delete((yyvsp[(8) - (10)].l));
11990  List_Delete((yyvsp[(3) - (10)].l));
11991  ;
11992  }
11993  break;
11994 
11995  case 405:
11996 #line 5336 "Gmsh.y"
11997  {
11998  (yyval.d) = (yyvsp[(1) - (1)].d);
11999  ;
12000  }
12001  break;
12002 
12003  case 406:
12004 #line 5337 "Gmsh.y"
12005  {
12006  (yyval.d) = (yyvsp[(2) - (3)].d);
12007  ;
12008  }
12009  break;
12010 
12011  case 407:
12012 #line 5338 "Gmsh.y"
12013  {
12014  (yyval.d) = -(yyvsp[(2) - (2)].d);
12015  ;
12016  }
12017  break;
12018 
12019  case 408:
12020 #line 5339 "Gmsh.y"
12021  {
12022  (yyval.d) = (yyvsp[(2) - (2)].d);
12023  ;
12024  }
12025  break;
12026 
12027  case 409:
12028 #line 5340 "Gmsh.y"
12029  {
12030  (yyval.d) = !(yyvsp[(2) - (2)].d);
12031  ;
12032  }
12033  break;
12034 
12035  case 410:
12036 #line 5341 "Gmsh.y"
12037  {
12038  (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d);
12039  ;
12040  }
12041  break;
12042 
12043  case 411:
12044 #line 5342 "Gmsh.y"
12045  {
12046  (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d);
12047  ;
12048  }
12049  break;
12050 
12051  case 412:
12052 #line 5343 "Gmsh.y"
12053  {
12054  (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d);
12055  ;
12056  }
12057  break;
12058 
12059  case 413:
12060 #line 5345 "Gmsh.y"
12061  {
12062  if (!(yyvsp[(3) - (3)].d))
12063  yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d));
12064  else
12065  (yyval.d) = (yyvsp[(1) - (3)].d) / (yyvsp[(3) - (3)].d);
12066  ;
12067  }
12068  break;
12069 
12070  case 414:
12071 #line 5351 "Gmsh.y"
12072  {
12073  (yyval.d) = (int)(yyvsp[(1) - (3)].d) | (int)(yyvsp[(3) - (3)].d);
12074  ;
12075  }
12076  break;
12077 
12078  case 415:
12079 #line 5352 "Gmsh.y"
12080  {
12081  (yyval.d) = (int)(yyvsp[(1) - (3)].d) & (int)(yyvsp[(3) - (3)].d);
12082  ;
12083  }
12084  break;
12085 
12086  case 416:
12087 #line 5353 "Gmsh.y"
12088  {
12089  (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d);
12090  ;
12091  }
12092  break;
12093 
12094  case 417:
12095 #line 5354 "Gmsh.y"
12096  {
12097  (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d));
12098  ;
12099  }
12100  break;
12101 
12102  case 418:
12103 #line 5355 "Gmsh.y"
12104  {
12105  (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d);
12106  ;
12107  }
12108  break;
12109 
12110  case 419:
12111 #line 5356 "Gmsh.y"
12112  {
12113  (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d);
12114  ;
12115  }
12116  break;
12117 
12118  case 420:
12119 #line 5357 "Gmsh.y"
12120  {
12121  (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d);
12122  ;
12123  }
12124  break;
12125 
12126  case 421:
12127 #line 5358 "Gmsh.y"
12128  {
12129  (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d);
12130  ;
12131  }
12132  break;
12133 
12134  case 422:
12135 #line 5359 "Gmsh.y"
12136  {
12137  (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d);
12138  ;
12139  }
12140  break;
12141 
12142  case 423:
12143 #line 5360 "Gmsh.y"
12144  {
12145  (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d);
12146  ;
12147  }
12148  break;
12149 
12150  case 424:
12151 #line 5361 "Gmsh.y"
12152  {
12153  (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d);
12154  ;
12155  }
12156  break;
12157 
12158  case 425:
12159 #line 5362 "Gmsh.y"
12160  {
12161  (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d);
12162  ;
12163  }
12164  break;
12165 
12166  case 426:
12167 #line 5363 "Gmsh.y"
12168  {
12169  (yyval.d) = ((int)(yyvsp[(1) - (3)].d) >> (int)(yyvsp[(3) - (3)].d));
12170  ;
12171  }
12172  break;
12173 
12174  case 427:
12175 #line 5364 "Gmsh.y"
12176  {
12177  (yyval.d) = ((int)(yyvsp[(1) - (3)].d) << (int)(yyvsp[(3) - (3)].d));
12178  ;
12179  }
12180  break;
12181 
12182  case 428:
12183 #line 5365 "Gmsh.y"
12184  {
12185  (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d);
12186  ;
12187  }
12188  break;
12189 
12190  case 429:
12191 #line 5366 "Gmsh.y"
12192  {
12193  (yyval.d) = exp((yyvsp[(3) - (4)].d));
12194  ;
12195  }
12196  break;
12197 
12198  case 430:
12199 #line 5367 "Gmsh.y"
12200  {
12201  (yyval.d) = log((yyvsp[(3) - (4)].d));
12202  ;
12203  }
12204  break;
12205 
12206  case 431:
12207 #line 5368 "Gmsh.y"
12208  {
12209  (yyval.d) = log10((yyvsp[(3) - (4)].d));
12210  ;
12211  }
12212  break;
12213 
12214  case 432:
12215 #line 5369 "Gmsh.y"
12216  {
12217  (yyval.d) = sqrt((yyvsp[(3) - (4)].d));
12218  ;
12219  }
12220  break;
12221 
12222  case 433:
12223 #line 5370 "Gmsh.y"
12224  {
12225  (yyval.d) = sin((yyvsp[(3) - (4)].d));
12226  ;
12227  }
12228  break;
12229 
12230  case 434:
12231 #line 5371 "Gmsh.y"
12232  {
12233  (yyval.d) = asin((yyvsp[(3) - (4)].d));
12234  ;
12235  }
12236  break;
12237 
12238  case 435:
12239 #line 5372 "Gmsh.y"
12240  {
12241  (yyval.d) = cos((yyvsp[(3) - (4)].d));
12242  ;
12243  }
12244  break;
12245 
12246  case 436:
12247 #line 5373 "Gmsh.y"
12248  {
12249  (yyval.d) = acos((yyvsp[(3) - (4)].d));
12250  ;
12251  }
12252  break;
12253 
12254  case 437:
12255 #line 5374 "Gmsh.y"
12256  {
12257  (yyval.d) = tan((yyvsp[(3) - (4)].d));
12258  ;
12259  }
12260  break;
12261 
12262  case 438:
12263 #line 5375 "Gmsh.y"
12264  {
12265  (yyval.d) = atan((yyvsp[(3) - (4)].d));
12266  ;
12267  }
12268  break;
12269 
12270  case 439:
12271 #line 5376 "Gmsh.y"
12272  {
12273  (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));
12274  ;
12275  }
12276  break;
12277 
12278  case 440:
12279 #line 5377 "Gmsh.y"
12280  {
12281  (yyval.d) = sinh((yyvsp[(3) - (4)].d));
12282  ;
12283  }
12284  break;
12285 
12286  case 441:
12287 #line 5378 "Gmsh.y"
12288  {
12289  (yyval.d) = cosh((yyvsp[(3) - (4)].d));
12290  ;
12291  }
12292  break;
12293 
12294  case 442:
12295 #line 5379 "Gmsh.y"
12296  {
12297  (yyval.d) = tanh((yyvsp[(3) - (4)].d));
12298  ;
12299  }
12300  break;
12301 
12302  case 443:
12303 #line 5380 "Gmsh.y"
12304  {
12305  (yyval.d) = fabs((yyvsp[(3) - (4)].d));
12306  ;
12307  }
12308  break;
12309 
12310  case 444:
12311 #line 5381 "Gmsh.y"
12312  {
12313  (yyval.d) = std::abs((yyvsp[(3) - (4)].d));
12314  ;
12315  }
12316  break;
12317 
12318  case 445:
12319 #line 5382 "Gmsh.y"
12320  {
12321  (yyval.d) = floor((yyvsp[(3) - (4)].d));
12322  ;
12323  }
12324  break;
12325 
12326  case 446:
12327 #line 5383 "Gmsh.y"
12328  {
12329  (yyval.d) = ceil((yyvsp[(3) - (4)].d));
12330  ;
12331  }
12332  break;
12333 
12334  case 447:
12335 #line 5384 "Gmsh.y"
12336  {
12337  (yyval.d) = floor((yyvsp[(3) - (4)].d) + 0.5);
12338  ;
12339  }
12340  break;
12341 
12342  case 448:
12343 #line 5385 "Gmsh.y"
12344  {
12345  (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));
12346  ;
12347  }
12348  break;
12349 
12350  case 449:
12351 #line 5386 "Gmsh.y"
12352  {
12353  (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));
12354  ;
12355  }
12356  break;
12357 
12358  case 450:
12359 #line 5387 "Gmsh.y"
12360  {
12361  (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d));
12362  ;
12363  }
12364  break;
12365 
12366  case 451:
12367 #line 5388 "Gmsh.y"
12368  {
12369  (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX;
12370  ;
12371  }
12372  break;
12373 
12374  case 452:
12375 #line 5389 "Gmsh.y"
12376  {
12377  (yyval.d) = std::max((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));
12378  ;
12379  }
12380  break;
12381 
12382  case 453:
12383 #line 5390 "Gmsh.y"
12384  {
12385  (yyval.d) = std::min((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));
12386  ;
12387  }
12388  break;
12389 
12390  case 454:
12391 #line 5399 "Gmsh.y"
12392  {
12393  (yyval.d) = (yyvsp[(1) - (1)].d);
12394  ;
12395  }
12396  break;
12397 
12398  case 455:
12399 #line 5400 "Gmsh.y"
12400  {
12401  (yyval.d) = 3.141592653589793;
12402  ;
12403  }
12404  break;
12405 
12406  case 456:
12407 #line 5401 "Gmsh.y"
12408  {
12409  (yyval.d) = (double)ImbricatedTest;
12410  ;
12411  }
12412  break;
12413 
12414  case 457:
12415 #line 5402 "Gmsh.y"
12416  {
12417  (yyval.d) = Msg::GetCommRank();
12418  ;
12419  }
12420  break;
12421 
12422  case 458:
12423 #line 5403 "Gmsh.y"
12424  {
12425  (yyval.d) = Msg::GetCommSize();
12426  ;
12427  }
12428  break;
12429 
12430  case 459:
12431 #line 5404 "Gmsh.y"
12432  {
12433  (yyval.d) = GetGmshMajorVersion();
12434  ;
12435  }
12436  break;
12437 
12438  case 460:
12439 #line 5405 "Gmsh.y"
12440  {
12441  (yyval.d) = GetGmshMinorVersion();
12442  ;
12443  }
12444  break;
12445 
12446  case 461:
12447 #line 5406 "Gmsh.y"
12448  {
12449  (yyval.d) = GetGmshPatchVersion();
12450  ;
12451  }
12452  break;
12453 
12454  case 462:
12455 #line 5407 "Gmsh.y"
12456  {
12457  (yyval.d) = Cpu();
12458  ;
12459  }
12460  break;
12461 
12462  case 463:
12463 #line 5408 "Gmsh.y"
12464  {
12465  (yyval.d) = GetMemoryUsage() / 1024. / 1024.;
12466  ;
12467  }
12468  break;
12469 
12470  case 464:
12471 #line 5409 "Gmsh.y"
12472  {
12473  (yyval.d) = TotalRam();
12474  ;
12475  }
12476  break;
12477 
12478  case 465:
12479 #line 5414 "Gmsh.y"
12480  {
12481  init_options();
12482  ;
12483  }
12484  break;
12485 
12486  case 466:
12487 #line 5416 "Gmsh.y"
12488  {
12489  std::vector<double> val(1, (yyvsp[(3) - (6)].d));
12491  (yyval.d) = val[0];
12492  ;
12493  }
12494  break;
12495 
12496  case 467:
12497 #line 5422 "Gmsh.y"
12498  {
12499  (yyval.d) = (yyvsp[(1) - (1)].d);
12500  ;
12501  }
12502  break;
12503 
12504  case 468:
12505 #line 5426 "Gmsh.y"
12506  {
12507  (yyval.d) = Msg::GetOnelabNumber((yyvsp[(3) - (4)].c));
12508  Free((yyvsp[(3) - (4)].c));
12509  ;
12510  }
12511  break;
12512 
12513  case 469:
12514 #line 5431 "Gmsh.y"
12515  {
12516  (yyval.d) = Msg::GetOnelabNumber((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d));
12517  Free((yyvsp[(3) - (6)].c));
12518  ;
12519  }
12520  break;
12521 
12522  case 470:
12523 #line 5436 "Gmsh.y"
12524  {
12525  (yyval.d) = treat_Struct_FullName_Float((yyvsp[(1) - (1)].c2).char1, (yyvsp[(1) - (1)].c2).char2);
12526  ;
12527  }
12528  break;
12529 
12530  case 471:
12531 #line 5441 "Gmsh.y"
12532  {
12533  (yyval.d) = treat_Struct_FullName_Float(nullptr, (yyvsp[(1) - (4)].c), 2, (int)(yyvsp[(3) - (4)].d));
12534  ;
12535  }
12536  break;
12537 
12538  case 472:
12539 #line 5446 "Gmsh.y"
12540  {
12541  (yyval.d) = treat_Struct_FullName_Float(nullptr, (yyvsp[(1) - (4)].c), 2, (int)(yyvsp[(3) - (4)].d));
12542  ;
12543  }
12544  break;
12545 
12546  case 473:
12547 #line 5450 "Gmsh.y"
12548  {
12549  (yyval.d) = treat_Struct_FullName_Float((yyvsp[(3) - (4)].c2).char1, (yyvsp[(3) - (4)].c2).char2, 1, 0, 0., 1);
12550  ;
12551  }
12552  break;
12553 
12554  case 474:
12555 #line 5454 "Gmsh.y"
12556  {
12557  (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(3) - (6)].c2).char1, (yyvsp[(3) - (6)].c2).char2,
12558  (yyvsp[(5) - (6)].c), 0, 0., 1);
12559  ;
12560  }
12561  break;
12562 
12563  case 475:
12564 #line 5458 "Gmsh.y"
12565  {
12566  (yyval.d) = treat_Struct_FullName_Float((yyvsp[(3) - (5)].c2).char1, (yyvsp[(3) - (5)].c2).char2, 1, 0,
12567  (yyvsp[(4) - (5)].d), 2);
12568  ;
12569  }
12570  break;
12571 
12572  case 476:
12573 #line 5462 "Gmsh.y"
12574  {
12575  (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(3) - (7)].c2).char1, (yyvsp[(3) - (7)].c2).char2,
12576  (yyvsp[(5) - (7)].c), 0, (yyvsp[(6) - (7)].d), 2);
12577  ;
12578  }
12579  break;
12580 
12581  case 477:
12582 #line 5466 "Gmsh.y"
12583  {
12584  (yyval.d) = treat_Struct_FullName_Float((yyvsp[(3) - (8)].c2).char1, (yyvsp[(3) - (8)].c2).char2, 2,
12585  (int)(yyvsp[(5) - (8)].d), (yyvsp[(7) - (8)].d), 2);
12586  ;
12587  }
12588  break;
12589 
12590  case 478:
12591 #line 5470 "Gmsh.y"
12592  {
12593  (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(3) - (10)].c2).char1, (yyvsp[(3) - (10)].c2).char2,
12594  (yyvsp[(5) - (10)].c), (int)(yyvsp[(7) - (10)].d),
12595  (yyvsp[(9) - (10)].d), 2);
12596  ;
12597  }
12598  break;
12599 
12600  case 479:
12601 #line 5474 "Gmsh.y"
12602  {
12603  std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(3) - (4)].c));
12604  (yyval.d) = !StatFile(tmp);
12605  Free((yyvsp[(3) - (4)].c));
12606  ;
12607  }
12608  break;
12609 
12610  case 480:
12611 #line 5480 "Gmsh.y"
12612  {
12613  if (gmsh_yysymbols.count((yyvsp[(2) - (4)].c)))
12614  {
12615  gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(2) - (4)].c)]);
12616  (yyval.d) = s.value.size();
12617  }
12618  else if (gmsh_yystringsymbols.count((yyvsp[(2) - (4)].c)))
12619  {
12620  (yyval.d) = gmsh_yystringsymbols[(yyvsp[(2) - (4)].c)].size();
12621  }
12622  else
12623  {
12624  yymsg(0, "Unknown variable '%s'", (yyvsp[(2) - (4)].c));
12625  (yyval.d) = 0.;
12626  }
12627  Free((yyvsp[(2) - (4)].c));
12628  ;
12629  }
12630  break;
12631 
12632  case 481:
12633 #line 5495 "Gmsh.y"
12634  {
12635  (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float_getDim((yyvsp[(2) - (6)].c2).char1,
12636  (yyvsp[(2) - (6)].c2).char2, (yyvsp[(4) - (6)].c));
12637  ;
12638  }
12639  break;
12640 
12641  case 482:
12642 #line 5499 "Gmsh.y"
12643  {
12644  std::string struct_namespace((yyvsp[(3) - (4)].c));
12645  (yyval.d) = (double)gmsh_yynamespaces[struct_namespace].size();
12646  Free((yyvsp[(3) - (4)].c));
12647  ;
12648  }
12649  break;
12650 
12651  case 483:
12652 #line 5505 "Gmsh.y"
12653  {
12654  std::string struct_namespace(std::string(""));
12655  (yyval.d) = (double)gmsh_yynamespaces[struct_namespace].size();
12656  ;
12657  }
12658  break;
12659 
12660  case 484:
12661 #line 5510 "Gmsh.y"
12662  {
12663  if (!gmsh_yysymbols.count((yyvsp[(1) - (2)].c)))
12664  {
12665  yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (2)].c));
12666  (yyval.d) = 0.;
12667  }
12668  else
12669  {
12670  gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(1) - (2)].c)]);
12671  if (s.value.empty())
12672  {
12673  yymsg(0, "Uninitialized variable '%s'", (yyvsp[(1) - (2)].c));
12674  (yyval.d) = 0.;
12675  }
12676  else
12677  {
12678  (yyval.d) = s.value[0];
12679  s.value[0] += (yyvsp[(2) - (2)].i);
12680  }
12681  }
12682  Free((yyvsp[(1) - (2)].c));
12683  ;
12684  }
12685  break;
12686 
12687  case 485:
12688 #line 5529 "Gmsh.y"
12689  {
12690  int index = (int)(yyvsp[(3) - (5)].d);
12691  if (!gmsh_yysymbols.count((yyvsp[(1) - (5)].c)))
12692  {
12693  yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (5)].c));
12694  (yyval.d) = 0.;
12695  }
12696  else
12697  {
12698  gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(1) - (5)].c)]);
12699  if ((int)s.value.size() < index + 1)
12700  {
12701  yymsg(0, "Uninitialized variable '%s[%d]'", (yyvsp[(1) - (5)].c), index);
12702  (yyval.d) = 0.;
12703  }
12704  else
12705  {
12706  (yyval.d) = s.value[index];
12707  s.value[index] += (yyvsp[(5) - (5)].i);
12708  }
12709  }
12710  Free((yyvsp[(1) - (5)].c));
12711  ;
12712  }
12713  break;
12714 
12715  case 486:
12716 #line 5549 "Gmsh.y"
12717  {
12718  int index = (int)(yyvsp[(3) - (5)].d);
12719  if (!gmsh_yysymbols.count((yyvsp[(1) - (5)].c)))
12720  {
12721  yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (5)].c));
12722  (yyval.d) = 0.;
12723  }
12724  else
12725  {
12726  gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(1) - (5)].c)]);
12727  if ((int)s.value.size() < index + 1)
12728  {
12729  yymsg(0, "Uninitialized variable '%s[%d]'", (yyvsp[(1) - (5)].c), index);
12730  (yyval.d) = 0.;
12731  }
12732  else
12733  {
12734  (yyval.d) = s.value[index];
12735  s.value[index] += (yyvsp[(5) - (5)].i);
12736  }
12737  }
12738  Free((yyvsp[(1) - (5)].c));
12739  ;
12740  }
12741  break;
12742 
12743  case 487:
12744 #line 5570 "Gmsh.y"
12745  {
12746  (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float(nullptr, (yyvsp[(1) - (3)].c), (yyvsp[(3) - (3)].c));
12747  ;
12748  }
12749  break;
12750 
12751  case 488:
12752 #line 5574 "Gmsh.y"
12753  {
12754  (yyval.d) =
12755  treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(1) - (5)].c), (yyvsp[(3) - (5)].c), (yyvsp[(5) - (5)].c));
12756  ;
12757  }
12758  break;
12759 
12760  case 489:
12761 #line 5578 "Gmsh.y"
12762  {
12763  (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float(nullptr, (yyvsp[(1) - (6)].c), (yyvsp[(3) - (6)].c),
12764  (int)(yyvsp[(5) - (6)].d));
12765  ;
12766  }
12767  break;
12768 
12769  case 490:
12770 #line 5582 "Gmsh.y"
12771  {
12772  (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(1) - (8)].c), (yyvsp[(3) - (8)].c),
12773  (yyvsp[(5) - (8)].c), (int)(yyvsp[(7) - (8)].d));
12774  ;
12775  }
12776  break;
12777 
12778  case 491:
12779 #line 5586 "Gmsh.y"
12780  {
12781  (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float(nullptr, (yyvsp[(1) - (6)].c), (yyvsp[(3) - (6)].c),
12782  (int)(yyvsp[(5) - (6)].d));
12783  ;
12784  }
12785  break;
12786 
12787  case 492:
12788 #line 5590 "Gmsh.y"
12789  {
12790  (yyval.d) = treat_Struct_FullName_dot_tSTRING_Float((yyvsp[(1) - (8)].c), (yyvsp[(3) - (8)].c),
12791  (yyvsp[(5) - (8)].c), (int)(yyvsp[(7) - (8)].d));
12792  ;
12793  }
12794  break;
12795 
12796  case 493:
12797 #line 5594 "Gmsh.y"
12798  {
12799  NumberOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), (yyval.d));
12800  Free((yyvsp[(1) - (6)].c));
12801  Free((yyvsp[(6) - (6)].c));
12802  ;
12803  }
12804  break;
12805 
12806  case 494:
12807 #line 5599 "Gmsh.y"
12808  {
12809  double d = 0.;
12810  if (NumberOption(GMSH_GET, (yyvsp[(1) - (4)].c), 0, (yyvsp[(3) - (4)].c), d))
12811  {
12812  d += (yyvsp[(4) - (4)].i);
12813  NumberOption(GMSH_SET | GMSH_GUI, (yyvsp[(1) - (4)].c), 0, (yyvsp[(3) - (4)].c), d);
12814  (yyval.d) = d;
12815  }
12816  Free((yyvsp[(1) - (4)].c));
12817  Free((yyvsp[(3) - (4)].c));
12818  ;
12819  }
12820  break;
12821 
12822  case 495:
12823 #line 5609 "Gmsh.y"
12824  {
12825  double d = 0.;
12826  if (NumberOption(GMSH_GET, (yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c), d))
12827  {
12828  d += (yyvsp[(7) - (7)].i);
12829  NumberOption(GMSH_SET | GMSH_GUI, (yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c), d);
12830  (yyval.d) = d;
12831  }
12832  Free((yyvsp[(1) - (7)].c));
12833  Free((yyvsp[(6) - (7)].c));
12834  ;
12835  }
12836  break;
12837 
12838  case 496:
12839 #line 5619 "Gmsh.y"
12840  {
12841  (yyval.d) = Msg::GetValue((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d));
12842  Free((yyvsp[(3) - (6)].c));
12843  ;
12844  }
12845  break;
12846 
12847  case 497:
12848 #line 5624 "Gmsh.y"
12849  {
12850  int matches = 0;
12851  for (int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++)
12852  {
12853  double d;
12854  List_Read((yyvsp[(3) - (6)].l), i, &d);
12855  matches += List_Search((yyvsp[(5) - (6)].l), &d, fcmp_double);
12856  }
12857  (yyval.d) = matches;
12858  Free((yyvsp[(3) - (6)].l));
12859  Free((yyvsp[(5) - (6)].l));
12860  ;
12861  }
12862  break;
12863 
12864  case 498:
12865 #line 5635 "Gmsh.y"
12866  {
12867  std::string s((yyvsp[(3) - (6)].c)), substr((yyvsp[(5) - (6)].c));
12868  if (s.find(substr) != std::string::npos)
12869  (yyval.d) = 1.;
12870  else
12871  (yyval.d) = 0.;
12872  Free((yyvsp[(3) - (6)].c));
12873  Free((yyvsp[(5) - (6)].c));
12874  ;
12875  }
12876  break;
12877 
12878  case 499:
12879 #line 5644 "Gmsh.y"
12880  {
12881  (yyval.d) = strlen((yyvsp[(3) - (4)].c));
12882  Free((yyvsp[(3) - (4)].c));
12883  ;
12884  }
12885  break;
12886 
12887  case 500:
12888 #line 5649 "Gmsh.y"
12889  {
12890  (yyval.d) = strcmp((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c));
12891  Free((yyvsp[(3) - (6)].c));
12892  Free((yyvsp[(5) - (6)].c));
12893  ;
12894  }
12895  break;
12896 
12897  case 501:
12898 #line 5654 "Gmsh.y"
12899  {
12900  int align = 0, font = 0, fontsize = CTX::instance()->glFontSize;
12901  if (List_Nbr((yyvsp[(3) - (4)].l)) % 2)
12902  {
12903  yymsg(0, "Number of text attributes should be even");
12904  }
12905  else
12906  {
12907  for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i += 2)
12908  {
12909  char *s1, *s2;
12910  List_Read((yyvsp[(3) - (4)].l), i, &s1);
12911  List_Read((yyvsp[(3) - (4)].l), i + 1, &s2);
12912  std::string key(s1), val(s2);
12913  Free(s1);
12914  Free(s2);
12915 #if defined(HAVE_OPENGL)
12916  if (key == "Font")
12917  font = drawContext::global()->getFontIndex(val.c_str());
12918  else if (key == "FontSize")
12919  fontsize = atoi(val.c_str());
12920  else if (key == "Align")
12921  align = drawContext::global()->getFontAlign(val.c_str());
12922 #endif
12923  }
12924  }
12925  List_Delete((yyvsp[(3) - (4)].l));
12926  (yyval.d) = (double)((align << 16) | (font << 8) | (fontsize));
12927  ;
12928  }
12929  break;
12930 
12931  case 502:
12932 #line 5681 "Gmsh.y"
12933  {
12934  (yyval.d) = 0.;
12935  ;
12936  }
12937  break;
12938 
12939  case 503:
12940 #line 5683 "Gmsh.y"
12941  {
12942  (yyval.d) = (yyvsp[(2) - (2)].d);
12943  ;
12944  }
12945  break;
12946 
12947  case 504:
12948 #line 5688 "Gmsh.y"
12949  {
12950  (yyval.c) = nullptr;
12951  ;
12952  }
12953  break;
12954 
12955  case 505:
12956 #line 5690 "Gmsh.y"
12957  {
12958  (yyval.c) = (yyvsp[(2) - (2)].c);
12959  ;
12960  }
12961  break;
12962 
12963  case 506:
12964 #line 5695 "Gmsh.y"
12965  {
12966  std::string struct_namespace((yyvsp[(2) - (3)].c2).char1 ? (yyvsp[(2) - (3)].c2).char1 : std::string("")),
12967  struct_name((yyvsp[(2) - (3)].c2).char2);
12969  ;
12970  }
12971  break;
12972 
12973  case 507:
12974 #line 5702 "Gmsh.y"
12975  {
12976  std::string struct_namespace((yyvsp[(2) - (7)].c2).char1 ? (yyvsp[(2) - (7)].c2).char1 : std::string("")),
12977  struct_name((yyvsp[(2) - (7)].c2).char2);
12978  Free((yyvsp[(2) - (7)].c2).char1);
12979  Free((yyvsp[(2) - (7)].c2).char2);
12980  int tag_out;
12982  member_ValMax, (yyvsp[(3) - (7)].i)))
12983  yymsg(0, "Redefinition of Struct '%s::%s'", struct_namespace.c_str(), struct_name.c_str());
12984  (yyval.d) = (double)tag_out;
12985  ;
12986  }
12987  break;
12988 
12989  case 508:
12990 #line 5718 "Gmsh.y"
12991  {
12992  (yyval.c2).char1 = nullptr;
12993  (yyval.c2).char2 = (yyvsp[(1) - (1)].c);
12994  ;
12995  }
12996  break;
12997 
12998  case 509:
12999 #line 5720 "Gmsh.y"
13000  {
13001  (yyval.c2).char1 = (yyvsp[(1) - (3)].c);
13002  (yyval.c2).char2 = (yyvsp[(3) - (3)].c);
13003  ;
13004  }
13005  break;
13006 
13007  case 510:
13008 #line 5725 "Gmsh.y"
13009  {
13010  (yyval.i) = 99;
13011  ;
13012  }
13013  break;
13014 
13015  case 511:
13016 #line 5727 "Gmsh.y"
13017  {
13018  (yyval.i) = (int)(yyvsp[(2) - (2)].d);
13019  ;
13020  }
13021  break;
13022 
13023  case 512:
13024 #line 5732 "Gmsh.y"
13025  {
13026  (yyval.i) = 0;
13027  ;
13028  }
13029  break;
13030 
13031  case 513:
13032 #line 5734 "Gmsh.y"
13033  {
13034  (yyval.i) = (yyvsp[(2) - (3)].i);
13035  ;
13036  }
13037  break;
13038 
13039  case 514:
13040 #line 5739 "Gmsh.y"
13041  {
13042  memcpy((yyval.v), (yyvsp[(1) - (1)].v), 5 * sizeof(double));
13043  ;
13044  }
13045  break;
13046 
13047  case 515:
13048 #line 5743 "Gmsh.y"
13049  {
13050  for (int i = 0; i < 5; i++)
13051  (yyval.v)[i] = -(yyvsp[(2) - (2)].v)[i];
13052  ;
13053  }
13054  break;
13055 
13056  case 516:
13057 #line 5747 "Gmsh.y"
13058  {
13059  for (int i = 0; i < 5; i++)
13060  (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i];
13061  ;
13062  }
13063  break;
13064 
13065  case 517:
13066 #line 5751 "Gmsh.y"
13067  {
13068  for (int i = 0; i < 5; i++)
13069  (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] - (yyvsp[(3) - (3)].v)[i];
13070  ;
13071  }
13072  break;
13073 
13074  case 518:
13075 #line 5755 "Gmsh.y"
13076  {
13077  for (int i = 0; i < 5; i++)
13078  (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] + (yyvsp[(3) - (3)].v)[i];
13079  ;
13080  }
13081  break;
13082 
13083  case 519:
13084 #line 5762 "Gmsh.y"
13085  {
13086  (yyval.v)[0] = (yyvsp[(2) - (11)].d);
13087  (yyval.v)[1] = (yyvsp[(4) - (11)].d);
13088  (yyval.v)[2] = (yyvsp[(6) - (11)].d);
13089  (yyval.v)[3] = (yyvsp[(8) - (11)].d);
13090  (yyval.v)[4] = (yyvsp[(10) - (11)].d);
13091  ;
13092  }
13093  break;
13094 
13095  case 520:
13096 #line 5766 "Gmsh.y"
13097  {
13098  (yyval.v)[0] = (yyvsp[(2) - (9)].d);
13099  (yyval.v)[1] = (yyvsp[(4) - (9)].d);
13100  (yyval.v)[2] = (yyvsp[(6) - (9)].d);
13101  (yyval.v)[3] = (yyvsp[(8) - (9)].d);
13102  (yyval.v)[4] = 1.0;
13103  ;
13104  }
13105  break;
13106 
13107  case 521:
13108 #line 5770 "Gmsh.y"
13109  {
13110  (yyval.v)[0] = (yyvsp[(2) - (7)].d);
13111  (yyval.v)[1] = (yyvsp[(4) - (7)].d);
13112  (yyval.v)[2] = (yyvsp[(6) - (7)].d);
13113  (yyval.v)[3] = 0.0;
13114  (yyval.v)[4] = 1.0;
13115  ;
13116  }
13117  break;
13118 
13119  case 522:
13120 #line 5774 "Gmsh.y"
13121  {
13122  (yyval.v)[0] = (yyvsp[(2) - (7)].d);
13123  (yyval.v)[1] = (yyvsp[(4) - (7)].d);
13124  (yyval.v)[2] = (yyvsp[(6) - (7)].d);
13125  (yyval.v)[3] = 0.0;
13126  (yyval.v)[4] = 1.0;
13127  ;
13128  }
13129  break;
13130 
13131  case 523:
13132 #line 5781 "Gmsh.y"
13133  {
13134  (yyval.l) = List_Create(2, 1, sizeof(List_T *));
13135  List_Add((yyval.l), &((yyvsp[(1) - (1)].l)));
13136  ;
13137  }
13138  break;
13139 
13140  case 524:
13141 #line 5786 "Gmsh.y"
13142  {
13143  List_Add((yyval.l), &((yyvsp[(3) - (3)].l)));
13144  ;
13145  }
13146  break;
13147 
13148  case 525:
13149 #line 5793 "Gmsh.y"
13150  {
13151  (yyval.l) = List_Create(2, 1, sizeof(double));
13152  List_Add((yyval.l), &((yyvsp[(1) - (1)].d)));
13153  ;
13154  }
13155  break;
13156 
13157  case 526:
13158 #line 5798 "Gmsh.y"
13159  {
13160  (yyval.l) = (yyvsp[(1) - (1)].l);
13161  ;
13162  }
13163  break;
13164 
13165  case 527:
13166 #line 5802 "Gmsh.y"
13167  {
13168  // creates an empty list
13169  (yyval.l) = List_Create(2, 1, sizeof(double));
13170  ;
13171  }
13172  break;
13173 
13174  case 528:
13175 #line 5807 "Gmsh.y"
13176  {
13177  (yyval.l) = (yyvsp[(2) - (3)].l);
13178  ;
13179  }
13180  break;
13181 
13182  case 529:
13183 #line 5811 "Gmsh.y"
13184  {
13185  (yyval.l) = (yyvsp[(3) - (4)].l);
13186  for (int i = 0; i < List_Nbr((yyval.l)); i++)
13187  {
13188  double *pd = (double *)List_Pointer((yyval.l), i);
13189  (*pd) = -(*pd);
13190  };
13191  }
13192  break;
13193 
13194  case 530:
13195 #line 5819 "Gmsh.y"
13196  {
13197  (yyval.l) = (yyvsp[(4) - (5)].l);
13198  for (int i = 0; i < List_Nbr((yyval.l)); i++)
13199  {
13200  double *pd = (double *)List_Pointer((yyval.l), i);
13201  (*pd) *= (yyvsp[(1) - (5)].d);
13202  };
13203  }
13204  break;
13205 
13206  case 531:
13207 #line 5830 "Gmsh.y"
13208  {
13209  (yyval.l) = (yyvsp[(1) - (1)].l);
13210  ;
13211  }
13212  break;
13213 
13214  case 532:
13215 #line 5834 "Gmsh.y"
13216  {
13217  (yyval.l) = 0;
13218  ;
13219  }
13220  break;
13221 
13222  case 533:
13223 #line 5838 "Gmsh.y"
13224  {
13225  if (!strcmp((yyvsp[(1) - (1)].c), "*") || !strcmp((yyvsp[(1) - (1)].c), "all"))
13226  {
13227  (yyval.l) = 0;
13228  }
13229  else
13230  {
13231  yyerror("Unknown special string for list replacement");
13232  (yyval.l) = List_Create(2, 1, sizeof(double));
13233  }
13234  Free((yyvsp[(1) - (1)].c));
13235  ;
13236  }
13237  break;
13238 
13239  case 534:
13240 #line 5852 "Gmsh.y"
13241  {
13242  (yyval.l) = (yyvsp[(2) - (2)].l);
13243  for (int i = 0; i < List_Nbr((yyval.l)); i++)
13244  {
13245  double *pd = (double *)List_Pointer((yyval.l), i);
13246  (*pd) = -(*pd);
13247  };
13248  }
13249  break;
13250 
13251  case 535:
13252 #line 5860 "Gmsh.y"
13253  {
13254  (yyval.l) = (yyvsp[(3) - (3)].l);
13255  for (int i = 0; i < List_Nbr((yyval.l)); i++)
13256  {
13257  double *pd = (double *)List_Pointer((yyval.l), i);
13258  (*pd) *= (yyvsp[(1) - (3)].d);
13259  };
13260  }
13261  break;
13262 
13263  case 536:
13264 #line 5868 "Gmsh.y"
13265  {
13266  (yyval.l) = List_Create(2, 1, sizeof(double));
13267  for (double d = (yyvsp[(1) - (3)].d);
13268  ((yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d)) ? (d <= (yyvsp[(3) - (3)].d)) : (d >= (yyvsp[(3) - (3)].d));
13269  ((yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d)) ? (d += 1.) : (d -= 1.))
13270  List_Add((yyval.l), &d);
13271  ;
13272  }
13273  break;
13274 
13275  case 537:
13276 #line 5875 "Gmsh.y"
13277  {
13278  (yyval.l) = List_Create(2, 1, sizeof(double));
13279  if (!(yyvsp[(5) - (5)].d))
13280  { //|| ($1 < $3 && $5 < 0) || ($1 > $3 && $5 > 0)
13281  yymsg(0, "Wrong increment in '%g:%g:%g'", (yyvsp[(1) - (5)].d), (yyvsp[(3) - (5)].d), (yyvsp[(5) - (5)].d));
13282  }
13283  else
13284  for (double d = (yyvsp[(1) - (5)].d);
13285  ((yyvsp[(5) - (5)].d) > 0) ? (d <= (yyvsp[(3) - (5)].d)) : (d >= (yyvsp[(3) - (5)].d));
13286  d += (yyvsp[(5) - (5)].d))
13287  List_Add((yyval.l), &d);
13288  ;
13289  }
13290  break;
13291 
13292  case 538:
13293 #line 5885 "Gmsh.y"
13294  {
13295  (yyval.l) = List_Create(3, 1, sizeof(double));
13296  int tag = (int)(yyvsp[(3) - (4)].d);
13297  double x = 0., y = 0., z = 0.;
13298  bool found = GModel::current()->getGEOInternals()->getVertex(tag, x, y, z);
13299  if (!found && GModel::current()->getOCCInternals())
13300  found = GModel::current()->getOCCInternals()->getVertex(tag, x, y, z);
13301  if (!found)
13302  {
13303  GVertex *gv = GModel::current()->getVertexByTag(tag);
13304  if (gv)
13305  {
13306  x = gv->x();
13307  y = gv->y();
13308  z = gv->z();
13309  }
13310  else
13311  {
13312  yymsg(0, "Unknown model point with tag %d", tag);
13313  }
13314  }
13315  List_Add((yyval.l), &x);
13316  List_Add((yyval.l), &y);
13317  List_Add((yyval.l), &z);
13318  ;
13319  }
13320  break;
13321 
13322  case 539:
13323 #line 5908 "Gmsh.y"
13324  {
13325  (yyval.l) = List_Create(10, 10, sizeof(double));
13326  getAllElementaryTags(0, (yyval.l));
13327  ;
13328  }
13329  break;
13330 
13331  case 540:
13332 #line 5913 "Gmsh.y"
13333  {
13334  (yyval.l) = List_Create(10, 10, sizeof(double));
13335  getAllElementaryTags(0, (yyval.l));
13336  Free((yyvsp[(2) - (2)].c));
13337  ;
13338  }
13339  break;
13340 
13341  case 541:
13342 #line 5919 "Gmsh.y"
13343  {
13344  (yyval.l) = List_Create(10, 10, sizeof(double));
13345  getAllElementaryTags((yyvsp[(1) - (4)].i), (yyval.l));
13346  ;
13347  }
13348  break;
13349 
13350  case 542:
13351 #line 5924 "Gmsh.y"
13352  {
13353  (yyval.l) = List_Create(10, 10, sizeof(double));
13354  getAllElementaryTags((yyvsp[(1) - (2)].i), (yyval.l));
13355  Free((yyvsp[(2) - (2)].c));
13356  ;
13357  }
13358  break;
13359 
13360  case 543:
13361 #line 5930 "Gmsh.y"
13362  {
13363  (yyval.l) = List_Create(10, 10, sizeof(double));
13364  if (!(yyvsp[(3) - (3)].l))
13365  {
13366  getAllPhysicalTags((yyvsp[(2) - (3)].i), (yyval.l));
13367  }
13368  else
13369  {
13370  getElementaryTagsForPhysicalGroups((yyvsp[(2) - (3)].i), (yyvsp[(3) - (3)].l), (yyval.l));
13371  List_Delete((yyvsp[(3) - (3)].l));
13372  };
13373  }
13374  break;
13375 
13376  case 544:
13377 #line 5941 "Gmsh.y"
13378  {
13379  (yyval.l) = List_Create(10, 10, sizeof(double));
13380  getParentTags((yyvsp[(2) - (3)].i), (yyvsp[(3) - (3)].l), (yyval.l));
13381  List_Delete((yyvsp[(3) - (3)].l));
13382  ;
13383  }
13384  break;
13385 
13386  case 545:
13387 #line 5947 "Gmsh.y"
13388  {
13389  (yyval.l) = List_Create(10, 10, sizeof(double));
13390  if (List_Nbr((yyvsp[(4) - (4)].l)) < 6)
13391  {
13392  yymsg(0, "Bounding box should be {xmin, ymin, zmin, xmax, ymax, zmax}");
13393  }
13394  else
13395  {
13396  double bb[6];
13397  for (int i = 0; i < 6; i++)
13398  List_Read((yyvsp[(4) - (4)].l), i, &bb[i]);
13399  getElementaryTagsInBoundingBox((yyvsp[(1) - (4)].i), bb[0], bb[1], bb[2], bb[3], bb[4], bb[5], (yyval.l));
13400  }
13401  List_Delete((yyvsp[(4) - (4)].l));
13402  ;
13403  }
13404  break;
13405 
13406  case 546:
13407 #line 5961 "Gmsh.y"
13408  {
13409  (yyval.l) = List_Create(10, 10, sizeof(double));
13410  getBoundingBox((yyvsp[(2) - (5)].i), (yyvsp[(4) - (5)].l), (yyval.l));
13411  List_Delete((yyvsp[(4) - (5)].l));
13412  ;
13413  }
13414  break;
13415 
13416  case 547:
13417 #line 5967 "Gmsh.y"
13418  {
13419  (yyval.l) = List_Create(1, 1, sizeof(double));
13420  double m = 0;
13421  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
13422  {
13423  GModel::current()->getOCCInternals()->getMass((yyvsp[(2) - (5)].i), (int)(yyvsp[(4) - (5)].d), m);
13424  }
13425  else
13426  {
13427  yymsg(0, "Mass only available with OpenCASCADE geometry kernel");
13428  }
13429  List_Add((yyval.l), &m);
13430  ;
13431  }
13432  break;
13433 
13434  case 548:
13435 #line 5979 "Gmsh.y"
13436  {
13437  (yyval.l) = List_Create(3, 1, sizeof(double));
13438  double x = 0., y = 0., z = 0.;
13439  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
13440  {
13441  GModel::current()->getOCCInternals()->getCenterOfMass((yyvsp[(2) - (5)].i), (int)(yyvsp[(4) - (5)].d), x, y,
13442  z);
13443  }
13444  else
13445  {
13446  yymsg(0, "CenterOfMass only available with OpenCASCADE geometry kernel");
13447  }
13448  List_Add((yyval.l), &x);
13449  List_Add((yyval.l), &y);
13450  List_Add((yyval.l), &z);
13451  ;
13452  }
13453  break;
13454 
13455  case 549:
13456 #line 5993 "Gmsh.y"
13457  {
13458  (yyval.l) = List_Create(9, 1, sizeof(double));
13459  if (gmsh_yyfactory == "OpenCASCADE" && GModel::current()->getOCCInternals())
13460  {
13461  std::vector<double> mat;
13462  GModel::current()->getOCCInternals()->getMatrixOfInertia((yyvsp[(2) - (5)].i), (int)(yyvsp[(4) - (5)].d),
13463  mat);
13464  for (std::size_t i = 0; i < mat.size(); i++)
13465  List_Add((yyval.l), &mat[i]);
13466  }
13467  else
13468  {
13469  yymsg(0, "MatrixOfInertia only available with OpenCASCADE geometry kernel");
13470  };
13471  }
13472  break;
13473 
13474  case 550:
13475 #line 6006 "Gmsh.y"
13476  {
13477  (yyval.l) = List_Create(3, 1, sizeof(double));
13478  double r = 0., g = 0., b = 0., a = 0.;
13479  GEntity *ge = GModel::current()->getEntityByTag((yyvsp[(2) - (5)].i), (int)(yyvsp[(4) - (5)].d));
13480  if (ge)
13481  {
13482  unsigned int value = ge->getColor();
13483  r = CTX::instance()->unpackRed(value);
13484  g = CTX::instance()->unpackGreen(value);
13485  b = CTX::instance()->unpackBlue(value);
13486  a = CTX::instance()->unpackAlpha(value);
13487  List_Add((yyval.l), &r);
13488  List_Add((yyval.l), &g);
13489  List_Add((yyval.l), &b);
13490  List_Add((yyval.l), &a);
13491  };
13492  }
13493  break;
13494 
13495  case 551:
13496 #line 6023 "Gmsh.y"
13497  {
13498  (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double));
13499  for (int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++)
13500  {
13501  Shape *s = (Shape *)List_Pointer((yyvsp[(1) - (1)].l), i);
13502  double d = s->Num;
13503  List_Add((yyval.l), &d);
13504  }
13505  List_Delete((yyvsp[(1) - (1)].l));
13506  ;
13507  }
13508  break;
13509 
13510  case 552:
13511 #line 6033 "Gmsh.y"
13512  {
13513  (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double));
13514  for (int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++)
13515  {
13516  Shape *s = (Shape *)List_Pointer((yyvsp[(1) - (1)].l), i);
13517  double d = s->Num;
13518  List_Add((yyval.l), &d);
13519  }
13520  List_Delete((yyvsp[(1) - (1)].l));
13521  ;
13522  }
13523  break;
13524 
13525  case 553:
13526 #line 6043 "Gmsh.y"
13527  {
13528  (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double));
13529  for (int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++)
13530  {
13531  Shape *s = (Shape *)List_Pointer((yyvsp[(1) - (1)].l), i);
13532  double d = s->Num;
13533  List_Add((yyval.l), &d);
13534  }
13535  List_Delete((yyvsp[(1) - (1)].l));
13536  ;
13537  }
13538  break;
13539 
13540  case 554:
13541 #line 6053 "Gmsh.y"
13542  {
13543  (yyval.l) = List_Create(20, 20, sizeof(double));
13544  if (!gmsh_yysymbols.count((yyvsp[(1) - (3)].c)))
13545  yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (3)].c));
13546  else
13547  {
13548  gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(1) - (3)].c)]);
13549  for (std::size_t i = 0; i < s.value.size(); i++)
13550  List_Add((yyval.l), &s.value[i]);
13551  }
13552  Free((yyvsp[(1) - (3)].c));
13553  ;
13554  }
13555  break;
13556 
13557  case 555:
13558 #line 6065 "Gmsh.y"
13559  {
13560  (yyval.l) = treat_Struct_FullName_dot_tSTRING_ListOfFloat(nullptr, (yyvsp[(1) - (5)].c), (yyvsp[(3) - (5)].c));
13561  ;
13562  }
13563  break;
13564 
13565  case 556:
13566 #line 6069 "Gmsh.y"
13567  {
13568  (yyval.l) = treat_Struct_FullName_dot_tSTRING_ListOfFloat((yyvsp[(1) - (7)].c), (yyvsp[(3) - (7)].c),
13569  (yyvsp[(5) - (7)].c));
13570  ;
13571  }
13572  break;
13573 
13574  case 557:
13575 #line 6074 "Gmsh.y"
13576  {
13577  (yyval.l) = List_Create(2, 1, sizeof(double));
13578  if (!gmsh_yysymbols.count((yyvsp[(3) - (4)].c)))
13579  yymsg(0, "Unknown variable '%s'", (yyvsp[(3) - (4)].c));
13580  else
13581  {
13582  gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(3) - (4)].c)]);
13583  for (std::size_t i = 0; i < s.value.size(); i++)
13584  List_Add((yyval.l), &s.value[i]);
13585  }
13586  Free((yyvsp[(3) - (4)].c));
13587  ;
13588  }
13589  break;
13590 
13591  case 558:
13592 #line 6086 "Gmsh.y"
13593  {
13594  (yyval.l) = (yyvsp[(3) - (4)].l);
13595  ;
13596  }
13597  break;
13598 
13599  case 559:
13600 #line 6090 "Gmsh.y"
13601  {
13602  (yyval.l) = (yyvsp[(3) - (4)].l);
13603  ;
13604  }
13605  break;
13606 
13607  case 560:
13608 #line 6094 "Gmsh.y"
13609  {
13610  (yyval.l) = (yyvsp[(4) - (6)].l);
13611  ;
13612  }
13613  break;
13614 
13615  case 561:
13616 #line 6098 "Gmsh.y"
13617  {
13618  (yyval.l) = List_Create(2, 1, sizeof(double));
13619  if (!gmsh_yysymbols.count((yyvsp[(1) - (6)].c)))
13620  yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (6)].c));
13621  else
13622  {
13623  gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(1) - (6)].c)]);
13624  for (int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++)
13625  {
13626  int index = (int)(*(double *)List_Pointer_Fast((yyvsp[(4) - (6)].l), i));
13627  if ((int)s.value.size() < index + 1)
13628  yymsg(0, "Uninitialized variable '%s[%d]'", (yyvsp[(1) - (6)].c), index);
13629  else
13630  List_Add((yyval.l), &s.value[index]);
13631  }
13632  }
13633  Free((yyvsp[(1) - (6)].c));
13634  List_Delete((yyvsp[(4) - (6)].l));
13635  ;
13636  }
13637  break;
13638 
13639  case 562:
13640 #line 6116 "Gmsh.y"
13641  {
13642  (yyval.l) = List_Create(20, 20, sizeof(double));
13643  for (int i = 0; i < (int)(yyvsp[(7) - (8)].d); i++)
13644  {
13645  double d = (yyvsp[(3) - (8)].d) +
13646  ((yyvsp[(5) - (8)].d) - (yyvsp[(3) - (8)].d)) * (double)i / ((yyvsp[(7) - (8)].d) - 1);
13647  List_Add((yyval.l), &d);
13648  };
13649  }
13650  break;
13651 
13652  case 563:
13653 #line 6124 "Gmsh.y"
13654  {
13655  (yyval.l) = List_Create(20, 20, sizeof(double));
13656  for (int i = 0; i < (int)(yyvsp[(7) - (8)].d); i++)
13657  {
13658  double d = pow(10, (yyvsp[(3) - (8)].d) + ((yyvsp[(5) - (8)].d) - (yyvsp[(3) - (8)].d)) * (double)i /
13659  ((yyvsp[(7) - (8)].d) - 1));
13660  List_Add((yyval.l), &d);
13661  };
13662  }
13663  break;
13664 
13665  case 564:
13666 #line 6132 "Gmsh.y"
13667  {
13668  Msg::Barrier();
13669  FILE *File;
13670  (yyval.l) = List_Create(100, 100, sizeof(double));
13671  std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(3) - (4)].c));
13672  if (!(File = Fopen(tmp.c_str(), "rb")))
13673  {
13674  yymsg(0, "Could not open file '%s'", (yyvsp[(3) - (4)].c));
13675  }
13676  else
13677  {
13678  double d;
13679  while (!feof(File))
13680  {
13681  int ret = fscanf(File, "%lf", &d);
13682  if (ret == 1)
13683  {
13684  List_Add((yyval.l), &d);
13685  }
13686  else if (ret == EOF)
13687  {
13688  break;
13689  }
13690  else
13691  {
13692  char dummy[1024];
13693  if (fscanf(File, "%s", dummy))
13694  yymsg(0, "Ignoring '%s' in file '%s'", dummy, (yyvsp[(3) - (4)].c));
13695  }
13696  }
13697  fclose(File);
13698  }
13699  Free((yyvsp[(3) - (4)].c));
13700  ;
13701  }
13702  break;
13703 
13704  case 565:
13705 #line 6161 "Gmsh.y"
13706  {
13707  double x0 = (yyvsp[(3) - (14)].d), x1 = (yyvsp[(5) - (14)].d), y0 = (yyvsp[(7) - (14)].d),
13708  y1 = (yyvsp[(9) - (14)].d), ys = (yyvsp[(11) - (14)].d);
13709  int N = (int)(yyvsp[(13) - (14)].d);
13710  std::vector<double> y(N);
13711  if (!catenary(x0, x1, y0, y1, ys, N, &y[0]))
13712  yymsg(1, "Catenary did not converge, using linear interpolation");
13713  (yyval.l) = List_Create(N, 10, sizeof(double));
13714  for (int i = 0; i < N; i++)
13715  List_Add((yyval.l), &y[i]);
13716  ;
13717  }
13718  break;
13719 
13720  case 566:
13721 #line 6171 "Gmsh.y"
13722  {
13723  std::vector<double> tmp;
13724  for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
13725  {
13726  double d;
13727  List_Read((yyvsp[(3) - (4)].l), i, &d);
13728  tmp.push_back(d);
13729  }
13730  std::sort(tmp.begin(), tmp.end());
13731  auto last = std::unique(tmp.begin(), tmp.end());
13732  tmp.erase(last, tmp.end());
13733  (yyval.l) = (yyvsp[(3) - (4)].l);
13734  List_Reset((yyval.l));
13735  for (std::size_t i = 0; i < tmp.size(); i++)
13736  {
13737  List_Add((yyval.l), &tmp[i]);
13738  };
13739  }
13740  break;
13741 
13742  case 567:
13743 #line 6187 "Gmsh.y"
13744  {
13745  for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
13746  {
13747  double *d = (double *)List_Pointer((yyvsp[(3) - (4)].l), i);
13748  *d = std::abs(*d);
13749  }
13750  (yyval.l) = (yyvsp[(3) - (4)].l);
13751  ;
13752  }
13753  break;
13754 
13755  case 568:
13756 #line 6198 "Gmsh.y"
13757  {
13758  (yyval.l) = List_Create(2, 1, sizeof(double));
13759  List_Add((yyval.l), &((yyvsp[(1) - (1)].d)));
13760  ;
13761  }
13762  break;
13763 
13764  case 569:
13765 #line 6203 "Gmsh.y"
13766  {
13767  (yyval.l) = (yyvsp[(1) - (1)].l);
13768  ;
13769  }
13770  break;
13771 
13772  case 570:
13773 #line 6207 "Gmsh.y"
13774  {
13775  List_Add((yyval.l), &((yyvsp[(3) - (3)].d)));
13776  ;
13777  }
13778  break;
13779 
13780  case 571:
13781 #line 6211 "Gmsh.y"
13782  {
13783  for (int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++)
13784  {
13785  double d;
13786  List_Read((yyvsp[(3) - (3)].l), i, &d);
13787  List_Add((yyval.l), &d);
13788  }
13789  List_Delete((yyvsp[(3) - (3)].l));
13790  ;
13791  }
13792  break;
13793 
13794  case 572:
13795 #line 6223 "Gmsh.y"
13796  {
13797  (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (9)].d), (int)(yyvsp[(4) - (9)].d),
13798  (int)(yyvsp[(6) - (9)].d), (int)(yyvsp[(8) - (9)].d));
13799  ;
13800  }
13801  break;
13802 
13803  case 573:
13804 #line 6227 "Gmsh.y"
13805  {
13806  (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (7)].d), (int)(yyvsp[(4) - (7)].d),
13807  (int)(yyvsp[(6) - (7)].d), 255);
13808  ;
13809  }
13810  break;
13811 
13812  case 574:
13813 #line 6239 "Gmsh.y"
13814  {
13815  int flag = 0;
13816  if (gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c)))
13817  {
13818  if (gmsh_yystringsymbols[(yyvsp[(1) - (1)].c)].size())
13819  {
13820  (yyval.u) = GetColorForString(-1, gmsh_yystringsymbols[(yyvsp[(1) - (1)].c)][0].c_str(), &flag);
13821  }
13822  else
13823  {
13824  yymsg(0, "Unknown color '%s'", (yyvsp[(1) - (1)].c));
13825  (yyval.u) = 0;
13826  }
13827  }
13828  else
13829  (yyval.u) = GetColorForString(-1, (yyvsp[(1) - (1)].c), &flag);
13830  if (flag)
13831  yymsg(0, "Unknown color '%s'", (yyvsp[(1) - (1)].c));
13832  Free((yyvsp[(1) - (1)].c));
13833  ;
13834  }
13835  break;
13836 
13837  case 575:
13838 #line 6256 "Gmsh.y"
13839  {
13840  unsigned int val = 0;
13841  ColorOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(5) - (5)].c), val);
13842  (yyval.u) = val;
13843  Free((yyvsp[(1) - (5)].c));
13844  Free((yyvsp[(5) - (5)].c));
13845  ;
13846  }
13847  break;
13848 
13849  case 576:
13850 #line 6266 "Gmsh.y"
13851  {
13852  (yyval.l) = (yyvsp[(2) - (3)].l);
13853  ;
13854  }
13855  break;
13856 
13857  case 577:
13858 #line 6270 "Gmsh.y"
13859  {
13860  (yyval.l) = List_Create(256, 10, sizeof(unsigned int));
13861  GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (6)].d));
13862  if (!ct)
13863  yymsg(0, "View[%d] does not exist", (int)(yyvsp[(3) - (6)].d));
13864  else
13865  {
13866  for (int i = 0; i < ct->size; i++)
13867  List_Add((yyval.l), &ct->table[i]);
13868  }
13869  Free((yyvsp[(1) - (6)].c));
13870  ;
13871  }
13872  break;
13873 
13874  case 578:
13875 #line 6285 "Gmsh.y"
13876  {
13877  (yyval.l) = List_Create(256, 10, sizeof(unsigned int));
13878  List_Add((yyval.l), &((yyvsp[(1) - (1)].u)));
13879  ;
13880  }
13881  break;
13882 
13883  case 579:
13884 #line 6290 "Gmsh.y"
13885  {
13886  List_Add((yyval.l), &((yyvsp[(3) - (3)].u)));
13887  ;
13888  }
13889  break;
13890 
13891  case 580:
13892 #line 6297 "Gmsh.y"
13893  {
13894  (yyval.c) = (yyvsp[(1) - (1)].c);
13895  ;
13896  }
13897  break;
13898 
13899  case 581:
13900 #line 6301 "Gmsh.y"
13901  {
13902  // No need to extend to Struct_FullName (a Tag is not a String)
13903  (yyval.c) = treat_Struct_FullName_String(nullptr, (yyvsp[(1) - (1)].c));
13904  ;
13905  }
13906  break;
13907 
13908  case 582:
13909 #line 6306 "Gmsh.y"
13910  {
13911  std::string val;
13912  int j = (int)(yyvsp[(3) - (4)].d);
13913  if (!gmsh_yystringsymbols.count((yyvsp[(1) - (4)].c)))
13914  yymsg(0, "Unknown string variable '%s'", (yyvsp[(1) - (4)].c));
13915  else if (j >= 0 && j < (int)gmsh_yystringsymbols[(yyvsp[(1) - (4)].c)].size())
13916  val = gmsh_yystringsymbols[(yyvsp[(1) - (4)].c)][j];
13917  else
13918  yymsg(0, "Index %d out of range", j);
13919  (yyval.c) = (char *)Malloc((val.size() + 1) * sizeof(char));
13920  strcpy((yyval.c), val.c_str());
13921  Free((yyvsp[(1) - (4)].c));
13922  ;
13923  }
13924  break;
13925 
13926  case 583:
13927 #line 6320 "Gmsh.y"
13928  {
13929  std::string val;
13930  int j = (int)(yyvsp[(3) - (4)].d);
13931  if (!gmsh_yystringsymbols.count((yyvsp[(1) - (4)].c)))
13932  yymsg(0, "Unknown string variable '%s'", (yyvsp[(1) - (4)].c));
13933  else if (j >= 0 && j < (int)gmsh_yystringsymbols[(yyvsp[(1) - (4)].c)].size())
13934  val = gmsh_yystringsymbols[(yyvsp[(1) - (4)].c)][j];
13935  else
13936  yymsg(0, "Index %d out of range", j);
13937  (yyval.c) = (char *)Malloc((val.size() + 1) * sizeof(char));
13938  strcpy((yyval.c), val.c_str());
13939  Free((yyvsp[(1) - (4)].c));
13940  ;
13941  }
13942  break;
13943 
13944  case 584:
13945 #line 6334 "Gmsh.y"
13946  {
13947  (yyval.c) = treat_Struct_FullName_dot_tSTRING_String(nullptr, (yyvsp[(1) - (3)].c), (yyvsp[(3) - (3)].c));
13948  ;
13949  }
13950  break;
13951 
13952  case 585:
13953 #line 6338 "Gmsh.y"
13954  {
13955  (yyval.c) =
13956  treat_Struct_FullName_dot_tSTRING_String((yyvsp[(1) - (5)].c), (yyvsp[(3) - (5)].c), (yyvsp[(5) - (5)].c));
13957  ;
13958  }
13959  break;
13960 
13961  case 586:
13962 #line 6342 "Gmsh.y"
13963  {
13964  (yyval.c) = treat_Struct_FullName_dot_tSTRING_String(nullptr, (yyvsp[(1) - (6)].c), (yyvsp[(3) - (6)].c),
13965  (int)(yyvsp[(5) - (6)].d));
13966  ;
13967  }
13968  break;
13969 
13970  case 587:
13971 #line 6346 "Gmsh.y"
13972  {
13973  (yyval.c) = treat_Struct_FullName_dot_tSTRING_String((yyvsp[(1) - (8)].c), (yyvsp[(3) - (8)].c),
13974  (yyvsp[(5) - (8)].c), (int)(yyvsp[(7) - (8)].d));
13975  ;
13976  }
13977  break;
13978 
13979  case 588:
13980 #line 6350 "Gmsh.y"
13981  {
13982  std::string out;
13983  StringOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), out);
13984  (yyval.c) = (char *)Malloc((out.size() + 1) * sizeof(char));
13985  strcpy((yyval.c), out.c_str());
13986  Free((yyvsp[(1) - (6)].c));
13987  Free((yyvsp[(6) - (6)].c));
13988  ;
13989  }
13990  break;
13991 
13992  case 589:
13993 #line 6358 "Gmsh.y"
13994  {
13995  std::string name = GModel::current()->getElementaryName((yyvsp[(1) - (4)].i), (int)(yyvsp[(3) - (4)].d));
13996  (yyval.c) = (char *)Malloc((name.size() + 1) * sizeof(char));
13997  strcpy((yyval.c), name.c_str());
13998  ;
13999  }
14000  break;
14001 
14002  case 590:
14003 #line 6364 "Gmsh.y"
14004  {
14005  std::string name = GModel::current()->getPhysicalName((yyvsp[(2) - (5)].i), (int)(yyvsp[(4) - (5)].d));
14006  (yyval.c) = (char *)Malloc((name.size() + 1) * sizeof(char));
14007  strcpy((yyval.c), name.c_str());
14008  ;
14009  }
14010  break;
14011 
14012  case 591:
14013 #line 6373 "Gmsh.y"
14014  {
14015  (yyval.c) = (yyvsp[(1) - (1)].c);
14016  ;
14017  }
14018  break;
14019 
14020  case 592:
14021 #line 6377 "Gmsh.y"
14022  {
14023  (yyval.c) = (yyvsp[(3) - (4)].c);
14024  ;
14025  }
14026  break;
14027 
14028  case 593:
14029 #line 6381 "Gmsh.y"
14030  {
14031  (yyval.c) = (char *)Malloc(32 * sizeof(char));
14032  time_t now;
14033  time(&now);
14034  strcpy((yyval.c), ctime(&now));
14035  (yyval.c)[strlen((yyval.c)) - 1] = '\0';
14036  ;
14037  }
14038  break;
14039 
14040  case 594:
14041 #line 6389 "Gmsh.y"
14042  {
14043  std::string exe = Msg::GetExecutableName();
14044  (yyval.c) = (char *)Malloc(exe.size() + 1);
14045  strcpy((yyval.c), exe.c_str());
14046  ;
14047  }
14048  break;
14049 
14050  case 595:
14051 #line 6395 "Gmsh.y"
14052  {
14053  std::string action = Msg::GetOnelabAction();
14054  (yyval.c) = (char *)Malloc(action.size() + 1);
14055  strcpy((yyval.c), action.c_str());
14056  ;
14057  }
14058  break;
14059 
14060  case 596:
14061 #line 6401 "Gmsh.y"
14062  {
14063  (yyval.c) = strsave((char *)"Gmsh");
14064  ;
14065  }
14066  break;
14067 
14068  case 597:
14069 #line 6405 "Gmsh.y"
14070  {
14071  std::string env = GetEnvironmentVar((yyvsp[(3) - (4)].c));
14072  (yyval.c) = (char *)Malloc((env.size() + 1) * sizeof(char));
14073  strcpy((yyval.c), env.c_str());
14074  Free((yyvsp[(3) - (4)].c));
14075  ;
14076  }
14077  break;
14078 
14079  case 598:
14080 #line 6412 "Gmsh.y"
14081  {
14082  std::string s = Msg::GetString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c));
14083  (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char));
14084  strcpy((yyval.c), s.c_str());
14085  Free((yyvsp[(3) - (6)].c));
14086  Free((yyvsp[(5) - (6)].c));
14087  ;
14088  }
14089  break;
14090 
14091  case 599:
14092 #line 6420 "Gmsh.y"
14093  {
14094  std::string s = Msg::GetOnelabString((yyvsp[(3) - (4)].c));
14095  (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char));
14096  strcpy((yyval.c), s.c_str());
14097  Free((yyvsp[(3) - (4)].c));
14098  ;
14099  }
14100  break;
14101 
14102  case 600:
14103 #line 6427 "Gmsh.y"
14104  {
14105  std::string s = Msg::GetOnelabString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c));
14106  (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char));
14107  strcpy((yyval.c), s.c_str());
14108  Free((yyvsp[(3) - (6)].c));
14109  Free((yyvsp[(5) - (6)].c));
14110  ;
14111  }
14112  break;
14113 
14114  case 601:
14115 #line 6436 "Gmsh.y"
14116  {
14117  (yyval.c) = treat_Struct_FullName_String(nullptr, (yyvsp[(3) - (5)].c2).char2, 1, 0, (yyvsp[(4) - (5)].c), 2);
14118  ;
14119  }
14120  break;
14121 
14122  case 602:
14123 #line 6440 "Gmsh.y"
14124  {
14125  (yyval.c) = treat_Struct_FullName_dot_tSTRING_String((yyvsp[(3) - (7)].c2).char1, (yyvsp[(3) - (7)].c2).char2,
14126  (yyvsp[(5) - (7)].c), 0, (yyvsp[(6) - (7)].c), 2);
14127  ;
14128  }
14129  break;
14130 
14131  case 603:
14132 #line 6444 "Gmsh.y"
14133  {
14134  int size = 1;
14135  for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
14136  size += strlen(*(char **)List_Pointer((yyvsp[(3) - (4)].l), i)) + 1;
14137  (yyval.c) = (char *)Malloc(size * sizeof(char));
14138  (yyval.c)[0] = '\0';
14139  for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
14140  {
14141  char *s;
14142  List_Read((yyvsp[(3) - (4)].l), i, &s);
14143  strcat((yyval.c), s);
14144  Free(s);
14145  }
14146  List_Delete((yyvsp[(3) - (4)].l));
14147  ;
14148  }
14149  break;
14150 
14151  case 604:
14152 #line 6459 "Gmsh.y"
14153  {
14154  (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char));
14155  int i;
14156  for (i = strlen((yyvsp[(3) - (4)].c)) - 1; i >= 0; i--)
14157  {
14158  if ((yyvsp[(3) - (4)].c)[i] == '.')
14159  {
14160  strncpy((yyval.c), (yyvsp[(3) - (4)].c), i);
14161  (yyval.c)[i] = '\0';
14162  break;
14163  }
14164  }
14165  if (i <= 0)
14166  strcpy((yyval.c), (yyvsp[(3) - (4)].c));
14167  Free((yyvsp[(3) - (4)].c));
14168  ;
14169  }
14170  break;
14171 
14172  case 605:
14173 #line 6473 "Gmsh.y"
14174  {
14175  (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char));
14176  int i;
14177  for (i = strlen((yyvsp[(3) - (4)].c)) - 1; i >= 0; i--)
14178  {
14179  if ((yyvsp[(3) - (4)].c)[i] == '/' || (yyvsp[(3) - (4)].c)[i] == '\\')
14180  break;
14181  }
14182  if (i <= 0)
14183  strcpy((yyval.c), (yyvsp[(3) - (4)].c));
14184  else
14185  strcpy((yyval.c), &(yyvsp[(3) - (4)].c)[i + 1]);
14186  Free((yyvsp[(3) - (4)].c));
14187  ;
14188  }
14189  break;
14190 
14191  case 606:
14192 #line 6487 "Gmsh.y"
14193  {
14194  std::string input = (yyvsp[(3) - (8)].c);
14195  std::string substr_old = (yyvsp[(5) - (8)].c);
14196  std::string substr_new = (yyvsp[(7) - (8)].c);
14197  std::string ret = ReplaceSubString(substr_old, substr_new, input);
14198  (yyval.c) = (char *)Malloc((ret.size() + 1) * sizeof(char));
14199  strcpy((yyval.c), ret.c_str());
14200  Free((yyvsp[(3) - (8)].c));
14201  Free((yyvsp[(5) - (8)].c));
14202  Free((yyvsp[(7) - (8)].c));
14203  ;
14204  }
14205  break;
14206 
14207  case 607:
14208 #line 6499 "Gmsh.y"
14209  {
14210  int size = 1;
14211  for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
14212  size += strlen(*(char **)List_Pointer((yyvsp[(3) - (4)].l), i)) + 1;
14213  (yyval.c) = (char *)Malloc(size * sizeof(char));
14214  (yyval.c)[0] = '\0';
14215  for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++)
14216  {
14217  char *s;
14218  List_Read((yyvsp[(3) - (4)].l), i, &s);
14219  strcat((yyval.c), s);
14220  Free(s);
14221  if (i != List_Nbr((yyvsp[(3) - (4)].l)) - 1)
14222  strcat((yyval.c), "\n");
14223  }
14224  List_Delete((yyvsp[(3) - (4)].l));
14225  ;
14226  }
14227  break;
14228 
14229  case 608:
14230 #line 6515 "Gmsh.y"
14231  {
14232  int i = 0;
14233  while ((yyvsp[(3) - (4)].c)[i])
14234  {
14235  (yyvsp[(3) - (4)].c)[i] = toupper((yyvsp[(3) - (4)].c)[i]);
14236  i++;
14237  }
14238  (yyval.c) = (yyvsp[(3) - (4)].c);
14239  ;
14240  }
14241  break;
14242 
14243  case 609:
14244 #line 6524 "Gmsh.y"
14245  {
14246  int i = 0;
14247  while ((yyvsp[(3) - (4)].c)[i])
14248  {
14249  (yyvsp[(3) - (4)].c)[i] = tolower((yyvsp[(3) - (4)].c)[i]);
14250  i++;
14251  }
14252  (yyval.c) = (yyvsp[(3) - (4)].c);
14253  ;
14254  }
14255  break;
14256 
14257  case 610:
14258 #line 6533 "Gmsh.y"
14259  {
14260  int i = 0;
14261  while ((yyvsp[(3) - (4)].c)[i])
14262  {
14263  if (i > 0 && (yyvsp[(3) - (4)].c)[i - 1] != '_')
14264  (yyvsp[(3) - (4)].c)[i] = tolower((yyvsp[(3) - (4)].c)[i]);
14265  i++;
14266  }
14267  (yyval.c) = (yyvsp[(3) - (4)].c);
14268  ;
14269  }
14270  break;
14271 
14272  case 611:
14273 #line 6543 "Gmsh.y"
14274  {
14275  if ((yyvsp[(3) - (8)].d))
14276  {
14277  (yyval.c) = (yyvsp[(5) - (8)].c);
14278  Free((yyvsp[(7) - (8)].c));
14279  }
14280  else
14281  {
14282  (yyval.c) = (yyvsp[(7) - (8)].c);
14283  Free((yyvsp[(5) - (8)].c));
14284  };
14285  }
14286  break;
14287 
14288  case 612:
14289 #line 6554 "Gmsh.y"
14290  {
14291  std::string in = (yyvsp[(3) - (8)].c);
14292  std::string out = in.substr((int)(yyvsp[(5) - (8)].d), (int)(yyvsp[(7) - (8)].d));
14293  (yyval.c) = (char *)Malloc((out.size() + 1) * sizeof(char));
14294  strcpy((yyval.c), out.c_str());
14295  Free((yyvsp[(3) - (8)].c));
14296  ;
14297  }
14298  break;
14299 
14300  case 613:
14301 #line 6562 "Gmsh.y"
14302  {
14303  std::string in = (yyvsp[(3) - (6)].c);
14304  std::string out = in.substr((int)(yyvsp[(5) - (6)].d), std::string::npos);
14305  (yyval.c) = (char *)Malloc((out.size() + 1) * sizeof(char));
14306  strcpy((yyval.c), out.c_str());
14307  Free((yyvsp[(3) - (6)].c));
14308  ;
14309  }
14310  break;
14311 
14312  case 614:
14313 #line 6570 "Gmsh.y"
14314  {
14315  (yyval.c) = (yyvsp[(3) - (4)].c);
14316  ;
14317  }
14318  break;
14319 
14320  case 615:
14321 #line 6574 "Gmsh.y"
14322  {
14323  char tmpstring[5000];
14324  int i = printListOfDouble((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].l), tmpstring);
14325  if (i < 0)
14326  {
14327  yymsg(0, "Too few arguments in Sprintf");
14328  (yyval.c) = (yyvsp[(3) - (6)].c);
14329  }
14330  else if (i > 0)
14331  {
14332  yymsg(0, "%d extra argument%s in Sprintf", i, (i > 1) ? "s" : "");
14333  (yyval.c) = (yyvsp[(3) - (6)].c);
14334  }
14335  else
14336  {
14337  (yyval.c) = (char *)Malloc((strlen(tmpstring) + 1) * sizeof(char));
14338  strcpy((yyval.c), tmpstring);
14339  Free((yyvsp[(3) - (6)].c));
14340  }
14341  List_Delete((yyvsp[(5) - (6)].l));
14342  ;
14343  }
14344  break;
14345 
14346  case 616:
14347 #line 6593 "Gmsh.y"
14348  {
14349  std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(3) - (4)].c));
14350  (yyval.c) = (char *)Malloc((tmp.size() + 1) * sizeof(char));
14351  strcpy((yyval.c), tmp.c_str());
14352  Free((yyvsp[(3) - (4)].c));
14353  ;
14354  }
14355  break;
14356 
14357  case 617:
14358 #line 6600 "Gmsh.y"
14359  {
14360  std::string tmp = SplitFileName(GetAbsolutePath(gmsh_yyname))[0];
14361  (yyval.c) = (char *)Malloc((tmp.size() + 1) * sizeof(char));
14362  strcpy((yyval.c), tmp.c_str());
14363  ;
14364  }
14365  break;
14366 
14367  case 618:
14368 #line 6606 "Gmsh.y"
14369  {
14370  std::string tmp = GetFileNameWithoutPath(gmsh_yyname);
14371  (yyval.c) = (char *)Malloc((tmp.size() + 1) * sizeof(char));
14372  strcpy((yyval.c), tmp.c_str());
14373  ;
14374  }
14375  break;
14376 
14377  case 619:
14378 #line 6612 "Gmsh.y"
14379  {
14380  std::string tmp = SplitFileName((yyvsp[(3) - (4)].c))[0];
14381  (yyval.c) = (char *)Malloc((tmp.size() + 1) * sizeof(char));
14382  strcpy((yyval.c), tmp.c_str());
14383  Free((yyvsp[(3) - (4)].c));
14384  ;
14385  }
14386  break;
14387 
14388  case 620:
14389 #line 6619 "Gmsh.y"
14390  {
14391  std::string tmp = GetAbsolutePath((yyvsp[(3) - (4)].c));
14392  (yyval.c) = (char *)Malloc((tmp.size() + 1) * sizeof(char));
14393  strcpy((yyval.c), tmp.c_str());
14394  Free((yyvsp[(3) - (4)].c));
14395  ;
14396  }
14397  break;
14398 
14399  case 621:
14400 #line 6626 "Gmsh.y"
14401  {
14402  init_options();
14403  ;
14404  }
14405  break;
14406 
14407  case 622:
14408 #line 6628 "Gmsh.y"
14409  {
14410  std::string val((yyvsp[(3) - (6)].c));
14412  (yyval.c) = (char *)Malloc((val.size() + 1) * sizeof(char));
14413  strcpy((yyval.c), val.c_str());
14414  Free((yyvsp[(3) - (6)].c));
14415  ;
14416  }
14417  break;
14418 
14419  case 623:
14420 #line 6636 "Gmsh.y"
14421  {
14422  std::string out;
14423  const std::string *key_struct = nullptr;
14424  switch (gmsh_yynamespaces.get_key_struct_from_tag(struct_namespace, (int)(yyvsp[(3) - (4)].d), key_struct))
14425  {
14426  case 0:
14427  out = *key_struct;
14428  break;
14429  case 1:
14430  yymsg(1, "Unknown NameSpace '%s' of Struct", struct_namespace.c_str());
14431  break;
14432  case 2:
14433  yymsg(1, "Unknown Struct of index %d", (int)(yyvsp[(3) - (4)].d));
14434  break;
14435  default:
14436  break;
14437  }
14438  (yyval.c) = (char *)Malloc((out.size() + 1) * sizeof(char));
14439  strcpy((yyval.c), out.c_str());
14440  ;
14441  }
14442  break;
14443 
14444  case 624:
14445 #line 6660 "Gmsh.y"
14446  {
14447  struct_namespace = std::string("");
14448  (yyval.d) = (yyvsp[(2) - (2)].d);
14449  ;
14450  }
14451  break;
14452 
14453  case 625:
14454 #line 6662 "Gmsh.y"
14455  {
14456  struct_namespace = (yyvsp[(1) - (4)].c);
14457  Free((yyvsp[(1) - (4)].c));
14458  (yyval.d) = (yyvsp[(4) - (4)].d);
14459  ;
14460  }
14461  break;
14462 
14463  case 626:
14464 #line 6668 "Gmsh.y"
14465  {
14466  (yyval.l) = (yyvsp[(3) - (4)].l);
14467  ;
14468  }
14469  break;
14470 
14471  case 627:
14472 #line 6673 "Gmsh.y"
14473  {
14474  (yyval.l) = (yyvsp[(1) - (1)].l);
14475  ;
14476  }
14477  break;
14478 
14479  case 628:
14480 #line 6675 "Gmsh.y"
14481  {
14482  (yyval.l) = (yyvsp[(1) - (1)].l);
14483  ;
14484  }
14485  break;
14486 
14487  case 629:
14488 #line 6680 "Gmsh.y"
14489  {
14490  (yyval.l) = (yyvsp[(2) - (3)].l);
14491  ;
14492  }
14493  break;
14494 
14495  case 630:
14496 #line 6685 "Gmsh.y"
14497  {
14498  (yyval.l) = List_Create(20, 20, sizeof(char *));
14499  List_Add((yyval.l), &((yyvsp[(1) - (1)].c)));
14500  ;
14501  }
14502  break;
14503 
14504  case 631:
14505 #line 6690 "Gmsh.y"
14506  {
14507  (yyval.l) = (yyvsp[(1) - (1)].l);
14508  ;
14509  }
14510  break;
14511 
14512  case 632:
14513 #line 6692 "Gmsh.y"
14514  {
14515  List_Add((yyval.l), &((yyvsp[(3) - (3)].c)));
14516  ;
14517  }
14518  break;
14519 
14520  case 633:
14521 #line 6696 "Gmsh.y"
14522  {
14523  for (int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++)
14524  {
14525  char *c;
14526  List_Read((yyvsp[(3) - (3)].l), i, &c);
14527  List_Add((yyval.l), &c);
14528  }
14529  List_Delete((yyvsp[(3) - (3)].l));
14530  ;
14531  }
14532  break;
14533 
14534  case 634:
14535 #line 6708 "Gmsh.y"
14536  {
14537  (yyval.l) = List_Create(20, 20, sizeof(char *));
14538  if (!gmsh_yystringsymbols.count((yyvsp[(1) - (3)].c)))
14539  yymsg(0, "Unknown string variable '%s'", (yyvsp[(1) - (3)].c));
14540  else
14541  {
14542  std::vector<std::string> &s(gmsh_yystringsymbols[(yyvsp[(1) - (3)].c)]);
14543  for (std::size_t i = 0; i < s.size(); i++)
14544  {
14545  char *val_ = strsave((char *)s.at(i).c_str());
14546  List_Add((yyval.l), &val_);
14547  }
14548  }
14549  Free((yyvsp[(1) - (3)].c));
14550  ;
14551  }
14552  break;
14553 
14554  case 635:
14555 #line 6722 "Gmsh.y"
14556  {
14557  (yyval.l) = treat_Struct_FullName_dot_tSTRING_ListOfString(nullptr, (yyvsp[(1) - (5)].c), (yyvsp[(3) - (5)].c));
14558  ;
14559  }
14560  break;
14561 
14562  case 636:
14563 #line 6726 "Gmsh.y"
14564  {
14565  (yyval.l) = treat_Struct_FullName_dot_tSTRING_ListOfString((yyvsp[(1) - (7)].c), (yyvsp[(3) - (7)].c),
14566  (yyvsp[(5) - (7)].c));
14567  ;
14568  }
14569  break;
14570 
14571  case 637:
14572 #line 6733 "Gmsh.y"
14573  {
14574  char tmpstr[256];
14575  sprintf(tmpstr, "_%d", (int)(yyvsp[(4) - (5)].d));
14576  (yyval.c) = (char *)Malloc((strlen((yyvsp[(1) - (5)].c)) + strlen(tmpstr) + 1) * sizeof(char));
14577  strcpy((yyval.c), (yyvsp[(1) - (5)].c));
14578  strcat((yyval.c), tmpstr);
14579  Free((yyvsp[(1) - (5)].c));
14580  ;
14581  }
14582  break;
14583 
14584  case 638:
14585 #line 6741 "Gmsh.y"
14586  {
14587  char tmpstr[256];
14588  sprintf(tmpstr, "_%d", (int)(yyvsp[(4) - (5)].d));
14589  (yyval.c) = (char *)Malloc((strlen((yyvsp[(1) - (5)].c)) + strlen(tmpstr) + 1) * sizeof(char));
14590  strcpy((yyval.c), (yyvsp[(1) - (5)].c));
14591  strcat((yyval.c), tmpstr);
14592  Free((yyvsp[(1) - (5)].c));
14593  ;
14594  }
14595  break;
14596 
14597  case 639:
14598 #line 6749 "Gmsh.y"
14599  {
14600  char tmpstr[256];
14601  sprintf(tmpstr, "_%d", (int)(yyvsp[(7) - (8)].d));
14602  (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (8)].c)) + strlen(tmpstr) + 1) * sizeof(char));
14603  strcpy((yyval.c), (yyvsp[(3) - (8)].c));
14604  strcat((yyval.c), tmpstr);
14605  Free((yyvsp[(3) - (8)].c));
14606  ;
14607  }
14608  break;
14609 
14610  case 640:
14611 #line 6760 "Gmsh.y"
14612  {
14613  (yyval.c) = (yyvsp[(1) - (1)].c);
14614  ;
14615  }
14616  break;
14617 
14618  case 641:
14619 #line 6762 "Gmsh.y"
14620  {
14621  (yyval.c) = (yyvsp[(1) - (1)].c);
14622  ;
14623  }
14624  break;
14625 
14626  case 642:
14627 #line 6765 "Gmsh.y"
14628  {
14629  (yyval.c) = (yyvsp[(3) - (4)].c);
14630  ;
14631  }
14632  break;
14633 
14634 /* Line 1267 of yacc.c. */
14635 #line 15039 "Gmsh.tab.cpp"
14636  default:
14637  break;
14638  }
14639  YY_SYMBOL_PRINT("-> $$ =", yyr1[yyn], &yyval, &yyloc);
14640 
14641  YYPOPSTACK(yylen);
14642  yylen = 0;
14643  YY_STACK_PRINT(yyss, yyssp);
14644 
14645  *++yyvsp = yyval;
14646 
14647  /* Now `shift' the result of the reduction. Determine what state
14648  that goes to, based on the state we popped back to and the rule
14649  number reduced by. */
14650 
14651  yyn = yyr1[yyn];
14652 
14653  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
14654  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
14655  yystate = yytable[yystate];
14656  else
14657  yystate = yydefgoto[yyn - YYNTOKENS];
14658 
14659  goto yynewstate;
14660 
14661 /*------------------------------------.
14662 | yyerrlab -- here on detecting error |
14663 `------------------------------------*/
14664 yyerrlab:
14665  /* If not already recovering from an error, report this error. */
14666  if (!yyerrstatus)
14667  {
14668  ++yynerrs;
14669 #if !YYERROR_VERBOSE
14670  yyerror(YY_("syntax error"));
14671 #else
14672  {
14673  YYSIZE_T yysize = yysyntax_error(0, yystate, yychar);
14674  if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
14675  {
14676  YYSIZE_T yyalloc = 2 * yysize;
14677  if (!(yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
14679  if (yymsg != yymsgbuf)
14681  yymsg = (char *)YYSTACK_ALLOC(yyalloc);
14682  if (yymsg)
14683  yymsg_alloc = yyalloc;
14684  else
14685  {
14686  yymsg = yymsgbuf;
14687  yymsg_alloc = sizeof yymsgbuf;
14688  }
14689  }
14690 
14691  if (0 < yysize && yysize <= yymsg_alloc)
14692  {
14693  (void)yysyntax_error(yymsg, yystate, yychar);
14694  yyerror(yymsg);
14695  }
14696  else
14697  {
14698  yyerror(YY_("syntax error"));
14699  if (yysize != 0)
14700  goto yyexhaustedlab;
14701  }
14702  }
14703 #endif
14704  }
14705 
14706  if (yyerrstatus == 3)
14707  {
14708  /* If just tried and failed to reuse look-ahead token after an
14709  error, discard it. */
14710 
14711  if (yychar <= YYEOF)
14712  {
14713  /* Return failure if at end of input. */
14714  if (yychar == YYEOF)
14715  YYABORT;
14716  }
14717  else
14718  {
14719  yydestruct("Error: discarding", yytoken, &yylval);
14720  yychar = YYEMPTY;
14721  }
14722  }
14723 
14724  /* Else will try to reuse look-ahead token after shifting the error
14725  token. */
14726  goto yyerrlab1;
14727 
14728 /*---------------------------------------------------.
14729 | yyerrorlab -- error raised explicitly by YYERROR. |
14730 `---------------------------------------------------*/
14731 yyerrorlab:
14732 
14733  /* Pacify compilers like GCC when the user code never invokes
14734  YYERROR and the label yyerrorlab therefore never appears in user
14735  code. */
14736  if (/*CONSTCOND*/ 0)
14737  goto yyerrorlab;
14738 
14739  /* Do not reclaim the symbols of the rule which action triggered
14740  this YYERROR. */
14741  YYPOPSTACK(yylen);
14742  yylen = 0;
14743  YY_STACK_PRINT(yyss, yyssp);
14744  yystate = *yyssp;
14745  goto yyerrlab1;
14746 
14747 /*-------------------------------------------------------------.
14748 | yyerrlab1 -- common code for both syntax error and YYERROR. |
14749 `-------------------------------------------------------------*/
14750 yyerrlab1:
14751  yyerrstatus = 3; /* Each real token shifted decrements this. */
14752 
14753  for (;;)
14754  {
14755  yyn = yypact[yystate];
14756  if (yyn != YYPACT_NINF)
14757  {
14758  yyn += YYTERROR;
14759  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
14760  {
14761  yyn = yytable[yyn];
14762  if (0 < yyn)
14763  break;
14764  }
14765  }
14766 
14767  /* Pop the current state because it cannot handle the error token. */
14768  if (yyssp == yyss)
14769  YYABORT;
14770 
14771  yydestruct("Error: popping", yystos[yystate], yyvsp);
14772  YYPOPSTACK(1);
14773  yystate = *yyssp;
14774  YY_STACK_PRINT(yyss, yyssp);
14775  }
14776 
14777  if (yyn == YYFINAL)
14778  YYACCEPT;
14779 
14780  *++yyvsp = yylval;
14781 
14782  /* Shift the error token. */
14783  YY_SYMBOL_PRINT("Shifting", yystos[yyn], yyvsp, yylsp);
14784 
14785  yystate = yyn;
14786  goto yynewstate;
14787 
14788 /*-------------------------------------.
14789 | yyacceptlab -- YYACCEPT comes here. |
14790 `-------------------------------------*/
14791 yyacceptlab:
14792  yyresult = 0;
14793  goto yyreturn;
14794 
14795 /*-----------------------------------.
14796 | yyabortlab -- YYABORT comes here. |
14797 `-----------------------------------*/
14798 yyabortlab:
14799  yyresult = 1;
14800  goto yyreturn;
14801 
14802 #ifndef yyoverflow
14803 /*-------------------------------------------------.
14804 | yyexhaustedlab -- memory exhaustion comes here. |
14805 `-------------------------------------------------*/
14806 yyexhaustedlab:
14807  yyerror(YY_("memory exhausted"));
14808  yyresult = 2;
14809  /* Fall through. */
14810 #endif
14811 
14812 yyreturn:
14813  if (yychar != YYEOF && yychar != YYEMPTY)
14814  yydestruct("Cleanup: discarding lookahead", yytoken, &yylval);
14815  /* Do not reclaim the symbols of the rule which action triggered
14816  this YYABORT or YYACCEPT. */
14817  YYPOPSTACK(yylen);
14818  YY_STACK_PRINT(yyss, yyssp);
14819  while (yyssp != yyss)
14820  {
14821  yydestruct("Cleanup: popping", yystos[*yyssp], yyvsp);
14822  YYPOPSTACK(1);
14823  }
14824 #ifndef yyoverflow
14825  if (yyss != yyssa)
14826  YYSTACK_FREE(yyss);
14827 #endif
14828 #if YYERROR_VERBOSE
14829  if (yymsg != yymsgbuf)
14831 #endif
14832  /* Make sure YYID is used. */
14833  return YYID(yyresult);
14834 }
14835 
14836 #line 6768 "Gmsh.y"
14837 
14838 void assignVariable(const std::string &name, int index, int assignType, double value)
14839 {
14840  if (!gmsh_yysymbols.count(name))
14841  {
14842  if (!assignType)
14843  {
14844  gmsh_yysymbol &s(gmsh_yysymbols[name]);
14845  s.list = true;
14846  s.value.resize(index + 1, 0.);
14847  s.value[index] = value;
14848  }
14849  else
14850  yymsg(0, "Unknown variable '%s'", name.c_str());
14851  }
14852  else
14853  {
14854  gmsh_yysymbol &s(gmsh_yysymbols[name]);
14855  if (s.list)
14856  {
14857  if ((int)s.value.size() < index + 1)
14858  s.value.resize(index + 1, 0.);
14859  switch (assignType)
14860  {
14861  case 0:
14862  s.value[index] = value;
14863  break;
14864  case 1:
14865  s.value[index] += value;
14866  break;
14867  case 2:
14868  s.value[index] -= value;
14869  break;
14870  case 3:
14871  s.value[index] *= value;
14872  break;
14873  case 4:
14874  if (value)
14875  s.value[index] /= value;
14876  else
14877  yymsg(0, "Division by zero in '%s[%d] /= %g'", name.c_str(), index, value);
14878  break;
14879  }
14880  }
14881  else
14882  yymsg(0, "Variable '%s' is not a list", name.c_str());
14883  }
14884 }
14885 
14886 void assignVariables(const std::string &name, List_T *indices, int assignType, List_T *values)
14887 {
14888  if (List_Nbr(indices) != List_Nbr(values))
14889  {
14890  yymsg(0, "Incompatible array dimensions in affectation");
14891  }
14892  else
14893  {
14894  if (!gmsh_yysymbols.count(name))
14895  {
14896  if (!assignType)
14897  {
14898  gmsh_yysymbol &s(gmsh_yysymbols[name]);
14899  s.list = true;
14900  for (int i = 0; i < List_Nbr(indices); i++)
14901  {
14902  int index = (int)(*(double *)List_Pointer(indices, i));
14903  s.value.resize(index + 1, 0.);
14904  s.value[index] = *(double *)List_Pointer(values, i);
14905  }
14906  }
14907  else
14908  yymsg(0, "Unknown variable '%s'", name.c_str());
14909  }
14910  else
14911  {
14912  gmsh_yysymbol &s(gmsh_yysymbols[name]);
14913  if (s.list)
14914  {
14915  for (int i = 0; i < List_Nbr(indices); i++)
14916  {
14917  int index = (int)(*(double *)List_Pointer(indices, i));
14918  double d = *(double *)List_Pointer(values, i);
14919  if ((int)s.value.size() < index + 1)
14920  s.value.resize(index + 1, 0.);
14921  switch (assignType)
14922  {
14923  case 0:
14924  s.value[index] = d;
14925  break;
14926  case 1:
14927  s.value[index] += d;
14928  break;
14929  case 2:
14930  s.value[index] -= d;
14931  break;
14932  case 3:
14933  s.value[index] *= d;
14934  break;
14935  case 4:
14936  if (d)
14937  s.value[index] /= d;
14938  else
14939  yymsg(0, "Division by zero in '%s[%d] /= %g'", name.c_str(), index, d);
14940  break;
14941  }
14942  }
14943  }
14944  else
14945  yymsg(0, "Variable '%s' is not a list", name.c_str());
14946  }
14947  }
14948 }
14949 
14950 void incrementVariable(const std::string &name, int index, double value)
14951 {
14952  if (!gmsh_yysymbols.count(name))
14953  yymsg(0, "Unknown variable '%s'", name.c_str());
14954  else
14955  {
14956  gmsh_yysymbol &s(gmsh_yysymbols[name]);
14957  if (s.list)
14958  {
14959  if ((int)s.value.size() < index + 1)
14960  s.value.resize(index + 1, 0.);
14961  s.value[index] += value;
14962  }
14963  else
14964  yymsg(0, "Variable '%s' is not a list", name.c_str());
14965  }
14966 }
14967 
14968 int printListOfDouble(char *format, List_T *list, char *buffer)
14969 {
14970  // if format does not contain formatting characters, dump the list (useful for
14971  // quick debugging of lists)
14972  int numFormats = 0;
14973  for (std::size_t i = 0; i < strlen(format); i++)
14974  if (format[i] == '%')
14975  numFormats++;
14976  if (!numFormats)
14977  {
14978  strcpy(buffer, format);
14979  for (int i = 0; i < List_Nbr(list); i++)
14980  {
14981  double d;
14982  List_Read(list, i, &d);
14983  char tmp[256];
14984  sprintf(tmp, " [%d]%g", i, d);
14985  strcat(buffer, tmp);
14986  }
14987  return 0;
14988  }
14989 
14990  char tmp1[256], tmp2[256];
14991  int j = 0, k = 0;
14992  buffer[j] = '\0';
14993 
14994  while (j < (int)strlen(format) && format[j] != '%')
14995  j++;
14996  strncpy(buffer, format, j);
14997  buffer[j] = '\0';
14998  for (int i = 0; i < List_Nbr(list); i++)
14999  {
15000  k = j;
15001  j++;
15002  if (j < (int)strlen(format))
15003  {
15004  if (format[j] == '%')
15005  {
15006  strcat(buffer, "%");
15007  j++;
15008  }
15009  while (j < (int)strlen(format) && format[j] != '%')
15010  j++;
15011  if (k != j)
15012  {
15013  strncpy(tmp1, &(format[k]), j - k);
15014  tmp1[j - k] = '\0';
15015  sprintf(tmp2, tmp1, *(double *)List_Pointer(list, i));
15016  strcat(buffer, tmp2);
15017  }
15018  }
15019  else
15020  return List_Nbr(list) - i;
15021  }
15022  if (j != (int)strlen(format))
15023  return -1;
15024  return 0;
15025 }
15026 
15027 void PrintParserSymbols(bool help, std::vector<std::string> &vec)
15028 {
15029  if (help)
15030  {
15031  vec.push_back("//");
15032  vec.push_back("// Numbers");
15033  vec.push_back("//");
15034  }
15035  for (auto it = gmsh_yysymbols.begin(); it != gmsh_yysymbols.end(); it++)
15036  {
15037  gmsh_yysymbol s(it->second);
15038  std::ostringstream sstream;
15039  sstream.precision(12);
15040  sstream << it->first;
15041  if (s.list)
15042  {
15043  sstream << "[] = {";
15044  for (std::size_t i = 0; i < s.value.size(); i++)
15045  {
15046  if (i)
15047  sstream << ", ";
15048  sstream << s.value[i];
15049  }
15050  sstream << "}";
15051  }
15052  else
15053  sstream << " = " << s.value[0];
15054  sstream << ";";
15055  vec.push_back(sstream.str());
15056  }
15057  if (help)
15058  {
15059  vec.push_back("//");
15060  vec.push_back("// Strings");
15061  vec.push_back("//");
15062  }
15063  for (auto it = gmsh_yystringsymbols.begin(); it != gmsh_yystringsymbols.end(); it++)
15064  {
15065  if (it->second.size() == 1)
15066  vec.push_back(it->first + " = \"" + it->second[0] + "\";");
15067  else
15068  {
15069  std::string s = it->first + "[] = Str({";
15070  for (std::size_t i = 0; i < it->second.size(); i++)
15071  {
15072  if (i)
15073  s += ", ";
15074  s += std::string("\"") + it->second[i] + "\"";
15075  }
15076  s += "});";
15077  vec.push_back(s);
15078  }
15079  }
15080  if (gmsh_yynamespaces.size())
15081  {
15082  if (help)
15083  {
15084  vec.push_back("//");
15085  vec.push_back("// Structures");
15086  vec.push_back("//");
15087  }
15088  std::vector<std::string> strs;
15089  gmsh_yynamespaces.sprint(strs);
15090  vec.insert(vec.end(), strs.begin(), strs.end());
15091  }
15092 }
15093 
15095 {
15096  // Warning: this returns a fullMatrix copy, and deletes the input list
15097  int M = List_Nbr(list);
15098  int N = 0;
15099  for (int i = 0; i < M; i++)
15100  {
15101  List_T *line = *(List_T **)List_Pointer_Fast(list, i);
15102  N = std::max(N, List_Nbr(line));
15103  }
15104  fullMatrix<double> mat(M, N);
15105  for (int i = 0; i < M; i++)
15106  {
15107  List_T *line = *(List_T **)List_Pointer_Fast(list, i);
15108  for (int j = 0; j < List_Nbr(line); j++)
15109  {
15110  double val;
15111  List_Read(line, j, &val);
15112  mat(i, j) = val;
15113  }
15114  }
15115  for (int i = 0; i < List_Nbr(list); i++)
15116  List_Delete(*(List_T **)List_Pointer(list, i));
15117  List_Delete(list);
15118  return mat;
15119 }
15120 
15121 void ListOfDouble2Vector(List_T *list, std::vector<int> &v)
15122 {
15123  v.clear();
15124  if (!list)
15125  return;
15126  v.reserve(List_Nbr(list));
15127  for (int i = 0; i < List_Nbr(list); i++)
15128  {
15129  double d;
15130  List_Read(list, i, &d);
15131  v.push_back((int)d);
15132  }
15133 }
15134 
15135 void ListOfDouble2Vector(List_T *list, std::vector<double> &v)
15136 {
15137  v.clear();
15138  if (!list)
15139  return;
15140  v.reserve(List_Nbr(list));
15141  for (int i = 0; i < List_Nbr(list); i++)
15142  {
15143  double d;
15144  List_Read(list, i, &d);
15145  v.push_back(d);
15146  }
15147 }
15148 
15149 void ListOfShapes2VectorOfPairs(List_T *list, std::vector<std::pair<int, int>> &v)
15150 {
15151  for (int i = 0; i < List_Nbr(list); i++)
15152  {
15153  Shape s;
15154  List_Read(list, i, &s);
15155  int dim = s.Type / 100 - 1;
15156  if (dim >= 0 && dim <= 3)
15157  v.push_back(std::make_pair(dim, s.Num));
15158  }
15159 }
15160 
15161 void VectorOfPairs2ListOfShapes(const std::vector<std::pair<int, int>> &v, List_T *list)
15162 {
15163  for (std::size_t i = 0; i < v.size(); i++)
15164  {
15165  int dim = v[i].first;
15166  int tag = v[i].second;
15167  Shape s;
15168  s.Type = (dim == 3) ? MSH_VOLUME : (dim == 2) ? MSH_SURF_PLAN : (dim == 1) ? MSH_SEGM_LINE : MSH_POINT;
15169  s.Num = tag;
15170  List_Add(list, &s);
15171  }
15172 }
15173 
15174 void yyerror(const char *s)
15175 {
15176  if (gmsh_yyname.empty())
15177  Msg::Error("%s (%s)", s, gmsh_yytext);
15178  else
15179  Msg::Error("'%s', line %d: %s (%s)", gmsh_yyname.c_str(), gmsh_yylineno - 1, s, gmsh_yytext);
15181 }
15182 
15183 void yymsg(int level, const char *fmt, ...)
15184 {
15185  va_list args;
15186  char tmp[1024];
15187 
15188  va_start(args, fmt);
15189  vsprintf(tmp, fmt, args);
15190  va_end(args);
15191 
15192  if (level == 0)
15193  {
15194  if (gmsh_yyname.empty())
15195  Msg::Error("%s", tmp);
15196  else
15197  Msg::Error("'%s', line %d: %s", gmsh_yyname.c_str(), gmsh_yylineno - 1, tmp);
15199  }
15200  else if (level == 1)
15201  {
15202  if (gmsh_yyname.empty())
15203  Msg::Warning("%s", tmp);
15204  else
15205  Msg::Warning("'%s', line %d: %s", gmsh_yyname.c_str(), gmsh_yylineno - 1, tmp);
15206  }
15207  else
15208  {
15209  if (gmsh_yyname.empty())
15210  Msg::Info("%s", tmp);
15211  else
15212  Msg::Info("'%s', line %d: %s", gmsh_yyname.c_str(), gmsh_yylineno - 1, tmp);
15213  }
15214 }
15215 
15216 void addPeriodicFace(int iTarget, int iSource, const std::vector<double> &affineTransform)
15217 {
15218  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
15220  if (GModel::current()->getGEOInternals()->getChanged())
15222 
15223  GFace *target = GModel::current()->getFaceByTag(std::abs(iTarget));
15224  GFace *source = GModel::current()->getFaceByTag(std::abs(iSource));
15225  if (!target || !source)
15226  {
15227  Msg::Error("Could not find surface %d or %d for periodic copy", iTarget, iSource);
15228  return;
15229  }
15230  target->setMeshMaster(source, affineTransform);
15231 }
15232 
15233 void addPeriodicFace(int iTarget, int iSource, const std::map<int, int> &edgeCounterparts)
15234 {
15235  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
15237  if (GModel::current()->getGEOInternals()->getChanged())
15239 
15240  Msg::Info("Encoding periodic connection between %d and %d", iTarget, iSource);
15241  for (auto sIter = edgeCounterparts.begin(); sIter != edgeCounterparts.end(); ++sIter)
15242  {
15243  Msg::Info("%d - %d", sIter->first, sIter->second);
15244  }
15245 
15246  GFace *target = GModel::current()->getFaceByTag(std::abs(iTarget));
15247  GFace *source = GModel::current()->getFaceByTag(std::abs(iSource));
15248  if (!target || !source)
15249  {
15250  Msg::Error("Could not find surface %d or %d for periodic copy", iTarget, iSource);
15251  return;
15252  }
15253  target->setMeshMaster(source, edgeCounterparts);
15254 }
15255 
15256 void addPeriodicEdge(int iTarget, int iSource, const std::vector<double> &affineTransform)
15257 {
15258  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
15260  if (GModel::current()->getGEOInternals()->getChanged())
15262 
15263  GEdge *target = GModel::current()->getEdgeByTag(std::abs(iTarget));
15264  GEdge *source = GModel::current()->getEdgeByTag(std::abs(iSource));
15265  if (!target || !source)
15266  {
15267  Msg::Error("Could not find curve %d or %d for periodic copy", iTarget, iSource);
15268  return;
15269  }
15270  if (affineTransform.size() >= 12)
15271  {
15272  target->setMeshMaster(source, affineTransform);
15273  }
15274  else
15275  {
15276  target->setMeshMaster(source, iSource * iTarget < 0 ? -1 : 1);
15277  }
15278 }
15279 
15280 void computeAffineTransformation(SPoint3 &origin, SPoint3 &axis, double angle, SPoint3 &translation,
15281  std::vector<double> &tfo)
15282 {
15283  tfo.resize(16, 0.0);
15284 
15285  double ca = cos(angle);
15286  double sa = sin(angle);
15287 
15288  double ux = axis.x();
15289  double uy = axis.y();
15290  double uz = axis.z();
15291 
15292  tfo.resize(16);
15293 
15294  tfo[0 * 4 + 0] = ca + ux * ux * (1. - ca);
15295  tfo[0 * 4 + 1] = ux * uy * (1. - ca) - uz * sa;
15296  tfo[0 * 4 + 2] = ux * uz * (1. - ca) + uy * sa;
15297 
15298  tfo[1 * 4 + 0] = ux * uy * (1. - ca) + uz * sa;
15299  tfo[1 * 4 + 1] = ca + uy * uy * (1. - ca);
15300  tfo[1 * 4 + 2] = uy * uz * (1. - ca) - ux * sa;
15301 
15302  tfo[2 * 4 + 0] = ux * uz * (1. - ca) - uy * sa;
15303  tfo[2 * 4 + 1] = uy * uz * (1. - ca) + ux * sa;
15304  tfo[2 * 4 + 2] = ca + uz * uz * (1. - ca);
15305 
15306  int idx = 0;
15307  for (size_t i = 0; i < 3; i++, idx++)
15308  {
15309  int tIdx = i * 4 + 3;
15310  tfo[tIdx] = origin[i] + translation[i];
15311  for (int j = 0; j < 3; j++, idx++)
15312  tfo[tIdx] -= tfo[idx] * origin[j];
15313  }
15314 
15315  for (int i = 0; i < 4; i++)
15316  tfo[12 + i] = 0;
15317  tfo[15] = 1;
15318 }
15319 
15320 void addEmbedded(int dim, std::vector<int> tags, int dim2, int tag2)
15321 {
15322  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
15324  if (GModel::current()->getGEOInternals()->getChanged())
15326 
15327  if (dim2 == 2)
15328  {
15329  GFace *gf = GModel::current()->getFaceByTag(tag2);
15330  if (!gf)
15331  {
15332  yymsg(0, "Unknown model surface with tag %d", tag2);
15333  return;
15334  }
15335  for (std::size_t i = 0; i < tags.size(); i++)
15336  {
15337  if (dim == 0)
15338  {
15340  if (gv)
15341  gf->addEmbeddedVertex(gv);
15342  else
15343  yymsg(0, "Unknown model point %d", tags[i]);
15344  }
15345  else if (dim == 1)
15346  {
15347  GEdge *ge = GModel::current()->getEdgeByTag(tags[i]);
15348  if (ge)
15349  gf->addEmbeddedEdge(ge);
15350  else
15351  yymsg(0, "Unknown model curve %d", tags[i]);
15352  }
15353  }
15354  }
15355  else if (dim2 == 3)
15356  {
15357  GRegion *gr = GModel::current()->getRegionByTag(tag2);
15358  if (!gr)
15359  {
15360  yymsg(0, "Unknown model volume with tag %d", tag2);
15361  return;
15362  }
15363  for (std::size_t i = 0; i < tags.size(); i++)
15364  {
15365  if (dim == 0)
15366  {
15368  if (gv)
15369  gr->addEmbeddedVertex(gv);
15370  else
15371  yymsg(0, "Unknown model point with tag %d", tags[i]);
15372  }
15373  else if (dim == 1)
15374  {
15375  GEdge *ge = GModel::current()->getEdgeByTag(tags[i]);
15376  if (ge)
15377  gr->addEmbeddedEdge(ge);
15378  else
15379  yymsg(0, "Unknown model curve with tag %d", tags[i]);
15380  }
15381  else if (dim == 2)
15382  {
15383  GFace *gf = GModel::current()->getFaceByTag(tags[i]);
15384  if (gf)
15385  gr->addEmbeddedFace(gf);
15386  else
15387  yymsg(0, "Unknown model surface with tag %d", tags[i]);
15388  }
15389  }
15390  }
15391 }
15392 
15393 void removeEmbedded(const std::vector<std::pair<int, int>> &dimTags, int rdim)
15394 {
15395  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
15397  if (GModel::current()->getGEOInternals()->getChanged())
15399 
15400  for (std::size_t i = 0; i < dimTags.size(); i++)
15401  {
15402  int dim = dimTags[i].first, tag = dimTags[i].second;
15403  if (dim == 2)
15404  {
15405  GFace *gf = GModel::current()->getFaceByTag(tag);
15406  if (gf)
15407  {
15408  if (rdim < 0 || rdim == 1)
15409  gf->embeddedEdges().clear();
15410  if (rdim < 0 || rdim == 0)
15411  gf->embeddedVertices().clear();
15412  }
15413  else
15414  yymsg(0, "Unknown model surface with tag %d", tag);
15415  }
15416  else if (dimTags[i].first == 3)
15417  {
15418  GRegion *gr = GModel::current()->getRegionByTag(tag);
15419  if (gr)
15420  {
15421  if (rdim < 0 || rdim == 2)
15422  gr->embeddedFaces().clear();
15423  if (rdim < 0 || rdim == 1)
15424  gr->embeddedEdges().clear();
15425  if (rdim < 0 || rdim == 0)
15426  gr->embeddedVertices().clear();
15427  }
15428  else
15429  yymsg(0, "Unknown model volume with tag %d", tag);
15430  }
15431  }
15432 }
15433 
15434 void getAllElementaryTags(int dim, List_T *out)
15435 {
15436  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
15438  if (GModel::current()->getGEOInternals()->getChanged())
15440 
15441  std::vector<GEntity *> entities;
15442  GModel::current()->getEntities(entities, dim);
15443  for (std::size_t i = 0; i < entities.size(); i++)
15444  {
15445  double tag = entities[i]->tag();
15446  List_Add(out, &tag);
15447  }
15448 }
15449 
15450 void getAllPhysicalTags(int dim, List_T *out)
15451 {
15452  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
15454  if (GModel::current()->getGEOInternals()->getChanged())
15456 
15457  std::map<int, std::vector<GEntity *>> groups;
15458  GModel::current()->getPhysicalGroups(dim, groups);
15459  for (auto it = groups.begin(); it != groups.end(); it++)
15460  {
15461  double d = it->first;
15462  List_Add(out, &d);
15463  }
15464 }
15465 
15467 {
15468  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
15470  if (GModel::current()->getGEOInternals()->getChanged())
15472 
15473  std::map<int, std::vector<GEntity *>> groups;
15474  GModel::current()->getPhysicalGroups(dim, groups);
15475  for (int i = 0; i < List_Nbr(in); i++)
15476  {
15477  double num;
15478  List_Read(in, i, &num);
15479  auto it = groups.find(num);
15480  if (it != groups.end())
15481  {
15482  for (unsigned j = 0; j < it->second.size(); j++)
15483  {
15484  double d = it->second[j]->tag();
15485  List_Add(out, &d);
15486  }
15487  }
15488  }
15489 }
15490 
15491 void getElementaryTagsInBoundingBox(int dim, double x1, double y1, double z1, double x2, double y2, double z2,
15492  List_T *out)
15493 {
15494  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
15496  if (GModel::current()->getGEOInternals()->getChanged())
15498 
15499  SBoundingBox3d box(x1, y1, z1, x2, y2, z2);
15500  std::vector<GEntity *> entities;
15501  GModel::current()->getEntitiesInBox(entities, box, dim);
15502  for (std::size_t i = 0; i < entities.size(); i++)
15503  {
15504  double d = entities[i]->tag();
15505  List_Add(out, &d);
15506  }
15507 }
15508 
15509 void getParentTags(int dim, List_T *in, List_T *out)
15510 {
15511  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
15513  if (GModel::current()->getGEOInternals()->getChanged())
15515 
15516  for (int i = 0; i < List_Nbr(in); i++)
15517  {
15518  double num;
15519  List_Read(in, i, &num);
15520  GEntity *ge = GModel::current()->getEntityByTag(dim, (int)num);
15521  if (ge)
15522  {
15523  GEntity *parent = ge->getParentEntity();
15524  if (parent)
15525  {
15526  double tag = parent->tag();
15527  List_Add(out, &tag);
15528  }
15529  }
15530  }
15531 }
15532 
15533 void getBoundingBox(int dim, List_T *in, List_T *out)
15534 {
15535  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
15537  if (GModel::current()->getGEOInternals()->getChanged())
15539 
15541  for (int i = 0; i < List_Nbr(in); i++)
15542  {
15543  double num;
15544  List_Read(in, i, &num);
15545  GEntity *ge = GModel::current()->getEntityByTag(dim, (int)num);
15546  if (ge)
15547  box += ge->bounds();
15548  }
15549  if (!box.empty())
15550  {
15551  double b[6] = {box.min().x(), box.min().y(), box.min().z(), box.max().x(), box.max().y(), box.max().z()};
15552  for (int i = 0; i < 6; i++)
15553  List_Add(out, &b[i]);
15554  }
15555 }
15556 
15557 void setVisibility(int dim, int visible, bool recursive)
15558 {
15559  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
15561  if (GModel::current()->getGEOInternals()->getChanged())
15563 
15564  std::vector<GEntity *> entities;
15565  GModel::current()->getEntities(entities, dim);
15566  for (std::size_t i = 0; i < entities.size(); i++)
15567  {
15568  entities[i]->setVisibility(visible);
15569  }
15570 }
15571 
15572 void setVisibility(const std::vector<std::pair<int, int>> &dimTags, int visible, bool recursive)
15573 {
15574  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
15576  if (GModel::current()->getGEOInternals()->getChanged())
15578 
15579  for (std::size_t i = 0; i < dimTags.size(); i++)
15580  {
15581  GEntity *ge = GModel::current()->getEntityByTag(dimTags[i].first, std::abs(dimTags[i].second));
15582  if (ge)
15583  ge->setVisibility(visible, recursive);
15584  }
15585 }
15586 
15587 void setColor(const std::vector<std::pair<int, int>> &dimTags, unsigned int val, bool recursive)
15588 {
15589  if (GModel::current()->getOCCInternals() && GModel::current()->getOCCInternals()->getChanged())
15591  if (GModel::current()->getGEOInternals()->getChanged())
15593 
15594  for (std::size_t i = 0; i < dimTags.size(); i++)
15595  {
15596  GEntity *ge = GModel::current()->getEntityByTag(dimTags[i].first, std::abs(dimTags[i].second));
15597  if (ge)
15598  ge->setColor(val, recursive);
15599  }
15600 }
15601 
15602 double treat_Struct_FullName_Float(char *c1, char *c2, int type_var, int index, double val_default, int type_treat)
15603 {
15604  double out;
15605  if (!c1 && gmsh_yysymbols.count(c2))
15606  {
15607  if (type_treat == 1)
15608  out = 1.; // Exists (type_treat == 1)
15609  else
15610  { // Get (0) or GetForced (2)
15611  if (type_var == 1)
15612  {
15613  gmsh_yysymbol &s(gmsh_yysymbols[c2]);
15614  if (s.value.empty())
15615  {
15616  out = val_default;
15617  if (type_treat == 0)
15618  yymsg(0, "Uninitialized variable '%s'", c2);
15619  }
15620  else
15621  out = s.value[0];
15622  }
15623  else if (type_var == 2)
15624  {
15625  gmsh_yysymbol &s(gmsh_yysymbols[c2]);
15626  if (index < 0 || (int)s.value.size() < index + 1)
15627  {
15628  out = val_default;
15629  if (type_treat == 0)
15630  yymsg(0, "Uninitialized variable '%s[%d]'", c2, index);
15631  }
15632  else
15633  {
15634  out = s.value[index];
15635  }
15636  }
15637  else
15638  {
15639  out = val_default;
15640  }
15641  }
15642  }
15643  else if (!c1 && type_treat == 1 && gmsh_yystringsymbols.count(c2))
15644  {
15645  out = 1.;
15646  }
15647  else
15648  {
15649  if (type_var == 1)
15650  {
15651  std::string struct_namespace(c1 ? c1 : std::string("")), struct_name(c2);
15653  {
15654  out = val_default;
15655  if (type_treat == 0)
15656  yymsg(0, "Unknown variable '%s'", struct_name.c_str());
15657  }
15658  }
15659  else
15660  {
15661  out = val_default;
15662  if (type_treat == 0)
15663  yymsg(0, "Unknown variable '%s(.)'", c2);
15664  }
15665  }
15666  Free(c1);
15667  Free(c2);
15668  return out;
15669 }
15670 
15671 double treat_Struct_FullName_dot_tSTRING_Float(char *c1, char *c2, char *c3, int index, double val_default,
15672  int type_treat)
15673 {
15674  double out;
15675  std::string struct_namespace(c1 ? c1 : std::string("")), struct_name(c2);
15676  std::string key_member(c3);
15677  switch (gmsh_yynamespaces.getMember(struct_namespace, struct_name, key_member, out, index))
15678  {
15679  case 0:
15680  if (type_treat == 1)
15681  out = 1.; // Exists (type_treat == 1)
15682  break;
15683  case 1:
15684  if (!NumberOption(GMSH_GET, c2, 0, c3, out, type_treat == 0))
15685  out = val_default;
15686  break;
15687  case 2:
15688  if (type_treat != 0)
15689  {
15690  const std::string *out_dummy = nullptr;
15691  out =
15692  (gmsh_yynamespaces.getMember(struct_namespace, struct_name, key_member, out_dummy)) ? val_default : 1.;
15693  }
15694  else
15695  {
15696  out = val_default;
15697  if (type_treat == 0)
15698  yymsg(0, "Unknown member '%s' of Struct %s", c3, struct_name.c_str());
15699  }
15700  break;
15701  case 3:
15702  out = val_default;
15703  if (type_treat == 0)
15704  yymsg(0, "Index %d out of range", index);
15705  break;
15706  }
15707  Free(c1);
15708  Free(c2);
15709  Free(c3);
15710  return out;
15711 }
15712 
15714 {
15715  List_T *out, *val_default = nullptr;
15716  const std::vector<double> *out_vector;
15717  double val_;
15718  std::string struct_namespace(c1 ? c1 : std::string("")), struct_name(c2);
15719  std::string key_member(c3);
15720  switch (gmsh_yynamespaces.getMember_Vector(struct_namespace, struct_name, key_member, out_vector))
15721  {
15722  case 0:
15723  out = List_Create(out_vector->size(), 1, sizeof(double));
15724  for (std::size_t i = 0; i < out_vector->size(); i++)
15725  {
15726  val_ = out_vector->at(i);
15727  List_Add(out, &val_);
15728  }
15729  break;
15730  case 1:
15731  yymsg(0, "Unknown Struct: %s", struct_name.c_str());
15732  out = val_default;
15733  break;
15734  case 2:
15735  out = val_default;
15736  yymsg(0, "Unknown member '%s' of Struct %s", c3, struct_name.c_str());
15737  break;
15738  }
15739  Free(c1);
15740  Free(c2);
15741  Free(c3);
15742  return out;
15743 }
15744 
15746 {
15747  int out;
15748  std::string struct_namespace(c1 ? c1 : std::string("")), struct_name(c2);
15749  std::string key_member(c3);
15750  switch (gmsh_yynamespaces.getMember_Dim(struct_namespace, struct_name, key_member, out))
15751  {
15752  case 0:
15753  break;
15754  case 1:
15755  out = 0;
15756  break;
15757  case 2:
15758  out = 0;
15759  yymsg(0, "Unknown member '%s' of Struct %s", c3, struct_name.c_str());
15760  break;
15761  }
15762  Free(c1);
15763  Free(c2);
15764  Free(c3);
15765  return out;
15766 }
15767 
15768 char *treat_Struct_FullName_String(char *c1, char *c2, int type_var, int index, char *val_default, int type_treat)
15769 {
15770  std::string string_default(val_default ? val_default : std::string(""));
15771  const std::string *out = nullptr;
15772  std::string out_tmp;
15773  if (!c1 && gmsh_yystringsymbols.count(c2))
15774  {
15775  // Get (0) or GetForced (2)
15776  if (gmsh_yystringsymbols[c2].size() != 1)
15777  {
15778  out = &string_default;
15779  if (type_treat == 0)
15780  yymsg(0, "Expected single valued string variable '%s'", c2);
15781  }
15782  else
15783  {
15784  out_tmp = gmsh_yystringsymbols[c2][0];
15785  out = &out_tmp;
15786  }
15787  }
15788  else
15789  {
15790  out = &string_default;
15791  if (type_treat == 0)
15792  yymsg(0, "Unknown string variable '%s'", c2);
15793  }
15794  char *out_c = (char *)Malloc((out->size() + 1) * sizeof(char));
15795  strcpy(out_c, out->c_str());
15796  Free(c1);
15797  Free(c2);
15798  return out_c;
15799 }
15800 
15801 char *treat_Struct_FullName_dot_tSTRING_String(char *c1, char *c2, char *c3, int index, char *val_default,
15802  int type_treat)
15803 {
15804  std::string string_default(val_default ? val_default : std::string(""));
15805  const std::string *out = nullptr;
15806  std::string out_tmp; // PD: we should avoid that -> StringOption() to be changed
15807  std::string struct_namespace(c1 ? c1 : std::string("")), struct_name(c2);
15808  std::string key_member(c3);
15809  switch (gmsh_yynamespaces.getMember(struct_namespace, struct_name, key_member, out, index))
15810  {
15811  case 0:
15812  break;
15813  case 1:
15814  if (StringOption(GMSH_GET, c2, 0, c3, out_tmp, type_treat == 0))
15815  out = &out_tmp;
15816  else
15817  out = &string_default;
15818  break;
15819  case 2:
15820  out = &string_default;
15821  if (type_treat == 0)
15822  yymsg(0, "Unknown member '%s' of Struct %s", c3, struct_name.c_str());
15823  break;
15824  case 3:
15825  out = &string_default;
15826  if (type_treat == 0)
15827  yymsg(0, "Index %d out of range", index);
15828  break;
15829  }
15830  char *out_c = (char *)Malloc((out->size() + 1) * sizeof(char));
15831  strcpy(out_c, out->c_str());
15832  Free(c1);
15833  Free(c2);
15834  Free(c3);
15835  return out_c;
15836 }
15837 
15839 {
15840  List_T *out, *val_default = nullptr;
15841  const std::vector<std::string> *out_vector;
15842  char *val_;
15843  std::string struct_namespace(c1 ? c1 : std::string("")), struct_name(c2);
15844  std::string key_member(c3);
15845  switch (gmsh_yynamespaces.getMember_Vector(struct_namespace, struct_name, key_member, out_vector))
15846  {
15847  case 0:
15848  out = List_Create(out_vector->size(), 1, sizeof(char *));
15849  for (std::size_t i = 0; i < out_vector->size(); i++)
15850  {
15851  val_ = strsave((char *)out_vector->at(i).c_str());
15852  List_Add(out, &val_);
15853  }
15854  break;
15855  case 1:
15856  yymsg(0, "Unknown Struct: %s", struct_name.c_str());
15857  out = val_default;
15858  break;
15859  case 2:
15860  out = val_default;
15861  yymsg(0, "Unknown member '%s' of Struct %s", c3, struct_name.c_str());
15862  break;
15863  }
15864  Free(c1);
15865  Free(c2);
15866  Free(c3);
15867  return out;
15868 }
OCC_Internals::setMaxTag
void setMaxTag(int dim, int val)
Definition: GModelIO_OCC.h:484
tLength
#define tLength
Definition: Gmsh.tab.cpp:445
OCC_Internals::Fragments
@ Fragments
Definition: GModelIO_OCC.h:480
yyalloc
void * yyalloc(yy_size_t)
struct_namespace
static std::string struct_namespace
Definition: Gmsh.tab.cpp:663
tText2D
#define tText2D
Definition: Gmsh.tab.cpp:505
tList
#define tList
Definition: Gmsh.tab.cpp:363
OCC_Internals::Intersection
@ Intersection
Definition: GModelIO_OCC.h:480
fcmp_double
int fcmp_double(const void *a, const void *b)
Definition: ListUtils.cpp:33
tAsin
#define tAsin
Definition: Gmsh.tab.cpp:343
tCall
#define tCall
Definition: Gmsh.tab.cpp:528
GEdge::setMeshMaster
void setMeshMaster(GEdge *master, const std::vector< double > &)
Definition: GEdge.cpp:89
NumberOption
bool NumberOption(int action, const char *category, int num, const char *name, double &val, bool warnIfUnknown)
Definition: Options.cpp:185
List_Pointer
void * List_Pointer(List_T *liste, int index)
Definition: ListUtils.cpp:152
PViewDataList::VQ
std::vector< double > VQ
Definition: PViewDataList.h:33
gLevelsetMathEval
Definition: gmshLevelset.h:341
InitOptionsGUI
void InitOptionsGUI(int num)
Definition: Options.cpp:521
GEO_Internals::removeAllDuplicates
void removeAllDuplicates()
Definition: GModelIO_GEO.cpp:1077
SetOrderN
void SetOrderN(GModel *m, int order, bool linear, bool incomplete, bool onlyVisible)
Definition: HighOrder.cpp:1396
PViewDataList::TS
std::vector< double > TS
Definition: PViewDataList.h:37
YYTABLE_NINF
#define YYTABLE_NINF
Definition: Gmsh.tab.cpp:1988
OCC_Internals::addVertex
bool addVertex(int &tag, double x, double y, double z, double meshSize=MAX_LC)
Definition: GModelIO_OCC.h:486
OCC_Internals::Section
@ Section
Definition: GModelIO_OCC.h:480
tStrChoice
#define tStrChoice
Definition: Gmsh.tab.cpp:384
CreateFile.h
OCC_Internals::symmetry
bool symmetry(const std::vector< std::pair< int, int > > &inDimTags, double a, double b, double c, double d)
Definition: GModelIO_OCC.h:764
FieldOption::numericalValue
virtual void numericalValue(double val)
Definition: Field.h:84
tags
static std::map< SPoint2, unsigned int > tags
Definition: drawGraph2d.cpp:400
GModel::fiter
std::set< GFace *, GEntityPtrLessThan >::iterator fiter
Definition: GModel.h:184
PluginManager::setPluginOption
void setPluginOption(const std::string &pluginName, const std::string &option, double value)
Definition: PluginManager.cpp:152
MSH_SEGM_BEZIER
#define MSH_SEGM_BEZIER
Definition: GeoDefines.h:29
init_options
void init_options(int member_ValMax_=0)
Definition: Gmsh.tab.cpp:670
tSurface
#define tSurface
Definition: Gmsh.tab.cpp:430
tStr
#define tStr
Definition: Gmsh.tab.cpp:371
GEO_Internals::addBSpline
bool addBSpline(int &tag, const std::vector< int > &pointTags, const std::vector< double > &seqknots=std::vector< double >())
Definition: GModelIO_GEO.cpp:297
tAFFECTMINUS
#define tAFFECTMINUS
Definition: Gmsh.tab.cpp:557
OCC_Internals::addCircleArc
bool addCircleArc(int &tag, int startTag, int centerTag, int endTag)
Definition: GModelIO_OCC.h:499
PViewDataList::NbVY
int NbVY
Definition: PViewDataList.h:42
SystemCall
int SystemCall(const std::string &command, bool blocking)
Definition: OS.cpp:637
SplitFileName
std::vector< std::string > SplitFileName(const std::string &fileName)
Definition: StringUtils.cpp:93
OCC_Internals::setMeshSize
void setMeshSize(int dim, int tag, double size)
Definition: GModelIO_OCC.h:802
GModel::firstEdge
eiter firstEdge()
Definition: GModel.h:356
tGMSH_MAJOR_VERSION
#define tGMSH_MAJOR_VERSION
Definition: Gmsh.tab.cpp:547
CTX::packColor
unsigned int packColor(int R, int G, int B, int A)
Definition: Context.cpp:128
PView
Definition: PView.h:27
drawContextGlobal::getFontAlign
virtual int getFontAlign(const char *alignstr)
Definition: drawContext.h:102
tSprintf
#define tSprintf
Definition: Gmsh.tab.cpp:372
tCurrentFileName
#define tCurrentFileName
Definition: Gmsh.tab.cpp:395
tInterpolationScheme
#define tInterpolationScheme
Definition: Gmsh.tab.cpp:507
YYSTYPE::l
List_T * l
Definition: Gmsh.tab.cpp:756
PViewDataList::TQ
std::vector< double > TQ
Definition: PViewDataList.h:33
Field.h
tPolarSphere
#define tPolarSphere
Definition: Gmsh.tab.cpp:429
tAFFECTPLUS
#define tAFFECTPLUS
Definition: Gmsh.tab.cpp:558
OCC_Internals::addTorus
bool addTorus(int &tag, double x, double y, double z, double r1, double r2, double angle, const std::vector< double > &N=std::vector< double >())
Definition: GModelIO_OCC.h:642
tLog
#define tLog
Definition: Gmsh.tab.cpp:339
OCC_Internals::addLine
bool addLine(int &tag, int startTag, int endTag)
Definition: GModelIO_OCC.h:491
gmsh_sign
int gmsh_sign(T const &value)
Definition: Numeric.h:28
GEO_Internals::getMaxTag
int getMaxTag(int dim) const
Definition: GModelIO_GEO.cpp:99
tSewing
#define tSewing
Definition: Gmsh.tab.cpp:470
tStrRelative
#define tStrRelative
Definition: Gmsh.tab.cpp:375
PViewDataList::NbT3
int NbT3
Definition: PViewDataList.h:48
YYSTYPE::v
double v[5]
Definition: Gmsh.tab.cpp:754
tFmod
#define tFmod
Definition: Gmsh.tab.cpp:360
tAdaptMesh
#define tAdaptMesh
Definition: Gmsh.tab.cpp:450
GEntity::getColor
virtual unsigned int getColor()
Definition: GEntity.h:318
GEO_Internals::boundaryLayer
bool boundaryLayer(const std::vector< std::pair< int, int > > &inDimTags, std::vector< std::pair< int, int > > &outDimTags, ExtrudeParams *e=0)
Definition: GModelIO_GEO.cpp:804
OCC_Internals::addVolume
bool addVolume(int &tag, const std::vector< int > &shellTags)
Definition: GModelIO_OCC.h:612
GMSH_GET
#define GMSH_GET
Definition: Options.h:13
tGetForcedStr
#define tGetForcedStr
Definition: Gmsh.tab.cpp:546
MAX_RECUR_TESTS
#define MAX_RECUR_TESTS
Definition: Gmsh.tab.cpp:636
Field::callbacks
std::map< std::string, FieldCallback * > callbacks
Definition: Field.h:113
PluginManager::action
int action(const std::string &pluginName, const std::string &action, void *data)
Definition: PluginManager.cpp:119
GMSH_SET
#define GMSH_SET
Definition: Options.h:12
tTime
#define tTime
Definition: Gmsh.tab.cpp:508
tSphere
#define tSphere
Definition: Gmsh.tab.cpp:428
tQuadric
#define tQuadric
Definition: Gmsh.tab.cpp:438
tGeoEntity
#define tGeoEntity
Definition: Gmsh.tab.cpp:443
tGetEnv
#define tGetEnv
Definition: Gmsh.tab.cpp:535
Map::size
int size() const
Definition: Parser.h:210
GEO_Internals::extrude
bool extrude(const std::vector< std::pair< int, int > > &inDimTags, double dx, double dy, double dz, std::vector< std::pair< int, int > > &outDimTags, ExtrudeParams *e=0)
Definition: GModelIO_GEO.cpp:774
tRenumberMeshNodes
#define tRenumberMeshNodes
Definition: Gmsh.tab.cpp:410
PViewDataList::T2C
std::vector< char > T2C
Definition: PViewDataList.h:50
tMass
#define tMass
Definition: Gmsh.tab.cpp:398
GVertex::z
virtual double z() const =0
tSqrt
#define tSqrt
Definition: Gmsh.tab.cpp:341
NameSpaces::getMember_Vector
int getMember_Vector(std::string &key_namespace, std::string &key_name, std::string &key_member, const std::vector< double > *&out_vector) const
Definition: Parser.h:365
GRegion::method
char method
Definition: GRegion.h:146
GFace::recombine
int recombine
Definition: GFace.h:344
YYABORT
#define YYABORT
Definition: Gmsh.tab.cpp:4003
tDefineStruct
#define tDefineStruct
Definition: Gmsh.tab.cpp:416
tCharacteristic
#define tCharacteristic
Definition: Gmsh.tab.cpp:444
gmsh_yyerrorstate
int gmsh_yyerrorstate
Definition: Gmsh.tab.cpp:641
MergeFile
int MergeFile(const std::string &fileName, bool errorIfMissing, bool setBoundingBox, bool importPhysicalsInOnelab, int partitionToRead)
Definition: OpenFile.cpp:298
GModel::createOCCInternals
void createOCCInternals()
Definition: GModelIO_OCC.cpp:5874
ColorOption
bool ColorOption(int action, const char *category, int num, const char *name, unsigned int &val, bool warnIfUnknown)
Definition: Options.cpp:287
addPeriodicEdge
void addPeriodicEdge(int, int, const std::vector< double > &)
Definition: Gmsh.tab.cpp:15256
MSH_PHYSICAL_SURFACE
#define MSH_PHYSICAL_SURFACE
Definition: GeoDefines.h:45
NO_QUADTRI
#define NO_QUADTRI
Definition: GmshDefines.h:263
OCC_Internals::revolve
bool revolve(const std::vector< std::pair< int, int > > &inDimTags, double x, double y, double z, double ax, double ay, double az, double angle, std::vector< std::pair< int, int > > &outDimTags, ExtrudeParams *e=0)
Definition: GModelIO_OCC.h:670
PViewDataList::NbTL
int NbTL
Definition: PViewDataList.h:28
OCC_Internals::copy
bool copy(const std::vector< std::pair< int, int > > &inDimTags, std::vector< std::pair< int, int > > &outDimTags)
Definition: GModelIO_OCC.h:774
PViewDataList::SS
std::vector< double > SS
Definition: PViewDataList.h:37
tPlugin
#define tPlugin
Definition: Gmsh.tab.cpp:467
FieldOption::string
virtual std::string string() const
Definition: Field.h:98
OCC_Internals::addSurfaceLoop
bool addSurfaceLoop(int &tag, const std::vector< int > &surfaceTags, bool sewing)
Definition: GModelIO_OCC.h:607
tEllipse
#define tEllipse
Definition: Gmsh.tab.cpp:426
TYPE_LIN
#define TYPE_LIN
Definition: GmshDefines.h:65
YYSTACK_ALLOC_MAXIMUM
#define YYSTACK_ALLOC_MAXIMUM
Definition: Gmsh.tab.cpp:896
tGmshExecutableName
#define tGmshExecutableName
Definition: Gmsh.tab.cpp:550
PViewDataList::T3D
std::vector< double > T3D
Definition: PViewDataList.h:49
GEntity::getMeshVertex
MVertex * getMeshVertex(std::size_t index)
Definition: GEntity.h:379
yytranslate
static const yytype_uint16 yytranslate[]
Definition: Gmsh.tab.cpp:992
GEO_Internals::rotate
bool rotate(const std::vector< std::pair< int, int > > &dimTags, double x, double y, double z, double ax, double ay, double az, double angle)
Definition: GModelIO_GEO.cpp:848
PViewDataList::TL
std::vector< double > TL
Definition: PViewDataList.h:29
CTX::unpackBlue
int unpackBlue(unsigned int X)
Definition: Context.cpp:152
GFace
Definition: GFace.h:33
StringOption
bool StringOption(int action, const char *category, int num, const char *name, std::string &val, bool warnIfUnknown)
Definition: Options.cpp:63
GetFileNameWithoutPath
std::string GetFileNameWithoutPath(const std::string &fileName)
Definition: StringUtils.cpp:113
yyerror
#define yyerror
Definition: Gmsh.tab.cpp:64
tFillet
#define tFillet
Definition: Gmsh.tab.cpp:457
tCircle
#define tCircle
Definition: Gmsh.tab.cpp:425
tCoherence
#define tCoherence
Definition: Gmsh.tab.cpp:488
GModel::recombineMesh
int recombineMesh()
Definition: GModel.cpp:1421
Msg::Info
static void Info(const char *fmt,...)
Definition: GmshMessage.cpp:587
tTransformMesh
#define tTransformMesh
Definition: Gmsh.tab.cpp:451
GModel::removeDuplicateMeshVertices
int removeDuplicateMeshVertices(double tolerance, const std::vector< GEntity * > &entities=std::vector< GEntity * >())
Definition: GModel.cpp:2684
Msg::RunOnelabClient
static void RunOnelabClient(const std::string &name, const std::string &exe="")
Definition: GmshMessage.cpp:1605
tVolume
#define tVolume
Definition: Gmsh.tab.cpp:432
GEO_Internals::setMaxTag
void setMaxTag(int dim, int val)
Definition: GModelIO_GEO.cpp:87
angle
double angle(const SVector3 &a, const SVector3 &b)
Definition: SVector3.h:157
tTanh
#define tTanh
Definition: Gmsh.tab.cpp:352
CTX::fileFormat
int fileFormat
Definition: Context.h:319
tReverseMesh
#define tReverseMesh
Definition: Gmsh.tab.cpp:492
GEO_Internals::setTransfiniteVolumeQuadTri
void setTransfiniteVolumeQuadTri(int tag)
Definition: GModelIO_GEO.cpp:1234
GEO_Internals::setTransfiniteLine
void setTransfiniteLine(int tag, int nPoints, int type, double coef)
Definition: GModelIO_GEO.cpp:1136
OS.h
MElement::setPartition
virtual void setPartition(int num)
Definition: MElement.h:93
MSH_SURF_PLAN
#define MSH_SURF_PLAN
Definition: GeoDefines.h:33
GEO_Internals::setMeshSizeFromBoundary
void setMeshSizeFromBoundary(int dim, int tag, int val)
Definition: GModelIO_GEO.cpp:1353
GEO_Internals::modifyPhysicalGroup
bool modifyPhysicalGroup(int dim, int tag, int op, const std::vector< int > &tags)
Definition: GModelIO_GEO.cpp:1000
MSH_PHYSICAL_LINE
#define MSH_PHYSICAL_LINE
Definition: GeoDefines.h:44
PViewDataList::NbTP
int NbTP
Definition: PViewDataList.h:26
GRegion::addEmbeddedVertex
void addEmbeddedVertex(GVertex *v)
Definition: GRegion.h:57
PViewDataList::NbTT
int NbTT
Definition: PViewDataList.h:30
tRotate
#define tRotate
Definition: Gmsh.tab.cpp:471
YYID
#define YYID(n)
Definition: Gmsh.tab.cpp:838
Msg::GetOnelabNumber
static double GetOnelabNumber(const std::string &name, double defaultValue=0., bool errorIfMissing=false)
Definition: GmshMessage.cpp:1084
FieldOption::listdouble
virtual const std::list< double > & listdouble() const
Definition: Field.h:91
Msg::Debug
static void Debug(const char *fmt,...)
Definition: GmshMessage.cpp:752
CTX::combineCopyOptions
int combineCopyOptions
Definition: Context.h:318
tCone
#define tCone
Definition: Gmsh.tab.cpp:435
dim_entity
static int dim_entity
Definition: Gmsh.tab.cpp:664
tCodeName
#define tCodeName
Definition: Gmsh.tab.cpp:403
GEO_Internals::setTransfiniteSurface
void setTransfiniteSurface(int tag, int arrangement, const std::vector< int > &cornerTags)
Definition: GModelIO_GEO.cpp:1163
tStrCmp
#define tStrCmp
Definition: Gmsh.tab.cpp:383
c
static double c(int i, int j, fullMatrix< double > &CA, const std::vector< SPoint3 > &P, const std::vector< SPoint3 > &Q)
Definition: discreteFrechetDistance.cpp:15
MESH_TRANSFINITE
#define MESH_TRANSFINITE
Definition: GmshDefines.h:259
PViewDataList
Definition: PViewDataList.h:17
tExp
#define tExp
Definition: Gmsh.tab.cpp:338
ExtrudeParams::BoundaryLayerIndex
int BoundaryLayerIndex
Definition: ExtrudeParams.h:46
yyparse
#define yyparse
Definition: Gmsh.tab.cpp:62
MVertex
Definition: MVertex.h:24
tThruSections
#define tThruSections
Definition: Gmsh.tab.cpp:455
OCC_Internals::getMass
bool getMass(int dim, int tag, double &mass)
Definition: GModelIO_OCC.h:836
GEO_Internals::addCompoundBSpline
bool addCompoundBSpline(int &tag, const std::vector< int > &curveTags, int numPoints)
Definition: GModelIO_GEO.cpp:394
tLogSpace
#define tLogSpace
Definition: Gmsh.tab.cpp:365
GEntity::getParentEntity
virtual GEntity * getParentEntity()
Definition: GEntity.h:199
YYPOPSTACK
#define YYPOPSTACK(N)
tAppend
#define tAppend
Definition: Gmsh.tab.cpp:419
GModel::remove
bool remove(GRegion *r)
Definition: GModel.cpp:435
GEO_Internals::setRecombine
void setRecombine(int dim, int tag, double angle)
Definition: GModelIO_GEO.cpp:1252
CreateOutputFile
void CreateOutputFile(const std::string &fileName, int format, bool status)
Definition: CreateFile.cpp:290
List_T
Definition: ListUtils.h:9
Msg::Warning
static void Warning(const char *fmt,...)
Definition: GmshMessage.cpp:543
tStrPrefix
#define tStrPrefix
Definition: Gmsh.tab.cpp:374
GFace::relocateMeshVertices
void relocateMeshVertices()
Definition: GFace.cpp:2206
Msg::Error
static void Error(const char *fmt,...)
Definition: GmshMessage.cpp:482
CTX::post
struct CTX::@0 post
PViewDataList::NbSP
int NbSP
Definition: PViewDataList.h:26
gmshPopplerWrapper.h
ListUtils.h
Msg::StatusBar
static void StatusBar(bool log, const char *fmt,...)
Definition: GmshMessage.cpp:686
BackgroundMesh.h
yyr2
static const yytype_uint8 yyr2[]
Definition: Gmsh.tab.cpp:1686
yystos
static const yytype_uint16 yystos[]
Definition: Gmsh.tab.cpp:3895
GFace::transfiniteArrangement
int transfiniteArrangement
Definition: GFace.h:353
GFace::method
char method
Definition: GFace.h:348
GRegion::recombine3D
int recombine3D
Definition: GRegion.h:144
yytable
static const yytype_int16 yytable[]
Definition: Gmsh.tab.cpp:1989
GEdge::reverseMesh
bool reverseMesh
Definition: GEdge.h:259
box
Definition: gl2gif.cpp:311
gmshSurface::getSurface
static gmshSurface * getSurface(int tag)
Definition: gmshSurface.cpp:51
OCC_Internals::addSphere
bool addSphere(int &tag, double xc, double yc, double zc, double radius, double angle1, double angle2, double angle3)
Definition: GModelIO_OCC.h:616
tClassifySurfaces
#define tClassifySurfaces
Definition: Gmsh.tab.cpp:409
YYLAST
#define YYLAST
Definition: Gmsh.tab.cpp:974
List_Reset
void List_Reset(List_T *liste)
Definition: ListUtils.cpp:269
myGmshSurface
static gmshSurface * myGmshSurface
Definition: Gmsh.tab.cpp:656
SPoint3
Definition: SPoint3.h:14
LegendrePolynomials::f
void f(int n, double u, double *val)
Definition: orthogonalBasis.cpp:77
FunctionManager::Instance
static FunctionManager * Instance()
Definition: FunctionManager.cpp:40
tRefineMesh
#define tRefineMesh
Definition: Gmsh.tab.cpp:448
gmshParametricSurface::NewParametricSurface
static gmshSurface * NewParametricSurface(int iSurf, const char *, const char *, const char *)
Definition: gmshSurface.cpp:100
PViewDataList::TI
std::vector< double > TI
Definition: PViewDataList.h:41
yyposImbricatedLoopsTab
static fpos_t yyposImbricatedLoopsTab[MAX_RECUR_LOOPS]
Definition: Gmsh.tab.cpp:659
TwoChar
Definition: Parser.h:25
List_Nbr
int List_Nbr(List_T *liste)
Definition: ListUtils.cpp:106
PViewDataList::NbSQ
int NbSQ
Definition: PViewDataList.h:32
GModel::getFaceByTag
GFace * getFaceByTag(int n) const
Definition: GModel.cpp:326
tWire
#define tWire
Definition: Gmsh.tab.cpp:442
OCC_Internals::addSpline
bool addSpline(int &tag, const std::vector< int > &pointTags, const std::vector< SVector3 > &tangents=std::vector< SVector3 >())
Definition: GModelIO_OCC.h:522
statusImbricatedTests
static int statusImbricatedTests[MAX_RECUR_TESTS]
Definition: Gmsh.tab.cpp:657
GFace::meshAttributes
struct GFace::@18 meshAttributes
QUADTRI_ADDVERTS_1
#define QUADTRI_ADDVERTS_1
Definition: GmshDefines.h:264
YYEMPTY
#define YYEMPTY
Definition: Gmsh.tab.cpp:3999
tStrFind
#define tStrFind
Definition: Gmsh.tab.cpp:382
MSH_POINT
#define MSH_POINT
Definition: GeoDefines.h:16
OCC_Internals::addCurveLoop
bool addCurveLoop(int &tag, const std::vector< int > &curveTags)
Definition: GModelIO_OCC.h:543
PViewDataList::SY
std::vector< double > SY
Definition: PViewDataList.h:43
COLORTABLE_NBMAX_COLOR
#define COLORTABLE_NBMAX_COLOR
Definition: ColorTable.h:14
tLog10
#define tLog10
Definition: Gmsh.tab.cpp:340
gmsh_yysymbol::list
bool list
Definition: Parser.h:20
FieldOption::list
virtual const std::list< int > & list() const
Definition: Field.h:86
gmsh_yynamespaces
NameSpaces gmsh_yynamespaces
Definition: Gmsh.tab.cpp:646
tStringToName
#define tStringToName
Definition: Gmsh.tab.cpp:553
PViewDataList::NbSH
int NbSH
Definition: PViewDataList.h:38
TYPE_TRI
#define TYPE_TRI
Definition: GmshDefines.h:66
tSCOPE
#define tSCOPE
Definition: Gmsh.tab.cpp:331
gmsh_yyname
std::string gmsh_yyname
Definition: Gmsh.tab.cpp:640
yylval
#define yylval
Definition: Gmsh.tab.cpp:65
GFace::addEmbeddedEdge
void addEmbeddedEdge(GEdge *e)
Definition: GFace.h:108
tFloor
#define tFloor
Definition: Gmsh.tab.cpp:355
tElliptic
#define tElliptic
Definition: Gmsh.tab.cpp:447
gLevelsetUnion
Definition: gmshLevelset.h:539
List_Create
List_T * List_Create(int n, int incr, int size)
Definition: ListUtils.cpp:46
PViewDataList::VL
std::vector< double > VL
Definition: PViewDataList.h:29
ReInitOptions
void ReInitOptions(int num)
Definition: Options.cpp:504
QUADTRI_ADDVERTS_1_RECOMB
#define QUADTRI_ADDVERTS_1_RECOMB
Definition: GmshDefines.h:265
PView.h
GModelIO_OCC.h
GEO_Internals::addSurfaceFilling
bool addSurfaceFilling(int &tag, const std::vector< int > &wireTags, int sphereCenterTag=-1)
Definition: GModelIO_GEO.cpp:630
tMINUSMINUS
#define tMINUSMINUS
Definition: Gmsh.tab.cpp:568
GEO_Internals::setMaxPhysicalTag
void setMaxPhysicalTag(int val)
Definition: GModelIO_GEO.h:133
GModelIO_GEO.h
tDisk
#define tDisk
Definition: Gmsh.tab.cpp:441
tField
#define tField
Definition: Gmsh.tab.cpp:526
contextMeshOptions::meshOnlyVisible
int meshOnlyVisible
Definition: Context.h:36
OCC_Internals::dilate
bool dilate(const std::vector< std::pair< int, int > > &inDimTags, double x, double y, double z, double a, double b, double c)
Definition: GModelIO_OCC.h:759
FunctionManager.h
YY_
#define YY_(msgid)
Definition: Gmsh.tab.cpp:825
tRenumberMeshElements
#define tRenumberMeshElements
Definition: Gmsh.tab.cpp:411
GModel::eiter
std::set< GEdge *, GEntityPtrLessThan >::iterator eiter
Definition: GModel.h:185
tMPI_Rank
#define tMPI_Rank
Definition: Gmsh.tab.cpp:333
tHomology
#define tHomology
Definition: Gmsh.tab.cpp:540
tAlias
#define tAlias
Definition: Gmsh.tab.cpp:498
tLESSOREQUAL
#define tLESSOREQUAL
Definition: Gmsh.tab.cpp:566
List_Search
int List_Search(List_T *liste, void *data, int(*fcmp)(const void *a, const void *b))
Definition: ListUtils.cpp:199
gLevelsetEllipsoid
Definition: gmshLevelset.h:279
PViewDataList::VY
std::vector< double > VY
Definition: PViewDataList.h:43
treat_Struct_FullName_dot_tSTRING_ListOfString
List_T * treat_Struct_FullName_dot_tSTRING_ListOfString(char *c1, char *c2, char *c3)
Definition: Gmsh.tab.cpp:15838
OCC_Internals::addBezierFilling
bool addBezierFilling(int &tag, int wireTag, const std::string &type="")
Definition: GModelIO_OCC.h:579
MVertex::point
SPoint3 point() const
Definition: MVertex.h:67
YY_REDUCE_PRINT
#define YY_REDUCE_PRINT(Rule)
Definition: Gmsh.tab.cpp:4216
Msg::GetValue
static double GetValue(const char *text, double defaultval)
Definition: GmshMessage.cpp:900
yytype_int16
short int yytype_int16
Definition: Gmsh.tab.cpp:799
ListOfListOfDouble2Matrix
fullMatrix< double > ListOfListOfDouble2Matrix(List_T *list)
Definition: Gmsh.tab.cpp:15094
tRuled
#define tRuled
Definition: Gmsh.tab.cpp:460
ImbricatedLoop
static int ImbricatedLoop
Definition: Gmsh.tab.cpp:658
strsave
char * strsave(char *ptr)
gmshSurface.h
tTorus
#define tTorus
Definition: Gmsh.tab.cpp:436
GModel::getEdgeByTag
GEdge * getEdgeByTag(int n) const
Definition: GModel.cpp:336
FieldOption::getType
virtual FieldOptionType getType()=0
tGetNumber
#define tGetNumber
Definition: Gmsh.tab.cpp:537
GmshMessage.h
tMPI_Size
#define tMPI_Size
Definition: Gmsh.tab.cpp:334
tSetTag
#define tSetTag
Definition: Gmsh.tab.cpp:422
tEllipsoid
#define tEllipsoid
Definition: Gmsh.tab.cpp:437
assignVariables
void assignVariables(const std::string &name, List_T *indices, int assignType, List_T *values)
Definition: Gmsh.tab.cpp:14886
edges
static int edges[6][2]
Definition: meshGRegionLocalMeshMod.cpp:23
treat_Struct_FullName_Float
double treat_Struct_FullName_Float(char *c1, char *c2, int type_var=1, int index=0, double val_default=0., int type_treat=0)
Definition: Gmsh.tab.cpp:15602
GModel::buildCutGModel
GModel * buildCutGModel(gLevelset *ls, bool cutElem=true, bool saveTri=false)
Definition: GModel.cpp:3376
GetGmshPatchVersion
int GetGmshPatchVersion()
Definition: CommandLine.cpp:58
tCeil
#define tCeil
Definition: Gmsh.tab.cpp:356
GEO_Internals::addEllipseArc
bool addEllipseArc(int &tag, int startTag, int centerTag, int majorTag, int endTag, double nx=0., double ny=0., double nz=0.)
Definition: GModelIO_GEO.cpp:209
GEO_Internals::addLine
bool addLine(int &tag, int startTag, int endTag)
Definition: GModelIO_GEO.cpp:141
NameSpaces::get_key_struct_from_tag
int get_key_struct_from_tag(std::string &key_namespace, int tag, const std::string *&key_struct) const
Definition: Parser.h:407
GModel::removePhysicalGroups
void removePhysicalGroups()
Definition: GModel.cpp:893
GFace::setMeshSizeFromBoundary
void setMeshSizeFromBoundary(int val)
Definition: GFace.h:380
GEntity
Definition: GEntity.h:31
PrintParserSymbols
void PrintParserSymbols(bool help, std::vector< std::string > &vec)
Definition: Gmsh.tab.cpp:15027
SetBoundingBox
void SetBoundingBox(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)
Definition: OpenFile.cpp:115
GRegion::corners
std::vector< GVertex * > corners
Definition: GRegion.h:150
GEntity::getNumMeshVertices
std::size_t getNumMeshVertices()
Definition: GEntity.h:376
Msg::ExchangeOnelabParameter
static void ExchangeOnelabParameter(const std::string &key, std::vector< double > &val, std::map< std::string, std::vector< double > > &fopt, std::map< std::string, std::vector< std::string > > &copt)
Definition: GmshMessage.cpp:1348
TYPE_PRI
#define TYPE_PRI
Definition: GmshDefines.h:70
OCC_Internals::addWedge
bool addWedge(int &tag, double x, double y, double z, double dx, double dy, double dz, double ltx, const std::vector< double > &N=std::vector< double >())
Definition: GModelIO_OCC.h:636
tBooleanSection
#define tBooleanSection
Definition: Gmsh.tab.cpp:481
tCreateGeometry
#define tCreateGeometry
Definition: Gmsh.tab.cpp:408
ColorTable.h
tHide
#define tHide
Definition: Gmsh.tab.cpp:532
tDefineString
#define tDefineString
Definition: Gmsh.tab.cpp:420
PViewDataList::NbVH
int NbVH
Definition: PViewDataList.h:38
PViewData::setFileName
virtual void setFileName(const std::string &val)
Definition: PViewData.h:75
OCC_Internals::addPipe
bool addPipe(const std::vector< std::pair< int, int > > &inDimTags, int wireTag, std::vector< std::pair< int, int > > &outDimTags, const std::string &trihedron="")
Definition: GModelIO_OCC.h:677
MSH_SEGM_SPLN
#define MSH_SEGM_SPLN
Definition: GeoDefines.h:21
YYSTACK_ALLOC
#define YYSTACK_ALLOC
Definition: Gmsh.tab.cpp:893
tPi
#define tPi
Definition: Gmsh.tab.cpp:332
drawContext::global
static drawContextGlobal * global()
Definition: drawContext.cpp:85
getBoundingBox
void getBoundingBox(int dim, List_T *in, List_T *out)
Definition: Gmsh.tab.cpp:15533
PViewDataList::VH
std::vector< double > VH
Definition: PViewDataList.h:39
tGREATERGREATER
#define tGREATERGREATER
Definition: Gmsh.tab.cpp:563
tAbsolutePath
#define tAbsolutePath
Definition: Gmsh.tab.cpp:377
tSetChanged
#define tSetChanged
Definition: Gmsh.tab.cpp:391
yydefgoto
static const yytype_int16 yydefgoto[]
Definition: Gmsh.tab.cpp:1816
tNameToString
#define tNameToString
Definition: Gmsh.tab.cpp:552
GEO_Internals::addVolume
bool addVolume(int &tag, const std::vector< int > &shellTags)
Definition: GModelIO_GEO.cpp:701
addEmbedded
void addEmbedded(int dim, std::vector< int > tags, int dim2, int tag2)
Definition: Gmsh.tab.cpp:15320
tExit
#define tExit
Definition: Gmsh.tab.cpp:524
Free
void Free(void *ptr)
Definition: MallocUtils.cpp:40
GModel::createGeometryOfDiscreteEntities
void createGeometryOfDiscreteEntities(const std::vector< std::pair< int, int > > &dimTags=std::vector< std::pair< int, int > >())
Definition: GModel.cpp:2370
NameSpaces::getTag
int getTag(std::string &key_namespace, std::string &key_name, double &out) const
Definition: Parser.h:295
Fopen
FILE * Fopen(const char *f, const char *mode)
Definition: OS.cpp:273
OCC_Internals::addRectangle
bool addRectangle(int &tag, double x, double y, double z, double dx, double dy, double roundedRadius=0.)
Definition: GModelIO_OCC.h:547
tRelocateMesh
#define tRelocateMesh
Definition: Gmsh.tab.cpp:452
tAbs
#define tAbs
Definition: Gmsh.tab.cpp:354
GModel::makeDiscreteRegionsSimplyConnected
void makeDiscreteRegionsSimplyConnected()
Definition: GModel.cpp:3101
YYDPRINTF
#define YYDPRINTF(Args)
Definition: Gmsh.tab.cpp:4213
PluginManager::instance
static PluginManager * instance()
Definition: PluginManager.cpp:169
VectorOfPairs2ListOfShapes
void VectorOfPairs2ListOfShapes(const std::vector< std::pair< int, int >> &v, List_T *list)
Definition: Gmsh.tab.cpp:15161
GEntity::setColor
virtual void setColor(unsigned color, bool recursive=false)
Definition: GEntity.h:319
tAcos
#define tAcos
Definition: Gmsh.tab.cpp:345
gLevelsetPoints
Definition: gmshLevelset.h:217
drawContextGlobal::draw
virtual void draw(bool rateLimited=true)
Definition: drawContext.h:97
YYSTYPE
Definition: Gmsh.tab.cpp:749
GetGmshMinorVersion
int GetGmshMinorVersion()
Definition: CommandLine.cpp:57
tDefineNumber
#define tDefineNumber
Definition: Gmsh.tab.cpp:415
tSetString
#define tSetString
Definition: Gmsh.tab.cpp:423
Shape::Type
int Type
Definition: GeoDefines.h:11
ExtrudeParams::QuadToTri
int QuadToTri
Definition: ExtrudeParams.h:38
tTransfinite
#define tTransfinite
Definition: Gmsh.tab.cpp:461
List_Add
void List_Add(List_T *liste, void *data)
Definition: ListUtils.cpp:90
GEntity::setVisibility
virtual void setVisibility(char val, bool recursive=false)
Definition: GEntity.h:308
OCC_Internals::addBSplineFilling
bool addBSplineFilling(int &tag, int wireTag, const std::string &type="")
Definition: GModelIO_OCC.h:575
GEdge::setTooSmall
void setTooSmall(bool const b)
Definition: GEdge.h:183
tCombine
#define tCombine
Definition: Gmsh.tab.cpp:509
Msg::SetOnelabString
static void SetOnelabString(const std::string &name, const std::string &val, bool visible=true, bool persistent=false, bool readOnly=false, int changedValue=3, const std::string &kind="")
Definition: GmshMessage.cpp:1021
GModel::getEntitiesInBox
void getEntitiesInBox(std::vector< GEntity * > &entities, const SBoundingBox3d &box, int dim=-1) const
Definition: GModel.cpp:672
CTX::instance
static CTX * instance()
Definition: Context.cpp:122
List_Pointer_Fast
void * List_Pointer_Fast(List_T *liste, int index)
Definition: ListUtils.cpp:171
YYINITDEPTH
#define YYINITDEPTH
Definition: Gmsh.tab.cpp:4221
SPoint3::x
double x(void) const
Definition: SPoint3.h:125
fullMatrix< double >
PViewDataList::TY
std::vector< double > TY
Definition: PViewDataList.h:43
GModel::getPhysicalGroups
void getPhysicalGroups(std::map< int, std::vector< GEntity * > > groups[4]) const
Definition: GModel.cpp:837
yyr1
static const yytype_uint16 yyr1[]
Definition: Gmsh.tab.cpp:1655
GModel::lastFace
fiter lastFace()
Definition: GModel.h:359
contextGeometryOptions::occMakeSolids
int occMakeSolids
Definition: Context.h:102
tPoint
#define tPoint
Definition: Gmsh.tab.cpp:424
contextGeometryOptions::occFixSmallFaces
int occFixSmallFaces
Definition: Context.h:101
PViewDataList::TP
std::vector< double > TP
Definition: PViewDataList.h:27
assignVariable
void assignVariable(const std::string &name, int index, int assignType, double value)
Definition: Gmsh.tab.cpp:14838
tNurbsOrder
#define tNurbsOrder
Definition: Gmsh.tab.cpp:513
GModel::getPhysicalName
std::string getPhysicalName(int dim, int num) const
Definition: GModel.cpp:961
yytype_uint8
unsigned char yytype_uint8
Definition: Gmsh.tab.cpp:779
PViewData::setInterpolationMatrices
void setInterpolationMatrices(int type, const fullMatrix< double > &coefVal, const fullMatrix< double > &expVal)
Definition: PViewData.cpp:154
Msg::Barrier
static void Barrier()
Definition: GmshMessage.cpp:1619
OCC_Internals::booleanOperator
bool booleanOperator(int tag, BooleanOperator op, const std::vector< std::pair< int, int > > &objectDimTags, const std::vector< std::pair< int, int > > &toolDimTags, std::vector< std::pair< int, int > > &outDimTags, std::vector< std::vector< std::pair< int, int > > > &outDimTagsMap, bool removeObject, bool removeTool)
Definition: GModelIO_OCC.h:698
OCC_Internals::Difference
@ Difference
Definition: GModelIO_OCC.h:480
tAFFECT
#define tAFFECT
Definition: Gmsh.tab.cpp:329
FixRelativePath
std::string FixRelativePath(const std::string &reference, const std::string &in)
Definition: StringUtils.cpp:77
tTranslate
#define tTranslate
Definition: Gmsh.tab.cpp:472
FieldManager::deleteField
void deleteField(int id)
Definition: Field.cpp:118
ExtrudeParams::mesh
struct ExtrudeParams::@14 mesh
GModel::renumberMeshVertices
void renumberMeshVertices()
Definition: GModel.cpp:1623
GEO_Internals::addSpline
bool addSpline(int &tag, const std::vector< int > &pointTags)
Definition: GModelIO_GEO.cpp:245
contextMeshOptions::algoSubdivide
int algoSubdivide
Definition: Context.h:29
GModel::setName
void setName(const std::string &name)
Definition: GModel.h:328
ViewCoord
static std::vector< double > ViewCoord
Definition: Gmsh.tab.cpp:652
YYFINAL
#define YYFINAL
Definition: Gmsh.tab.cpp:972
tSetFactory
#define tSetFactory
Definition: Gmsh.tab.cpp:454
tUpperCase
#define tUpperCase
Definition: Gmsh.tab.cpp:385
GModel::changeEntityTag
bool changeEntityTag(int dim, int tag, int newTag)
Definition: GModel.cpp:367
tAFFECTDIVIDE
#define tAFFECTDIVIDE
Definition: Gmsh.tab.cpp:555
gLevelsetReverse
Definition: gmshLevelset.h:500
OCC_Internals::addDisk
bool addDisk(int &tag, double xc, double yc, double zc, double rx, double ry, const std::vector< double > &N=std::vector< double >(), const std::vector< double > &V=std::vector< double >())
Definition: GModelIO_OCC.h:552
gmshSurface
Definition: gmshSurface.h:22
incrementVariable
void incrementVariable(const std::string &name, int index, double value)
Definition: Gmsh.tab.cpp:14950
gmsh_yyin
FILE * gmsh_yyin
FieldManager::setBackgroundFieldId
void setBackgroundFieldId(int id)
Definition: Field.h:165
yytokentype
yytokentype
Definition: Gmsh.tab.cpp:76
tFileExists
#define tFileExists
Definition: Gmsh.tab.cpp:544
tParent
#define tParent
Definition: Gmsh.tab.cpp:465
MSH_SEGM_LOOP
#define MSH_SEGM_LOOP
Definition: GeoDefines.h:26
gLevelset
Definition: gmshLevelset.h:64
tGMSH_MINOR_VERSION
#define tGMSH_MINOR_VERSION
Definition: Gmsh.tab.cpp:548
YYSTACK_BYTES
#define YYSTACK_BYTES(N)
Definition: Gmsh.tab.cpp:936
GEO_Internals::addDiscreteSurface
bool addDiscreteSurface(int &tag)
Definition: GModelIO_GEO.cpp:617
tText3D
#define tText3D
Definition: Gmsh.tab.cpp:506
input
static int input(void)
tUnsplitWindow
#define tUnsplitWindow
Definition: Gmsh.tab.cpp:554
gLevelsetGenCylinder
Definition: gmshLevelset.h:270
PViewDataList::VP
std::vector< double > VP
Definition: PViewDataList.h:27
OCC_Internals::addEllipseArc
bool addEllipseArc(int &tag, int startTag, int centerTag, int majorTag, int endTag)
Definition: GModelIO_OCC.h:510
OCC_Internals::BooleanOperator
BooleanOperator
Definition: GModelIO_OCC.h:480
tPrintf
#define tPrintf
Definition: Gmsh.tab.cpp:368
GModel::lastVertex
viter lastVertex()
Definition: GModel.h:361
HighOrder.h
gmsh_yysymbols
std::map< std::string, gmsh_yysymbol > gmsh_yysymbols
Definition: Gmsh.tab.cpp:643
tBoundingBox
#define tBoundingBox
Definition: Gmsh.tab.cpp:389
PViewDataList::NbTH
int NbTH
Definition: PViewDataList.h:38
OCC_Internals::extrude
bool extrude(const std::vector< std::pair< int, int > > &inDimTags, double dx, double dy, double dz, std::vector< std::pair< int, int > > &outDimTags, ExtrudeParams *e=0)
Definition: GModelIO_OCC.h:663
drawContextGlobal::getFontIndex
virtual int getFontIndex(const char *fontname)
Definition: drawContext.h:99
gmsh_yysymbol
Definition: Parser.h:18
tCoordinates
#define tCoordinates
Definition: Gmsh.tab.cpp:336
GFace::recombineAngle
double recombineAngle
Definition: GFace.h:346
CreateSingleDir
int CreateSingleDir(const std::string &dirName)
Definition: OS.cpp:502
GEntity::getNumMeshElements
virtual std::size_t getNumMeshElements() const
Definition: GEntity.h:348
GVertex
Definition: GVertex.h:23
NameSpaces
Definition: Parser.h:272
struct_name
static std::string struct_name
Definition: Gmsh.tab.cpp:663
PViewDataList::SP
std::vector< double > SP
Definition: PViewDataList.h:27
Msg::GetCommRank
static int GetCommRank()
Definition: GmshMessage.cpp:219
tDefineConstant
#define tDefineConstant
Definition: Gmsh.tab.cpp:413
PluginManager.h
tLowerCaseIn
#define tLowerCaseIn
Definition: Gmsh.tab.cpp:387
ExtrudeParams::ScaleLast
bool ScaleLast
Definition: ExtrudeParams.h:44
LoopControlVariablesTab
static double LoopControlVariablesTab[MAX_RECUR_LOOPS][3]
Definition: Gmsh.tab.cpp:661
tExtrude
#define tExtrude
Definition: Gmsh.tab.cpp:475
YYSTYPE::i
int i
Definition: Gmsh.tab.cpp:751
GModel::refineMesh
int refineMesh(int linear, bool splitIntoQuads=false, bool splitIntoHexas=false, bool barycentric=false)
Definition: GModel.cpp:1401
ListOfShapes2VectorOfPairs
void ListOfShapes2VectorOfPairs(List_T *list, std::vector< std::pair< int, int >> &v)
Definition: Gmsh.tab.cpp:15149
PView::combine
static void combine(bool time, int how, bool remove, bool copyOptions)
Definition: PView.cpp:249
tCos
#define tCos
Definition: Gmsh.tab.cpp:344
Msg::GetString
static std::string GetString(const char *text, const std::string &defaultval)
Definition: GmshMessage.cpp:927
PViewDataList::T3C
std::vector< char > T3C
Definition: PViewDataList.h:50
tExists
#define tExists
Definition: Gmsh.tab.cpp:543
setVisibility
void setVisibility(int dim, int visible, bool recursive)
Definition: Gmsh.tab.cpp:15557
a1
const double a1
Definition: GaussQuadratureHex.cpp:10
OCC_Internals::getMaxTag
int getMaxTag(int dim) const
Definition: GModelIO_OCC.h:485
GFace::embeddedVertices
std::set< GVertex *, GEntityPtrLessThan > & embeddedVertices()
Definition: GFace.h:160
yylinenoImbricatedLoopsTab
static int yylinenoImbricatedLoopsTab[MAX_RECUR_LOOPS]
Definition: Gmsh.tab.cpp:660
contextGeometryOptions::occFixDegenerated
int occFixDegenerated
Definition: Context.h:101
tDirName
#define tDirName
Definition: Gmsh.tab.cpp:378
YYSTYPE::s
Shape s
Definition: Gmsh.tab.cpp:755
YYSTYPE::u
unsigned int u
Definition: Gmsh.tab.cpp:752
gLevelset::find
static gLevelset * find(int tag)
Definition: gmshLevelset.cpp:36
addPeriodicFace
void addPeriodicFace(int, int, const std::map< int, int > &)
Definition: Gmsh.tab.cpp:15233
tMeshAlgorithm
#define tMeshAlgorithm
Definition: Gmsh.tab.cpp:491
OCC_Internals::addSurfaceFilling
bool addSurfaceFilling(int &tag, int wireTag, const std::vector< int > &pointTags=std::vector< int >(), const std::vector< int > &surfaceTags=std::vector< int >(), const std::vector< int > &surfaceContinuity=std::vector< int >(), const int degree=2, const int numPointsOnCurves=15, const int numIter=2, const bool anisotropic=false, const double tol2d=0.00001, const double tol3d=0.0001, const double tolAng=0.01, const double tolCurv=0.1, const int maxDegree=8, const int maxSegments=9)
Definition: GModelIO_OCC.h:562
YYSIZE_MAXIMUM
#define YYSIZE_MAXIMUM
Definition: Gmsh.tab.cpp:815
yyerrok
#define yyerrok
Definition: Gmsh.tab.cpp:3997
Numeric.h
FieldManager::get
Field * get(int id)
Definition: Field.cpp:74
tStrCat
#define tStrCat
Definition: Gmsh.tab.cpp:373
ReplaceSubString
std::string ReplaceSubString(const std::string &olds, const std::string &news, const std::string &str)
Definition: StringUtils.cpp:140
MSH_PHYSICAL_VOLUME
#define MSH_PHYSICAL_VOLUME
Definition: GeoDefines.h:46
GModel
Definition: GModel.h:44
tTan
#define tTan
Definition: Gmsh.tab.cpp:346
tReturn
#define tReturn
Definition: Gmsh.tab.cpp:527
GEO_Internals::symmetry
bool symmetry(const std::vector< std::pair< int, int > > &dimTags, double a, double b, double c, double d)
Definition: GModelIO_GEO.cpp:862
NameSpaces::getMember_ValMax
int getMember_ValMax(std::string &key_namespace, std::string &key_name)
Definition: Parser.h:417
Cpu
double Cpu()
Definition: OS.cpp:366
GModel::classifySurfaces
void classifySurfaces(double angleThreshold, bool includeBoundary, bool forReparametrization, double curveAngleThreshold)
Definition: GModel.cpp:3472
tSymmetry
#define tSymmetry
Definition: Gmsh.tab.cpp:473
CTX::unpackGreen
int unpackGreen(unsigned int X)
Definition: Context.cpp:144
gLevelsetCut
Definition: gmshLevelset.h:522
tDistanceFunction
#define tDistanceFunction
Definition: Gmsh.tab.cpp:412
treat_Struct_FullName_String
char * treat_Struct_FullName_String(char *c1, char *c2, int type_var=1, int index=0, char *val_default=nullptr, int type_treat=0)
Definition: Gmsh.tab.cpp:15768
tNurbs
#define tNurbs
Definition: Gmsh.tab.cpp:512
MSH_SEGM_NURBS
#define MSH_SEGM_NURBS
Definition: GeoDefines.h:28
gmsh_yyviewindex
int gmsh_yyviewindex
Definition: Gmsh.tab.cpp:642
PViewDataList::SL
std::vector< double > SL
Definition: PViewDataList.h:29
yytype_uint16
unsigned short int yytype_uint16
Definition: Gmsh.tab.cpp:793
tPhysical
#define tPhysical
Definition: Gmsh.tab.cpp:462
NameSpaces::getMember
int getMember(std::string &key_namespace, std::string &key_name, std::string &key_member, double &out, int index=0) const
Definition: Parser.h:308
PViewDataList.h
ExtrudeParams::NbLayer
int NbLayer
Definition: ExtrudeParams.h:39
GModel::addHomologyRequest
void addHomologyRequest(const std::string &type, const std::vector< int > &domain, const std::vector< int > &subdomain, const std::vector< int > &dim)
Definition: GModel.cpp:3480
ExtrudeParams.h
GModel::createTopologyFromMesh
void createTopologyFromMesh()
Definition: GModelCreateTopologyFromMesh.cpp:663
MVertex::setXYZ
void setXYZ(double x, double y, double z)
Definition: MVertex.h:68
GEO_Internals::splitCurve
bool splitCurve(int tag, const std::vector< int > &pointTags, std::vector< int > &curveTags)
Definition: GModelIO_GEO.cpp:868
GEO_Internals::setCompoundMesh
void setCompoundMesh(int dim, const std::vector< int > &tags)
Definition: GModelIO_GEO.cpp:1111
OCC_Internals::translate
bool translate(const std::vector< std::pair< int, int > > &inDimTags, double dx, double dy, double dz)
Definition: GModelIO_OCC.h:749
tThickSolid
#define tThickSolid
Definition: Gmsh.tab.cpp:483
tRand
#define tRand
Definition: Gmsh.tab.cpp:347
GEO_Internals::setDegenerated
void setDegenerated(int dim, int tag)
Definition: GModelIO_GEO.cpp:1128
YYNTOKENS
#define YYNTOKENS
Definition: Gmsh.tab.cpp:977
AddToTemporaryBoundingBox
void AddToTemporaryBoundingBox(double x, double y, double z)
Definition: OpenFile.cpp:163
setColor
void setColor(const std::vector< std::pair< int, int >> &dimTags, unsigned int val, bool recursive)
Definition: Gmsh.tab.cpp:15587
PViewDataList::NbVS
int NbVS
Definition: PViewDataList.h:36
GMSH_GUI
#define GMSH_GUI
Definition: Options.h:14
treat_Struct_FullName_dot_tSTRING_Float_getDim
int treat_Struct_FullName_dot_tSTRING_Float_getDim(char *c1, char *c2, char *c3)
Definition: Gmsh.tab.cpp:15745
GEO_Internals::setMeshAlgorithm
void setMeshAlgorithm(int dim, int tag, int val)
Definition: GModelIO_GEO.cpp:1344
tNOTEQUAL
#define tNOTEQUAL
Definition: Gmsh.tab.cpp:561
tDimNameSpace
#define tDimNameSpace
Definition: Gmsh.tab.cpp:418
GModel::getBoundaryTags
bool getBoundaryTags(const std::vector< std::pair< int, int > > &inDimTags, std::vector< std::pair< int, int > > &outDimTags, bool combined, bool oriented=true, bool recursive=false)
Definition: GModel.cpp:697
UNARYPREC
#define UNARYPREC
Definition: Gmsh.tab.cpp:567
GVertex::relocateMeshVertices
void relocateMeshVertices()
Definition: GVertex.cpp:186
tWarning
#define tWarning
Definition: Gmsh.tab.cpp:370
GModel::firstFace
fiter firstFace()
Definition: GModel.h:355
tCosh
#define tCosh
Definition: Gmsh.tab.cpp:351
tListFromFile
#define tListFromFile
Definition: Gmsh.tab.cpp:366
tBooleanIntersection
#define tBooleanIntersection
Definition: Gmsh.tab.cpp:479
GEO_Internals::getVertex
bool getVertex(int tag, double &x, double &y, double &z)
Definition: GModelIO_GEO.cpp:1616
FieldCallback
Definition: Field.h:39
GEdge::meshAttributes
struct GEdge::@16 meshAttributes
SPoint3::y
double y(void) const
Definition: SPoint3.h:127
GEO_Internals::getMaxPhysicalTag
int getMaxPhysicalTag() const
Definition: GModelIO_GEO.h:132
ExtrudeParams::Holes
std::map< int, std::pair< double, std::vector< int > > > Holes
Definition: ExtrudeParams.h:45
tDraw
#define tDraw
Definition: Gmsh.tab.cpp:390
ExtrudeParams::Recombine
bool Recombine
Definition: ExtrudeParams.h:37
picojson::object
value::object object
Definition: picojson.h:195
tDelete
#define tDelete
Definition: Gmsh.tab.cpp:487
tDegenerated
#define tDegenerated
Definition: Gmsh.tab.cpp:468
yytype_int8
short int yytype_int8
Definition: Gmsh.tab.cpp:787
tStrLen
#define tStrLen
Definition: Gmsh.tab.cpp:380
tWedge
#define tWedge
Definition: Gmsh.tab.cpp:456
List_Delete
void List_Delete(List_T *liste)
Definition: ListUtils.cpp:66
FIELD_OPTION_LIST
@ FIELD_OPTION_LIST
Definition: Field.h:35
tElseIf
#define tElseIf
Definition: Gmsh.tab.cpp:521
YYACCEPT
#define YYACCEPT
Definition: Gmsh.tab.cpp:4002
OCC_Internals::addThickSolid
bool addThickSolid(int tag, int solidTag, const std::vector< int > &excludeFaceTags, double offset, std::vector< std::pair< int, int > > &outDimTags)
Definition: GModelIO_OCC.h:657
tGREATEROREQUAL
#define tGREATEROREQUAL
Definition: Gmsh.tab.cpp:565
tLevelset
#define tLevelset
Definition: Gmsh.tab.cpp:476
Msg::Exit
static void Exit(int level)
Definition: GmshMessage.cpp:384
OCC_Internals::fillet
bool fillet(const std::vector< int > &volumeTags, const std::vector< int > &curveTags, const std::vector< double > &radii, std::vector< std::pair< int, int > > &outDimTags, bool removeVolume)
Definition: GModelIO_OCC.h:683
TRANSFINITE_QUADTRI_1
#define TRANSFINITE_QUADTRI_1
Definition: GmshDefines.h:268
PViewDataList::finalize
bool finalize(bool computeMinMax=true, const std::string &interpolationScheme="")
Definition: PViewDataList.cpp:81
Shape
Definition: GeoDefines.h:9
PViewData::setName
virtual void setName(const std::string &val)
Definition: PViewData.h:71
CTX::mesh
contextMeshOptions mesh
Definition: Context.h:313
ImbricatedTest
static int ImbricatedTest
Definition: Gmsh.tab.cpp:658
Parser.h
GModel::getElementaryName
std::string getElementaryName(int dim, int tag)
Definition: GModel.cpp:1007
tCompound
#define tCompound
Definition: Gmsh.tab.cpp:463
NameSpaces::defStruct
int defStruct(std::string &key_namespace, std::string &key_name, std::map< std::string, std::vector< double > > &fopt, std::map< std::string, std::vector< std::string > > &copt, int &tag_out, int member_ValMax, bool append=false)
Definition: Parser.h:277
OCC_Internals::removeAllDuplicates
void removeAllDuplicates()
Definition: GModelIO_OCC.h:744
OCC_Internals::addEllipse
bool addEllipse(int &tag, double x, double y, double z, double r1, double r2, double angle1, double angle2, const std::vector< double > &N=std::vector< double >(), const std::vector< double > &V=std::vector< double >())
Definition: GModelIO_OCC.h:515
gLevelsetCylinder
Definition: gmshLevelset.h:647
contextGeometryOptions::scalingFactor
double scalingFactor
Definition: Context.h:118
gmsh_yylineno
int gmsh_yylineno
tTotalMemory
#define tTotalMemory
Definition: Gmsh.tab.cpp:406
MSH_SURF_REGL
#define MSH_SURF_REGL
Definition: GeoDefines.h:34
GetEnvironmentVar
std::string GetEnvironmentVar(const std::string &var)
Definition: OS.cpp:284
GEO_Internals::addVertex
bool addVertex(int &tag, double x, double y, double z, double lc)
Definition: GModelIO_GEO.cpp:112
GModel::destroy
void destroy(bool keepName=false)
Definition: GModel.cpp:168
YYEOF
#define YYEOF
Definition: Gmsh.tab.cpp:4000
GModel::getFields
FieldManager * getFields()
Definition: GModel.h:325
TotalRam
double TotalRam()
Definition: OS.cpp:374
QUADTRI_NOVERTS_1_RECOMB
#define QUADTRI_NOVERTS_1_RECOMB
Definition: GmshDefines.h:267
tRecursive
#define tRecursive
Definition: Gmsh.tab.cpp:469
skip
void skip(const char *skip, const char *until)
tCatenary
#define tCatenary
Definition: Gmsh.tab.cpp:367
treat_Struct_FullName_dot_tSTRING_Float
double treat_Struct_FullName_dot_tSTRING_Float(char *c1, char *c2, char *c3, int index=0, double val_default=0., int type_treat=0)
Definition: Gmsh.tab.cpp:15671
YY_SYMBOL_PRINT
#define YY_SYMBOL_PRINT(Title, Type, Value, Location)
Definition: Gmsh.tab.cpp:4214
OCC_Internals::importShapes
bool importShapes(const std::string &fileName, bool highestDimOnly, std::vector< std::pair< int, int > > &outDimTags, const std::string &format="")
Definition: GModelIO_OCC.h:785
ExtrudeParams::NbElmLayer
std::vector< int > NbElmLayer
Definition: ExtrudeParams.h:40
GEntity::tag
int tag() const
Definition: GEntity.h:280
tAtan2
#define tAtan2
Definition: Gmsh.tab.cpp:349
PViewDataList::setOrder2
void setOrder2(int type)
Definition: PViewDataList.cpp:1220
OCC_Internals::addBox
bool addBox(int &tag, double x, double y, double z, double dx, double dy, double dz)
Definition: GModelIO_OCC.h:621
GModel::list
static std::vector< GModel * > list
Definition: GModel.h:202
tMeshSizeFromBoundary
#define tMeshSizeFromBoundary
Definition: Gmsh.tab.cpp:494
GEdge::coeffTransfinite
double coeffTransfinite
Definition: GEdge.h:251
GModel::deleteMesh
void deleteMesh()
Definition: GModel.cpp:236
doubleXstring::s
char * s
Definition: Gmsh.tab.cpp:725
Msg::GetCommSize
static int GetCommSize()
Definition: GmshMessage.cpp:224
MSH_SURF_LOOP
#define MSH_SURF_LOOP
Definition: GeoDefines.h:37
tFor
#define tFor
Definition: Gmsh.tab.cpp:517
catenary
bool catenary(double x0, double x1, double y0, double y1, double ys, int N, double *yp)
Definition: Numeric.cpp:1554
PViewDataList::ST
std::vector< double > ST
Definition: PViewDataList.h:31
GeoDefines.h
Field
Definition: Field.h:103
tToday
#define tToday
Definition: Gmsh.tab.cpp:392
GEO_Internals::dilate
bool dilate(const std::vector< std::pair< int, int > > &dimTags, double x, double y, double z, double a, double b, double c)
Definition: GModelIO_GEO.cpp:855
LoopControlVariablesNameTab
static std::string LoopControlVariablesNameTab[MAX_RECUR_LOOPS]
Definition: Gmsh.tab.cpp:662
tSlide
#define tSlide
Definition: Gmsh.tab.cpp:529
tMin
#define tMin
Definition: Gmsh.tab.cpp:358
tGetString
#define tGetString
Definition: Gmsh.tab.cpp:536
FieldManager::setBackgroundMesh
void setBackgroundMesh(int iView)
Definition: Field.cpp:3280
yynerrs
#define yynerrs
Definition: Gmsh.tab.cpp:68
PViewDataList::TT
std::vector< double > TT
Definition: PViewDataList.h:31
GModel::makeDiscreteFacesSimplyConnected
void makeDiscreteFacesSimplyConnected()
Definition: GModel.cpp:3160
tBooleanFragments
#define tBooleanFragments
Definition: Gmsh.tab.cpp:482
gLevelsetSphere
Definition: gmshLevelset.h:163
a2
const double a2
Definition: GaussQuadratureHex.cpp:12
ListOfDouble2Vector
void ListOfDouble2Vector(List_T *list, std::vector< int > &v)
Definition: Gmsh.tab.cpp:15121
tAND
#define tAND
Definition: Gmsh.tab.cpp:560
GEO_Internals::newGeometrySphere
gmshSurface * newGeometrySphere(int tag, int centerTag, int pointTag)
Definition: GModelIO_GEO.cpp:1628
GModel::getEntities
void getEntities(std::vector< GEntity * > &entities, int dim=-1) const
Definition: GModel.cpp:651
GModel::exportDiscreteGEOInternals
int exportDiscreteGEOInternals()
Definition: GModelIO_GEO.cpp:1910
tAbort
#define tAbort
Definition: Gmsh.tab.cpp:525
CTX::geom
contextGeometryOptions geom
Definition: Context.h:311
GRegion
Definition: GRegion.h:28
PViewDataList::NbVP
int NbVP
Definition: PViewDataList.h:26
YYTRANSLATE
#define YYTRANSLATE(YYX)
Definition: Gmsh.tab.cpp:989
PViewDataList::NbTS
int NbTS
Definition: PViewDataList.h:36
ExtrudeParams::ExtrudeMesh
bool ExtrudeMesh
Definition: ExtrudeParams.h:36
OCC_Internals::rotate
bool rotate(const std::vector< std::pair< int, int > > &inDimTags, double x, double y, double z, double ax, double ay, double az, double angle)
Definition: GModelIO_OCC.h:754
StatFile
int StatFile(const std::string &fileName)
Definition: OS.cpp:489
yycheck
static const yytype_int16 yycheck[]
Definition: Gmsh.tab.cpp:2941
tEND
#define tEND
Definition: Gmsh.tab.cpp:328
CTX::combineRemoveOrig
int combineRemoveOrig
Definition: Context.h:318
GEO_Internals::destroy
void destroy()
Definition: GModelIO_GEO.h:43
GRegion::QuadTri
int QuadTri
Definition: GRegion.h:152
GEdge::typeTransfinite
int typeTransfinite
Definition: GEdge.h:254
MSH_SEGM_CIRC
#define MSH_SEGM_CIRC
Definition: GeoDefines.h:22
contextMeshOptions::secondOrderIncomplete
int secondOrderIncomplete
Definition: Context.h:35
YYPACT_NINF
#define YYPACT_NINF
Definition: Gmsh.tab.cpp:1826
tTestLevel
#define tTestLevel
Definition: Gmsh.tab.cpp:337
tEQUAL
#define tEQUAL
Definition: Gmsh.tab.cpp:562
GVertex::x
virtual double x() const =0
TYPE_PYR
#define TYPE_PYR
Definition: GmshDefines.h:69
StringUtils.h
GetGmshMajorVersion
int GetGmshMajorVersion()
Definition: CommandLine.cpp:56
tShapeFromFile
#define tShapeFromFile
Definition: Gmsh.tab.cpp:439
tUsing
#define tUsing
Definition: Gmsh.tab.cpp:466
tMacro
#define tMacro
Definition: Gmsh.tab.cpp:530
yyalloc::yyss
yytype_int16 yyss
Definition: Gmsh.tab.cpp:927
doubleXstring::d
double d
Definition: Gmsh.tab.cpp:724
contextGeometryOptions::occSewFaces
int occSewFaces
Definition: Context.h:102
tShow
#define tShow
Definition: Gmsh.tab.cpp:531
contextMeshOptions::changed
int changed
Definition: Context.h:82
GEO_Internals::getChanged
bool getChanged() const
Definition: GModelIO_GEO.h:50
GetAbsolutePath
std::string GetAbsolutePath(const std::string &fileName)
Definition: OS.cpp:454
MSH_PHYSICAL_POINT
#define MSH_PHYSICAL_POINT
Definition: GeoDefines.h:43
CTX::unpackAlpha
int unpackAlpha(unsigned int X)
Definition: Context.cpp:160
tBooleanUnion
#define tBooleanUnion
Definition: Gmsh.tab.cpp:478
PViewDataList::NbT2
int NbT2
Definition: PViewDataList.h:48
tSTRING
#define tSTRING
Definition: Gmsh.tab.cpp:326
GRegion::addEmbeddedFace
void addEmbeddedFace(GFace *f)
Definition: GRegion.h:59
yychar
#define yychar
Definition: Gmsh.tab.cpp:66
tIntersect
#define tIntersect
Definition: Gmsh.tab.cpp:490
Shape::Num
int Num
Definition: GeoDefines.h:12
removeEmbedded
void removeEmbedded(const std::vector< std::pair< int, int >> &dimTags, int dim)
Definition: Gmsh.tab.cpp:15393
GetColorTable
GmshColorTable * GetColorTable(int num)
Definition: Options.cpp:566
GVertex::y
virtual double y() const =0
tHole
#define tHole
Definition: Gmsh.tab.cpp:497
tIf
#define tIf
Definition: Gmsh.tab.cpp:520
GFace::setMeshingAlgo
void setMeshingAlgo(int val)
Definition: GFace.h:371
tSetMaxTag
#define tSetMaxTag
Definition: Gmsh.tab.cpp:539
PViewDataList::NbSL
int NbSL
Definition: PViewDataList.h:28
tSinh
#define tSinh
Definition: Gmsh.tab.cpp:350
gLevelsetCrack
Definition: gmshLevelset.h:575
TYPE_QUA
#define TYPE_QUA
Definition: GmshDefines.h:67
tGetStringValue
#define tGetStringValue
Definition: Gmsh.tab.cpp:534
GModel::lastRegion
riter lastRegion()
Definition: GModel.h:358
PViewDataList::TH
std::vector< double > TH
Definition: PViewDataList.h:39
treat_Struct_FullName_dot_tSTRING_ListOfFloat
List_T * treat_Struct_FullName_dot_tSTRING_ListOfFloat(char *c1, char *c2, char *c3)
Definition: Gmsh.tab.cpp:15713
GEO_Internals::translate
bool translate(const std::vector< std::pair< int, int > > &dimTags, double dx, double dy, double dz)
Definition: GModelIO_GEO.cpp:842
tMatrixOfInertia
#define tMatrixOfInertia
Definition: Gmsh.tab.cpp:400
tFixRelativePath
#define tFixRelativePath
Definition: Gmsh.tab.cpp:393
Map::clear
void clear()
Definition: Parser.h:211
Field::getName
virtual const char * getName()=0
PViewDataList::SH
std::vector< double > SH
Definition: PViewDataList.h:39
GEO_Internals::addCircleArc
bool addCircleArc(int &tag, int startTag, int centerTag, int endTag, double nx=0., double ny=0., double nz=0.)
Definition: GModelIO_GEO.cpp:175
YYUSE
#define YYUSE(e)
Definition: Gmsh.tab.cpp:831
GModel::adaptMesh
int adaptMesh()
Definition: GModel.cpp:1215
PViewDataList::NbTI
int NbTI
Definition: PViewDataList.h:40
tPLUSPLUS
#define tPLUSPLUS
Definition: Gmsh.tab.cpp:569
tElse
#define tElse
Definition: Gmsh.tab.cpp:522
getAllPhysicalTags
void getAllPhysicalTags(int dim, List_T *in)
Definition: Gmsh.tab.cpp:15450
ViewValueList
static std::vector< double > * ViewValueList
Definition: Gmsh.tab.cpp:653
Msg::Direct
static void Direct(const char *fmt,...)
Definition: GmshMessage.cpp:634
tFind
#define tFind
Definition: Gmsh.tab.cpp:381
gmsh_yysymbol::value
std::vector< double > value
Definition: Parser.h:21
TreeUtils.h
ENT_ALL
#define ENT_ALL
Definition: GmshDefines.h:235
OCC_Internals::addCircle
bool addCircle(int &tag, double x, double y, double z, double r, double angle1, double angle2, const std::vector< double > &N=std::vector< double >(), const std::vector< double > &V=std::vector< double >())
Definition: GModelIO_OCC.h:503
tLinSpace
#define tLinSpace
Definition: Gmsh.tab.cpp:364
Context.h
GEO_Internals::intersectCurvesWithSurface
bool intersectCurvesWithSurface(const std::vector< int > &curveTags, int surfaceTag, std::vector< int > &pointTags)
Definition: GModelIO_GEO.cpp:889
OCC_Internals::getVertex
bool getVertex(int tag, double &x, double &y, double &z)
Definition: GModelIO_OCC.h:813
tBSpline
#define tBSpline
Definition: Gmsh.tab.cpp:510
ClearProject
void ClearProject()
Definition: OpenFile.cpp:697
GRegion::embeddedEdges
std::vector< GEdge * > & embeddedEdges()
Definition: GRegion.h:80
tQuadTriNoNewVerts
#define tQuadTriNoNewVerts
Definition: Gmsh.tab.cpp:502
PViewDataList::NbSS
int NbSS
Definition: PViewDataList.h:36
tBetti
#define tBetti
Definition: Gmsh.tab.cpp:542
tHypot
#define tHypot
Definition: Gmsh.tab.cpp:362
GEntity::getMeshElement
virtual MElement * getMeshElement(std::size_t index) const
Definition: GEntity.h:363
NameSpaces::sprint
void sprint(std::vector< std::string > &strs_out) const
Definition: Parser.h:424
GFace::transfiniteSmoothing
int transfiniteSmoothing
Definition: GFace.h:355
Field::options
std::map< std::string, FieldOption * > options
Definition: Field.h:112
tRecombineMesh
#define tRecombineMesh
Definition: Gmsh.tab.cpp:449
tRecombine
#define tRecombine
Definition: Gmsh.tab.cpp:484
yypgoto
static const yytype_int16 yypgoto[]
Definition: Gmsh.tab.cpp:1974
GEO_Internals::mergeVertices
bool mergeVertices(const std::vector< int > &tags)
Definition: GModelIO_GEO.cpp:1083
gmsh_yytext
char * gmsh_yytext
tQuadTriAddVerts
#define tQuadTriAddVerts
Definition: Gmsh.tab.cpp:501
tTextAttributes
#define tTextAttributes
Definition: Gmsh.tab.cpp:388
PViewDataList::NbTY
int NbTY
Definition: PViewDataList.h:42
tSyncModel
#define tSyncModel
Definition: Gmsh.tab.cpp:396
NameSpaces::getMember_Dim
int getMember_Dim(std::string &key_namespace, std::string &key_name, std::string &key_member, int &out) const
Definition: Parser.h:347
PViewDataList::T2D
std::vector< double > T2D
Definition: PViewDataList.h:49
tMax
#define tMax
Definition: Gmsh.tab.cpp:359
PViewDataList::NbVL
int NbVL
Definition: PViewDataList.h:28
ExtrudeParams::ViewIndex
int ViewIndex
Definition: ExtrudeParams.h:46
gLevelsetGeneralQuadric
Definition: gmshLevelset.h:297
GRegion::embeddedFaces
std::vector< GFace * > & embeddedFaces()
Definition: GRegion.h:81
GEO_Internals::setReverseMesh
void setReverseMesh(int dim, int tag, bool val=1)
Definition: GModelIO_GEO.cpp:1309
tBezier
#define tBezier
Definition: Gmsh.tab.cpp:511
tNurbsKnots
#define tNurbsKnots
Definition: Gmsh.tab.cpp:514
GEO_Internals::revolve
bool revolve(const std::vector< std::pair< int, int > > &inDimTags, double x, double y, double z, double ax, double ay, double az, double angle, std::vector< std::pair< int, int > > &outDimTags, ExtrudeParams *e=0)
Definition: GModelIO_GEO.cpp:783
GFace::embeddedEdges
std::vector< GEdge * > & embeddedEdges()
Definition: GFace.h:156
gLevelsetPlane
Definition: gmshLevelset.h:187
tOR
#define tOR
Definition: Gmsh.tab.cpp:559
z
const double z
Definition: GaussQuadratureQuad.cpp:56
getElementaryTagsInBoundingBox
void getElementaryTagsInBoundingBox(int dim, double x1, double y1, double z1, double x2, double y2, double z2, List_T *out)
Definition: Gmsh.tab.cpp:15491
tAffine
#define tAffine
Definition: Gmsh.tab.cpp:477
GEO_Internals::copy
bool copy(const std::vector< std::pair< int, int > > &inDimTags, std::vector< std::pair< int, int > > &outDimTags)
Definition: GModelIO_GEO.cpp:913
OCC_Internals::addBezier
bool addBezier(int &tag, const std::vector< int > &pointTags)
Definition: GModelIO_OCC.h:527
tGetForced
#define tGetForced
Definition: Gmsh.tab.cpp:545
tSetPartition
#define tSetPartition
Definition: Gmsh.tab.cpp:551
GRegion::meshAttributes
struct GRegion::@20 meshAttributes
OCC_Internals::addCone
bool addCone(int &tag, double x, double y, double z, double dx, double dy, double dz, double r1, double r2, double angle)
Definition: GModelIO_OCC.h:631
OCC_Internals::addWire
bool addWire(int &tag, const std::vector< int > &curveTags, bool closed)
Definition: GModelIO_OCC.h:539
GEO_Internals::twist
bool twist(const std::vector< std::pair< int, int > > &inDimTags, double x, double y, double z, double dx, double dy, double dz, double ax, double ay, double az, double angle, std::vector< std::pair< int, int > > &outDimTags, ExtrudeParams *e=0)
Definition: GModelIO_GEO.cpp:793
tGetValue
#define tGetValue
Definition: Gmsh.tab.cpp:533
CTX::glFontSize
int glFontSize
Definition: Context.h:267
tAliasWithOptions
#define tAliasWithOptions
Definition: Gmsh.tab.cpp:499
tLayers
#define tLayers
Definition: Gmsh.tab.cpp:495
YYSTACK_RELOCATE
#define YYSTACK_RELOCATE(Stack)
Definition: Gmsh.tab.cpp:959
GmshColorTable
Definition: ColorTable.h:16
gmsh_yystringsymbols
std::map< std::string, std::vector< std::string > > gmsh_yystringsymbols
Definition: Gmsh.tab.cpp:644
PViewDataList::NbSI
int NbSI
Definition: PViewDataList.h:40
yydebug
#define yydebug
Definition: Gmsh.tab.cpp:67
YYSTYPE::c2
struct TwoChar c2
Definition: Gmsh.tab.cpp:757
Malloc
void * Malloc(size_t size)
Definition: MallocUtils.cpp:12
OCC_Internals::getCenterOfMass
bool getCenterOfMass(int dim, int tag, double &x, double &y, double &z)
Definition: GModelIO_OCC.h:837
member_ValMax
static int member_ValMax
Definition: Gmsh.tab.cpp:668
tStrSub
#define tStrSub
Definition: Gmsh.tab.cpp:379
tTransfQuadTri
#define tTransfQuadTri
Definition: Gmsh.tab.cpp:504
GEO_Internals::addCompoundSpline
bool addCompoundSpline(int &tag, const std::vector< int > &curveTags, int numPoints)
Definition: GModelIO_GEO.cpp:387
tHealShapes
#define tHealShapes
Definition: Gmsh.tab.cpp:489
GRegion::addEmbeddedEdge
void addEmbeddedEdge(GEdge *e)
Definition: GRegion.h:58
GEdge::relocateMeshVertices
void relocateMeshVertices()
Definition: GEdge.cpp:714
GEO_Internals::addPlaneSurface
bool addPlaneSurface(int &tag, const std::vector< int > &wireTags)
Definition: GModelIO_GEO.cpp:592
tError
#define tError
Definition: Gmsh.tab.cpp:369
YYSIZE_T
#define YYSIZE_T
Definition: Gmsh.tab.cpp:811
GEO_Internals::remove
bool remove(int dim, int tag, bool recursive=false)
Definition: GModelIO_GEO.cpp:969
tRecombLaterals
#define tRecombLaterals
Definition: Gmsh.tab.cpp:503
GEdge
Definition: GEdge.h:26
MSH_SEGM_BSPLN
#define MSH_SEGM_BSPLN
Definition: GeoDefines.h:27
GModel::optimizeMesh
int optimizeMesh(const std::string &how, bool force=false, int niter=1)
Definition: GModel.cpp:1437
PViewDataList::Time
std::vector< double > Time
Definition: PViewDataList.h:25
tAFFECTTIMES
#define tAFFECTTIMES
Definition: Gmsh.tab.cpp:556
yyalloc::yyvs
YYSTYPE yyvs
Definition: Gmsh.tab.cpp:928
extr
static ExtrudeParams extr
Definition: Gmsh.tab.cpp:655
OCC_Internals::synchronize
void synchronize(GModel *model)
Definition: GModelIO_OCC.h:803
gLevelsetCone
Definition: gmshLevelset.h:288
treat_Struct_FullName_dot_tSTRING_String
char * treat_Struct_FullName_dot_tSTRING_String(char *c1, char *c2, char *c3, int index=0, char *val_default=nullptr, int type_treat=0)
Definition: Gmsh.tab.cpp:15801
tRound
#define tRound
Definition: Gmsh.tab.cpp:357
PViewDataList::VS
std::vector< double > VS
Definition: PViewDataList.h:37
TYPE_HEX
#define TYPE_HEX
Definition: GmshDefines.h:71
tUndefineConstant
#define tUndefineConstant
Definition: Gmsh.tab.cpp:414
GModel::riter
std::set< GRegion *, GEntityPtrLessThan >::iterator riter
Definition: GModel.h:183
tCopyOptions
#define tCopyOptions
Definition: Gmsh.tab.cpp:500
GEO_Internals::setSmoothing
void setSmoothing(int tag, int val)
Definition: GModelIO_GEO.cpp:1291
tPeriodic
#define tPeriodic
Definition: Gmsh.tab.cpp:464
tEndFor
#define tEndFor
Definition: Gmsh.tab.cpp:519
yyalloc
Definition: Gmsh.tab.cpp:926
FieldManager::addBoundaryLayerFieldId
void addBoundaryLayerFieldId(int id)
Definition: Field.h:166
tCenterOfMass
#define tCenterOfMass
Definition: Gmsh.tab.cpp:399
tSin
#define tSin
Definition: Gmsh.tab.cpp:342
tCohomology
#define tCohomology
Definition: Gmsh.tab.cpp:541
GModel::setPhysicalName
int setPhysicalName(const std::string &name, int dim, int num=0)
Definition: GModel.cpp:937
TYPE_TET
#define TYPE_TET
Definition: GmshDefines.h:68
GmshColorTable::size
int size
Definition: ColorTable.h:18
GEO_Internals::addSurfaceLoop
bool addSurfaceLoop(int &tag, const std::vector< int > &surfaceTags)
Definition: GModelIO_GEO.cpp:680
tStrReplace
#define tStrReplace
Definition: Gmsh.tab.cpp:376
PViewDataList::NbTQ
int NbTQ
Definition: PViewDataList.h:32
GModel::getEntityByTag
GEntity * getEntityByTag(int dim, int n) const
Definition: GModel.cpp:356
yydestruct
static void yydestruct(yymsg, yytype, yyvaluep) const char *yymsg
GModel::viter
std::set< GVertex *, GEntityPtrLessThan >::iterator viter
Definition: GModel.h:186
QUADTRI_NOVERTS_1
#define QUADTRI_NOVERTS_1
Definition: GmshDefines.h:266
SPoint3::z
double z(void) const
Definition: SPoint3.h:129
GModel::mesh
int mesh(int dimension)
Definition: GModel.cpp:1066
tParametric
#define tParametric
Definition: Gmsh.tab.cpp:446
GEO_Internals::setMeshSize
void setMeshSize(int dim, int tag, double size)
Definition: GModelIO_GEO.cpp:1117
GmshColorTable::table
unsigned int table[COLORTABLE_NBMAX_COLOR]
Definition: ColorTable.h:17
MSH_VOLUME
#define MSH_VOLUME
Definition: GeoDefines.h:40
getElementaryTagsForPhysicalGroups
void getElementaryTagsForPhysicalGroups(int dim, List_T *in, List_T *out)
Definition: Gmsh.tab.cpp:15466
tBooleanDifference
#define tBooleanDifference
Definition: Gmsh.tab.cpp:480
getParentTags
void getParentTags(int dim, List_T *in, List_T *out)
Definition: Gmsh.tab.cpp:15509
PViewData::setFileIndex
virtual void setFileIndex(int val)
Definition: PViewData.h:87
PViewDataList::NbVI
int NbVI
Definition: PViewDataList.h:40
tSmoother
#define tSmoother
Definition: Gmsh.tab.cpp:485
Options.h
PViewDataList::SI
std::vector< double > SI
Definition: PViewDataList.h:41
GModel::renumberMeshElements
void renumberMeshElements()
Definition: GModel.cpp:1732
GFace::setMeshMaster
void setMeshMaster(GFace *master, const std::vector< double > &)
Definition: GFace.cpp:2222
OCC_Internals::addBSpline
bool addBSpline(int &tag, const std::vector< int > &pointTags, const int degree=-1, const std::vector< double > &weights=std::vector< double >(), const std::vector< double > &knots=std::vector< double >(), const std::vector< int > &multiplicities=std::vector< int >())
Definition: GModelIO_OCC.h:531
YYMAXDEPTH
#define YYMAXDEPTH
Definition: Gmsh.tab.cpp:4232
GModel::lastEdge
eiter lastEdge()
Definition: GModel.h:360
OCC_Internals::affine
bool affine(const std::vector< std::pair< int, int > > &inDimTags, const std::vector< double > &mat)
Definition: GModelIO_OCC.h:769
tEndIf
#define tEndIf
Definition: Gmsh.tab.cpp:523
tBox
#define tBox
Definition: Gmsh.tab.cpp:433
YYTERROR
#define YYTERROR
Definition: Gmsh.tab.cpp:4031
YY_STACK_PRINT
#define YY_STACK_PRINT(Bottom, Top)
Definition: Gmsh.tab.cpp:4215
tGMSH_PATCH_VERSION
#define tGMSH_PATCH_VERSION
Definition: Gmsh.tab.cpp:549
tOnelabRun
#define tOnelabRun
Definition: Gmsh.tab.cpp:402
tMeshSize
#define tMeshSize
Definition: Gmsh.tab.cpp:493
tSpline
#define tSpline
Definition: Gmsh.tab.cpp:431
GModel.h
PViewDataList::NbVT
int NbVT
Definition: PViewDataList.h:30
ViewNumList
static int * ViewNumList
Definition: Gmsh.tab.cpp:654
tFabs
#define tFabs
Definition: Gmsh.tab.cpp:353
tReorientMesh
#define tReorientMesh
Definition: Gmsh.tab.cpp:453
tModulo
#define tModulo
Definition: Gmsh.tab.cpp:361
CommandLine.h
OCC_Internals::addPlaneSurface
bool addPlaneSurface(int &tag, const std::vector< int > &wireTags)
Definition: GModelIO_OCC.h:558
tBIGSTR
#define tBIGSTR
Definition: Gmsh.tab.cpp:327
GetMemoryUsage
long GetMemoryUsage()
Definition: OS.cpp:406
GModel::getRegionByTag
GRegion * getRegionByTag(int n) const
Definition: GModel.cpp:316
tScaleLast
#define tScaleLast
Definition: Gmsh.tab.cpp:496
tSplit
#define tSplit
Definition: Gmsh.tab.cpp:486
MSH_SEGM_ELLI
#define MSH_SEGM_ELLI
Definition: GeoDefines.h:24
flag_Enum
static int flag_Enum
Definition: Gmsh.tab.cpp:668
SleepInSeconds
void SleepInSeconds(double s)
Definition: OS.cpp:315
tCpu
#define tCpu
Definition: Gmsh.tab.cpp:404
tOnelabAction
#define tOnelabAction
Definition: Gmsh.tab.cpp:401
tAtan
#define tAtan
Definition: Gmsh.tab.cpp:348
YYLEX
#define YYLEX
Definition: Gmsh.tab.cpp:4075
GEO_Internals::resetPhysicalGroups
void resetPhysicalGroups()
Definition: GModelIO_GEO.cpp:992
GFace::addEmbeddedVertex
void addEmbeddedVertex(GVertex *v)
Definition: GFace.h:104
GEdge::nbPointsTransfinite
int nbPointsTransfinite
Definition: GEdge.h:253
gmsh_yyfactory
std::string gmsh_yyfactory
Definition: Gmsh.tab.cpp:645
tRectangle
#define tRectangle
Definition: Gmsh.tab.cpp:440
GVertex::setPrescribedMeshSizeAtVertex
virtual void setPrescribedMeshSizeAtVertex(double l)
Definition: GVertex.h:76
doubleXstring
Definition: Gmsh.tab.cpp:723
line
Definition: shapeFunctions.h:342
FieldCallback::run
virtual void run()=0
Msg::SetOnelabNumber
static void SetOnelabNumber(const std::string &name, double val, bool visible=true, bool persistent=false, bool readOnly=false, int changedValue=3)
Definition: GmshMessage.cpp:987
PViewDataList::NbVQ
int NbVQ
Definition: PViewDataList.h:32
skipTest
void skipTest(const char *skip, const char *until, const char *until2, int l_until2_sub, int *type_until2)
charOptions
static std::map< std::string, std::vector< std::string > > charOptions
Definition: Gmsh.tab.cpp:667
OCC_Internals::Union
@ Union
Definition: GModelIO_OCC.h:480
PViewDataList::VI
std::vector< double > VI
Definition: PViewDataList.h:41
tColor
#define tColor
Definition: Gmsh.tab.cpp:515
PView::list
static std::vector< PView * > list
Definition: PView.h:112
tCylinder
#define tCylinder
Definition: Gmsh.tab.cpp:434
GEO_Internals::synchronize
void synchronize(GModel *model, bool resetMeshAttributes=true)
Definition: GModelIO_GEO.cpp:1370
gLevelset::add
static void add(gLevelset *l)
Definition: gmshLevelset.cpp:44
MallocUtils.h
OCC_Internals::mergeVertices
bool mergeVertices(const std::vector< int > &tags)
Definition: GModelIO_OCC.h:745
PViewDataList::VT
std::vector< double > VT
Definition: PViewDataList.h:31
tUnique
#define tUnique
Definition: Gmsh.tab.cpp:538
tNewModel
#define tNewModel
Definition: Gmsh.tab.cpp:397
yymsg
void yymsg(int level, const char *fmt,...)
Definition: Gmsh.tab.cpp:15183
yytype
int yytype
Definition: Gmsh.tab.cpp:4445
GEntity::bounds
virtual SBoundingBox3d bounds(bool fast=false)
Definition: GEntity.h:301
contextGeometryOptions::occFixSmallEdges
int occFixSmallEdges
Definition: Context.h:101
GModel::getVertexByTag
GVertex * getVertexByTag(int n) const
Definition: GModel.cpp:346
yypact
static const yytype_int16 yypact[]
Definition: Gmsh.tab.cpp:1827
Msg::UndefineOnelabParameter
static void UndefineOnelabParameter(const std::string &name)
Definition: GmshMessage.cpp:1515
ExtrudeParams
Definition: ExtrudeParams.h:26
ParseFile
int ParseFile(const std::string &fileName, bool close, bool errorIfMissing)
Definition: OpenFile.cpp:177
GModel::getGEOInternals
GEO_Internals * getGEOInternals()
Definition: GModel.h:315
Msg::GetOnelabString
static std::string GetOnelabString(const std::string &name, const std::string &defaultValue="", bool errorIfMissing=false)
Definition: GmshMessage.cpp:1105
PViewDataList::SQ
std::vector< double > SQ
Definition: PViewDataList.h:33
MAX_RECUR_LOOPS
#define MAX_RECUR_LOOPS
Definition: Gmsh.tab.cpp:637
OCC_Internals::healShapes
bool healShapes(const std::vector< std::pair< int, int > > &inDimTags, std::vector< std::pair< int, int > > &outDimTags, double tolerance, bool fixDegenerated, bool fixSmallEdges, bool fixSmallFaces, bool sewFaces, bool makeSolids)
Definition: GModelIO_OCC.h:791
GetColorForString
int GetColorForString(int alpha, const char *str, int *FlagError)
Definition: Options.cpp:331
ExtrudeParams::hLayer
std::vector< double > hLayer
Definition: ExtrudeParams.h:41
c1
const double c1
Definition: GaussQuadratureHex.cpp:16
CTX::unpackRed
int unpackRed(unsigned int X)
Definition: Context.cpp:136
GModel::getOCCInternals
OCC_Internals * getOCCInternals()
Definition: GModel.h:314
CTX::lock
int lock
Definition: Context.h:252
tEuclidian
#define tEuclidian
Definition: Gmsh.tab.cpp:335
tLowerCase
#define tLowerCase
Definition: Gmsh.tab.cpp:386
tLESSLESS
#define tLESSLESS
Definition: Gmsh.tab.cpp:564
tCurrentDirectory
#define tCurrentDirectory
Definition: Gmsh.tab.cpp:394
GEO_Internals::setTransfiniteVolume
void setTransfiniteVolume(int tag, const std::vector< int > &cornerTags)
Definition: GModelIO_GEO.cpp:1201
YYSTACK_FREE
#define YYSTACK_FREE
Definition: Gmsh.tab.cpp:894
OCC_Internals::remove
bool remove(int dim, int tag, bool recursive=false)
Definition: GModelIO_OCC.h:779
SBoundingBox3d
Definition: SBoundingBox3d.h:21
OCC_Internals::addCylinder
bool addCylinder(int &tag, double x, double y, double z, double dx, double dy, double dz, double r, double angle)
Definition: GModelIO_OCC.h:626
List_Read
void List_Read(List_T *liste, int index, void *data)
Definition: ListUtils.cpp:111
SPoint3::transform
bool transform(const std::vector< double > &tfo)
Definition: SPoint3.h:78
gmshLevelset.h
fullMatrix.h
tMemory
#define tMemory
Definition: Gmsh.tab.cpp:405
getAllElementaryTags
void getAllElementaryTags(int dim, List_T *in)
Definition: Gmsh.tab.cpp:15434
tDilate
#define tDilate
Definition: Gmsh.tab.cpp:474
PViewDataList::NbST
int NbST
Definition: PViewDataList.h:30
floatOptions
static std::map< std::string, std::vector< double > > floatOptions
Definition: Gmsh.tab.cpp:666
OCC_Internals::getChanged
bool getChanged() const
Definition: GModelIO_OCC.h:482
OCC_Internals::chamfer
bool chamfer(const std::vector< int > &volumeTags, const std::vector< int > &curveTags, const std::vector< int > &surfaceTags, const std::vector< double > &distances, std::vector< std::pair< int, int > > &outDimTags, bool removeVolume)
Definition: GModelIO_OCC.h:690
tColorTable
#define tColorTable
Definition: Gmsh.tab.cpp:516
tSetNumber
#define tSetNumber
Definition: Gmsh.tab.cpp:421
Msg::GetOnelabAction
static std::string GetOnelabAction()
Definition: GmshMessage.cpp:1225
yydefact
static const yytype_uint16 yydefact[]
Definition: Gmsh.tab.cpp:1713
OpenFile.h
tCreateTopology
#define tCreateTopology
Definition: Gmsh.tab.cpp:407
YYSTYPE
union YYSTYPE YYSTYPE
GEdge::method
char method
Definition: GEdge.h:250
Msg::GetExecutableName
static std::string GetExecutableName()
Definition: GmshMessage.cpp:372
tDOUBLE
#define tDOUBLE
Definition: Gmsh.tab.cpp:325
GFace::reverseMesh
bool reverseMesh
Definition: GFace.h:359
tDOTS
#define tDOTS
Definition: Gmsh.tab.cpp:330
GRegion::embeddedVertices
std::vector< GVertex * > & embeddedVertices()
Definition: GRegion.h:79
GModel::current
static GModel * current(int index=-1)
Definition: GModel.cpp:136
MSH_SEGM_LINE
#define MSH_SEGM_LINE
Definition: GeoDefines.h:20
PViewDataList::NbSY
int NbSY
Definition: PViewDataList.h:42
YYSTYPE::c
char * c
Definition: Gmsh.tab.cpp:750
tIn
#define tIn
Definition: Gmsh.tab.cpp:518
tCurve
#define tCurve
Definition: Gmsh.tab.cpp:427
CTX::forcedBBox
int forcedBBox
Definition: Context.h:292
GEO_Internals::newGeometryPolarSphere
gmshSurface * newGeometryPolarSphere(int tag, int centerTag, int pointTag)
Definition: GModelIO_GEO.cpp:1648
GEO_Internals::addCurveLoop
bool addCurveLoop(int &tag, const std::vector< int > &curveTags, bool reorient=false)
Definition: GModelIO_GEO.cpp:401
computeAffineTransformation
void computeAffineTransformation(SPoint3 &, SPoint3 &, double, SPoint3 &, std::vector< double > &)
Definition: Gmsh.tab.cpp:15280
tPlane
#define tPlane
Definition: Gmsh.tab.cpp:459
OCC_Internals::getMatrixOfInertia
bool getMatrixOfInertia(int dim, int tag, std::vector< double > &mat)
Definition: GModelIO_OCC.h:841
GEO_Internals::addBezier
bool addBezier(int &tag, const std::vector< int > &pointTags)
Definition: GModelIO_GEO.cpp:271
tChamfer
#define tChamfer
Definition: Gmsh.tab.cpp:458
GRegion::setOutwardOrientationMeshConstraint
bool setOutwardOrientationMeshConstraint()
Definition: GRegion.cpp:839
printListOfDouble
int printListOfDouble(char *format, List_T *list, char *buffer)
Definition: Gmsh.tab.cpp:14968
GModel::partitionMesh
int partitionMesh(int num, std::vector< std::pair< MElement *, int > > elementPartition=std::vector< std::pair< MElement *, int > >())
Definition: GModel.cpp:2208
OCC_Internals::addThruSections
bool addThruSections(int tag, const std::vector< int > &wireTags, bool makeSolid, bool makeRuled, std::vector< std::pair< int, int > > &outDimTags, int maxDegree=-1, const std::string &continuity="", const std::string &parametrization="", bool smoothing=false)
Definition: GModelIO_OCC.h:648
tNameStruct
#define tNameStruct
Definition: Gmsh.tab.cpp:417
yyvaluep
YYSTYPE * yyvaluep
Definition: Gmsh.tab.cpp:4446
FieldOption
Definition: Field.h:50
gLevelsetIntersection
Definition: gmshLevelset.h:557
GFace::corners
std::vector< GVertex * > corners
Definition: GFace.h:350
drawContext.h
YYSTYPE::d
double d
Definition: Gmsh.tab.cpp:753