home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / gnu / groff-1.09-src.lha / src / amiga / groff-1.09 / pic / pic.cc < prev    next >
C/C++ Source or Header  |  1994-02-13  |  220KB  |  5,167 lines

  1. #ifndef lint
  2. static char yysccsid[] = "@(#)yaccpar    1.8 (Berkeley) 01/20/90";
  3. #endif
  4. #define YYBYACC 1
  5. #line 20 "/u/jjc/groff/pic/pic.y"
  6. #include "pic.h"
  7. #include "ptable.h"
  8. #include "object.h"
  9.  
  10. extern int delim_flag;
  11. extern void do_copy(const char *);
  12. extern void copy_rest_thru(const char *, const char *);
  13. extern void copy_file_thru(const char *, const char *, const char *);
  14. extern void push_body(const char *);
  15. extern void do_for(char *var, double from, double to,
  16.            int by_is_multiplicative, double by, char *body);
  17. extern void do_lookahead();
  18.  
  19. #undef fmod
  20. #undef rand
  21.  
  22. extern "C" {
  23.   double fmod(double, double);
  24.   int rand();
  25. }
  26.  
  27. /* Maximum number of characters produced by printf("%g") */
  28. #define GDIGITS 14
  29.  
  30. int yylex();
  31. void yyerror(const char *);
  32.  
  33. void reset(const char *nm);
  34. void reset_all();
  35.  
  36. place *lookup_label(const char *);
  37. void define_label(const char *label, const place *pl);
  38.  
  39. direction current_direction;
  40. position current_position;
  41.  
  42. implement_ptable(place)
  43.  
  44. PTABLE(place) top_table;
  45.  
  46. PTABLE(place) *current_table = &top_table;
  47. saved_state *current_saved_state = 0;
  48.  
  49. object_list olist;
  50.  
  51. const char *ordinal_postfix(int n);
  52. const char *object_type_name(object_type type);
  53. char *format_number(const char *form, double n);
  54. char *do_sprintf(const char *form, const double *v, int nv);
  55.  
  56. #line 73 "/u/jjc/groff/pic/pic.y"
  57. typedef union {
  58.     char *str;
  59.     int n;
  60.     double x;
  61.     struct { double x, y; } pair;
  62.     struct { double x; char *body; } if_data;
  63.     struct { char *str; const char *filename; int lineno; } lstr;
  64.     struct { double *v; int nv; int maxv; } dv;
  65.     struct { double val; int is_multiplicative; } by;
  66.     place pl;
  67.     object *obj;
  68.     corner crn;
  69.     path *pth;
  70.     object_spec *spec;
  71.     saved_state *pstate;
  72.     graphics_state state;
  73.     object_type obtype;
  74. } YYSTYPE;
  75. #line 76 "y.tab.c"
  76. #define LABEL 257
  77. #define VARIABLE 258
  78. #define NUMBER 259
  79. #define TEXT 260
  80. #define COMMAND_LINE 261
  81. #define DELIMITED 262
  82. #define ORDINAL 263
  83. #define TH 264
  84. #define LEFT_ARROW_HEAD 265
  85. #define RIGHT_ARROW_HEAD 266
  86. #define DOUBLE_ARROW_HEAD 267
  87. #define LAST 268
  88. #define UP 269
  89. #define DOWN 270
  90. #define LEFT 271
  91. #define RIGHT 272
  92. #define BOX 273
  93. #define CIRCLE 274
  94. #define ELLIPSE 275
  95. #define ARC 276
  96. #define LINE 277
  97. #define ARROW 278
  98. #define MOVE 279
  99. #define SPLINE 280
  100. #define HEIGHT 281
  101. #define RADIUS 282
  102. #define WIDTH 283
  103. #define DIAMETER 284
  104. #define FROM 285
  105. #define TO 286
  106. #define AT 287
  107. #define WITH 288
  108. #define BY 289
  109. #define THEN 290
  110. #define DOTTED 291
  111. #define DASHED 292
  112. #define CHOP 293
  113. #define SAME 294
  114. #define INVISIBLE 295
  115. #define LJUST 296
  116. #define RJUST 297
  117. #define ABOVE 298
  118. #define BELOW 299
  119. #define OF 300
  120. #define THE 301
  121. #define WAY 302
  122. #define BETWEEN 303
  123. #define AND 304
  124. #define HERE 305
  125. #define DOT_N 306
  126. #define DOT_E 307
  127. #define DOT_W 308
  128. #define DOT_S 309
  129. #define DOT_NE 310
  130. #define DOT_SE 311
  131. #define DOT_NW 312
  132. #define DOT_SW 313
  133. #define DOT_C 314
  134. #define DOT_START 315
  135. #define DOT_END 316
  136. #define DOT_X 317
  137. #define DOT_Y 318
  138. #define DOT_HT 319
  139. #define DOT_WID 320
  140. #define DOT_RAD 321
  141. #define SIN 322
  142. #define COS 323
  143. #define ATAN2 324
  144. #define LOG 325
  145. #define EXP 326
  146. #define SQRT 327
  147. #define K_MAX 328
  148. #define K_MIN 329
  149. #define INT 330
  150. #define RAND 331
  151. #define COPY 332
  152. #define THRU 333
  153. #define TOP 334
  154. #define BOTTOM 335
  155. #define UPPER 336
  156. #define LOWER 337
  157. #define SH 338
  158. #define PRINT 339
  159. #define CW 340
  160. #define CCW 341
  161. #define FOR 342
  162. #define DO 343
  163. #define IF 344
  164. #define ELSE 345
  165. #define ANDAND 346
  166. #define OROR 347
  167. #define NOTEQUAL 348
  168. #define EQUALEQUAL 349
  169. #define LESSEQUAL 350
  170. #define GREATEREQUAL 351
  171. #define LEFT_CORNER 352
  172. #define RIGHT_CORNER 353
  173. #define CENTER 354
  174. #define END 355
  175. #define START 356
  176. #define RESET 357
  177. #define UNTIL 358
  178. #define PLOT 359
  179. #define THICKNESS 360
  180. #define FILL 361
  181. #define ALIGNED 362
  182. #define SPRINTF 363
  183. #define COMMAND 364
  184. #define DEFINE 365
  185. #define UNDEF 366
  186. #define YYERRCODE 256
  187. short yylhs[] = {                                        -1,
  188.     0,    0,   16,   17,   17,   28,   28,   29,   29,   30,
  189.    30,   30,   30,   30,   30,   30,   30,   30,   31,   30,
  190.    30,   32,   33,   30,   34,   35,   30,   36,   30,   30,
  191.    37,   30,   30,   30,   38,   38,   38,   26,   26,   27,
  192.    27,   27,   39,    7,   23,   23,    2,    2,    3,    3,
  193.     3,    3,    3,    3,    3,    3,    3,    4,    4,    4,
  194.    15,   15,   15,   15,   40,   42,   15,   15,   41,   41,
  195.    18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
  196.    18,   43,   18,   18,   18,   18,   18,   18,   18,   18,
  197.    18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
  198.    18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
  199.    18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
  200.    18,   18,   18,   18,   25,   25,   24,   24,   19,   19,
  201.     6,    6,    6,    6,    6,    6,   44,   44,    5,    5,
  202.    13,   13,   13,   13,   13,   14,   14,   14,   22,   22,
  203.    21,   21,    8,    8,   20,   20,   20,   20,   20,   20,
  204.    20,   20,   20,   11,   11,   12,   12,   12,   10,   10,
  205.    10,   10,   10,    9,    9,    9,    9,    9,    9,    9,
  206.     9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
  207.     9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
  208.     9,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  209.     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  210.     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  211.     1,    1,    1,    1,    1,    1,
  212. };
  213. short yylen[] = {                                         2,
  214.     1,    1,    3,    1,    3,    0,    1,    1,    2,    3,
  215.     4,    1,    1,    1,    1,    1,    2,    2,    0,    3,
  216.     2,    0,    0,    7,    0,    0,    6,    0,   10,    1,
  217.     0,    4,    1,    1,    2,    2,    3,    1,    2,    1,
  218.     1,    1,    0,    5,    0,    2,    1,    1,    3,    3,
  219.     3,    3,    3,    3,    3,    3,    2,    0,    2,    3,
  220.     1,    4,    4,    4,    0,    0,    6,    1,    0,    1,
  221.     1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
  222.     3,    0,    4,    3,    3,    3,    3,    2,    2,    3,
  223.     2,    3,    2,    3,    2,    3,    3,    3,    3,    3,
  224.     3,    2,    2,    3,    2,    3,    2,    3,    2,    3,
  225.     2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
  226.     2,    2,    3,    2,    1,    5,    0,    3,    1,    1,
  227.     1,    3,    3,    5,    5,    6,    1,    4,    3,    3,
  228.     1,    2,    2,    3,    1,    1,    1,    3,    1,    3,
  229.     1,    2,    2,    2,    1,    1,    1,    1,    1,    1,
  230.     1,    2,    1,    2,    3,    1,    1,    2,    1,    4,
  231.     3,    3,    2,    1,    1,    1,    1,    1,    1,    1,
  232.     1,    1,    1,    1,    1,    1,    1,    1,    2,    2,
  233.     2,    2,    1,    1,    2,    2,    2,    2,    1,    1,
  234.     1,    1,    1,    2,    2,    2,    2,    2,    3,    3,
  235.     3,    3,    3,    3,    2,    3,    4,    4,    6,    4,
  236.     4,    4,    6,    6,    4,    4,    3,    3,    3,    3,
  237.     3,    3,    3,    3,    3,    2,
  238. };
  239. short yydefred[] = {                                      0,
  240.     8,    0,    2,    0,    0,    0,    0,  125,   16,   12,
  241.    13,   14,   15,   71,   72,   73,   74,   75,   76,   77,
  242.    78,    0,   19,    0,    0,    0,    0,    0,    0,    0,
  243.    65,   82,    0,    4,    0,    0,   79,   68,    0,    9,
  244.     0,    0,    0,    0,   25,    0,  146,  202,  203,  149,
  245.   151,  187,  188,  145,  174,  175,  176,  177,  178,  179,
  246.   180,  181,  182,  183,  184,    0,    0,    0,    0,    0,
  247.     0,    0,    0,    0,    0,  185,  186,    0,    0,  193,
  248.   194,  199,  201,  200,    0,    0,    0,    0,    0,  131,
  249.   129,  147,    0,    0,    0,    0,    0,    0,   41,    0,
  250.    38,    0,    0,    0,    0,    0,    0,    0,    0,   35,
  251.     0,    0,    0,    0,    0,   31,    3,    0,  113,  114,
  252.   115,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  253.     0,    0,    0,    0,  102,    0,    0,    0,  111,  112,
  254.   119,  120,  121,  122,  116,  117,    0,    0,  124,    0,
  255.   118,   36,    0,    0,   10,    0,   22,    0,   20,    0,
  256.     0,    0,    0,    0,    0,    0,    0,    0,    0,  189,
  257.   191,  195,  197,  190,  192,  196,  198,    0,    0,    0,
  258.     0,    0,    0,    0,    0,  137,    0,    0,    0,    0,
  259.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  260.     0,    0,    0,    0,  204,  205,  206,  207,  208,    0,
  261.   142,    0,    0,  163,  155,  156,  157,  158,  159,  160,
  262.   161,    0,  154,  152,  153,   39,    0,    0,   57,    0,
  263.     0,    0,   43,    0,    0,    0,    0,   81,  127,    0,
  264.     0,    0,    0,    5,    0,    0,    0,    0,    0,    0,
  265.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  266.   166,  100,    0,  169,    0,    0,  101,    0,    0,    0,
  267.     0,    0,   37,    0,    0,    0,    0,    0,    0,   62,
  268.     0,   11,    0,   26,    0,    0,    0,    0,    0,    0,
  269.     0,    0,    0,  227,    0,  216,  140,    0,  150,    0,
  270.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  271.     0,    0,    0,    0,    0,    0,    0,    0,  148,  132,
  272.   133,  162,    0,    0,   53,    0,    0,    0,    0,    0,
  273.    51,    0,    0,   50,   49,    0,   66,   83,   32,  173,
  274.     0,    0,    0,  164,    0,  168,    0,    0,   23,    0,
  275.   217,  218,    0,  220,  221,  222,    0,    0,  225,  226,
  276.     0,    0,    0,    0,    0,   44,    0,  126,    0,    0,
  277.   172,  171,  165,    0,    0,   27,    0,    0,    0,  134,
  278.   138,    0,    0,    0,    0,   70,   67,  170,   24,   46,
  279.   219,  223,  224,  136,    0,    0,    0,    0,   28,    0,
  280.     0,   29,
  281. };
  282. short yydgoto[] = {                                       2,
  283.   105,  179,  107,  396,   90,   91,   33,   92,   93,  262,
  284.   263,  264,  108,   95,   34,    3,   35,   36,   96,  223,
  285.    97,   98,  376,  336,  109,  100,  101,  241,    5,   38,
  286.    46,  283,  374,  158,  350,  401,  243,   39,  329,  114,
  287.   387,  369,  115,  202,
  288. };
  289. short yysindex[] = {                                    -52,
  290.     0,    0,    0, 5088,  -25,  -11,   21,    0,    0,    0,
  291.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  292.     0, -243,    0,10878, -206,11047, -204,11505,   19,10878,
  293.     0,    0, -275,    0,  -52,10742,    0,    0,  -42,    0,
  294.   -52,11047,   16, -239,    0, -165,    0,    0,    0,    0,
  295.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  296.     0,    0,    0,    0,    0,   71,   93,   98,  106,  108,
  297.   120,  139,  147,  153,  156,    0,    0, -110,   44,    0,
  298.     0,    0,    0,    0,11177,11047,11505,11505, 1055,    0,
  299.     0,    0,  -45,  -61, 2441,  -19,  747,  312,    0,10878,
  300.     0,  152,11047,11047, 1515,  -89, -228,  -61,  -98,    0,
  301.   637,  -38,10878,  -52,  -52,    0,    0, 9673,    0,    0,
  302.     0,11829,11829,11829,11829,11505,11505,11505,11505,11621,
  303. 11621,11621, 2099,11726,    0,11829,11829,11829,    0,    0,
  304.     0,    0,    0,    0,    0,    0,11505,11829,    0, 1527,
  305.     0,    0,  -41,10520,    0,11047,    0,  -32,    0,11047,
  306. 11047,11047,11047,11047,11047,11047,11047,11047, 9002,    0,
  307.     0,    0,    0,    0,    0,    0,    0, 1494,  183,  187,
  308.    -4,  -30,  143,  143,  -53,    0,11505,11505,11505,11505,
  309. 11505,11505,11505,11621,11505,11505,11505,11505,11505,11505,
  310. 11505,11621,  -43,  199,    0,    0,    0,    0,    0,  -17,
  311.     0,11726,11726,    0,    0,    0,    0,    0,    0,    0,
  312.     0,  168,    0,    0,    0,    0,11505,  143,    0,11047,
  313. 11047,11505,    0,11047,11047, -229, -229,    0,    0,  148,
  314.  5088,  171,   15,    0, 1527, 1527, 1527, 1527, 1527, 1527,
  315.  1527, 1527, 1055,  -19,  -19,  -19, 1989,  699,  747,   23,
  316.     0,    0, 2428,    0,11284,  648,    0, 1527, 1527, 1527,
  317.  1527, 1527,    0,  -11,   21,    0,    0,    0,  -61,    0,
  318.   -19,    0,   17,    0,  240,  244,  242,  249,  255,  257,
  319.   256,  258,  260,    0,  262,    0,    0,11621,    0,   -9,
  320.   -27,  184,  252,  252,    1,    1, 1527,  -34,   40,    1,
  321.   155,  155,  143,  143,  143,  143,  -22,  199,    0,    0,
  322.     0,    0, 1088,  -27,    0, 1048,  -40,    1,   42,  -27,
  323.     0, 1048,  -40,    0,    0,   47,    0,    0,    0,    0,
  324.   747, 1989, 1989,    0,   48,    0, 1076,  187,    0,  -51,
  325.     0,    0,11047,    0,    0,    0,11047,11047,    0,    0,
  326.   100,    5,11621,11621,11505,    0,11505,    0, 5088, 1989,
  327.     0,    0,    0,  -51,   49,    0,  272,  284,  287,    0,
  328.     0,   30,  -19, 1487, 1527,    0,    0,    0,    0,    0,
  329.     0,    0,    0,    0,11385,  -14,11505, 1527,    0, 1527,
  330.    72,    0,
  331. };
  332. short yyrindex[] = {                                    219,
  333.     0,    0,    0,  344,  109,    0,    0,    0,    0,    0,
  334.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  335.     0,    0,    0,    0,    0,    0,   22,    0,    0,    0,
  336.     0,    0,   57,    0,   65,   58,    0,    0,  390,    0,
  337. 10629,    0,    0,  412,    0,    0,    0,    0,    0,    0,
  338.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  339.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  340.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  341.     0,    0,    0,    0,    0,    0,    0,    0, 9146,    0,
  342.     0,    0,    0, 4421, 8691, 9247,    0,    0,    0,  500,
  343.     0,    0,    0,    0,  411,    0,  564,    0,    0,    0,
  344. 10123,    0,  508, 5512, 5512,    0,    0,  122,    0,    0,
  345.     0,   66, 9595, 9353, 9486,    0,    0,    0,    0,    0,
  346.     0,    0,    0,    0,    0, 9700, 9804, 9909,    0,    0,
  347.     0,    0,    0,    0,    0,    0,    0,10013,    0, 4967,
  348.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  349.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  350.     0,    0,    0,    0,    0,    0,    0,  304,    0,  227,
  351.     0,    0,  469,  577,    0,    0,    0,    0,    0,    0,
  352.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  353.     0,    0,    0, 3104,    0,    0,    0,    0,    0,    0,
  354.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  355.     0,    0,    0,    0,    0,    0,    0,10455,    0,    0,
  356.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  357.     0,    0,    0,    0, 5284, 5391, 5708, 5815, 6132, 6239,
  358.  6556, 6663,    0, 6980, 7087, 7404,    0,    0,    0,    0,
  359.     0,    0, 8873,    0,    0,    0,    0, 7511, 7828, 7935,
  360.  8252, 8359,    0,10222, 1933, 1729, 3046,  919,  947,    0,
  361.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  362.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  363.  3982, 4089, 3211, 3543, 2226, 2333, 4860, 8766,    0, 2665,
  364.  1787, 1894,  909, 1016, 1348, 1455,    0, 3650,    0,    0,
  365.     0,    0,    0, 8845,    0,   27,   28, 2772,    0,  140,
  366.     0,  194,  195,    0,    0,    0,    0,    0,    0,    0,
  367.     0,    0,    0,    0,    0,    0,  304,    0,    0,  547,
  368.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  369.     0,    0,    0,    0,    0,    0,    0,    0,  575,    0,
  370.     0,    0,    0,  547,    0,    0,    0,    0,    0,    0,
  371.     0,    0, 4528,   33,   52,    0,    0,    0,    0,    0,
  372.     0,    0,    0,    0,    0,    0,    0,   50,    0,   51,
  373.     0,    0,
  374. };
  375. short yygindex[] = {                                      0,
  376.   -24,  498,  -99,    0,  -56,  237,    0,    0,  -59,    0,
  377.     0, -215,  515,  -74, -117,  161,    0,    0, 1810,  -73,
  378.     0,    0,   18,    0,   26,  368,  -68,   14,  364,    0,
  379.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  380.     0,    0,    0,    0,
  381. };
  382. #define YYTABLESIZE 12185
  383. short yytable[] = {                                      89,
  384.   244,  153,  200,  111,  229,   89,    1,  198,  196,  200,
  385.   197,  150,  199,    4,  198,  196,   44,  197,  204,  199,
  386.   212,   34,  213,  212,  225,  213,  235,   56,  180,   37,
  387.     8,  226,  232,   40,  195,  211,  280,  200,  212,  298,
  388.   213,  340,  198,  196,  226,  197,   41,  199,  117,   99,
  389.    86,  102,   86,  110,  154,   99,   30,   61,  112,  201,
  390.   178,  151,  183,  184,    6,   89,  201,  235,   56,  116,
  391.   235,   56,  212,  261,  213,   89,  156,  267,   43,  228,
  392.    34,   42,  212,  363,  213,  235,   56,  368,   89,   45,
  393.   367,  394,  128,  157,  201,  128,  159,  245,  246,  247,
  394.   248,  249,  250,  251,  252,  253,  253,  253,    7,  266,
  395.   160,  268,  269,  270,   34,   30,   61,  234,  235,  235,
  396.    56,    7,  271,  272,   89,   99,  371,  372,  318,  253,
  397.   325,  327,  161,   29,  331,  333,  238,  162,   99,   52,
  398.   380,    7,  212,   37,  213,  163,   34,  164,    7,   30,
  399.    61,  235,   56,    7,  388,  320,  321,    6,   89,  165,
  400.   170,  171,  301,  302,  303,  304,  305,  306,  307,  308,
  401.   310,  311,  312,  313,  314,  315,  316,  253,  166,   37,
  402.    52,   30,   61,   52,  342,  343,  167,  266,  266,    6,
  403.    89,  200,  168,   55,   54,  169,  198,  261,   52,    7,
  404.   233,  199,  323,  346,    7,  324,  326,  328,  348,  330,
  405.   332,   47,  227,   47,    7,  152,  273,   50,    6,   50,
  406.   200,  239,   51,  296,   51,  198,  196,  297,  197,  284,
  407.   199,    7,   52,  299,   55,   54,  201,   55,   54,  319,
  408.   347,  172,  173,  232,  210,  195,    7,  300,  201,  236,
  409.   237,  386,   55,   54,  203,  205,  206,  207,  208,  209,
  410.   322,  334,  335,  338,   52,  185,   37,  370,  186,  131,
  411.   131,  131,  337,  253,  240,  242,  339,  201,  349,  344,
  412.   351,  364,  261,  261,  352,  353,   55,   54,  200,  354,
  413.   235,   56,  362,  198,  196,  355,  197,  356,  199,  357,
  414.   359,  358,  360,  366,  373,  234,  375,  381,  390,    6,
  415.   261,  232,  391,  195,  174,  175,  235,   56,   55,   54,
  416.   189,  190,  191,  192,  392,   89,  235,  393,  399,  235,
  417.    89,   89,   89,  402,   89,   89,   89,   89,  253,  253,
  418.   384,    6,  385,    1,   47,  201,   89,   89,   89,   89,
  419.    89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
  420.    89,   89,   89,   89,   89,    7,    7,    7,    7,    7,
  421.   398,    7,  400,  235,   56,   58,    7,    7,    7,    7,
  422.     7,    7,    7,    7,    7,    7,    7,    7,    7,   33,
  423.   278,  389,   59,   60,   37,  176,  177,  113,  118,    0,
  424.     0,    0,  222,   52,    0,   89,   89,    0,    0,    0,
  425.    47,   21,    0,    7,    7,    7,    7,    7,    7,    7,
  426.     7,    7,    7,    7,    7,   89,   89,   89,   89,   52,
  427.     7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
  428.     7,    0,    7,    7,    7,    7,    7,    7,   33,    0,
  429.     7,   47,    7,    0,   47,    0,    0,   55,   54,    0,
  430.     7,    7,    7,    7,    7,    7,    0,    7,  215,   47,
  431.    21,    7,    7,    0,    0,    6,    6,    0,    6,    6,
  432.     0,    0,   33,   55,   54,   52,   52,    6,    6,    6,
  433.     6,    6,    6,    6,    6,    6,    6,    6,    6,   18,
  434.     0,  215,    0,   47,   21,  215,    0,   17,  215,  215,
  435.   215,  215,  215,  215,   33,  215,    0,    0,    0,    0,
  436.     0,    0,    0,  106,    0,    0,    0,  215,  215,  187,
  437.   215,  189,  190,  191,  192,   47,   21,    0,   94,  155,
  438.    55,   54,    0,    0,   94,    0,   45,    0,    0,    0,
  439.     6,    0,    0,    0,    0,    0,    6,    6,   18,    0,
  440.     6,  215,    6,   48,  215,    0,   17,    0,    0,    0,
  441.     0,  214,    0,    0,   69,    6,  236,    6,    0,  224,
  442.     0,    6,    6,  182,  215,  216,  217,  218,  219,  220,
  443.     0,  221,   18,  215,    0,    0,    0,    0,    0,   94,
  444.    17,  191,  192,    0,   48,   45,    0,   48,    0,  236,
  445.     0,    0,    0,  236,   94,    0,  236,  236,  236,  236,
  446.   236,  236,   48,  236,   18,    0,    0,   94,    0,    0,
  447.     0,    0,   17,   69,    0,  236,  236,    0,  236,   45,
  448.     0,    0,    0,    0,   94,   94,   94,    0,    0,    0,
  449.     0,    0,    0,  282,    0,    0,   48,  285,  286,  287,
  450.   288,  289,  290,  291,  292,  293,  295,   69,  279,  236,
  451.     0,   45,  236,  200,   47,    0,    0,    0,  198,  196,
  452.     0,  197,    0,  199,  200,    0,    0,    0,   48,  198,
  453.   196,  193,  197,    0,  199,    0,  232,    0,  195,   69,
  454.    47,  236,    0,    0,    0,    0,    0,  232,   94,  195,
  455.     0,    0,    0,    0,    0,    0,   94,    0,    0,    0,
  456.     0,    0,    0,    0,    0,  215,  215,  215,  215,    0,
  457.   201,  215,  215,  215,  215,  215,  215,  215,  215,  215,
  458.   215,  201,    0,    0,    0,    0,    0,    0,    0,  215,
  459.   215,  215,  215,  215,  215,  215,  215,  215,  215,  215,
  460.   215,  215,  215,  215,  215,  215,  215,  215,  215,    0,
  461.     0,  215,  215,  215,  215,  215,  215,  215,  215,  215,
  462.   215,  215,  215,  215,  215,    0,    0,    0,    0,  222,
  463.   215,  215,  215,  215,  215,  215,  215,  215,  215,  215,
  464.     0,    0,  215,  215,  215,  215,    0,    0,  215,  215,
  465.     0,  215,   94,    0,  215,  215,  215,  215,  215,  215,
  466.   215,  215,  215,  215,  215,    0,    0,   48,  215,  215,
  467.   215,  215,    0,  236,  236,  236,  236,  222,    0,  236,
  468.   236,  236,  236,  236,  236,  236,  236,  236,  236,    0,
  469.   377,    0,    0,   48,  378,  379,    0,  236,  236,  236,
  470.   236,  236,  236,  236,  236,  236,  236,  236,  236,  236,
  471.   236,  236,  236,  236,  236,  236,  236,   94,   94,  236,
  472.   236,  236,  236,  236,  236,  236,  236,  236,  236,  236,
  473.   236,  236,  236,    0,    0,    0,    8,    0,  236,  236,
  474.   236,  236,  236,  236,  236,  236,  236,  236,  211,    0,
  475.   236,  236,  236,  236,    0,    0,  236,  236,   63,  236,
  476.     0,    0,  236,  236,  236,  236,  236,  236,  236,  236,
  477.   236,  236,  236,    0,    0,    0,  236,  236,  236,  236,
  478.     0,  211,    0,    0,    0,  211,   64,    0,  211,  211,
  479.   211,  211,  211,  211,    0,  211,    0,    0,  214,    0,
  480.     0,  129,    0,  129,    0,    0,  341,  211,  211,    0,
  481.   211,  215,  216,  217,  218,  219,  220,   63,  221,    0,
  482.     0,    0,  187,  188,  189,  190,  191,  192,    0,  130,
  483.     0,  130,    0,  187,  188,  189,  190,  191,  192,   29,
  484.     0,  211,    0,    0,  211,   64,  214,    0,    0,    0,
  485.     0,   63,    0,    0,    0,  212,    0,    0,    0,  215,
  486.   216,  217,  218,  219,  220,    0,  221,    0,    0,    0,
  487.     0,    0,    0,  211,    0,    0,    0,    0,    0,   64,
  488.     0,    0,    0,   63,    0,    0,    0,    0,  212,    0,
  489.     0,    0,  212,    0,    0,  212,  212,  212,  212,  212,
  490.   212,    0,  212,    0,    0,    0,    0,    0,    0,    0,
  491.     0,   64,    0,    0,  212,  212,    0,  212,    0,    0,
  492.     0,    0,    0,    0,  200,    0,    0,    0,    0,  198,
  493.   196,  200,  197,    0,  199,    0,  198,  196,  193,  197,
  494.     0,  199,    0,    0,    0,    0,    0,  232,  212,  195,
  495.     0,  212,  200,    0,  194,    0,  195,  198,  196,  193,
  496.   197,    0,  199,    0,  200,    0,    0,    0,    0,  198,
  497.   196,    0,  197,    0,  199,  232,    0,  195,    0,    0,
  498.   212,  201,    0,    0,    0,    0,    0,  232,  201,  195,
  499.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  500.     0,    0,    0,    0,    0,  211,  211,  211,  211,  201,
  501.     0,  211,  211,  211,  211,  211,  211,  211,  211,  211,
  502.   211,  201,    0,    0,    0,    0,    0,    0,    0,  211,
  503.   211,  211,  211,  211,  211,  211,  211,  211,  211,  211,
  504.   211,  211,  211,  211,  211,  211,  211,  211,  211,    0,
  505.     0,  211,  211,  211,  211,  211,  211,  211,  211,  211,
  506.   211,  211,  211,  211,  211,    0,    0,    0,    0,    0,
  507.   211,  211,  211,  211,  211,  211,  211,  211,  211,  211,
  508.     0,    0,  211,  211,  211,  211,    0,    0,  211,  211,
  509.     0,  211,    0,    0,  211,  211,  211,  211,  211,  211,
  510.   211,  211,  211,  211,  211,    0,    0,    0,  211,  211,
  511.   211,  211,  212,  212,  212,  212,    0,    0,  212,  212,
  512.   212,  212,  212,  212,  212,  212,  212,  212,    0,    0,
  513.     0,    0,    0,    0,    0,    0,  212,  212,  212,  212,
  514.   212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
  515.   212,  212,  212,  212,  212,  212,    0,    0,  212,  212,
  516.   212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
  517.   212,  212,    0,    0,    0,    0,    0,  212,  212,  212,
  518.   212,  212,  212,  212,  212,  212,  212,  213,    0,  212,
  519.   212,  212,  212,    0,  185,  212,  212,  186,  212,    0,
  520.     0,  212,  212,  212,  212,  212,  212,  212,  212,  212,
  521.   212,  212,    0,  365,    0,  212,  212,  212,  212,    0,
  522.   213,    0,    0,    0,  213,    0,    0,  213,  213,  213,
  523.   213,  213,  213,  230,  213,  189,  190,  191,  192,    0,
  524.   187,  188,  189,  190,  191,  192,  213,  213,    0,  213,
  525.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  526.     0,  230,  231,  189,  190,  191,  192,    0,    0,    0,
  527.     0,    0,    0,  187,  188,  189,  190,  191,  192,    0,
  528.   213,    0,    0,  213,    0,    0,    0,    0,    0,    0,
  529.     0,    0,    0,    0,  214,    0,    0,    0,    0,    0,
  530.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  531.     0,    0,  213,    0,    0,    0,    0,    0,    0,    0,
  532.     0,    0,    0,    0,    0,    0,    0,  214,    0,    0,
  533.     0,  214,    0,    0,  214,  214,  214,  214,  214,  214,
  534.     0,  214,    0,    0,    0,    0,    0,    0,    0,    0,
  535.     0,    0,    0,  214,  214,    0,  214,    0,    0,    0,
  536.     0,    0,    0,  200,    0,    0,    0,    0,  198,  196,
  537.   200,  197,    0,  199,    0,  198,  196,  193,  197,    0,
  538.   199,    0,    0,    0,    0,    0,  232,  214,  195,    0,
  539.   214,  200,    0,  194,    0,  195,  198,  196,    0,  197,
  540.     0,  199,    0,  200,    0,    0,    0,    0,  198,  196,
  541.     0,  197,    0,  199,  232,    0,  195,    0,    0,  214,
  542.   201,    0,    0,    0,    0,    0,  232,  201,  195,    0,
  543.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  544.     0,    0,    0,    0,  213,  213,  213,  213,  201,    0,
  545.   213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
  546.   201,    0,    0,    0,    0,    0,    0,    0,  213,  213,
  547.   213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
  548.   213,  213,  213,  213,  213,  213,  213,  213,    0,    0,
  549.   213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
  550.   213,  213,  213,  213,    0,    0,    0,    0,    0,  213,
  551.   213,  213,  213,  213,  213,  213,  213,  213,  213,    0,
  552.     0,  213,  213,  213,  213,    0,    0,  213,  213,    0,
  553.   213,    0,    0,  213,  213,  213,  213,  213,  213,  213,
  554.   213,  213,  213,  213,    0,    0,    0,  213,  213,  213,
  555.   213,  214,  214,  214,  214,    0,    0,  214,  214,  214,
  556.   214,  214,  214,  214,  214,  214,  214,    0,   14,    0,
  557.     0,    0,    0,    0,    0,  214,  214,  214,  214,  214,
  558.   214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
  559.   214,  214,  214,  214,  214,    0,    0,  214,  214,  214,
  560.   214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
  561.   214,    0,    0,    0,    0,  395,  214,  214,  214,  214,
  562.   214,  214,  214,  214,  214,  214,  209,   14,  214,  214,
  563.   214,  214,    0,  185,  214,  214,  186,  214,    0,    0,
  564.   214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
  565.   214,    0,    0,    0,  214,  214,  214,  214,    0,  209,
  566.     0,   14,    0,    0,  187,    0,  209,  209,    0,  209,
  567.   209,  209,  187,  188,  189,  190,  191,  192,    0,  230,
  568.   231,  189,  190,  191,  192,  209,  209,    0,  209,    0,
  569.     0,    0,    0,   14,    0,    0,    0,    0,    0,    0,
  570.   230,  231,  189,  190,  191,  192,    0,    0,    0,    0,
  571.     0,    0,  187,  188,  189,  190,  191,  192,    0,  209,
  572.     0,    0,  209,    0,    0,    0,    0,    0,    0,    0,
  573.     0,    0,    0,  210,  181,    0,    0,    0,    0,    0,
  574.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  575.     0,  209,    0,    0,    0,    0,    0,    0,    0,    0,
  576.     0,    0,    0,    0,    0,    0,  210,    0,    0,    0,
  577.     0,    0,    0,  210,  210,    0,  210,  210,  210,  254,
  578.   255,  256,    0,    0,    0,    0,    0,    0,    0,    0,
  579.     0,    0,  210,  210,    0,  210,    0,    0,    0,    0,
  580.     0,    0,    0,  281,    0,    0,    0,    0,    0,  202,
  581.     0,    0,    0,    0,  202,  202,  202,  202,    0,  202,
  582.     0,    0,    0,    0,    0,  187,  210,    0,    0,  210,
  583.     0,  187,  202,    0,  202,    0,  187,    0,    0,    0,
  584.     0,    0,    0,  309,    0,    0,    0,    0,    0,    0,
  585.     0,  317,    0,    0,    0,    0,    0,    0,  210,    0,
  586.     0,    0,    0,    0,    0,    0,  202,    0,  187,    0,
  587.     0,    0,    0,    0,  260,    0,    0,    0,    0,    0,
  588.     0,    0,    0,  209,  209,  209,  209,    0,    0,  209,
  589.   209,  209,  209,  209,  209,  209,  209,  209,  209,    0,
  590.     0,    0,    0,    0,    0,    0,    0,  209,  209,  209,
  591.   209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
  592.   209,  209,  209,  209,  209,  209,  209,    0,    0,  209,
  593.   209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
  594.   209,  209,  209,    0,    0,    0,    0,  361,  209,  209,
  595.   209,  209,  209,  209,  209,  209,  209,  209,    0,    0,
  596.   209,  209,  209,  209,    0,    0,  209,  209,    0,  209,
  597.     0,    0,  209,  209,  209,  209,  209,  209,  209,  209,
  598.   209,  209,  209,    0,  260,    0,  209,  209,  209,  209,
  599.   210,  210,  210,  210,    0,    0,  210,  210,  210,  210,
  600.   210,  210,  210,  210,  210,  210,    0,    0,    0,    0,
  601.     0,    0,  382,  383,  210,  210,  210,  210,  210,  210,
  602.   210,  210,  210,  210,  210,  210,  210,  210,  210,  210,
  603.   210,  210,  210,  210,    0,    0,  210,  210,  210,  210,
  604.   210,  210,  210,  210,  210,  210,  210,  210,  210,  210,
  605.     0,    0,    0,    0,    0,  210,  210,  210,  210,  210,
  606.   210,  210,  210,  210,  210,  229,    0,  210,  210,  210,
  607.   210,    0,  202,  210,  210,  202,  210,    0,    0,  210,
  608.   210,  210,  210,  210,  210,  210,  210,  210,  210,  210,
  609.     0,    0,    0,  210,  210,  210,  210,    0,  229,   52,
  610.    53,    0,    0,    0,    0,  229,  229,    0,    0,  229,
  611.     0,    0,    0,    0,    0,    0,    0,    0,  202,  202,
  612.   202,  202,  202,  202,  229,  229,    0,  229,    0,    0,
  613.     0,    0,    0,    0,   55,   56,   57,   58,   59,   60,
  614.    61,   62,   63,   64,   65,    0,    0,    0,    0,    0,
  615.     0,    0,    0,    0,    0,    0,    0,    0,  229,    0,
  616.     0,  229,   76,   77,   78,   79,    0,    0,    0,    0,
  617.     0,    0,  231,    0,    0,    0,    0,    0,    0,    0,
  618.    80,   81,   82,   83,   84,    0,    0,    0,    0,    0,
  619.   229,    0,    0,    0,    0,  257,    0,    0,    0,    0,
  620.     0,  258,    0,    0,    0,  231,  259,    0,    0,   52,
  621.    53,    0,  231,  231,    0,    0,  231,    0,    0,    0,
  622.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  623.     0,  231,  231,    0,  231,    0,    0,    0,    0,    0,
  624.     0,    0,    0,    0,   55,   56,   57,   58,   59,   60,
  625.    61,   62,   63,   64,   65,    0,    0,    0,    0,    0,
  626.     0,    0,    0,    0,    0,  231,    0,    0,  231,    0,
  627.     0,    0,   76,   77,   78,   79,    0,    0,    0,    0,
  628.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  629.    80,   81,   82,   83,   84,    0,    0,  231,    0,    0,
  630.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  631.     0,    0,    0,  345,    0,    0,    0,    0,    0,    0,
  632.     0,    0,  229,  229,  229,  229,  210,    0,  229,  229,
  633.   229,  229,  229,  229,  229,  229,  229,  229,    0,    0,
  634.     0,    0,    0,    0,    0,    0,  229,  229,  229,  229,
  635.   229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
  636.   229,  229,  229,  229,  229,  229,    0,    0,  229,  229,
  637.   229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
  638.   229,  229,    0,    0,    0,    0,    0,  229,  229,  229,
  639.   229,  229,  229,  229,  229,  229,  229,    0,    0,  229,
  640.   229,  229,  229,    0,    0,  229,  229,    0,  229,    0,
  641.     0,  229,  229,  229,  229,  229,  229,  229,  229,  229,
  642.   229,  229,    0,    0,    0,  229,  229,  229,  229,  231,
  643.   231,  231,  231,    0,    0,  231,  231,  231,  231,  231,
  644.   231,  231,  231,  231,  231,    0,    0,    0,    0,    0,
  645.     0,    0,    0,  231,  231,  231,  231,  231,  231,  231,
  646.   231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
  647.   231,  231,  231,    0,    0,  231,  231,  231,  231,  231,
  648.   231,  231,  231,  231,  231,  231,  231,  231,  231,    0,
  649.     0,    0,    0,    0,  231,  231,  231,  231,  231,  231,
  650.   231,  231,  231,  231,  230,    0,  231,  231,  231,  231,
  651.     0,    0,  231,  231,    0,  231,    0,    0,  231,  231,
  652.   231,  231,  231,  231,  231,  231,  231,  231,  231,    0,
  653.     0,    0,  231,  231,  231,  231,    0,  230,   52,   53,
  654.     0,    0,    0,    0,  230,  230,    0,    0,  230,    0,
  655.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  656.     0,    0,    0,  230,  230,    0,  230,    0,    0,    0,
  657.     0,    0,    0,   55,   56,   57,   58,   59,   60,   61,
  658.    62,   63,   64,   65,    0,    0,   55,   56,   57,   58,
  659.    59,   60,   61,   62,   63,   64,   65,  230,    0,    0,
  660.   230,   76,   77,   78,   79,    0,    0,    0,    0,    0,
  661.     0,  228,    0,    0,   76,   77,   78,   79,    0,   80,
  662.    81,   82,   83,   84,    0,    0,    0,    0,    0,  230,
  663.     0,    0,   80,   81,   82,   83,   84,    0,    0,    0,
  664.     0,    0,    0,    0,  228,    0,    0,    0,    0,    0,
  665.     0,  228,  228,    0,    0,  228,    0,    0,    0,    0,
  666.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  667.   228,  228,    0,  228,    0,    0,    0,    0,    0,    0,
  668.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  669.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  670.     0,    0,    0,    0,  228,    0,    0,  228,    0,    0,
  671.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  672.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  673.     0,    0,    0,    0,    0,    0,  228,    0,    0,    0,
  674.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  675.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  676.     0,  230,  230,  230,  230,    0,    0,  230,  230,  230,
  677.   230,  230,  230,  230,  230,  230,  230,    0,    0,    0,
  678.     0,    0,    0,    0,    0,  230,  230,  230,  230,  230,
  679.   230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
  680.   230,  230,  230,  230,  230,    0,    0,  230,  230,  230,
  681.   230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
  682.   230,    0,    0,    0,    0,    0,  230,  230,  230,  230,
  683.   230,  230,  230,  230,  230,  230,    0,    0,  230,  230,
  684.   230,  230,    0,    0,  230,  230,    0,  230,    0,    0,
  685.   230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
  686.   230,    0,    0,    0,  230,  230,  230,  230,  228,  228,
  687.   228,  228,    0,    0,  228,  228,  228,  228,  228,  228,
  688.   228,  228,  228,  228,    0,   15,    0,    0,    0,    0,
  689.     0,    0,  228,  228,  228,  228,  228,  228,  228,  228,
  690.   228,  228,  228,  228,  228,  228,  228,  228,  228,  228,
  691.   228,  228,    0,    0,  228,  228,  228,  228,  228,  228,
  692.   228,  228,  228,  228,  228,  228,  228,  228,    0,    0,
  693.     0,    0,    0,  228,  228,  228,  228,  228,  228,  228,
  694.   228,  228,  228,  143,   15,  228,  228,  228,  228,    0,
  695.     0,  228,  228,    0,  228,    0,    0,  228,  228,  228,
  696.   228,  228,  228,  228,  228,  228,  228,  228,    0,    0,
  697.     0,  228,  228,  228,  228,    0,  143,    0,   15,    0,
  698.     0,  188,    0,  143,  143,    0,  143,  143,  143,    0,
  699.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  700.     0,    0,  143,    0,    0,  143,    0,    0,    0,    0,
  701.    15,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  702.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  703.     0,    0,    0,    0,    0,    0,  143,    0,    0,  143,
  704.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  705.   233,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  706.     0,    0,    0,    0,    0,    0,    0,    0,  143,    0,
  707.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  708.     0,    0,    0,  233,    0,    0,    0,    0,    0,    0,
  709.   233,  233,    0,    0,  233,    0,    0,    0,    0,    0,
  710.     0,    0,    0,    0,    0,    0,    0,    0,    0,  233,
  711.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  712.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  713.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  714.     0,    0,  188,  233,    0,    0,  233,    0,  188,    0,
  715.     0,    0,    0,  188,    0,    0,    0,    0,    0,    0,
  716.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  717.     0,    0,    0,    0,    0,  233,    0,    0,    0,    0,
  718.     0,    0,    0,    0,    0,  188,    0,    0,    0,    0,
  719.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  720.   143,  143,  143,  143,    0,    0,  143,    0,  143,  143,
  721.   143,  143,  143,  143,  143,  143,    0,    0,    0,    0,
  722.     0,    0,    0,    0,  143,  143,  143,  143,  143,  143,
  723.   143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
  724.   143,  143,  143,    0,    0,    0,    0,  143,  143,  143,
  725.   143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
  726.   143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
  727.   143,  143,  143,  143,  143,    0,    0,  143,  143,  143,
  728.   143,    0,    0,  143,  143,    0,    0,    0,    0,    0,
  729.     0,    0,    0,    0,    0,  143,  143,  143,  143,  143,
  730.     0,    0,    0,  143,  143,  143,  143,  233,  233,  233,
  731.   233,    0,    0,  233,  233,  233,  233,  233,  233,  233,
  732.   233,  233,  233,    0,    0,    0,    0,    0,    0,    0,
  733.     0,  233,  233,  233,  233,  233,  233,  233,  233,  233,
  734.   233,  233,  233,  233,  233,  233,  233,  233,  233,  233,
  735.   233,    0,    0,  233,  233,  233,  233,  233,  233,  233,
  736.   233,  233,  233,  233,  233,  233,  233,    0,    0,    0,
  737.     0,    0,  233,  233,  233,  233,  233,  233,  233,  233,
  738.   233,  233,  232,    0,  233,  233,  233,  233,    0,    0,
  739.   233,  233,    0,  233,    0,    0,  233,  233,  233,  233,
  740.     0,    0,  233,  233,  233,  233,  233,    0,    0,    0,
  741.   233,  233,  233,  233,    0,  232,    0,    0,    0,    0,
  742.     0,    0,  232,  232,    0,    0,  232,    0,    0,    0,
  743.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  744.     0,  232,    0,    0,    0,    0,    0,    0,    0,    0,
  745.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  746.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  747.     0,    0,    0,    0,    0,  232,    0,    0,  232,    0,
  748.     0,    0,    0,    0,    0,    0,    0,    0,    0,  144,
  749.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  750.     0,    0,    0,    0,    0,    0,    0,  232,    0,    0,
  751.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  752.     0,    0,  144,    0,    0,    0,    0,    0,    0,  144,
  753.   144,    0,  144,  144,  144,    0,    0,    0,    0,    0,
  754.     0,    0,    0,    0,    0,    0,    0,    0,  144,    0,
  755.     0,  144,    0,    0,    0,    0,    0,    0,    0,    0,
  756.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  757.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  758.     0,    0,  144,    0,    0,  144,    0,    0,    0,    0,
  759.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  760.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  761.     0,    0,    0,    0,  144,    0,    0,    0,    0,    0,
  762.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  763.     0,    0,    0,    0,    0,    0,    0,    0,    0,  232,
  764.   232,  232,  232,    0,    0,  232,  232,  232,  232,  232,
  765.   232,  232,  232,  232,  232,    0,    0,    0,    0,    0,
  766.     0,    0,    0,  232,  232,  232,  232,  232,  232,  232,
  767.   232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
  768.   232,  232,  232,    0,    0,  232,  232,  232,  232,  232,
  769.   232,  232,  232,  232,  232,  232,  232,  232,  232,    0,
  770.     0,    0,    0,    0,  232,  232,  232,  232,  232,  232,
  771.   232,  232,  232,  232,    0,    0,  232,  232,  232,  232,
  772.     0,    0,  232,  232,    0,  232,    0,    0,  232,  232,
  773.   232,  232,    0,    0,  232,  232,  232,  232,  232,    0,
  774.     0,    0,  232,  232,  232,  232,  144,  144,  144,  144,
  775.     0,    0,  144,    0,  144,  144,  144,  144,  144,  144,
  776.   144,  144,    0,    0,    0,    0,    0,    0,    0,    0,
  777.   144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
  778.   144,  144,  144,  144,  144,  144,  144,  144,  144,    0,
  779.     0,    0,    0,  144,  144,  144,  144,  144,  144,  144,
  780.   144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
  781.   144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
  782.   144,  234,    0,  144,  144,  144,  144,    0,    0,  144,
  783.   144,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  784.     0,  144,  144,  144,  144,  144,    0,    0,    0,  144,
  785.   144,  144,  144,    0,  234,    0,    0,    0,    0,    0,
  786.     0,  234,  234,    0,    0,  234,    0,    0,    0,    0,
  787.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  788.   234,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  789.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  790.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  791.     0,    0,    0,    0,  234,    0,    0,  234,    0,    0,
  792.     0,    0,    0,    0,    0,    0,    0,    0,  235,    0,
  793.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  794.     0,    0,    0,    0,    0,    0,  234,    0,    0,    0,
  795.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  796.     0,  235,    0,    0,    0,    0,    0,    0,  235,  235,
  797.     0,    0,  235,    0,    0,    0,    0,    0,    0,    0,
  798.     0,    0,    0,    0,    0,    0,    0,  235,    0,    0,
  799.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  800.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  801.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  802.     0,  235,    0,    0,  235,    0,    0,    0,    0,    0,
  803.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  804.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  805.     0,    0,    0,  235,    0,    0,    0,    0,    0,    0,
  806.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  807.     0,    0,    0,    0,    0,    0,    0,    0,  234,  234,
  808.   234,  234,    0,    0,  234,  234,  234,  234,  234,  234,
  809.   234,  234,  234,  234,    0,    0,    0,    0,    0,    0,
  810.     0,    0,  234,  234,  234,  234,  234,  234,  234,  234,
  811.   234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
  812.   234,  234,    0,    0,  234,  234,  234,  234,  234,  234,
  813.   234,  234,  234,  234,  234,  234,  234,  234,    0,    0,
  814.     0,    0,    0,  234,  234,  234,  234,  234,  234,  234,
  815.   234,  234,  234,    0,    0,  234,  234,  234,  234,    0,
  816.     0,  234,  234,    0,  234,    0,    0,  234,  234,    0,
  817.     0,    0,    0,  234,  234,  234,  234,  234,    0,    0,
  818.     0,  234,  234,  234,  234,  235,  235,  235,  235,    0,
  819.     0,  235,  235,  235,  235,  235,  235,  235,  235,  235,
  820.   235,    0,    0,    0,    0,    0,    0,    0,    0,  235,
  821.   235,  235,  235,  235,  235,  235,  235,  235,  235,  235,
  822.   235,  235,  235,  235,  235,  235,  235,  235,  235,    0,
  823.     0,  235,  235,  235,  235,  235,  235,  235,  235,  235,
  824.   235,  235,  235,  235,  235,    0,    0,    0,    0,    0,
  825.   235,  235,  235,  235,  235,  235,  235,  235,  235,  235,
  826.   130,    0,  235,  235,  235,  235,    0,    0,  235,  235,
  827.     0,  235,    0,    0,    0,  235,    0,    0,    0,    0,
  828.   235,  235,  235,  235,  235,    0,    0,    0,  235,  235,
  829.   235,  235,    0,  130,    0,    0,    0,    0,    0,    0,
  830.   130,  130,    0,  130,  130,  130,    0,    0,    0,    0,
  831.     0,    0,    0,    0,    0,    0,    0,    0,    0,  130,
  832.     0,    0,  130,    0,    0,    0,    0,    0,    0,    0,
  833.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  834.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  835.     0,    0,    0,  130,    0,    0,  130,    0,    0,    0,
  836.     0,    0,    0,    0,    0,    0,    0,  135,    0,    0,
  837.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  838.     0,    0,    0,    0,    0,  130,    0,    0,    0,    0,
  839.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  840.   135,    0,    0,    0,    0,    0,    0,  135,  135,    0,
  841.     0,  135,    0,    0,    0,    0,    0,    0,    0,    0,
  842.     0,    0,    0,    0,    0,    0,  135,    0,    0,  135,
  843.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  844.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  845.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  846.   135,    0,    0,  135,    0,    0,    0,    0,    0,    0,
  847.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  848.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  849.     0,    0,  135,    0,    0,    0,    0,    0,    0,    0,
  850.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  851.     0,    0,    0,    0,    0,    0,    0,  130,  130,  130,
  852.   130,    0,    0,  130,    0,  130,  130,  130,  130,  130,
  853.   130,  130,  130,    0,    0,    0,    0,    0,    0,    0,
  854.     0,  130,  130,  130,  130,  130,  130,  130,  130,  130,
  855.   130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
  856.     0,    0,    0,    0,  130,  130,  130,  130,  130,  130,
  857.   130,  130,  130,  130,  130,  130,  130,    0,    0,    0,
  858.     0,    0,  130,  130,  130,  130,  130,  130,  130,  130,
  859.   130,  130,    0,    0,  130,  130,  130,  130,    0,    0,
  860.   130,  130,    0,    0,    0,    0,    0,    0,    0,    0,
  861.     0,    0,  130,  130,  130,  130,  130,    0,    0,    0,
  862.   130,  130,  130,  130,  135,  135,  135,  135,    0,    0,
  863.   135,    0,  135,  135,  135,  135,  135,  135,  135,  135,
  864.     0,    0,    0,    0,    0,    0,    0,    0,  135,  135,
  865.   135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
  866.   135,  135,  135,  135,  135,  135,  135,    0,    0,    0,
  867.     0,  135,  135,  135,  135,  135,  135,  135,  135,  135,
  868.   135,  135,  135,  135,    0,    0,    0,    0,    0,  135,
  869.   135,  135,  135,  135,  135,  135,  135,  135,  135,  139,
  870.     0,  135,  135,  135,  135,    0,    0,  135,  135,    0,
  871.     0,    0,    0,    0,    0,    0,    0,    0,    0,  135,
  872.   135,  135,  135,  135,    0,    0,    0,  135,  135,  135,
  873.   135,    0,  139,    0,    0,    0,    0,    0,    0,  139,
  874.   139,    0,    0,  139,    0,    0,    0,    0,    0,    0,
  875.     0,    0,    0,    0,    0,    0,    0,    0,  139,    0,
  876.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  877.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  878.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  879.     0,    0,  139,    0,    0,  139,    0,    0,    0,    0,
  880.     0,    0,    0,    0,    0,    0,   88,    0,    0,    0,
  881.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  882.     0,    0,    0,    0,  139,    0,    0,    0,    0,    0,
  883.     0,    0,    0,    0,    0,    0,    0,    0,    0,   88,
  884.     0,    0,    0,    0,    0,    0,   88,    0,    0,    0,
  885.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  886.     0,    0,    0,    0,    0,   88,    0,    0,    0,    0,
  887.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  888.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  889.     0,    0,    0,    0,    0,    0,    0,    0,    0,   88,
  890.     0,    0,   88,    0,    0,    0,    0,    0,    0,    0,
  891.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  892.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  893.     0,   88,    0,    0,    0,    0,    0,    0,    0,    0,
  894.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  895.     0,    0,    0,    0,    0,    0,  139,  139,  139,  139,
  896.     0,    0,  139,    0,  139,  139,  139,  139,  139,  139,
  897.   139,  139,    0,    0,    0,    0,    0,    0,    0,    0,
  898.   139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
  899.   139,  139,  139,  139,  139,  139,  139,  139,  139,    0,
  900.     0,    0,    0,  139,  139,  139,  139,  139,  139,  139,
  901.   139,  139,  139,  139,  139,  139,    0,    0,   32,    0,
  902.     0,  139,  139,  139,  139,  139,  139,  139,  139,  139,
  903.   139,    0,    0,  139,  139,  139,  139,    0,    0,  139,
  904.   139,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  905.    31,  139,  139,  139,  139,  139,    0,    0,    0,  139,
  906.   139,  139,  139,   88,   88,   88,   88,    0,    0,   88,
  907.     0,   88,   88,   88,   88,   88,   88,   88,   88,    0,
  908.     0,    0,    0,    0,    0,    0,    0,   88,   88,   88,
  909.    88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
  910.    88,   88,   88,   88,   88,   88,    0,    0,    0,    0,
  911.     0,   88,   88,   88,   88,   88,   88,   88,   88,   88,
  912.    88,   88,   88,   90,    0,    0,    0,    0,   88,   88,
  913.    88,   88,   88,   88,   88,   88,   88,   88,    0,    0,
  914.    88,   88,   88,   88,    0,    0,   88,   88,    0,    0,
  915.     0,    0,    0,    0,    0,    0,   90,    0,   88,   88,
  916.    88,   88,   88,   90,    0,    0,   88,   88,   88,   88,
  917.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  918.     0,    0,   90,    0,    6,    7,    0,    8,    9,    0,
  919.     0,    0,    0,    0,    0,    0,   10,   11,   12,   13,
  920.    14,   15,   16,   17,   18,   19,   20,   21,    0,    0,
  921.     0,    0,    0,    0,    0,    0,   90,    0,    0,   90,
  922.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  923.    92,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  924.     0,    0,    0,    0,    0,    0,    0,    0,   90,    0,
  925.     0,    0,    0,    0,    0,    0,    0,    0,    0,   22,
  926.     0,    0,    0,   92,    0,   23,   24,    0,    0,   25,
  927.    92,   26,    0,    0,    0,    0,    0,    0,    0,    0,
  928.     0,    0,    0,    0,   27,    0,   28,    0,    0,   92,
  929.    29,   30,    0,    0,    0,    0,    0,    0,    0,    0,
  930.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  931.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  932.     0,    0,    0,   92,    0,    0,   92,    0,    0,    0,
  933.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  934.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  935.     0,    0,    0,    0,    0,   92,    0,    0,    0,    0,
  936.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  937.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  938.    90,   90,   90,   90,    0,    0,   90,    0,   90,   90,
  939.    90,   90,   90,   90,   90,   90,    0,    0,    0,    0,
  940.     0,    0,    0,    0,   90,   90,   90,   90,   90,   90,
  941.    90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
  942.    90,   90,   90,    0,    0,    0,    0,    0,   90,   90,
  943.    90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
  944.     0,    0,    6,    0,    0,   90,   90,   90,   90,   90,
  945.    90,   90,   90,   90,   90,    0,    0,   90,   90,   90,
  946.    90,    0,    0,   90,   90,    0,    0,    0,    0,    0,
  947.     0,    0,    0,    0,    6,   90,   90,   90,   90,   90,
  948.     0,    0,    0,   90,   90,   90,   90,   92,   92,   92,
  949.    92,    0,    0,   92,    0,   92,   92,   92,   92,   92,
  950.    92,   92,   92,    0,    0,    0,    0,    0,    0,    0,
  951.     0,   92,   92,   92,   92,   92,   92,   92,   92,   92,
  952.    92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
  953.     0,    0,    0,    0,    0,   92,   92,   92,   92,   92,
  954.    92,   92,   92,   92,   92,   92,   92,   96,    0,    0,
  955.     0,    0,   92,   92,   92,   92,   92,   92,   92,   92,
  956.    92,   92,    0,    0,   92,   92,   92,   92,    0,    0,
  957.    92,   92,    0,    0,    0,    0,    0,    0,    0,    0,
  958.    96,    0,   92,   92,   92,   92,   92,   96,    0,    0,
  959.    92,   92,   92,   92,    0,    0,    0,    0,    0,    0,
  960.     0,    0,    0,    0,    0,    0,   96,    0,    6,    6,
  961.     0,    6,    6,    0,    0,    0,    0,    0,    0,    0,
  962.     6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
  963.     6,    6,    0,    0,    0,    0,    0,    0,    0,    0,
  964.    96,    0,    0,   96,    0,    0,    0,    0,    0,    0,
  965.     0,    0,    0,    0,   94,    0,    0,    0,    0,    0,
  966.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  967.     0,    0,   96,    0,    0,    0,    0,    0,    0,    0,
  968.     0,    0,    0,    6,    0,    0,    0,   94,    0,    6,
  969.     6,    0,    0,    6,   94,    6,    0,    0,    0,    0,
  970.     0,    0,    0,    0,    0,    0,    0,    0,    6,    0,
  971.     6,    0,    0,   94,    6,    6,    0,    0,    0,    0,
  972.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  973.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  974.     0,    0,    0,    0,    0,    0,    0,   94,    0,    0,
  975.    94,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  976.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  977.     0,    0,    0,    0,    0,    0,    0,    0,    0,   94,
  978.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  979.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  980.     0,    0,    0,    0,   96,   96,   96,   96,    0,    0,
  981.    96,    0,   96,   96,   96,   96,   96,   96,   96,   96,
  982.     0,    0,    0,    0,    0,    0,    0,    0,   96,   96,
  983.    96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
  984.    96,   96,   96,   96,   96,   96,   96,    0,    0,    0,
  985.     0,    0,   96,   96,   96,   96,   96,   96,   96,   96,
  986.    96,   96,   96,   96,    0,    0,    0,    0,    0,   96,
  987.    96,   96,   96,   96,   96,   96,   96,   96,   96,    0,
  988.     0,   96,   96,   96,   96,    0,    0,   96,   96,    0,
  989.     0,    0,    0,    0,    0,    0,    0,    0,    0,   96,
  990.    96,   96,   96,   96,    0,    0,    0,   96,   96,   96,
  991.    96,   94,   94,   94,   94,    0,    0,   94,    0,   94,
  992.    94,   94,   94,   94,   94,   94,   94,    0,    0,    0,
  993.     0,    0,    0,    0,    0,   94,   94,   94,   94,   94,
  994.    94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
  995.    94,   94,   94,   94,    0,    0,    0,    0,    0,   94,
  996.    94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
  997.    94,   84,    0,    0,    0,    0,   94,   94,   94,   94,
  998.    94,   94,   94,   94,   94,   94,    0,    0,   94,   94,
  999.    94,   94,    0,    0,   94,   94,    0,    0,    0,    0,
  1000.     0,    0,    0,    0,   84,    0,   94,   94,   94,   94,
  1001.    94,   84,    0,    0,   94,   94,   94,   94,    0,    0,
  1002.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1003.    84,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1004.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1005.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1006.     0,    0,    0,    0,   84,    0,    0,   84,    0,    0,
  1007.     0,    0,    0,    0,    0,    0,    0,    0,   85,    0,
  1008.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1009.     0,    0,    0,    0,    0,    0,   84,    0,    0,    0,
  1010.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1011.     0,   85,    0,    0,    0,    0,    0,    0,   85,    0,
  1012.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1013.     0,    0,    0,    0,    0,    0,    0,   85,    0,    0,
  1014.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1015.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1016.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1017.     0,   85,    0,    0,   85,    0,    0,    0,    0,    0,
  1018.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1019.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1020.     0,    0,    0,   85,    0,    0,    0,    0,    0,    0,
  1021.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1022.     0,    0,    0,    0,    0,    0,    0,    0,   84,   84,
  1023.    84,   84,    0,    0,   84,    0,   84,   84,   84,   84,
  1024.    84,   84,   84,   84,    0,    0,    0,    0,    0,    0,
  1025.     0,    0,   84,   84,   84,   84,   84,   84,   84,   84,
  1026.    84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
  1027.    84,    0,    0,    0,    0,    0,   84,   84,   84,   84,
  1028.    84,   84,   84,   84,   84,   84,   84,   84,    0,    0,
  1029.     0,    0,    0,   84,   84,   84,   84,   84,   84,   84,
  1030.    84,   84,   84,    0,    0,   84,   84,   84,   84,    0,
  1031.     0,   84,   84,    0,    0,    0,    0,    0,    0,    0,
  1032.     0,    0,    0,   84,   84,   84,   84,   84,    0,    0,
  1033.     0,   84,   84,   84,   84,   85,   85,   85,   85,    0,
  1034.     0,   85,    0,   85,   85,   85,   85,   85,   85,   85,
  1035.    85,    0,    0,    0,    0,    0,    0,    0,    0,   85,
  1036.    85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
  1037.    85,   85,   85,   85,   85,   85,   85,   85,    0,    0,
  1038.     0,    0,    0,   85,   85,   85,   85,   85,   85,   85,
  1039.    85,   85,   85,   85,   85,   86,    0,    0,    0,    0,
  1040.    85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
  1041.     0,    0,   85,   85,   85,   85,    0,    0,   85,   85,
  1042.     0,    0,    0,    0,    0,    0,    0,    0,   86,    0,
  1043.    85,   85,   85,   85,   85,   86,    0,    0,   85,   85,
  1044.    85,   85,    0,    0,    0,    0,    0,    0,    0,    0,
  1045.     0,    0,    0,    0,   86,    0,    0,    0,    0,    0,
  1046.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1047.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1048.     0,    0,    0,    0,    0,    0,    0,    0,   86,    0,
  1049.     0,   86,    0,    0,    0,    0,    0,    0,    0,    0,
  1050.     0,    0,   87,    0,    0,    0,    0,    0,    0,    0,
  1051.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1052.    86,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1053.     0,    0,    0,    0,    0,   87,    0,    0,    0,    0,
  1054.     0,    0,   87,    0,    0,    0,    0,    0,    0,    0,
  1055.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1056.     0,   87,    0,    0,    0,    0,    0,    0,    0,    0,
  1057.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1058.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1059.     0,    0,    0,    0,    0,   87,    0,    0,   87,    0,
  1060.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1061.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1062.     0,    0,    0,    0,    0,    0,    0,   87,    0,    0,
  1063.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1064.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1065.     0,    0,   86,   86,   86,   86,    0,    0,   86,    0,
  1066.    86,   86,   86,   86,   86,   86,   86,   86,    0,    0,
  1067.     0,    0,    0,    0,    0,    0,   86,   86,   86,   86,
  1068.    86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
  1069.    86,   86,   86,   86,   86,    0,    0,    0,    0,    0,
  1070.    86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
  1071.    86,   86,    0,    0,    0,    0,    0,   86,   86,   86,
  1072.    86,   86,   86,   86,   86,   86,   86,    0,    0,   86,
  1073.    86,   86,   86,    0,    0,   86,   86,    0,    0,    0,
  1074.     0,    0,    0,    0,    0,    0,    0,   86,   86,   86,
  1075.    86,   86,    0,    0,    0,   86,   86,   86,   86,   87,
  1076.    87,   87,   87,    0,    0,   87,    0,   87,   87,   87,
  1077.    87,   87,   87,   87,   87,    0,    0,    0,    0,    0,
  1078.     0,    0,    0,   87,   87,   87,   87,   87,   87,   87,
  1079.    87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
  1080.    87,   87,    0,    0,    0,    0,    0,   87,   87,   87,
  1081.    87,   87,   87,   87,   87,   87,   87,   87,   87,   97,
  1082.     0,    0,    0,    0,   87,   87,   87,   87,   87,   87,
  1083.    87,   87,   87,   87,    0,    0,   87,   87,   87,   87,
  1084.     0,    0,   87,   87,    0,    0,    0,    0,    0,    0,
  1085.     0,    0,   97,    0,   87,   87,   87,   87,   87,   97,
  1086.     0,    0,   87,   87,   87,   87,    0,    0,    0,    0,
  1087.     0,    0,    0,    0,    0,    0,    0,    0,   97,    0,
  1088.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1089.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1090.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1091.     0,    0,   97,    0,    0,   97,    0,    0,    0,    0,
  1092.     0,    0,    0,    0,    0,    0,   98,    0,    0,    0,
  1093.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1094.     0,    0,    0,    0,   97,    0,    0,    0,    0,    0,
  1095.     0,    0,    0,    0,    0,    0,    0,    0,    0,   98,
  1096.     0,    0,    0,    0,    0,    0,   98,    0,    0,    0,
  1097.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1098.     0,    0,    0,    0,    0,   98,    0,    0,    0,    0,
  1099.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1100.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1101.     0,    0,    0,    0,    0,    0,    0,    0,    0,   98,
  1102.     0,    0,   98,    0,    0,    0,    0,    0,    0,    0,
  1103.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1104.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1105.     0,   98,    0,    0,    0,    0,    0,    0,    0,    0,
  1106.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1107.     0,    0,    0,    0,    0,    0,   97,   97,   97,   97,
  1108.     0,    0,   97,    0,   97,   97,   97,   97,   97,   97,
  1109.    97,   97,    0,    0,    0,    0,    0,    0,    0,    0,
  1110.    97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
  1111.    97,   97,   97,   97,   97,   97,   97,   97,   97,    0,
  1112.     0,    0,    0,    0,   97,   97,   97,   97,   97,   97,
  1113.    97,   97,   97,   97,   97,   97,    0,    0,    0,    0,
  1114.     0,   97,   97,   97,   97,   97,   97,   97,   97,   97,
  1115.    97,    0,    0,   97,   97,   97,   97,    0,    0,   97,
  1116.    97,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1117.     0,   97,   97,   97,   97,   97,    0,    0,    0,   97,
  1118.    97,   97,   97,   98,   98,   98,   98,    0,    0,   98,
  1119.     0,   98,   98,   98,   98,   98,   98,   98,   98,    0,
  1120.     0,    0,    0,    0,    0,    0,    0,   98,   98,   98,
  1121.    98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
  1122.    98,   98,   98,   98,   98,   98,    0,    0,    0,    0,
  1123.     0,   98,   98,   98,   98,   98,   98,   98,   98,   98,
  1124.    98,   98,   98,   99,    0,    0,    0,    0,   98,   98,
  1125.    98,   98,   98,   98,   98,   98,   98,   98,    0,    0,
  1126.    98,   98,   98,   98,    0,    0,   98,   98,    0,    0,
  1127.     0,    0,    0,    0,    0,    0,   99,    0,   98,   98,
  1128.    98,   98,   98,   99,    0,    0,   98,   98,   98,   98,
  1129.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1130.     0,    0,   99,    0,    0,    0,    0,    0,    0,    0,
  1131.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1132.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1133.     0,    0,    0,    0,    0,    0,   99,    0,    0,   99,
  1134.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1135.   104,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1136.     0,    0,    0,    0,    0,    0,    0,    0,   99,    0,
  1137.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1138.     0,    0,    0,  104,    0,    0,    0,    0,    0,    0,
  1139.   104,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1140.     0,    0,    0,    0,    0,    0,    0,    0,    0,  104,
  1141.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1142.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1143.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1144.     0,    0,    0,  104,    0,    0,  104,    0,    0,    0,
  1145.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1146.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1147.     0,    0,    0,    0,    0,  104,    0,    0,    0,    0,
  1148.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1149.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1150.    99,   99,   99,   99,    0,    0,   99,    0,   99,   99,
  1151.    99,   99,   99,   99,   99,   99,    0,    0,    0,    0,
  1152.     0,    0,    0,    0,   99,   99,   99,   99,   99,   99,
  1153.    99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
  1154.    99,   99,   99,    0,    0,    0,    0,    0,   99,   99,
  1155.    99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
  1156.     0,    0,    0,    0,    0,   99,   99,   99,   99,   99,
  1157.    99,   99,   99,   99,   99,    0,    0,   99,   99,   99,
  1158.    99,    0,    0,   99,   99,    0,    0,    0,    0,    0,
  1159.     0,    0,    0,    0,    0,   99,   99,   99,   99,   99,
  1160.     0,    0,    0,   99,   99,   99,   99,  104,  104,  104,
  1161.   104,    0,    0,  104,    0,  104,  104,  104,  104,  104,
  1162.   104,  104,  104,    0,    0,    0,    0,    0,    0,    0,
  1163.     0,  104,  104,  104,  104,  104,  104,  104,  104,  104,
  1164.   104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
  1165.     0,    0,    0,    0,    0,  104,  104,  104,  104,  104,
  1166.   104,  104,  104,  104,  104,  104,  104,  106,    0,    0,
  1167.     0,    0,  104,  104,  104,  104,  104,  104,  104,  104,
  1168.   104,  104,    0,    0,  104,  104,  104,  104,    0,    0,
  1169.   104,  104,    0,    0,    0,    0,    0,    0,    0,    0,
  1170.   106,    0,  104,  104,  104,  104,  104,  106,    0,    0,
  1171.   104,  104,  104,  104,    0,    0,    0,    0,    0,    0,
  1172.     0,    0,    0,    0,    0,    0,  106,    0,    0,    0,
  1173.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1174.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1175.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1176.   106,    0,    0,  106,    0,    0,    0,    0,    0,    0,
  1177.     0,    0,    0,    0,  110,    0,    0,    0,    0,    0,
  1178.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1179.     0,    0,  106,    0,    0,    0,    0,    0,    0,    0,
  1180.     0,    0,    0,    0,    0,    0,    0,  110,    0,    0,
  1181.     0,    0,    0,    0,  110,    0,    0,    0,    0,    0,
  1182.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1183.     0,    0,    0,  110,    0,    0,    0,    0,    0,    0,
  1184.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1185.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1186.     0,    0,    0,    0,    0,    0,    0,  110,    0,    0,
  1187.   110,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1188.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1189.     0,    0,    0,    0,    0,    0,    0,    0,    0,  110,
  1190.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1191.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1192.     0,    0,    0,    0,  106,  106,  106,  106,    0,    0,
  1193.   106,    0,  106,  106,  106,  106,  106,  106,  106,  106,
  1194.     0,    0,    0,    0,    0,    0,    0,    0,  106,  106,
  1195.   106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
  1196.   106,  106,  106,  106,  106,  106,  106,    0,    0,    0,
  1197.     0,    0,  106,  106,  106,  106,  106,  106,  106,  106,
  1198.   106,  106,  106,  106,    0,    0,    0,    0,    0,  106,
  1199.   106,  106,  106,  106,  106,  106,  106,  106,  106,    0,
  1200.     0,  106,  106,  106,  106,    0,    0,  106,  106,    0,
  1201.     0,    0,    0,    0,    0,    0,    0,    0,    0,  106,
  1202.   106,  106,  106,  106,    0,    0,    0,  106,  106,  106,
  1203.   106,  110,  110,  110,  110,    0,    0,  110,    0,  110,
  1204.   110,  110,  110,  110,  110,  110,  110,    0,    0,    0,
  1205.     0,    0,    0,    0,    0,  110,  110,  110,  110,  110,
  1206.   110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
  1207.   110,  110,  110,  110,    0,    0,    0,    0,    0,  110,
  1208.   110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
  1209.   110,  123,    0,    0,    0,    0,  110,  110,  110,  110,
  1210.   110,  110,  110,  110,  110,  110,    0,    0,  110,  110,
  1211.   110,  110,    0,    0,  110,  110,    0,    0,    0,    0,
  1212.     0,    0,    0,    0,  123,    0,  110,  110,  110,  110,
  1213.   110,  123,    0,    0,  110,  110,  110,  110,    0,    0,
  1214.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1215.   123,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1216.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1217.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1218.     0,    0,    0,    0,  123,    0,    0,  123,    0,    0,
  1219.     0,    0,    0,    0,    0,    0,    0,    0,  108,    0,
  1220.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1221.     0,    0,    0,    0,    0,    0,  123,    0,    0,    0,
  1222.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1223.     0,  108,    0,    0,    0,    0,    0,    0,  108,    0,
  1224.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1225.     0,    0,    0,    0,    0,    0,    0,  108,    0,    0,
  1226.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1227.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1228.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1229.     0,  108,    0,    0,  108,    0,    0,    0,    0,    0,
  1230.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1231.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1232.     0,    0,    0,  108,    0,    0,    0,    0,    0,    0,
  1233.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1234.     0,    0,    0,    0,    0,    0,    0,    0,  123,  123,
  1235.   123,  123,    0,    0,  123,    0,  123,  123,  123,  123,
  1236.   123,  123,  123,  123,    0,    0,    0,    0,    0,    0,
  1237.     0,    0,  123,  123,  123,  123,  123,  123,  123,  123,
  1238.   123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
  1239.   123,    0,    0,    0,    0,    0,  123,  123,  123,  123,
  1240.   123,  123,  123,  123,  123,  123,  123,  123,    0,    0,
  1241.     0,    0,    0,  123,  123,  123,  123,  123,  123,  123,
  1242.   123,  123,  123,    0,    0,  123,  123,  123,  123,    0,
  1243.     0,  123,  123,    0,    0,    0,    0,    0,    0,    0,
  1244.     0,    0,    0,  123,  123,  123,  123,  123,    0,    0,
  1245.     0,  123,  123,  123,  123,  108,  108,  108,  108,    0,
  1246.     0,  108,    0,  108,  108,  108,  108,  108,  108,  108,
  1247.   108,    0,    0,    0,    0,    0,    0,    0,    0,  108,
  1248.   108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
  1249.   108,  108,  108,  108,  108,  108,  108,  108,    0,    0,
  1250.     0,    0,    0,  108,  108,  108,  108,  108,  108,  108,
  1251.   108,  108,  108,  108,  108,    0,    0,    0,    0,    0,
  1252.   108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
  1253.   141,    0,  108,  108,  108,  108,    0,    0,  108,  108,
  1254.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1255.   108,  108,  108,  108,  108,    0,    0,    0,  108,  108,
  1256.   108,  108,    0,  141,    0,    0,    0,    0,    0,    0,
  1257.   141,  141,    0,  141,  141,  141,    0,    0,    0,    0,
  1258.     0,    0,    0,    0,    0,    0,    0,    0,    0,  141,
  1259.     0,    0,  141,    0,    0,    0,    0,    0,    0,    0,
  1260.     0,    0,    0,    0,    0,  228,    0,    0,    0,    0,
  1261.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1262.     0,    0,    0,  141,    0,    0,  141,    0,    0,    0,
  1263.     0,    0,    0,    0,    0,    0,    0,    0,  228,    0,
  1264.     0,    0,    0,    0,    0,  228,  228,    0,    0,  228,
  1265.     0,    0,    0,    0,    0,  141,    0,    0,    0,    0,
  1266.     0,    0,    0,    0,  228,  228,    0,  228,    0,    0,
  1267.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1268.     0,    0,    0,    0,  234,    0,    0,    0,    0,    0,
  1269.     0,    0,    0,    0,    0,    0,    0,    0,  228,    0,
  1270.     0,  228,    0,    0,    0,    0,    0,    0,    0,    0,
  1271.     0,    0,  167,    0,    0,    0,    0,    0,    0,    0,
  1272.     0,    0,    0,    0,    0,  234,    0,    0,  234,    0,
  1273.   228,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1274.     0,    0,    0,  234,    0,  167,    0,    0,    0,    0,
  1275.     0,    0,  167,    0,    0,    0,    0,  167,    0,    0,
  1276.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1277.     0,  167,    0,    0,    0,    0,    0,  234,    0,    0,
  1278.     0,    0,    0,    0,    0,    0,    0,  141,  141,  141,
  1279.   141,    0,    0,  141,    0,  141,  141,  141,  141,  141,
  1280.   141,  141,  141,    0,    0,  167,    0,    0,  167,  234,
  1281.     0,  141,  141,  141,  141,  141,  141,  141,  141,  141,
  1282.   141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
  1283.     0,    0,    0,    0,  141,  141,    0,  167,    0,    0,
  1284.     0,    0,    0,    0,    0,    0,    0,  141,  141,  141,
  1285.   141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
  1286.   141,  141,  228,  228,  228,  228,    0,    0,  228,    0,
  1287.   141,  141,    0,  228,  104,    0,  228,  228,    0,    0,
  1288.     0,  103,  294,    0,    0,    0,   87,    0,    0,    0,
  1289.   141,  141,  141,  141,    0,    0,    0,    0,    0,    0,
  1290.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1291.   228,  228,  228,  228,  228,  228,  228,  228,  228,  228,
  1292.   228,  228,    0,    0,    0,    0,    0,  228,  228,  228,
  1293.   228,  228,  228,  228,  228,  228,  228,   86,    0,  228,
  1294.   228,  228,  228,    0,    0,    0,    0,    0,  234,    0,
  1295.     0,  228,  228,  228,  228,  228,  228,  228,  228,  228,
  1296.   228,  228,    0,    0,    0,    0,    0,    0,  228,  167,
  1297.   167,  167,  167,    0,  234,  167,    0,  167,  167,  167,
  1298.   167,  167,  167,    0,  234,   40,    0,  234,    0,    0,
  1299.     0,    0,    0,  167,  167,  167,  167,  167,  167,  167,
  1300.   167,  167,  167,  167,  167,  167,  167,  167,  167,  167,
  1301.   167,  167,    0,    0,    0,    0,    0,  167,   40,    0,
  1302.     0,    0,    0,    0,    0,   40,    0,    0,    0,    0,
  1303.   234,  234,    0,    0,  167,  167,  167,  167,  167,  167,
  1304.   167,  167,  167,  167,   40,    0,    0,    0,    0,    0,
  1305.     0,    0,  167,  167,    0,    0,    0,    0,    0,    0,
  1306.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1307.     0,    0,  167,  167,  167,  167,    0,    0,   40,    0,
  1308.     0,   40,    0,    0,    0,    0,   42,    0,    0,    0,
  1309.     0,    0,    0,    0,    0,    0,    0,    0,   47,   48,
  1310.    49,    8,    0,    0,   50,    0,    0,    0,    0,   51,
  1311.    40,    0,   52,   53,    0,    0,    0,    0,    0,   42,
  1312.     0,    0,    0,    0,    0,    0,   42,    0,    0,    0,
  1313.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1314.     0,    0,    0,    0,    0,   42,   54,   55,   56,   57,
  1315.    58,   59,   60,   61,   62,   63,   64,   65,    0,    0,
  1316.     0,    0,    0,   66,   67,   68,   69,   70,   71,   72,
  1317.    73,   74,   75,    0,    0,   76,   77,   78,   79,   42,
  1318.     0,    0,   42,    0,    0,    0,    0,    0,    0,    0,
  1319.     0,    0,   95,   80,   81,   82,   83,   84,    0,    0,
  1320.     0,    0,    0,    0,   29,    0,    0,    0,    0,    0,
  1321.     0,   42,    0,    0,    0,    0,    0,    0,    0,    0,
  1322.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1323.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1324.     0,    0,   40,   40,   40,   40,    0,    0,   40,    0,
  1325.     0,   95,    0,   40,    0,    0,   40,   40,    0,    0,
  1326.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1327.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1328.     0,    0,    0,    0,    0,   95,    0,    0,    0,    0,
  1329.    40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
  1330.    40,   40,    0,    0,    0,    0,    0,   40,   40,   40,
  1331.    40,   40,   40,   40,   40,   40,   40,   95,    0,   40,
  1332.    40,   40,   40,    0,    0,   93,    0,    0,    0,    0,
  1333.     0,    0,    0,    0,    0,    0,    0,   40,   40,   40,
  1334.    40,   40,    0,   42,   42,   42,   42,    0,   40,   42,
  1335.     0,    0,    0,    0,   42,    0,    0,   42,   42,    0,
  1336.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1337.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1338.     0,    0,    0,    0,   93,    0,    0,    0,    0,    0,
  1339.     0,   42,   42,   42,   42,   42,   42,   42,   42,   42,
  1340.    42,   42,   42,    0,    0,    0,    0,    0,   42,   42,
  1341.    42,   42,   42,   42,   42,   42,   42,   42,   93,    0,
  1342.    42,   42,   42,   42,    0,    0,    0,    0,    0,    0,
  1343.     0,    0,    0,    0,   91,    0,    0,    0,   42,   42,
  1344.    42,   42,   42,    0,    0,    0,    0,    0,    0,   42,
  1345.    93,    0,   95,    0,    0,    0,    0,   95,   95,   95,
  1346.     0,   95,   95,   95,   95,    0,    0,    0,    0,    0,
  1347.     0,    0,    0,   95,   95,   95,   95,   95,   95,   95,
  1348.    95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
  1349.    95,   95,  187,   91,    0,    0,    0,    0,    0,    0,
  1350.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1351.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1352.     0,    0,    0,    0,    0,    0,    0,   91,    0,    0,
  1353.     0,    0,   95,   95,    0,    0,    0,    0,    0,  103,
  1354.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1355.     0,    0,   95,   95,   95,   95,    0,    0,    0,   91,
  1356.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1357.     0,   40,    0,    0,    0,    0,    0,    0,    0,    0,
  1358.     0,    0,    0,    0,    0,   93,    0,    0,    0,    0,
  1359.    93,   93,   93,    0,   93,   93,   93,   93,  103,    0,
  1360.     0,    0,    0,   32,    0,    0,   93,   93,   93,   93,
  1361.    93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
  1362.    93,   93,   93,   93,   93,  188,    0,    0,    0,    0,
  1363.     0,    0,  103,    0,    0,   31,    0,    0,    0,    0,
  1364.     0,    0,    0,  105,    0,    0,    0,    0,    0,    0,
  1365.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1366.     0,    0,    0,    0,  103,   93,   93,    0,    0,    0,
  1367.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1368.     0,    0,    0,    0,    0,   93,   93,   93,   93,    0,
  1369.     0,    0,    0,    0,   91,    0,    0,    0,    0,   91,
  1370.    91,   91,  105,   91,   91,   91,   91,    0,    0,    0,
  1371.     0,    0,    0,    0,    0,   91,   91,   91,   91,   91,
  1372.    91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
  1373.    91,   91,   91,   91,    0,    0,  105,    0,    0,    0,
  1374.     0,    0,    0,    0,    0,    0,    0,    0,  109,    0,
  1375.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1376.     0,    0,    0,    0,    0,    0,    0,    0,  105,    6,
  1377.     7,    0,    8,    9,   91,   91,    0,    0,    0,    0,
  1378.     0,   10,   11,   12,   13,   14,   15,   16,   17,   18,
  1379.    19,   20,   21,    0,   91,   91,   91,   91,    0,  103,
  1380.     0,    0,    0,    0,  103,  103,  103,  109,  103,  103,
  1381.   103,  103,    0,    0,    0,    0,    0,    0,    0,    0,
  1382.   103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
  1383.   103,  103,  103,  103,  103,  103,  103,  103,  103,    0,
  1384.     0,  109,    0,    0,   22,    0,    0,    0,    0,    0,
  1385.    23,   24,  107,    0,   25,    0,   26,    0,    0,    0,
  1386.     0,    0,    0,    0,    0,    0,    0,    0,    0,   27,
  1387.     0,   28,    0,  109,    0,   29,   30,    0,    0,  103,
  1388.   103,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1389.     0,    0,    0,    0,    0,    0,    0,    0,    0,  103,
  1390.   103,  103,  103,  105,    0,    0,    0,    0,  105,  105,
  1391.   105,  107,  105,  105,  105,  105,    0,    0,    0,    0,
  1392.     0,    0,    0,    0,  105,  105,  105,  105,  105,  105,
  1393.   105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
  1394.   105,  105,  105,    0,    0,  107,    0,    0,    0,    0,
  1395.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1396.     0,    0,   80,    0,    0,    0,    0,    0,    0,    0,
  1397.     0,    0,    0,    0,    0,    0,    0,  107,    0,    0,
  1398.     0,    0,    0,  105,  105,    0,    0,    0,    0,    0,
  1399.     0,    0,    0,    0,    0,   80,    0,    0,    0,    0,
  1400.     0,    0,   80,  105,  105,  105,  105,    0,  109,    0,
  1401.     0,    0,    0,  109,  109,  109,    0,  109,  109,  109,
  1402.   109,   80,    0,    0,    0,    0,    0,    0,    0,  109,
  1403.   109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
  1404.   109,  109,  109,  109,  109,  109,  109,  109,    0,    0,
  1405.     0,    0,    0,    0,    0,   80,    0,    0,   80,    0,
  1406.     0,  146,    0,    0,    0,    0,    0,    0,    0,    0,
  1407.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1408.     0,    0,    0,    0,    0,    0,    0,   80,  109,  109,
  1409.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1410.     0,    0,    0,    0,  146,    0,  146,  146,  109,  109,
  1411.   109,  109,  107,    0,    0,    0,    0,  107,  107,  107,
  1412.   146,  107,  107,  107,  107,    0,    0,    0,    0,    0,
  1413.     0,    0,    0,  107,  107,  107,  107,  107,  107,  107,
  1414.   107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
  1415.   107,  107,    0,    0,  146,    0,    0,    0,    0,    0,
  1416.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1417.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1418.     0,    0,    0,    0,    0,    0,  146,    0,    0,    0,
  1419.     0,    0,  107,  107,    0,    0,    0,    0,    0,    0,
  1420.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1421.     0,    0,  107,  107,  107,  107,    0,    0,    0,   80,
  1422.    80,   80,    0,    0,    0,   80,    0,   80,   80,   80,
  1423.    80,   80,   80,   80,   80,    0,    0,    0,    0,    0,
  1424.     0,    0,    0,   80,   80,   80,   80,   80,   80,   80,
  1425.    80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
  1426.    80,   80,    0,    0,    0,    0,    0,   80,   80,   80,
  1427.    80,   80,   80,   80,   80,   80,   80,   80,   80,    0,
  1428.     0,    0,    0,    0,   80,   80,   80,   80,   80,   80,
  1429.    80,   80,   80,   80,  236,    0,   80,   80,   80,   80,
  1430.     0,    0,   80,   80,    0,    0,    0,    0,    0,    0,
  1431.     0,    0,    0,    0,   80,   80,   80,   80,   80,    0,
  1432.     0,    0,   80,   80,   80,    0,    0,    0,    0,    0,
  1433.     0,  236,  146,  146,    0,  236,  236,  236,  236,  236,
  1434.     0,  236,    0,    0,    0,    0,    0,    0,    0,    0,
  1435.     0,    0,    0,  236,  236,    0,  236,    0,    0,    0,
  1436.     0,    0,    0,    0,    0,    0,    0,  146,  146,  146,
  1437.   146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
  1438.   146,  146,  146,    0,    0,    0,    0,  236,    0,    0,
  1439.     0,    0,   88,    0,    0,  146,  146,  146,  146,   85,
  1440.     0,    0,    0,    0,   87,    0,    0,    0,    0,    0,
  1441.     0,    0,    0,  146,  146,  146,  146,  146,    0,  236,
  1442.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1443.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1444.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1445.    32,    0,    0,    0,    0,   86,    0,    0,    0,    0,
  1446.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1447.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1448.     0,    0,   31,    0,    0,    0,    0,    0,    0,    0,
  1449.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1450.     0,    6,    0,    0,    0,    0,    0,    0,    6,    0,
  1451.     0,    0,    0,    6,    0,    0,    0,    0,    0,    0,
  1452.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1453.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1454.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1455.     0,    0,    0,    0,    0,    0,    0,    0,  236,    6,
  1456.     0,    0,    0,    0,    6,    0,    0,    0,    0,    0,
  1457.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1458.     0,    0,    0,    0,  236,    0,    0,    0,    0,    0,
  1459.     0,    6,    0,    0,  236,    0,    0,  236,    0,    0,
  1460.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1461.     0,    0,    0,    0,   88,    0,  274,  275,   49,    8,
  1462.     9,  103,   50,    0,    0,    0,   87,   51,   10,   11,
  1463.   276,  277,   14,   15,   16,   17,   18,   19,   20,   21,
  1464.   236,  236,  236,  236,  236,  236,    0,    0,    0,    0,
  1465.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1466.     0,    0,    0,    0,   54,   55,   56,   57,   58,   59,
  1467.    60,   61,   62,   63,   64,   65,    0,   86,    0,    0,
  1468.     0,   66,   67,   68,   69,   70,   71,   72,   73,   74,
  1469.    75,   22,    0,   76,   77,   78,   79,   23,   24,    0,
  1470.     0,   25,    0,   26,    0,    0,    0,    0,    0,    0,
  1471.     0,   80,   81,   82,   83,   84,   27,    0,   28,    0,
  1472.     0,    0,   29,   30,    0,    6,    6,    6,    6,    6,
  1473.     0,    6,    0,    0,    0,    0,    6,    6,    6,    6,
  1474.     6,    6,    6,    6,    6,    6,    6,    6,    6,    0,
  1475.    88,    0,    0,    0,    0,    0,    0,   85,    0,    0,
  1476.     0,    0,   87,    0,    0,    0,    0,    0,    0,    0,
  1477.     0,    0,    0,    6,    6,    6,    6,    6,    6,    6,
  1478.     6,    6,    6,    6,    6,    0,    0,    0,    0,    0,
  1479.     6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
  1480.     6,    0,    6,    6,    6,    6,    6,    6,    0,    0,
  1481.     6,    0,    6,   86,    0,    0,    0,    0,    0,    0,
  1482.     6,    6,    6,    6,    6,    6,    0,    6,    0,    0,
  1483.     0,    6,    6,    0,    0,    0,    0,    0,   47,   48,
  1484.    49,    8,    0,    0,   50,    0,  119,  120,  121,   51,
  1485.   122,  123,  124,  125,    0,    0,    0,    0,    0,    0,
  1486.     0,    0,  126,  127,  128,  129,  130,  131,  132,  133,
  1487.   134,  135,  136,  137,  138,  139,  140,  141,  142,  143,
  1488.   144,    0,    0,    0,    0,    0,   54,   55,   56,   57,
  1489.    58,   59,   60,   61,   62,   63,   64,   65,    0,    0,
  1490.     0,    0,    0,   66,   67,   68,   69,   70,   71,   72,
  1491.    73,   74,   75,    0,    0,   76,   77,   78,   79,  104,
  1492.     0,  145,  146,    0,    0,    0,  103,    0,    0,    0,
  1493.     0,   87,    0,   80,   81,   82,   83,   84,    0,    0,
  1494.     0,  147,  148,  149,   29,    0,    0,    0,    0,    0,
  1495.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1496.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1497.     0,    0,    0,    0,   47,   48,   49,    8,    0,    0,
  1498.    50,    0,   86,    0,    0,   51,    0,    0,   52,   53,
  1499.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1500.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1501.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1502.     0,    0,   54,   55,   56,   57,   58,   59,   60,   61,
  1503.    62,   63,   64,   65,    0,    0,    0,    0,    0,   66,
  1504.    67,   68,   69,   70,   71,   72,   73,   74,   75,  104,
  1505.     0,   76,   77,   78,   79,    0,   85,    0,    0,    0,
  1506.     0,   87,    0,    0,    0,    0,    0,    0,    0,   80,
  1507.    81,   82,   83,   84,    0,    0,    0,    0,    0,    0,
  1508.    29,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1509.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1510.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1511.     0,    0,   86,    0,    0,    0,    0,    0,    0,    0,
  1512.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1513.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1514.     0,    0,    0,   47,   48,   49,    8,    0,    0,   50,
  1515.     0,    0,    0,    0,   51,    0,  104,   52,   53,    0,
  1516.     0,    0,    0,  265,    0,    0,    0,    0,   87,    0,
  1517.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1518.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1519.     0,   54,   55,   56,   57,   58,   59,   60,   61,   62,
  1520.    63,   64,   65,    0,    0,    0,    0,    0,   66,   67,
  1521.    68,   69,   70,   71,   72,   73,   74,   75,    0,   86,
  1522.    76,   77,   78,   79,    0,    0,    0,    0,    0,    0,
  1523.     0,    0,    0,    0,    0,    0,    0,    0,   80,   81,
  1524.    82,   83,   84,    0,    0,    0,    0,    0,    0,   29,
  1525.     0,    0,    0,    0,    0,    0,    0,   88,    0,    0,
  1526.     0,    0,    0,    0,  103,    0,  397,    0,    0,   87,
  1527.     0,    0,    0,   47,   48,   49,    8,    0,    0,   50,
  1528.     0,    0,    0,    0,   51,    0,    0,   52,   53,    0,
  1529.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1530.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1531.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1532.    86,   54,   55,   56,   57,   58,   59,   60,   61,   62,
  1533.    63,   64,   65,    0,    0,    0,    0,    0,   66,   67,
  1534.    68,   69,   70,   71,   72,   73,   74,   75,    0,    0,
  1535.    76,   77,   78,   79,    0,    0,    0,    0,    0,    0,
  1536.     0,    0,    0,    0,    0,    0,    0,    0,   80,   81,
  1537.    82,   83,   84,    0,    0,    0,    0,   88,    0,   29,
  1538.    47,   48,   49,    8,  103,    0,   50,    0,    0,   87,
  1539.     0,   51,    0,    0,   52,   53,    0,    0,    0,    0,
  1540.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1541.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1542.     0,    0,    0,    0,    0,    0,    0,    0,   54,   55,
  1543.    56,   57,   58,   59,   60,   61,   62,   63,   64,   65,
  1544.    86,    0,    0,    0,    0,   66,   67,   68,   69,   70,
  1545.    71,   72,   73,   74,   75,    0,    0,   76,   77,   78,
  1546.    79,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1547.     0,    0,    0,    0,    0,   80,   81,   82,   83,   84,
  1548.     0,   47,   48,   49,    0,    0,   29,   50,    0,    0,
  1549.     0,    0,   51,   88,    0,   52,   53,    0,    0,    0,
  1550.    85,    0,    0,    0,    0,   87,    0,    0,    0,    0,
  1551.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1552.     0,    0,    0,    0,    0,    0,    0,    0,    0,   54,
  1553.    55,   56,   57,   58,   59,   60,   61,   62,   63,   64,
  1554.    65,    0,    0,    0,    0,    0,   66,   67,   68,   69,
  1555.    70,   71,   72,   73,   74,   75,   86,    0,   76,   77,
  1556.    78,   79,    0,    0,    0,    0,    0,    0,    0,    0,
  1557.     0,    0,    0,    0,    0,    0,   80,   81,   82,   83,
  1558.    84,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1559.     0,    0,    0,    0,    0,    0,    0,    0,   88,    0,
  1560.     0,   47,   48,   49,    0,  265,    0,   50,    0,    0,
  1561.    87,    0,   51,    0,    0,   52,   53,    0,    0,    0,
  1562.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1563.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1564.     0,    0,    0,    0,    0,    0,    0,    0,    0,   54,
  1565.    55,   56,   57,   58,   59,   60,   61,   62,   63,   64,
  1566.    65,   86,    0,    0,    0,    0,   66,   67,   68,   69,
  1567.    70,   71,   72,   73,   74,   75,    0,    0,   76,   77,
  1568.    78,   79,    0,    0,    0,    0,    0,    0,    0,    0,
  1569.     0,    0,    0,    0,    0,    0,   80,   81,   82,   83,
  1570.    84,   88,    0,    0,    0,    0,    0,    0,  103,    0,
  1571.     0,    0,    0,   87,    0,    0,    0,   47,   48,   49,
  1572.     0,    0,    0,   50,    0,    0,    0,    0,   51,    0,
  1573.     0,   52,   53,    0,    0,    0,    0,    0,    0,    0,
  1574.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1575.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1576.     0,    0,    0,    0,   86,   54,   55,   56,   57,   58,
  1577.    59,   60,   61,   62,   63,   64,   65,    0,    0,    0,
  1578.     0,    0,   66,   67,   68,   69,   70,   71,   72,   73,
  1579.    74,   75,    0,    0,   76,   77,   78,   79,    0,    0,
  1580.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1581.     0,    0,   80,   81,   82,   83,   84,    0,    0,    0,
  1582.     0,    0,   47,   48,   49,    0,    0,    0,   50,    0,
  1583.     0,    0,    0,   51,    0,    0,   52,   53,    0,    0,
  1584.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1585.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1586.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1587.    54,   55,   56,   57,   58,   59,   60,   61,   62,   63,
  1588.    64,   65,    0,    0,    0,    0,    0,   66,   67,   68,
  1589.    69,   70,   71,   72,   73,   74,   75,    0,    0,   76,
  1590.    77,   78,   79,    0,    0,    0,    0,    0,    0,    0,
  1591.     0,    0,    0,    0,    0,    0,    0,   80,   81,   82,
  1592.    83,   84,    0,    0,    0,   47,   48,   49,    0,    0,
  1593.     0,   50,    0,    0,    0,    0,   51,    0,    0,    0,
  1594.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1595.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1596.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1597.     0,    0,    0,   54,   55,   56,   57,   58,   59,   60,
  1598.    61,   62,   63,   64,   65,    0,    0,    0,    0,    0,
  1599.    66,   67,   68,   69,   70,   71,   72,   73,   74,   75,
  1600.     0,    0,   76,   77,   78,   79,    0,    0,    0,    0,
  1601.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  1602.    80,   81,   82,   83,   84,
  1603. };
  1604. short yycheck[] = {                                      24,
  1605.   118,   44,   37,   28,  104,   30,   59,   42,   43,   37,
  1606.    45,   36,   47,    0,   42,   43,  260,   45,   93,   47,
  1607.    43,    0,   45,   43,   98,   45,    0,    0,   85,    4,
  1608.   260,  100,   60,   59,   62,   95,  154,   37,   43,   44,
  1609.    45,  257,   42,   43,  113,   45,   58,   47,   35,   24,
  1610.    96,  258,   96,  258,   41,   30,    0,    0,   40,   94,
  1611.    85,   36,   87,   88,    0,    0,   94,   41,   41,  345,
  1612.    44,   44,   43,  133,   45,  100,   61,  134,   58,  104,
  1613.    59,   61,   43,   44,   45,   59,   59,   41,  113,  333,
  1614.    44,   62,   41,  333,   94,   44,  262,  122,  123,  124,
  1615.   125,  126,  127,  128,  129,  130,  131,  132,    0,  134,
  1616.    40,  136,  137,  138,   93,   59,   59,  346,  347,   93,
  1617.    93,    0,  147,  148,   59,  100,  342,  343,  203,  154,
  1618.   230,  231,   40,  363,  234,  235,  111,   40,  113,    0,
  1619.    41,   33,   43,  118,   45,   40,  125,   40,   40,   93,
  1620.    93,  125,  125,   45,  370,  212,  213,   93,   93,   40,
  1621.   271,  272,  187,  188,  189,  190,  191,  192,  193,  194,
  1622.   195,  196,  197,  198,  199,  200,  201,  202,   40,  154,
  1623.    41,  125,  125,   44,  258,  259,   40,  212,  213,  125,
  1624.   125,   37,   40,    0,    0,   40,   42,  257,   59,   91,
  1625.   290,   47,  227,  263,   96,  230,  231,  232,  265,  234,
  1626.   235,  257,   61,  257,   93,  258,  258,  263,    0,  263,
  1627.    37,  260,  268,   41,  268,   42,   43,   41,   45,  262,
  1628.    47,  123,   93,  264,   41,   41,   94,   44,   44,  257,
  1629.   265,  352,  353,   60,   46,   62,  125,  301,   94,  348,
  1630.   349,  369,   59,   59,  300,  317,  318,  319,  320,  321,
  1631.    93,  236,  237,   93,  125,  300,  241,  341,  303,   43,
  1632.    44,   45,  125,  298,  114,  115,  262,   94,  262,  257,
  1633.    41,  304,  342,  343,   41,   44,   93,   93,   37,   41,
  1634.   264,  264,  302,   42,   43,   41,   45,   41,   47,   44,
  1635.    41,   44,   41,  262,  257,  346,  358,  303,  260,   91,
  1636.   370,   60,   41,   62,  271,  272,  290,  290,  125,  125,
  1637.   348,  349,  350,  351,   41,  260,  300,   41,  343,  303,
  1638.   265,  266,  267,  262,  269,  270,  271,  272,  363,  364,
  1639.   365,  123,  367,    0,   41,   94,  281,  282,  283,  284,
  1640.   285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
  1641.   295,  296,  297,  298,  299,  257,  258,  259,  260,  261,
  1642.   395,  263,  397,  347,  347,  343,  268,  269,  270,  271,
  1643.   272,  273,  274,  275,  276,  277,  278,  279,  280,    0,
  1644.   154,  374,  343,  343,  369,  352,  353,   30,   35,   -1,
  1645.    -1,   -1,   91,  264,   -1,  340,  341,   -1,   -1,   -1,
  1646.     0,    0,   -1,  305,  306,  307,  308,  309,  310,  311,
  1647.   312,  313,  314,  315,  316,  360,  361,  362,  363,  290,
  1648.   322,  323,  324,  325,  326,  327,  328,  329,  330,  331,
  1649.   332,   -1,  334,  335,  336,  337,  338,  339,   59,   -1,
  1650.   342,   41,  344,   -1,   44,   -1,   -1,  264,  264,   -1,
  1651.   352,  353,  354,  355,  356,  357,   -1,  359,    0,   59,
  1652.    59,  363,  364,   -1,   -1,  257,  258,   -1,  260,  261,
  1653.    -1,   -1,   93,  290,  290,  346,  347,  269,  270,  271,
  1654.   272,  273,  274,  275,  276,  277,  278,  279,  280,    0,
  1655.    -1,   33,   -1,   93,   93,   37,   -1,    0,   40,   41,
  1656.    42,   43,   44,   45,  125,   47,   -1,   -1,   -1,   -1,
  1657.    -1,   -1,   -1,   26,   -1,   -1,   -1,   59,   60,  346,
  1658.    62,  348,  349,  350,  351,  125,  125,   -1,   24,   42,
  1659.   347,  347,   -1,   -1,   30,   -1,    0,   -1,   -1,   -1,
  1660.   332,   -1,   -1,   -1,   -1,   -1,  338,  339,   59,   -1,
  1661.   342,   93,  344,    0,   96,   -1,   59,   -1,   -1,   -1,
  1662.    -1,  260,   -1,   -1,    0,  357,    0,  359,   -1,  268,
  1663.    -1,  363,  364,   86,  273,  274,  275,  276,  277,  278,
  1664.    -1,  280,   93,  125,   -1,   -1,   -1,   -1,   -1,   85,
  1665.    93,  350,  351,   -1,   41,   59,   -1,   44,   -1,   33,
  1666.    -1,   -1,   -1,   37,  100,   -1,   40,   41,   42,   43,
  1667.    44,   45,   59,   47,  125,   -1,   -1,  113,   -1,   -1,
  1668.    -1,   -1,  125,   59,   -1,   59,   60,   -1,   62,   93,
  1669.    -1,   -1,   -1,   -1,  130,  131,  132,   -1,   -1,   -1,
  1670.    -1,   -1,   -1,  156,   -1,   -1,   93,  160,  161,  162,
  1671.   163,  164,  165,  166,  167,  168,  169,   93,  154,   93,
  1672.    -1,  125,   96,   37,  264,   -1,   -1,   -1,   42,   43,
  1673.    -1,   45,   -1,   47,   37,   -1,   -1,   -1,  125,   42,
  1674.    43,   44,   45,   -1,   47,   -1,   60,   -1,   62,  125,
  1675.   290,  125,   -1,   -1,   -1,   -1,   -1,   60,  194,   62,
  1676.    -1,   -1,   -1,   -1,   -1,   -1,  202,   -1,   -1,   -1,
  1677.    -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,   -1,
  1678.    94,  263,  264,  265,  266,  267,  268,  269,  270,  271,
  1679.   272,   94,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  281,
  1680.   282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
  1681.   292,  293,  294,  295,  296,  297,  298,  299,  300,   -1,
  1682.    -1,  303,  304,  305,  306,  307,  308,  309,  310,  311,
  1683.   312,  313,  314,  315,  316,   -1,   -1,   -1,   -1,   91,
  1684.   322,  323,  324,  325,  326,  327,  328,  329,  330,  331,
  1685.    -1,   -1,  334,  335,  336,  337,   -1,   -1,  340,  341,
  1686.    -1,  343,  298,   -1,  346,  347,  348,  349,  350,  351,
  1687.   352,  353,  354,  355,  356,   -1,   -1,  264,  360,  361,
  1688.   362,  363,   -1,  257,  258,  259,  260,   91,   -1,  263,
  1689.   264,  265,  266,  267,  268,  269,  270,  271,  272,   -1,
  1690.   353,   -1,   -1,  290,  357,  358,   -1,  281,  282,  283,
  1691.   284,  285,  286,  287,  288,  289,  290,  291,  292,  293,
  1692.   294,  295,  296,  297,  298,  299,  300,  363,  364,  303,
  1693.   304,  305,  306,  307,  308,  309,  310,  311,  312,  313,
  1694.   314,  315,  316,   -1,   -1,   -1,  260,   -1,  322,  323,
  1695.   324,  325,  326,  327,  328,  329,  330,  331,    0,   -1,
  1696.   334,  335,  336,  337,   -1,   -1,  340,  341,    0,  343,
  1697.    -1,   -1,  346,  347,  348,  349,  350,  351,  352,  353,
  1698.   354,  355,  356,   -1,   -1,   -1,  360,  361,  362,  363,
  1699.    -1,   33,   -1,   -1,   -1,   37,    0,   -1,   40,   41,
  1700.    42,   43,   44,   45,   -1,   47,   -1,   -1,  260,   -1,
  1701.    -1,   43,   -1,   45,   -1,   -1,  268,   59,   60,   -1,
  1702.    62,  273,  274,  275,  276,  277,  278,   59,  280,   -1,
  1703.    -1,   -1,  346,  347,  348,  349,  350,  351,   -1,   43,
  1704.    -1,   45,   -1,  346,  347,  348,  349,  350,  351,  363,
  1705.    -1,   93,   -1,   -1,   96,   59,  260,   -1,   -1,   -1,
  1706.    -1,   93,   -1,   -1,   -1,    0,   -1,   -1,   -1,  273,
  1707.   274,  275,  276,  277,  278,   -1,  280,   -1,   -1,   -1,
  1708.    -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   93,
  1709.    -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   33,   -1,
  1710.    -1,   -1,   37,   -1,   -1,   40,   41,   42,   43,   44,
  1711.    45,   -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1712.    -1,  125,   -1,   -1,   59,   60,   -1,   62,   -1,   -1,
  1713.    -1,   -1,   -1,   -1,   37,   -1,   -1,   -1,   -1,   42,
  1714.    43,   37,   45,   -1,   47,   -1,   42,   43,   44,   45,
  1715.    -1,   47,   -1,   -1,   -1,   -1,   -1,   60,   93,   62,
  1716.    -1,   96,   37,   -1,   60,   -1,   62,   42,   43,   44,
  1717.    45,   -1,   47,   -1,   37,   -1,   -1,   -1,   -1,   42,
  1718.    43,   -1,   45,   -1,   47,   60,   -1,   62,   -1,   -1,
  1719.   125,   94,   -1,   -1,   -1,   -1,   -1,   60,   94,   62,
  1720.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1721.    -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,   94,
  1722.    -1,  263,  264,  265,  266,  267,  268,  269,  270,  271,
  1723.   272,   94,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  281,
  1724.   282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
  1725.   292,  293,  294,  295,  296,  297,  298,  299,  300,   -1,
  1726.    -1,  303,  304,  305,  306,  307,  308,  309,  310,  311,
  1727.   312,  313,  314,  315,  316,   -1,   -1,   -1,   -1,   -1,
  1728.   322,  323,  324,  325,  326,  327,  328,  329,  330,  331,
  1729.    -1,   -1,  334,  335,  336,  337,   -1,   -1,  340,  341,
  1730.    -1,  343,   -1,   -1,  346,  347,  348,  349,  350,  351,
  1731.   352,  353,  354,  355,  356,   -1,   -1,   -1,  360,  361,
  1732.   362,  363,  257,  258,  259,  260,   -1,   -1,  263,  264,
  1733.   265,  266,  267,  268,  269,  270,  271,  272,   -1,   -1,
  1734.    -1,   -1,   -1,   -1,   -1,   -1,  281,  282,  283,  284,
  1735.   285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
  1736.   295,  296,  297,  298,  299,  300,   -1,   -1,  303,  304,
  1737.   305,  306,  307,  308,  309,  310,  311,  312,  313,  314,
  1738.   315,  316,   -1,   -1,   -1,   -1,   -1,  322,  323,  324,
  1739.   325,  326,  327,  328,  329,  330,  331,    0,   -1,  334,
  1740.   335,  336,  337,   -1,  300,  340,  341,  303,  343,   -1,
  1741.    -1,  346,  347,  348,  349,  350,  351,  352,  353,  354,
  1742.   355,  356,   -1,  286,   -1,  360,  361,  362,  363,   -1,
  1743.    33,   -1,   -1,   -1,   37,   -1,   -1,   40,   41,   42,
  1744.    43,   44,   45,  346,   47,  348,  349,  350,  351,   -1,
  1745.   346,  347,  348,  349,  350,  351,   59,   60,   -1,   62,
  1746.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1747.    -1,  346,  347,  348,  349,  350,  351,   -1,   -1,   -1,
  1748.    -1,   -1,   -1,  346,  347,  348,  349,  350,  351,   -1,
  1749.    93,   -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,
  1750.    -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,
  1751.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1752.    -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1753.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,
  1754.    -1,   37,   -1,   -1,   40,   41,   42,   43,   44,   45,
  1755.    -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1756.    -1,   -1,   -1,   59,   60,   -1,   62,   -1,   -1,   -1,
  1757.    -1,   -1,   -1,   37,   -1,   -1,   -1,   -1,   42,   43,
  1758.    37,   45,   -1,   47,   -1,   42,   43,   44,   45,   -1,
  1759.    47,   -1,   -1,   -1,   -1,   -1,   60,   93,   62,   -1,
  1760.    96,   37,   -1,   60,   -1,   62,   42,   43,   -1,   45,
  1761.    -1,   47,   -1,   37,   -1,   -1,   -1,   -1,   42,   43,
  1762.    -1,   45,   -1,   47,   60,   -1,   62,   -1,   -1,  125,
  1763.    94,   -1,   -1,   -1,   -1,   -1,   60,   94,   62,   -1,
  1764.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1765.    -1,   -1,   -1,   -1,  257,  258,  259,  260,   94,   -1,
  1766.   263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
  1767.    94,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  281,  282,
  1768.   283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
  1769.   293,  294,  295,  296,  297,  298,  299,  300,   -1,   -1,
  1770.   303,  304,  305,  306,  307,  308,  309,  310,  311,  312,
  1771.   313,  314,  315,  316,   -1,   -1,   -1,   -1,   -1,  322,
  1772.   323,  324,  325,  326,  327,  328,  329,  330,  331,   -1,
  1773.    -1,  334,  335,  336,  337,   -1,   -1,  340,  341,   -1,
  1774.   343,   -1,   -1,  346,  347,  348,  349,  350,  351,  352,
  1775.   353,  354,  355,  356,   -1,   -1,   -1,  360,  361,  362,
  1776.   363,  257,  258,  259,  260,   -1,   -1,  263,  264,  265,
  1777.   266,  267,  268,  269,  270,  271,  272,   -1,    0,   -1,
  1778.    -1,   -1,   -1,   -1,   -1,  281,  282,  283,  284,  285,
  1779.   286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
  1780.   296,  297,  298,  299,  300,   -1,   -1,  303,  304,  305,
  1781.   306,  307,  308,  309,  310,  311,  312,  313,  314,  315,
  1782.   316,   -1,   -1,   -1,   -1,  289,  322,  323,  324,  325,
  1783.   326,  327,  328,  329,  330,  331,    0,   59,  334,  335,
  1784.   336,  337,   -1,  300,  340,  341,  303,  343,   -1,   -1,
  1785.   346,  347,  348,  349,  350,  351,  352,  353,  354,  355,
  1786.   356,   -1,   -1,   -1,  360,  361,  362,  363,   -1,   33,
  1787.    -1,   93,   -1,   -1,   96,   -1,   40,   41,   -1,   43,
  1788.    44,   45,  346,  347,  348,  349,  350,  351,   -1,  346,
  1789.   347,  348,  349,  350,  351,   59,   60,   -1,   62,   -1,
  1790.    -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,
  1791.   346,  347,  348,  349,  350,  351,   -1,   -1,   -1,   -1,
  1792.    -1,   -1,  346,  347,  348,  349,  350,  351,   -1,   93,
  1793.    -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1794.    -1,   -1,   -1,    0,   85,   -1,   -1,   -1,   -1,   -1,
  1795.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1796.    -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1797.    -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,
  1798.    -1,   -1,   -1,   40,   41,   -1,   43,   44,   45,  130,
  1799.   131,  132,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1800.    -1,   -1,   59,   60,   -1,   62,   -1,   -1,   -1,   -1,
  1801.    -1,   -1,   -1,  154,   -1,   -1,   -1,   -1,   -1,   37,
  1802.    -1,   -1,   -1,   -1,   42,   43,   44,   45,   -1,   47,
  1803.    -1,   -1,   -1,   -1,   -1,  257,   93,   -1,   -1,   96,
  1804.    -1,  263,   60,   -1,   62,   -1,  268,   -1,   -1,   -1,
  1805.    -1,   -1,   -1,  194,   -1,   -1,   -1,   -1,   -1,   -1,
  1806.    -1,  202,   -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,
  1807.    -1,   -1,   -1,   -1,   -1,   -1,   94,   -1,  300,   -1,
  1808.    -1,   -1,   -1,   -1,   46,   -1,   -1,   -1,   -1,   -1,
  1809.    -1,   -1,   -1,  257,  258,  259,  260,   -1,   -1,  263,
  1810.   264,  265,  266,  267,  268,  269,  270,  271,  272,   -1,
  1811.    -1,   -1,   -1,   -1,   -1,   -1,   -1,  281,  282,  283,
  1812.   284,  285,  286,  287,  288,  289,  290,  291,  292,  293,
  1813.   294,  295,  296,  297,  298,  299,  300,   -1,   -1,  303,
  1814.   304,  305,  306,  307,  308,  309,  310,  311,  312,  313,
  1815.   314,  315,  316,   -1,   -1,   -1,   -1,  298,  322,  323,
  1816.   324,  325,  326,  327,  328,  329,  330,  331,   -1,   -1,
  1817.   334,  335,  336,  337,   -1,   -1,  340,  341,   -1,  343,
  1818.    -1,   -1,  346,  347,  348,  349,  350,  351,  352,  353,
  1819.   354,  355,  356,   -1,   46,   -1,  360,  361,  362,  363,
  1820.   257,  258,  259,  260,   -1,   -1,  263,  264,  265,  266,
  1821.   267,  268,  269,  270,  271,  272,   -1,   -1,   -1,   -1,
  1822.    -1,   -1,  363,  364,  281,  282,  283,  284,  285,  286,
  1823.   287,  288,  289,  290,  291,  292,  293,  294,  295,  296,
  1824.   297,  298,  299,  300,   -1,   -1,  303,  304,  305,  306,
  1825.   307,  308,  309,  310,  311,  312,  313,  314,  315,  316,
  1826.    -1,   -1,   -1,   -1,   -1,  322,  323,  324,  325,  326,
  1827.   327,  328,  329,  330,  331,    0,   -1,  334,  335,  336,
  1828.   337,   -1,  300,  340,  341,  303,  343,   -1,   -1,  346,
  1829.   347,  348,  349,  350,  351,  352,  353,  354,  355,  356,
  1830.    -1,   -1,   -1,  360,  361,  362,  363,   -1,   33,  271,
  1831.   272,   -1,   -1,   -1,   -1,   40,   41,   -1,   -1,   44,
  1832.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  346,  347,
  1833.   348,  349,  350,  351,   59,   60,   -1,   62,   -1,   -1,
  1834.    -1,   -1,   -1,   -1,  306,  307,  308,  309,  310,  311,
  1835.   312,  313,  314,  315,  316,   -1,   -1,   -1,   -1,   -1,
  1836.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,
  1837.    -1,   96,  334,  335,  336,  337,   -1,   -1,   -1,   -1,
  1838.    -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1839.   352,  353,  354,  355,  356,   -1,   -1,   -1,   -1,   -1,
  1840.   125,   -1,   -1,   -1,   -1,  257,   -1,   -1,   -1,   -1,
  1841.    -1,  263,   -1,   -1,   -1,   33,  268,   -1,   -1,  271,
  1842.   272,   -1,   40,   41,   -1,   -1,   44,   -1,   -1,   -1,
  1843.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1844.    -1,   59,   60,   -1,   62,   -1,   -1,   -1,   -1,   -1,
  1845.    -1,   -1,   -1,   -1,  306,  307,  308,  309,  310,  311,
  1846.   312,  313,  314,  315,  316,   -1,   -1,   -1,   -1,   -1,
  1847.    -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,
  1848.    -1,   -1,  334,  335,  336,  337,   -1,   -1,   -1,   -1,
  1849.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1850.   352,  353,  354,  355,  356,   -1,   -1,  125,   -1,   -1,
  1851.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1852.    -1,   -1,   -1,   46,   -1,   -1,   -1,   -1,   -1,   -1,
  1853.    -1,   -1,  257,  258,  259,  260,   46,   -1,  263,  264,
  1854.   265,  266,  267,  268,  269,  270,  271,  272,   -1,   -1,
  1855.    -1,   -1,   -1,   -1,   -1,   -1,  281,  282,  283,  284,
  1856.   285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
  1857.   295,  296,  297,  298,  299,  300,   -1,   -1,  303,  304,
  1858.   305,  306,  307,  308,  309,  310,  311,  312,  313,  314,
  1859.   315,  316,   -1,   -1,   -1,   -1,   -1,  322,  323,  324,
  1860.   325,  326,  327,  328,  329,  330,  331,   -1,   -1,  334,
  1861.   335,  336,  337,   -1,   -1,  340,  341,   -1,  343,   -1,
  1862.    -1,  346,  347,  348,  349,  350,  351,  352,  353,  354,
  1863.   355,  356,   -1,   -1,   -1,  360,  361,  362,  363,  257,
  1864.   258,  259,  260,   -1,   -1,  263,  264,  265,  266,  267,
  1865.   268,  269,  270,  271,  272,   -1,   -1,   -1,   -1,   -1,
  1866.    -1,   -1,   -1,  281,  282,  283,  284,  285,  286,  287,
  1867.   288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  1868.   298,  299,  300,   -1,   -1,  303,  304,  305,  306,  307,
  1869.   308,  309,  310,  311,  312,  313,  314,  315,  316,   -1,
  1870.    -1,   -1,   -1,   -1,  322,  323,  324,  325,  326,  327,
  1871.   328,  329,  330,  331,    0,   -1,  334,  335,  336,  337,
  1872.    -1,   -1,  340,  341,   -1,  343,   -1,   -1,  346,  347,
  1873.   348,  349,  350,  351,  352,  353,  354,  355,  356,   -1,
  1874.    -1,   -1,  360,  361,  362,  363,   -1,   33,  271,  272,
  1875.    -1,   -1,   -1,   -1,   40,   41,   -1,   -1,   44,   -1,
  1876.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1877.    -1,   -1,   -1,   59,   60,   -1,   62,   -1,   -1,   -1,
  1878.    -1,   -1,   -1,  306,  307,  308,  309,  310,  311,  312,
  1879.   313,  314,  315,  316,   -1,   -1,  306,  307,  308,  309,
  1880.   310,  311,  312,  313,  314,  315,  316,   93,   -1,   -1,
  1881.    96,  334,  335,  336,  337,   -1,   -1,   -1,   -1,   -1,
  1882.    -1,    0,   -1,   -1,  334,  335,  336,  337,   -1,  352,
  1883.   353,  354,  355,  356,   -1,   -1,   -1,   -1,   -1,  125,
  1884.    -1,   -1,  352,  353,  354,  355,  356,   -1,   -1,   -1,
  1885.    -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,
  1886.    -1,   40,   41,   -1,   -1,   44,   -1,   -1,   -1,   -1,
  1887.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1888.    59,   60,   -1,   62,   -1,   -1,   -1,   -1,   -1,   -1,
  1889.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1890.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1891.    -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,
  1892.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1893.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1894.    -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,
  1895.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1896.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1897.    -1,  257,  258,  259,  260,   -1,   -1,  263,  264,  265,
  1898.   266,  267,  268,  269,  270,  271,  272,   -1,   -1,   -1,
  1899.    -1,   -1,   -1,   -1,   -1,  281,  282,  283,  284,  285,
  1900.   286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
  1901.   296,  297,  298,  299,  300,   -1,   -1,  303,  304,  305,
  1902.   306,  307,  308,  309,  310,  311,  312,  313,  314,  315,
  1903.   316,   -1,   -1,   -1,   -1,   -1,  322,  323,  324,  325,
  1904.   326,  327,  328,  329,  330,  331,   -1,   -1,  334,  335,
  1905.   336,  337,   -1,   -1,  340,  341,   -1,  343,   -1,   -1,
  1906.   346,  347,  348,  349,  350,  351,  352,  353,  354,  355,
  1907.   356,   -1,   -1,   -1,  360,  361,  362,  363,  257,  258,
  1908.   259,  260,   -1,   -1,  263,  264,  265,  266,  267,  268,
  1909.   269,  270,  271,  272,   -1,    0,   -1,   -1,   -1,   -1,
  1910.    -1,   -1,  281,  282,  283,  284,  285,  286,  287,  288,
  1911.   289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
  1912.   299,  300,   -1,   -1,  303,  304,  305,  306,  307,  308,
  1913.   309,  310,  311,  312,  313,  314,  315,  316,   -1,   -1,
  1914.    -1,   -1,   -1,  322,  323,  324,  325,  326,  327,  328,
  1915.   329,  330,  331,    0,   59,  334,  335,  336,  337,   -1,
  1916.    -1,  340,  341,   -1,  343,   -1,   -1,  346,  347,  348,
  1917.   349,  350,  351,  352,  353,  354,  355,  356,   -1,   -1,
  1918.    -1,  360,  361,  362,  363,   -1,   33,   -1,   93,   -1,
  1919.    -1,   96,   -1,   40,   41,   -1,   43,   44,   45,   -1,
  1920.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1921.    -1,   -1,   59,   -1,   -1,   62,   -1,   -1,   -1,   -1,
  1922.   125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1923.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1924.    -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   96,
  1925.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1926.     0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1927.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,
  1928.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1929.    -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,
  1930.    40,   41,   -1,   -1,   44,   -1,   -1,   -1,   -1,   -1,
  1931.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,
  1932.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1933.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1934.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1935.    -1,   -1,  257,   93,   -1,   -1,   96,   -1,  263,   -1,
  1936.    -1,   -1,   -1,  268,   -1,   -1,   -1,   -1,   -1,   -1,
  1937.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1938.    -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,
  1939.    -1,   -1,   -1,   -1,   -1,  300,   -1,   -1,   -1,   -1,
  1940.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1941.   257,  258,  259,  260,   -1,   -1,  263,   -1,  265,  266,
  1942.   267,  268,  269,  270,  271,  272,   -1,   -1,   -1,   -1,
  1943.    -1,   -1,   -1,   -1,  281,  282,  283,  284,  285,  286,
  1944.   287,  288,  289,  290,  291,  292,  293,  294,  295,  296,
  1945.   297,  298,  299,   -1,   -1,   -1,   -1,  304,  305,  306,
  1946.   307,  308,  309,  310,  311,  312,  313,  314,  315,  316,
  1947.   317,  318,  319,  320,  321,  322,  323,  324,  325,  326,
  1948.   327,  328,  329,  330,  331,   -1,   -1,  334,  335,  336,
  1949.   337,   -1,   -1,  340,  341,   -1,   -1,   -1,   -1,   -1,
  1950.    -1,   -1,   -1,   -1,   -1,  352,  353,  354,  355,  356,
  1951.    -1,   -1,   -1,  360,  361,  362,  363,  257,  258,  259,
  1952.   260,   -1,   -1,  263,  264,  265,  266,  267,  268,  269,
  1953.   270,  271,  272,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1954.    -1,  281,  282,  283,  284,  285,  286,  287,  288,  289,
  1955.   290,  291,  292,  293,  294,  295,  296,  297,  298,  299,
  1956.   300,   -1,   -1,  303,  304,  305,  306,  307,  308,  309,
  1957.   310,  311,  312,  313,  314,  315,  316,   -1,   -1,   -1,
  1958.    -1,   -1,  322,  323,  324,  325,  326,  327,  328,  329,
  1959.   330,  331,    0,   -1,  334,  335,  336,  337,   -1,   -1,
  1960.   340,  341,   -1,  343,   -1,   -1,  346,  347,  348,  349,
  1961.    -1,   -1,  352,  353,  354,  355,  356,   -1,   -1,   -1,
  1962.   360,  361,  362,  363,   -1,   33,   -1,   -1,   -1,   -1,
  1963.    -1,   -1,   40,   41,   -1,   -1,   44,   -1,   -1,   -1,
  1964.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1965.    -1,   59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1966.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1967.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1968.    -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,
  1969.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,
  1970.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1971.    -1,   -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,
  1972.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1973.    -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,
  1974.    41,   -1,   43,   44,   45,   -1,   -1,   -1,   -1,   -1,
  1975.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,
  1976.    -1,   62,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1977.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1978.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1979.    -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   -1,   -1,
  1980.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1981.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1982.    -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,
  1983.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1984.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,
  1985.   258,  259,  260,   -1,   -1,  263,  264,  265,  266,  267,
  1986.   268,  269,  270,  271,  272,   -1,   -1,   -1,   -1,   -1,
  1987.    -1,   -1,   -1,  281,  282,  283,  284,  285,  286,  287,
  1988.   288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  1989.   298,  299,  300,   -1,   -1,  303,  304,  305,  306,  307,
  1990.   308,  309,  310,  311,  312,  313,  314,  315,  316,   -1,
  1991.    -1,   -1,   -1,   -1,  322,  323,  324,  325,  326,  327,
  1992.   328,  329,  330,  331,   -1,   -1,  334,  335,  336,  337,
  1993.    -1,   -1,  340,  341,   -1,  343,   -1,   -1,  346,  347,
  1994.   348,  349,   -1,   -1,  352,  353,  354,  355,  356,   -1,
  1995.    -1,   -1,  360,  361,  362,  363,  257,  258,  259,  260,
  1996.    -1,   -1,  263,   -1,  265,  266,  267,  268,  269,  270,
  1997.   271,  272,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  1998.   281,  282,  283,  284,  285,  286,  287,  288,  289,  290,
  1999.   291,  292,  293,  294,  295,  296,  297,  298,  299,   -1,
  2000.    -1,   -1,   -1,  304,  305,  306,  307,  308,  309,  310,
  2001.   311,  312,  313,  314,  315,  316,  317,  318,  319,  320,
  2002.   321,  322,  323,  324,  325,  326,  327,  328,  329,  330,
  2003.   331,    0,   -1,  334,  335,  336,  337,   -1,   -1,  340,
  2004.   341,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2005.    -1,  352,  353,  354,  355,  356,   -1,   -1,   -1,  360,
  2006.   361,  362,  363,   -1,   33,   -1,   -1,   -1,   -1,   -1,
  2007.    -1,   40,   41,   -1,   -1,   44,   -1,   -1,   -1,   -1,
  2008.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2009.    59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2010.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2011.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2012.    -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,
  2013.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,
  2014.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2015.    -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,
  2016.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2017.    -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,   41,
  2018.    -1,   -1,   44,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2019.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,
  2020.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2021.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2022.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2023.    -1,   93,   -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,
  2024.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2025.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2026.    -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,
  2027.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2028.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,
  2029.   259,  260,   -1,   -1,  263,  264,  265,  266,  267,  268,
  2030.   269,  270,  271,  272,   -1,   -1,   -1,   -1,   -1,   -1,
  2031.    -1,   -1,  281,  282,  283,  284,  285,  286,  287,  288,
  2032.   289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
  2033.   299,  300,   -1,   -1,  303,  304,  305,  306,  307,  308,
  2034.   309,  310,  311,  312,  313,  314,  315,  316,   -1,   -1,
  2035.    -1,   -1,   -1,  322,  323,  324,  325,  326,  327,  328,
  2036.   329,  330,  331,   -1,   -1,  334,  335,  336,  337,   -1,
  2037.    -1,  340,  341,   -1,  343,   -1,   -1,  346,  347,   -1,
  2038.    -1,   -1,   -1,  352,  353,  354,  355,  356,   -1,   -1,
  2039.    -1,  360,  361,  362,  363,  257,  258,  259,  260,   -1,
  2040.    -1,  263,  264,  265,  266,  267,  268,  269,  270,  271,
  2041.   272,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  281,
  2042.   282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
  2043.   292,  293,  294,  295,  296,  297,  298,  299,  300,   -1,
  2044.    -1,  303,  304,  305,  306,  307,  308,  309,  310,  311,
  2045.   312,  313,  314,  315,  316,   -1,   -1,   -1,   -1,   -1,
  2046.   322,  323,  324,  325,  326,  327,  328,  329,  330,  331,
  2047.     0,   -1,  334,  335,  336,  337,   -1,   -1,  340,  341,
  2048.    -1,  343,   -1,   -1,   -1,  347,   -1,   -1,   -1,   -1,
  2049.   352,  353,  354,  355,  356,   -1,   -1,   -1,  360,  361,
  2050.   362,  363,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,
  2051.    40,   41,   -1,   43,   44,   45,   -1,   -1,   -1,   -1,
  2052.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,
  2053.    -1,   -1,   62,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2054.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2055.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2056.    -1,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   -1,
  2057.    -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,
  2058.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2059.    -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,
  2060.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2061.    33,   -1,   -1,   -1,   -1,   -1,   -1,   40,   41,   -1,
  2062.    -1,   44,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2063.    -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,   62,
  2064.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2065.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2066.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2067.    93,   -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,
  2068.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2069.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2070.    -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2071.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2072.    -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,
  2073.   260,   -1,   -1,  263,   -1,  265,  266,  267,  268,  269,
  2074.   270,  271,  272,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2075.    -1,  281,  282,  283,  284,  285,  286,  287,  288,  289,
  2076.   290,  291,  292,  293,  294,  295,  296,  297,  298,  299,
  2077.    -1,   -1,   -1,   -1,  304,  305,  306,  307,  308,  309,
  2078.   310,  311,  312,  313,  314,  315,  316,   -1,   -1,   -1,
  2079.    -1,   -1,  322,  323,  324,  325,  326,  327,  328,  329,
  2080.   330,  331,   -1,   -1,  334,  335,  336,  337,   -1,   -1,
  2081.   340,  341,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2082.    -1,   -1,  352,  353,  354,  355,  356,   -1,   -1,   -1,
  2083.   360,  361,  362,  363,  257,  258,  259,  260,   -1,   -1,
  2084.   263,   -1,  265,  266,  267,  268,  269,  270,  271,  272,
  2085.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  281,  282,
  2086.   283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
  2087.   293,  294,  295,  296,  297,  298,  299,   -1,   -1,   -1,
  2088.    -1,  304,  305,  306,  307,  308,  309,  310,  311,  312,
  2089.   313,  314,  315,  316,   -1,   -1,   -1,   -1,   -1,  322,
  2090.   323,  324,  325,  326,  327,  328,  329,  330,  331,    0,
  2091.    -1,  334,  335,  336,  337,   -1,   -1,  340,  341,   -1,
  2092.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  352,
  2093.   353,  354,  355,  356,   -1,   -1,   -1,  360,  361,  362,
  2094.   363,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,
  2095.    41,   -1,   -1,   44,   -1,   -1,   -1,   -1,   -1,   -1,
  2096.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,
  2097.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2098.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2099.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2100.    -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   -1,   -1,
  2101.    -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,
  2102.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2103.    -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,
  2104.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,
  2105.    -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,
  2106.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2107.    -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,
  2108.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2109.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2110.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,
  2111.    -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2112.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2113.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2114.    -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2115.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2116.    -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,
  2117.    -1,   -1,  263,   -1,  265,  266,  267,  268,  269,  270,
  2118.   271,  272,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2119.   281,  282,  283,  284,  285,  286,  287,  288,  289,  290,
  2120.   291,  292,  293,  294,  295,  296,  297,  298,  299,   -1,
  2121.    -1,   -1,   -1,  304,  305,  306,  307,  308,  309,  310,
  2122.   311,  312,  313,  314,  315,  316,   -1,   -1,   91,   -1,
  2123.    -1,  322,  323,  324,  325,  326,  327,  328,  329,  330,
  2124.   331,   -1,   -1,  334,  335,  336,  337,   -1,   -1,  340,
  2125.   341,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2126.   123,  352,  353,  354,  355,  356,   -1,   -1,   -1,  360,
  2127.   361,  362,  363,  257,  258,  259,  260,   -1,   -1,  263,
  2128.    -1,  265,  266,  267,  268,  269,  270,  271,  272,   -1,
  2129.    -1,   -1,   -1,   -1,   -1,   -1,   -1,  281,  282,  283,
  2130.   284,  285,  286,  287,  288,  289,  290,  291,  292,  293,
  2131.   294,  295,  296,  297,  298,  299,   -1,   -1,   -1,   -1,
  2132.    -1,  305,  306,  307,  308,  309,  310,  311,  312,  313,
  2133.   314,  315,  316,    0,   -1,   -1,   -1,   -1,  322,  323,
  2134.   324,  325,  326,  327,  328,  329,  330,  331,   -1,   -1,
  2135.   334,  335,  336,  337,   -1,   -1,  340,  341,   -1,   -1,
  2136.    -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,  352,  353,
  2137.   354,  355,  356,   40,   -1,   -1,  360,  361,  362,  363,
  2138.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2139.    -1,   -1,   59,   -1,  257,  258,   -1,  260,  261,   -1,
  2140.    -1,   -1,   -1,   -1,   -1,   -1,  269,  270,  271,  272,
  2141.   273,  274,  275,  276,  277,  278,  279,  280,   -1,   -1,
  2142.    -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   96,
  2143.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2144.     0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2145.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,
  2146.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  332,
  2147.    -1,   -1,   -1,   33,   -1,  338,  339,   -1,   -1,  342,
  2148.    40,  344,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2149.    -1,   -1,   -1,   -1,  357,   -1,  359,   -1,   -1,   59,
  2150.   363,  364,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2151.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2152.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2153.    -1,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   -1,
  2154.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2155.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2156.    -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,
  2157.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2158.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2159.   257,  258,  259,  260,   -1,   -1,  263,   -1,  265,  266,
  2160.   267,  268,  269,  270,  271,  272,   -1,   -1,   -1,   -1,
  2161.    -1,   -1,   -1,   -1,  281,  282,  283,  284,  285,  286,
  2162.   287,  288,  289,  290,  291,  292,  293,  294,  295,  296,
  2163.   297,  298,  299,   -1,   -1,   -1,   -1,   -1,  305,  306,
  2164.   307,  308,  309,  310,  311,  312,  313,  314,  315,  316,
  2165.    -1,   -1,   91,   -1,   -1,  322,  323,  324,  325,  326,
  2166.   327,  328,  329,  330,  331,   -1,   -1,  334,  335,  336,
  2167.   337,   -1,   -1,  340,  341,   -1,   -1,   -1,   -1,   -1,
  2168.    -1,   -1,   -1,   -1,  123,  352,  353,  354,  355,  356,
  2169.    -1,   -1,   -1,  360,  361,  362,  363,  257,  258,  259,
  2170.   260,   -1,   -1,  263,   -1,  265,  266,  267,  268,  269,
  2171.   270,  271,  272,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2172.    -1,  281,  282,  283,  284,  285,  286,  287,  288,  289,
  2173.   290,  291,  292,  293,  294,  295,  296,  297,  298,  299,
  2174.    -1,   -1,   -1,   -1,   -1,  305,  306,  307,  308,  309,
  2175.   310,  311,  312,  313,  314,  315,  316,    0,   -1,   -1,
  2176.    -1,   -1,  322,  323,  324,  325,  326,  327,  328,  329,
  2177.   330,  331,   -1,   -1,  334,  335,  336,  337,   -1,   -1,
  2178.   340,  341,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2179.    33,   -1,  352,  353,  354,  355,  356,   40,   -1,   -1,
  2180.   360,  361,  362,  363,   -1,   -1,   -1,   -1,   -1,   -1,
  2181.    -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,  257,  258,
  2182.    -1,  260,  261,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2183.   269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
  2184.   279,  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2185.    93,   -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,
  2186.    -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,
  2187.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2188.    -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2189.    -1,   -1,   -1,  332,   -1,   -1,   -1,   33,   -1,  338,
  2190.   339,   -1,   -1,  342,   40,  344,   -1,   -1,   -1,   -1,
  2191.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  357,   -1,
  2192.   359,   -1,   -1,   59,  363,  364,   -1,   -1,   -1,   -1,
  2193.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2194.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2195.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,
  2196.    96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2197.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2198.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  125,
  2199.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2200.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2201.    -1,   -1,   -1,   -1,  257,  258,  259,  260,   -1,   -1,
  2202.   263,   -1,  265,  266,  267,  268,  269,  270,  271,  272,
  2203.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  281,  282,
  2204.   283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
  2205.   293,  294,  295,  296,  297,  298,  299,   -1,   -1,   -1,
  2206.    -1,   -1,  305,  306,  307,  308,  309,  310,  311,  312,
  2207.   313,  314,  315,  316,   -1,   -1,   -1,   -1,   -1,  322,
  2208.   323,  324,  325,  326,  327,  328,  329,  330,  331,   -1,
  2209.    -1,  334,  335,  336,  337,   -1,   -1,  340,  341,   -1,
  2210.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  352,
  2211.   353,  354,  355,  356,   -1,   -1,   -1,  360,  361,  362,
  2212.   363,  257,  258,  259,  260,   -1,   -1,  263,   -1,  265,
  2213.   266,  267,  268,  269,  270,  271,  272,   -1,   -1,   -1,
  2214.    -1,   -1,   -1,   -1,   -1,  281,  282,  283,  284,  285,
  2215.   286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
  2216.   296,  297,  298,  299,   -1,   -1,   -1,   -1,   -1,  305,
  2217.   306,  307,  308,  309,  310,  311,  312,  313,  314,  315,
  2218.   316,    0,   -1,   -1,   -1,   -1,  322,  323,  324,  325,
  2219.   326,  327,  328,  329,  330,  331,   -1,   -1,  334,  335,
  2220.   336,  337,   -1,   -1,  340,  341,   -1,   -1,   -1,   -1,
  2221.    -1,   -1,   -1,   -1,   33,   -1,  352,  353,  354,  355,
  2222.   356,   40,   -1,   -1,  360,  361,  362,  363,   -1,   -1,
  2223.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2224.    59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2225.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2226.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2227.    -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,
  2228.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,
  2229.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2230.    -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,
  2231.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2232.    -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,
  2233.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2234.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,
  2235.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2236.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2237.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2238.    -1,   93,   -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,
  2239.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2240.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2241.    -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,
  2242.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2243.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,
  2244.   259,  260,   -1,   -1,  263,   -1,  265,  266,  267,  268,
  2245.   269,  270,  271,  272,   -1,   -1,   -1,   -1,   -1,   -1,
  2246.    -1,   -1,  281,  282,  283,  284,  285,  286,  287,  288,
  2247.   289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
  2248.   299,   -1,   -1,   -1,   -1,   -1,  305,  306,  307,  308,
  2249.   309,  310,  311,  312,  313,  314,  315,  316,   -1,   -1,
  2250.    -1,   -1,   -1,  322,  323,  324,  325,  326,  327,  328,
  2251.   329,  330,  331,   -1,   -1,  334,  335,  336,  337,   -1,
  2252.    -1,  340,  341,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2253.    -1,   -1,   -1,  352,  353,  354,  355,  356,   -1,   -1,
  2254.    -1,  360,  361,  362,  363,  257,  258,  259,  260,   -1,
  2255.    -1,  263,   -1,  265,  266,  267,  268,  269,  270,  271,
  2256.   272,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  281,
  2257.   282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
  2258.   292,  293,  294,  295,  296,  297,  298,  299,   -1,   -1,
  2259.    -1,   -1,   -1,  305,  306,  307,  308,  309,  310,  311,
  2260.   312,  313,  314,  315,  316,    0,   -1,   -1,   -1,   -1,
  2261.   322,  323,  324,  325,  326,  327,  328,  329,  330,  331,
  2262.    -1,   -1,  334,  335,  336,  337,   -1,   -1,  340,  341,
  2263.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,
  2264.   352,  353,  354,  355,  356,   40,   -1,   -1,  360,  361,
  2265.   362,  363,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2266.    -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,   -1,
  2267.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2268.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2269.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,
  2270.    -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2271.    -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2272.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2273.   125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2274.    -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,
  2275.    -1,   -1,   40,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2276.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2277.    -1,   59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2278.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2279.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2280.    -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,
  2281.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2282.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2283.    -1,   -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,
  2284.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2285.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2286.    -1,   -1,  257,  258,  259,  260,   -1,   -1,  263,   -1,
  2287.   265,  266,  267,  268,  269,  270,  271,  272,   -1,   -1,
  2288.    -1,   -1,   -1,   -1,   -1,   -1,  281,  282,  283,  284,
  2289.   285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
  2290.   295,  296,  297,  298,  299,   -1,   -1,   -1,   -1,   -1,
  2291.   305,  306,  307,  308,  309,  310,  311,  312,  313,  314,
  2292.   315,  316,   -1,   -1,   -1,   -1,   -1,  322,  323,  324,
  2293.   325,  326,  327,  328,  329,  330,  331,   -1,   -1,  334,
  2294.   335,  336,  337,   -1,   -1,  340,  341,   -1,   -1,   -1,
  2295.    -1,   -1,   -1,   -1,   -1,   -1,   -1,  352,  353,  354,
  2296.   355,  356,   -1,   -1,   -1,  360,  361,  362,  363,  257,
  2297.   258,  259,  260,   -1,   -1,  263,   -1,  265,  266,  267,
  2298.   268,  269,  270,  271,  272,   -1,   -1,   -1,   -1,   -1,
  2299.    -1,   -1,   -1,  281,  282,  283,  284,  285,  286,  287,
  2300.   288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  2301.   298,  299,   -1,   -1,   -1,   -1,   -1,  305,  306,  307,
  2302.   308,  309,  310,  311,  312,  313,  314,  315,  316,    0,
  2303.    -1,   -1,   -1,   -1,  322,  323,  324,  325,  326,  327,
  2304.   328,  329,  330,  331,   -1,   -1,  334,  335,  336,  337,
  2305.    -1,   -1,  340,  341,   -1,   -1,   -1,   -1,   -1,   -1,
  2306.    -1,   -1,   33,   -1,  352,  353,  354,  355,  356,   40,
  2307.    -1,   -1,  360,  361,  362,  363,   -1,   -1,   -1,   -1,
  2308.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,
  2309.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2310.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2311.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2312.    -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   -1,   -1,
  2313.    -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,
  2314.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2315.    -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,
  2316.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,
  2317.    -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,
  2318.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2319.    -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,
  2320.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2321.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2322.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,
  2323.    -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2324.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2325.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2326.    -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2327.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2328.    -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,
  2329.    -1,   -1,  263,   -1,  265,  266,  267,  268,  269,  270,
  2330.   271,  272,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2331.   281,  282,  283,  284,  285,  286,  287,  288,  289,  290,
  2332.   291,  292,  293,  294,  295,  296,  297,  298,  299,   -1,
  2333.    -1,   -1,   -1,   -1,  305,  306,  307,  308,  309,  310,
  2334.   311,  312,  313,  314,  315,  316,   -1,   -1,   -1,   -1,
  2335.    -1,  322,  323,  324,  325,  326,  327,  328,  329,  330,
  2336.   331,   -1,   -1,  334,  335,  336,  337,   -1,   -1,  340,
  2337.   341,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2338.    -1,  352,  353,  354,  355,  356,   -1,   -1,   -1,  360,
  2339.   361,  362,  363,  257,  258,  259,  260,   -1,   -1,  263,
  2340.    -1,  265,  266,  267,  268,  269,  270,  271,  272,   -1,
  2341.    -1,   -1,   -1,   -1,   -1,   -1,   -1,  281,  282,  283,
  2342.   284,  285,  286,  287,  288,  289,  290,  291,  292,  293,
  2343.   294,  295,  296,  297,  298,  299,   -1,   -1,   -1,   -1,
  2344.    -1,  305,  306,  307,  308,  309,  310,  311,  312,  313,
  2345.   314,  315,  316,    0,   -1,   -1,   -1,   -1,  322,  323,
  2346.   324,  325,  326,  327,  328,  329,  330,  331,   -1,   -1,
  2347.   334,  335,  336,  337,   -1,   -1,  340,  341,   -1,   -1,
  2348.    -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,  352,  353,
  2349.   354,  355,  356,   40,   -1,   -1,  360,  361,  362,  363,
  2350.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2351.    -1,   -1,   59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2352.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2353.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2354.    -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   96,
  2355.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2356.     0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2357.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,
  2358.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2359.    -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,
  2360.    40,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2361.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,
  2362.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2363.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2364.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2365.    -1,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   -1,
  2366.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2367.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2368.    -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,
  2369.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2370.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2371.   257,  258,  259,  260,   -1,   -1,  263,   -1,  265,  266,
  2372.   267,  268,  269,  270,  271,  272,   -1,   -1,   -1,   -1,
  2373.    -1,   -1,   -1,   -1,  281,  282,  283,  284,  285,  286,
  2374.   287,  288,  289,  290,  291,  292,  293,  294,  295,  296,
  2375.   297,  298,  299,   -1,   -1,   -1,   -1,   -1,  305,  306,
  2376.   307,  308,  309,  310,  311,  312,  313,  314,  315,  316,
  2377.    -1,   -1,   -1,   -1,   -1,  322,  323,  324,  325,  326,
  2378.   327,  328,  329,  330,  331,   -1,   -1,  334,  335,  336,
  2379.   337,   -1,   -1,  340,  341,   -1,   -1,   -1,   -1,   -1,
  2380.    -1,   -1,   -1,   -1,   -1,  352,  353,  354,  355,  356,
  2381.    -1,   -1,   -1,  360,  361,  362,  363,  257,  258,  259,
  2382.   260,   -1,   -1,  263,   -1,  265,  266,  267,  268,  269,
  2383.   270,  271,  272,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2384.    -1,  281,  282,  283,  284,  285,  286,  287,  288,  289,
  2385.   290,  291,  292,  293,  294,  295,  296,  297,  298,  299,
  2386.    -1,   -1,   -1,   -1,   -1,  305,  306,  307,  308,  309,
  2387.   310,  311,  312,  313,  314,  315,  316,    0,   -1,   -1,
  2388.    -1,   -1,  322,  323,  324,  325,  326,  327,  328,  329,
  2389.   330,  331,   -1,   -1,  334,  335,  336,  337,   -1,   -1,
  2390.   340,  341,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2391.    33,   -1,  352,  353,  354,  355,  356,   40,   -1,   -1,
  2392.   360,  361,  362,  363,   -1,   -1,   -1,   -1,   -1,   -1,
  2393.    -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,
  2394.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2395.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2396.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2397.    93,   -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,
  2398.    -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,
  2399.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2400.    -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2401.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,
  2402.    -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,   -1,   -1,
  2403.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2404.    -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,   -1,   -1,
  2405.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2406.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2407.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,
  2408.    96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2409.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2410.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  125,
  2411.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2412.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2413.    -1,   -1,   -1,   -1,  257,  258,  259,  260,   -1,   -1,
  2414.   263,   -1,  265,  266,  267,  268,  269,  270,  271,  272,
  2415.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  281,  282,
  2416.   283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
  2417.   293,  294,  295,  296,  297,  298,  299,   -1,   -1,   -1,
  2418.    -1,   -1,  305,  306,  307,  308,  309,  310,  311,  312,
  2419.   313,  314,  315,  316,   -1,   -1,   -1,   -1,   -1,  322,
  2420.   323,  324,  325,  326,  327,  328,  329,  330,  331,   -1,
  2421.    -1,  334,  335,  336,  337,   -1,   -1,  340,  341,   -1,
  2422.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  352,
  2423.   353,  354,  355,  356,   -1,   -1,   -1,  360,  361,  362,
  2424.   363,  257,  258,  259,  260,   -1,   -1,  263,   -1,  265,
  2425.   266,  267,  268,  269,  270,  271,  272,   -1,   -1,   -1,
  2426.    -1,   -1,   -1,   -1,   -1,  281,  282,  283,  284,  285,
  2427.   286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
  2428.   296,  297,  298,  299,   -1,   -1,   -1,   -1,   -1,  305,
  2429.   306,  307,  308,  309,  310,  311,  312,  313,  314,  315,
  2430.   316,    0,   -1,   -1,   -1,   -1,  322,  323,  324,  325,
  2431.   326,  327,  328,  329,  330,  331,   -1,   -1,  334,  335,
  2432.   336,  337,   -1,   -1,  340,  341,   -1,   -1,   -1,   -1,
  2433.    -1,   -1,   -1,   -1,   33,   -1,  352,  353,  354,  355,
  2434.   356,   40,   -1,   -1,  360,  361,  362,  363,   -1,   -1,
  2435.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2436.    59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2437.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2438.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2439.    -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,
  2440.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,
  2441.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2442.    -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,
  2443.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2444.    -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,
  2445.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2446.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,
  2447.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2448.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2449.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2450.    -1,   93,   -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,
  2451.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2452.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2453.    -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,
  2454.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2455.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,
  2456.   259,  260,   -1,   -1,  263,   -1,  265,  266,  267,  268,
  2457.   269,  270,  271,  272,   -1,   -1,   -1,   -1,   -1,   -1,
  2458.    -1,   -1,  281,  282,  283,  284,  285,  286,  287,  288,
  2459.   289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
  2460.   299,   -1,   -1,   -1,   -1,   -1,  305,  306,  307,  308,
  2461.   309,  310,  311,  312,  313,  314,  315,  316,   -1,   -1,
  2462.    -1,   -1,   -1,  322,  323,  324,  325,  326,  327,  328,
  2463.   329,  330,  331,   -1,   -1,  334,  335,  336,  337,   -1,
  2464.    -1,  340,  341,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2465.    -1,   -1,   -1,  352,  353,  354,  355,  356,   -1,   -1,
  2466.    -1,  360,  361,  362,  363,  257,  258,  259,  260,   -1,
  2467.    -1,  263,   -1,  265,  266,  267,  268,  269,  270,  271,
  2468.   272,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  281,
  2469.   282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
  2470.   292,  293,  294,  295,  296,  297,  298,  299,   -1,   -1,
  2471.    -1,   -1,   -1,  305,  306,  307,  308,  309,  310,  311,
  2472.   312,  313,  314,  315,  316,   -1,   -1,   -1,   -1,   -1,
  2473.   322,  323,  324,  325,  326,  327,  328,  329,  330,  331,
  2474.     0,   -1,  334,  335,  336,  337,   -1,   -1,  340,  341,
  2475.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2476.   352,  353,  354,  355,  356,   -1,   -1,   -1,  360,  361,
  2477.   362,  363,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,
  2478.    40,   41,   -1,   43,   44,   45,   -1,   -1,   -1,   -1,
  2479.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,
  2480.    -1,   -1,   62,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2481.    -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,
  2482.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2483.    -1,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   -1,
  2484.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,
  2485.    -1,   -1,   -1,   -1,   -1,   40,   41,   -1,   -1,   44,
  2486.    -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,
  2487.    -1,   -1,   -1,   -1,   59,   60,   -1,   62,   -1,   -1,
  2488.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2489.    -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,
  2490.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,
  2491.    -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2492.    -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2493.    -1,   -1,   -1,   -1,   -1,   41,   -1,   -1,   44,   -1,
  2494.   125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2495.    -1,   -1,   -1,   59,   -1,   33,   -1,   -1,   -1,   -1,
  2496.    -1,   -1,   40,   -1,   -1,   -1,   -1,   45,   -1,   -1,
  2497.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2498.    -1,   59,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,
  2499.    -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,
  2500.   260,   -1,   -1,  263,   -1,  265,  266,  267,  268,  269,
  2501.   270,  271,  272,   -1,   -1,   93,   -1,   -1,   96,  125,
  2502.    -1,  281,  282,  283,  284,  285,  286,  287,  288,  289,
  2503.   290,  291,  292,  293,  294,  295,  296,  297,  298,  299,
  2504.    -1,   -1,   -1,   -1,  304,  305,   -1,  125,   -1,   -1,
  2505.    -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,  318,  319,
  2506.   320,  321,  322,  323,  324,  325,  326,  327,  328,  329,
  2507.   330,  331,  257,  258,  259,  260,   -1,   -1,  263,   -1,
  2508.   340,  341,   -1,  268,   33,   -1,  271,  272,   -1,   -1,
  2509.    -1,   40,   41,   -1,   -1,   -1,   45,   -1,   -1,   -1,
  2510.   360,  361,  362,  363,   -1,   -1,   -1,   -1,   -1,   -1,
  2511.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2512.   305,  306,  307,  308,  309,  310,  311,  312,  313,  314,
  2513.   315,  316,   -1,   -1,   -1,   -1,   -1,  322,  323,  324,
  2514.   325,  326,  327,  328,  329,  330,  331,   96,   -1,  334,
  2515.   335,  336,  337,   -1,   -1,   -1,   -1,   -1,  264,   -1,
  2516.    -1,  346,  347,  348,  349,  350,  351,  352,  353,  354,
  2517.   355,  356,   -1,   -1,   -1,   -1,   -1,   -1,  363,  257,
  2518.   258,  259,  260,   -1,  290,  263,   -1,  265,  266,  267,
  2519.   268,  269,  270,   -1,  300,    0,   -1,  303,   -1,   -1,
  2520.    -1,   -1,   -1,  281,  282,  283,  284,  285,  286,  287,
  2521.   288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  2522.   298,  299,   -1,   -1,   -1,   -1,   -1,  305,   33,   -1,
  2523.    -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,   -1,
  2524.   346,  347,   -1,   -1,  322,  323,  324,  325,  326,  327,
  2525.   328,  329,  330,  331,   59,   -1,   -1,   -1,   -1,   -1,
  2526.    -1,   -1,  340,  341,   -1,   -1,   -1,   -1,   -1,   -1,
  2527.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2528.    -1,   -1,  360,  361,  362,  363,   -1,   -1,   93,   -1,
  2529.    -1,   96,   -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,
  2530.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,
  2531.   259,  260,   -1,   -1,  263,   -1,   -1,   -1,   -1,  268,
  2532.   125,   -1,  271,  272,   -1,   -1,   -1,   -1,   -1,   33,
  2533.    -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,
  2534.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2535.    -1,   -1,   -1,   -1,   -1,   59,  305,  306,  307,  308,
  2536.   309,  310,  311,  312,  313,  314,  315,  316,   -1,   -1,
  2537.    -1,   -1,   -1,  322,  323,  324,  325,  326,  327,  328,
  2538.   329,  330,  331,   -1,   -1,  334,  335,  336,  337,   93,
  2539.    -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2540.    -1,   -1,    0,  352,  353,  354,  355,  356,   -1,   -1,
  2541.    -1,   -1,   -1,   -1,  363,   -1,   -1,   -1,   -1,   -1,
  2542.    -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2543.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2544.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2545.    -1,   -1,  257,  258,  259,  260,   -1,   -1,  263,   -1,
  2546.    -1,   59,   -1,  268,   -1,   -1,  271,  272,   -1,   -1,
  2547.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2548.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2549.    -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   -1,   -1,
  2550.   305,  306,  307,  308,  309,  310,  311,  312,  313,  314,
  2551.   315,  316,   -1,   -1,   -1,   -1,   -1,  322,  323,  324,
  2552.   325,  326,  327,  328,  329,  330,  331,  125,   -1,  334,
  2553.   335,  336,  337,   -1,   -1,    0,   -1,   -1,   -1,   -1,
  2554.    -1,   -1,   -1,   -1,   -1,   -1,   -1,  352,  353,  354,
  2555.   355,  356,   -1,  257,  258,  259,  260,   -1,  363,  263,
  2556.    -1,   -1,   -1,   -1,  268,   -1,   -1,  271,  272,   -1,
  2557.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2558.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2559.    -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,   -1,
  2560.    -1,  305,  306,  307,  308,  309,  310,  311,  312,  313,
  2561.   314,  315,  316,   -1,   -1,   -1,   -1,   -1,  322,  323,
  2562.   324,  325,  326,  327,  328,  329,  330,  331,   93,   -1,
  2563.   334,  335,  336,  337,   -1,   -1,   -1,   -1,   -1,   -1,
  2564.    -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,  352,  353,
  2565.   354,  355,  356,   -1,   -1,   -1,   -1,   -1,   -1,  363,
  2566.   125,   -1,  260,   -1,   -1,   -1,   -1,  265,  266,  267,
  2567.    -1,  269,  270,  271,  272,   -1,   -1,   -1,   -1,   -1,
  2568.    -1,   -1,   -1,  281,  282,  283,  284,  285,  286,  287,
  2569.   288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  2570.   298,  299,  300,   59,   -1,   -1,   -1,   -1,   -1,   -1,
  2571.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2572.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2573.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,
  2574.    -1,   -1,  340,  341,   -1,   -1,   -1,   -1,   -1,    0,
  2575.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2576.    -1,   -1,  360,  361,  362,  363,   -1,   -1,   -1,  125,
  2577.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2578.    -1,   59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2579.    -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,
  2580.   265,  266,  267,   -1,  269,  270,  271,  272,   59,   -1,
  2581.    -1,   -1,   -1,   91,   -1,   -1,  281,  282,  283,  284,
  2582.   285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
  2583.   295,  296,  297,  298,  299,  300,   -1,   -1,   -1,   -1,
  2584.    -1,   -1,   93,   -1,   -1,  123,   -1,   -1,   -1,   -1,
  2585.    -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,
  2586.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2587.    -1,   -1,   -1,   -1,  125,  340,  341,   -1,   -1,   -1,
  2588.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2589.    -1,   -1,   -1,   -1,   -1,  360,  361,  362,  363,   -1,
  2590.    -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,  265,
  2591.   266,  267,   59,  269,  270,  271,  272,   -1,   -1,   -1,
  2592.    -1,   -1,   -1,   -1,   -1,  281,  282,  283,  284,  285,
  2593.   286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
  2594.   296,  297,  298,  299,   -1,   -1,   93,   -1,   -1,   -1,
  2595.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,
  2596.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2597.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  125,  257,
  2598.   258,   -1,  260,  261,  340,  341,   -1,   -1,   -1,   -1,
  2599.    -1,  269,  270,  271,  272,  273,  274,  275,  276,  277,
  2600.   278,  279,  280,   -1,  360,  361,  362,  363,   -1,  260,
  2601.    -1,   -1,   -1,   -1,  265,  266,  267,   59,  269,  270,
  2602.   271,  272,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2603.   281,  282,  283,  284,  285,  286,  287,  288,  289,  290,
  2604.   291,  292,  293,  294,  295,  296,  297,  298,  299,   -1,
  2605.    -1,   93,   -1,   -1,  332,   -1,   -1,   -1,   -1,   -1,
  2606.   338,  339,    0,   -1,  342,   -1,  344,   -1,   -1,   -1,
  2607.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  357,
  2608.    -1,  359,   -1,  125,   -1,  363,  364,   -1,   -1,  340,
  2609.   341,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2610.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  360,
  2611.   361,  362,  363,  260,   -1,   -1,   -1,   -1,  265,  266,
  2612.   267,   59,  269,  270,  271,  272,   -1,   -1,   -1,   -1,
  2613.    -1,   -1,   -1,   -1,  281,  282,  283,  284,  285,  286,
  2614.   287,  288,  289,  290,  291,  292,  293,  294,  295,  296,
  2615.   297,  298,  299,   -1,   -1,   93,   -1,   -1,   -1,   -1,
  2616.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2617.    -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2618.    -1,   -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,
  2619.    -1,   -1,   -1,  340,  341,   -1,   -1,   -1,   -1,   -1,
  2620.    -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,
  2621.    -1,   -1,   40,  360,  361,  362,  363,   -1,  260,   -1,
  2622.    -1,   -1,   -1,  265,  266,  267,   -1,  269,  270,  271,
  2623.   272,   59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  281,
  2624.   282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
  2625.   292,  293,  294,  295,  296,  297,  298,  299,   -1,   -1,
  2626.    -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,
  2627.    -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2628.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2629.    -1,   -1,   -1,   -1,   -1,   -1,   -1,  125,  340,  341,
  2630.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2631.    -1,   -1,   -1,   -1,   43,   -1,   45,   46,  360,  361,
  2632.   362,  363,  260,   -1,   -1,   -1,   -1,  265,  266,  267,
  2633.    59,  269,  270,  271,  272,   -1,   -1,   -1,   -1,   -1,
  2634.    -1,   -1,   -1,  281,  282,  283,  284,  285,  286,  287,
  2635.   288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  2636.   298,  299,   -1,   -1,   93,   -1,   -1,   -1,   -1,   -1,
  2637.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2638.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2639.    -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,
  2640.    -1,   -1,  340,  341,   -1,   -1,   -1,   -1,   -1,   -1,
  2641.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2642.    -1,   -1,  360,  361,  362,  363,   -1,   -1,   -1,  257,
  2643.   258,  259,   -1,   -1,   -1,  263,   -1,  265,  266,  267,
  2644.   268,  269,  270,  271,  272,   -1,   -1,   -1,   -1,   -1,
  2645.    -1,   -1,   -1,  281,  282,  283,  284,  285,  286,  287,
  2646.   288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  2647.   298,  299,   -1,   -1,   -1,   -1,   -1,  305,  306,  307,
  2648.   308,  309,  310,  311,  312,  313,  314,  315,  316,   -1,
  2649.    -1,   -1,   -1,   -1,  322,  323,  324,  325,  326,  327,
  2650.   328,  329,  330,  331,    0,   -1,  334,  335,  336,  337,
  2651.    -1,   -1,  340,  341,   -1,   -1,   -1,   -1,   -1,   -1,
  2652.    -1,   -1,   -1,   -1,  352,  353,  354,  355,  356,   -1,
  2653.    -1,   -1,  360,  361,  362,   -1,   -1,   -1,   -1,   -1,
  2654.    -1,   37,  271,  272,   -1,   41,   42,   43,   44,   45,
  2655.    -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2656.    -1,   -1,   -1,   59,   60,   -1,   62,   -1,   -1,   -1,
  2657.    -1,   -1,   -1,   -1,   -1,   -1,   -1,  306,  307,  308,
  2658.   309,  310,  311,  312,  313,  314,  315,  316,  317,  318,
  2659.   319,  320,  321,   -1,   -1,   -1,   -1,   93,   -1,   -1,
  2660.    -1,   -1,   33,   -1,   -1,  334,  335,  336,  337,   40,
  2661.    -1,   -1,   -1,   -1,   45,   -1,   -1,   -1,   -1,   -1,
  2662.    -1,   -1,   -1,  352,  353,  354,  355,  356,   -1,  125,
  2663.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2664.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2665.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2666.    91,   -1,   -1,   -1,   -1,   96,   -1,   -1,   -1,   -1,
  2667.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2668.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2669.    -1,   -1,  123,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2670.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2671.    -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,
  2672.    -1,   -1,   -1,   45,   -1,   -1,   -1,   -1,   -1,   -1,
  2673.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2674.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2675.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2676.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  264,   91,
  2677.    -1,   -1,   -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,
  2678.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2679.    -1,   -1,   -1,   -1,  290,   -1,   -1,   -1,   -1,   -1,
  2680.    -1,  123,   -1,   -1,  300,   -1,   -1,  303,   -1,   -1,
  2681.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2682.    -1,   -1,   -1,   -1,   33,   -1,  257,  258,  259,  260,
  2683.   261,   40,  263,   -1,   -1,   -1,   45,  268,  269,  270,
  2684.   271,  272,  273,  274,  275,  276,  277,  278,  279,  280,
  2685.   346,  347,  348,  349,  350,  351,   -1,   -1,   -1,   -1,
  2686.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2687.    -1,   -1,   -1,   -1,  305,  306,  307,  308,  309,  310,
  2688.   311,  312,  313,  314,  315,  316,   -1,   96,   -1,   -1,
  2689.    -1,  322,  323,  324,  325,  326,  327,  328,  329,  330,
  2690.   331,  332,   -1,  334,  335,  336,  337,  338,  339,   -1,
  2691.    -1,  342,   -1,  344,   -1,   -1,   -1,   -1,   -1,   -1,
  2692.    -1,  352,  353,  354,  355,  356,  357,   -1,  359,   -1,
  2693.    -1,   -1,  363,  364,   -1,  257,  258,  259,  260,  261,
  2694.    -1,  263,   -1,   -1,   -1,   -1,  268,  269,  270,  271,
  2695.   272,  273,  274,  275,  276,  277,  278,  279,  280,   -1,
  2696.    33,   -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,
  2697.    -1,   -1,   45,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2698.    -1,   -1,   -1,  305,  306,  307,  308,  309,  310,  311,
  2699.   312,  313,  314,  315,  316,   -1,   -1,   -1,   -1,   -1,
  2700.   322,  323,  324,  325,  326,  327,  328,  329,  330,  331,
  2701.   332,   -1,  334,  335,  336,  337,  338,  339,   -1,   -1,
  2702.   342,   -1,  344,   96,   -1,   -1,   -1,   -1,   -1,   -1,
  2703.   352,  353,  354,  355,  356,  357,   -1,  359,   -1,   -1,
  2704.    -1,  363,  364,   -1,   -1,   -1,   -1,   -1,  257,  258,
  2705.   259,  260,   -1,   -1,  263,   -1,  265,  266,  267,  268,
  2706.   269,  270,  271,  272,   -1,   -1,   -1,   -1,   -1,   -1,
  2707.    -1,   -1,  281,  282,  283,  284,  285,  286,  287,  288,
  2708.   289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
  2709.   299,   -1,   -1,   -1,   -1,   -1,  305,  306,  307,  308,
  2710.   309,  310,  311,  312,  313,  314,  315,  316,   -1,   -1,
  2711.    -1,   -1,   -1,  322,  323,  324,  325,  326,  327,  328,
  2712.   329,  330,  331,   -1,   -1,  334,  335,  336,  337,   33,
  2713.    -1,  340,  341,   -1,   -1,   -1,   40,   -1,   -1,   -1,
  2714.    -1,   45,   -1,  352,  353,  354,  355,  356,   -1,   -1,
  2715.    -1,  360,  361,  362,  363,   -1,   -1,   -1,   -1,   -1,
  2716.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2717.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2718.    -1,   -1,   -1,   -1,  257,  258,  259,  260,   -1,   -1,
  2719.   263,   -1,   96,   -1,   -1,  268,   -1,   -1,  271,  272,
  2720.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2721.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2722.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2723.    -1,   -1,  305,  306,  307,  308,  309,  310,  311,  312,
  2724.   313,  314,  315,  316,   -1,   -1,   -1,   -1,   -1,  322,
  2725.   323,  324,  325,  326,  327,  328,  329,  330,  331,   33,
  2726.    -1,  334,  335,  336,  337,   -1,   40,   -1,   -1,   -1,
  2727.    -1,   45,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  352,
  2728.   353,  354,  355,  356,   -1,   -1,   -1,   -1,   -1,   -1,
  2729.   363,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2730.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2731.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2732.    -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2733.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2734.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2735.    -1,   -1,   -1,  257,  258,  259,  260,   -1,   -1,  263,
  2736.    -1,   -1,   -1,   -1,  268,   -1,   33,  271,  272,   -1,
  2737.    -1,   -1,   -1,   40,   -1,   -1,   -1,   -1,   45,   -1,
  2738.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2739.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2740.    -1,  305,  306,  307,  308,  309,  310,  311,  312,  313,
  2741.   314,  315,  316,   -1,   -1,   -1,   -1,   -1,  322,  323,
  2742.   324,  325,  326,  327,  328,  329,  330,  331,   -1,   96,
  2743.   334,  335,  336,  337,   -1,   -1,   -1,   -1,   -1,   -1,
  2744.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  352,  353,
  2745.   354,  355,  356,   -1,   -1,   -1,   -1,   -1,   -1,  363,
  2746.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,
  2747.    -1,   -1,   -1,   -1,   40,   -1,   42,   -1,   -1,   45,
  2748.    -1,   -1,   -1,  257,  258,  259,  260,   -1,   -1,  263,
  2749.    -1,   -1,   -1,   -1,  268,   -1,   -1,  271,  272,   -1,
  2750.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2751.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2752.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2753.    96,  305,  306,  307,  308,  309,  310,  311,  312,  313,
  2754.   314,  315,  316,   -1,   -1,   -1,   -1,   -1,  322,  323,
  2755.   324,  325,  326,  327,  328,  329,  330,  331,   -1,   -1,
  2756.   334,  335,  336,  337,   -1,   -1,   -1,   -1,   -1,   -1,
  2757.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  352,  353,
  2758.   354,  355,  356,   -1,   -1,   -1,   -1,   33,   -1,  363,
  2759.   257,  258,  259,  260,   40,   -1,  263,   -1,   -1,   45,
  2760.    -1,  268,   -1,   -1,  271,  272,   -1,   -1,   -1,   -1,
  2761.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2762.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2763.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  305,  306,
  2764.   307,  308,  309,  310,  311,  312,  313,  314,  315,  316,
  2765.    96,   -1,   -1,   -1,   -1,  322,  323,  324,  325,  326,
  2766.   327,  328,  329,  330,  331,   -1,   -1,  334,  335,  336,
  2767.   337,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2768.    -1,   -1,   -1,   -1,   -1,  352,  353,  354,  355,  356,
  2769.    -1,  257,  258,  259,   -1,   -1,  363,  263,   -1,   -1,
  2770.    -1,   -1,  268,   33,   -1,  271,  272,   -1,   -1,   -1,
  2771.    40,   -1,   -1,   -1,   -1,   45,   -1,   -1,   -1,   -1,
  2772.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2773.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  305,
  2774.   306,  307,  308,  309,  310,  311,  312,  313,  314,  315,
  2775.   316,   -1,   -1,   -1,   -1,   -1,  322,  323,  324,  325,
  2776.   326,  327,  328,  329,  330,  331,   96,   -1,  334,  335,
  2777.   336,  337,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2778.    -1,   -1,   -1,   -1,   -1,   -1,  352,  353,  354,  355,
  2779.   356,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2780.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,
  2781.    -1,  257,  258,  259,   -1,   40,   -1,  263,   -1,   -1,
  2782.    45,   -1,  268,   -1,   -1,  271,  272,   -1,   -1,   -1,
  2783.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2784.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2785.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  305,
  2786.   306,  307,  308,  309,  310,  311,  312,  313,  314,  315,
  2787.   316,   96,   -1,   -1,   -1,   -1,  322,  323,  324,  325,
  2788.   326,  327,  328,  329,  330,  331,   -1,   -1,  334,  335,
  2789.   336,  337,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2790.    -1,   -1,   -1,   -1,   -1,   -1,  352,  353,  354,  355,
  2791.   356,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,
  2792.    -1,   -1,   -1,   45,   -1,   -1,   -1,  257,  258,  259,
  2793.    -1,   -1,   -1,  263,   -1,   -1,   -1,   -1,  268,   -1,
  2794.    -1,  271,  272,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2795.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2796.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2797.    -1,   -1,   -1,   -1,   96,  305,  306,  307,  308,  309,
  2798.   310,  311,  312,  313,  314,  315,  316,   -1,   -1,   -1,
  2799.    -1,   -1,  322,  323,  324,  325,  326,  327,  328,  329,
  2800.   330,  331,   -1,   -1,  334,  335,  336,  337,   -1,   -1,
  2801.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2802.    -1,   -1,  352,  353,  354,  355,  356,   -1,   -1,   -1,
  2803.    -1,   -1,  257,  258,  259,   -1,   -1,   -1,  263,   -1,
  2804.    -1,   -1,   -1,  268,   -1,   -1,  271,  272,   -1,   -1,
  2805.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2806.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2807.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2808.   305,  306,  307,  308,  309,  310,  311,  312,  313,  314,
  2809.   315,  316,   -1,   -1,   -1,   -1,   -1,  322,  323,  324,
  2810.   325,  326,  327,  328,  329,  330,  331,   -1,   -1,  334,
  2811.   335,  336,  337,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2812.    -1,   -1,   -1,   -1,   -1,   -1,   -1,  352,  353,  354,
  2813.   355,  356,   -1,   -1,   -1,  257,  258,  259,   -1,   -1,
  2814.    -1,  263,   -1,   -1,   -1,   -1,  268,   -1,   -1,   -1,
  2815.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2816.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2817.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2818.    -1,   -1,   -1,  305,  306,  307,  308,  309,  310,  311,
  2819.   312,  313,  314,  315,  316,   -1,   -1,   -1,   -1,   -1,
  2820.   322,  323,  324,  325,  326,  327,  328,  329,  330,  331,
  2821.    -1,   -1,  334,  335,  336,  337,   -1,   -1,   -1,   -1,
  2822.    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  2823.   352,  353,  354,  355,  356,
  2824. };
  2825. #define YYFINAL 2
  2826. #ifndef YYDEBUG
  2827. #define YYDEBUG 0
  2828. #endif
  2829. #define YYMAXTOKEN 366
  2830. #if YYDEBUG
  2831. char *yyname[] = {
  2832. "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  2833. "'!'",0,0,0,"'%'",0,0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,0,0,
  2834. 0,0,0,0,0,"':'","';'","'<'","'='","'>'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  2835. 0,0,0,0,0,0,0,0,"'['",0,"']'","'^'",0,"'`'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  2836. 0,0,0,0,0,0,0,0,"'{'",0,"'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  2837. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  2838. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  2839. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"LABEL","VARIABLE","NUMBER",
  2840. "TEXT","COMMAND_LINE","DELIMITED","ORDINAL","TH","LEFT_ARROW_HEAD",
  2841. "RIGHT_ARROW_HEAD","DOUBLE_ARROW_HEAD","LAST","UP","DOWN","LEFT","RIGHT","BOX",
  2842. "CIRCLE","ELLIPSE","ARC","LINE","ARROW","MOVE","SPLINE","HEIGHT","RADIUS",
  2843. "WIDTH","DIAMETER","FROM","TO","AT","WITH","BY","THEN","DOTTED","DASHED","CHOP",
  2844. "SAME","INVISIBLE","LJUST","RJUST","ABOVE","BELOW","OF","THE","WAY","BETWEEN",
  2845. "AND","HERE","DOT_N","DOT_E","DOT_W","DOT_S","DOT_NE","DOT_SE","DOT_NW",
  2846. "DOT_SW","DOT_C","DOT_START","DOT_END","DOT_X","DOT_Y","DOT_HT","DOT_WID",
  2847. "DOT_RAD","SIN","COS","ATAN2","LOG","EXP","SQRT","K_MAX","K_MIN","INT","RAND",
  2848. "COPY","THRU","TOP","BOTTOM","UPPER","LOWER","SH","PRINT","CW","CCW","FOR","DO",
  2849. "IF","ELSE","ANDAND","OROR","NOTEQUAL","EQUALEQUAL","LESSEQUAL","GREATEREQUAL",
  2850. "LEFT_CORNER","RIGHT_CORNER","CENTER","END","START","RESET","UNTIL","PLOT",
  2851. "THICKNESS","FILL","ALIGNED","SPRINTF","COMMAND","DEFINE","UNDEF",
  2852. };
  2853. char *yyrule[] = {
  2854. "$accept : top",
  2855. "top : optional_separator",
  2856. "top : element_list",
  2857. "element_list : optional_separator middle_element_list optional_separator",
  2858. "middle_element_list : element",
  2859. "middle_element_list : middle_element_list separator element",
  2860. "optional_separator :",
  2861. "optional_separator : separator",
  2862. "separator : ';'",
  2863. "separator : separator ';'",
  2864. "placeless_element : VARIABLE '=' any_expr",
  2865. "placeless_element : VARIABLE ':' '=' any_expr",
  2866. "placeless_element : UP",
  2867. "placeless_element : DOWN",
  2868. "placeless_element : LEFT",
  2869. "placeless_element : RIGHT",
  2870. "placeless_element : COMMAND_LINE",
  2871. "placeless_element : COMMAND print_args",
  2872. "placeless_element : PRINT print_args",
  2873. "$$1 :",
  2874. "placeless_element : SH $$1 DELIMITED",
  2875. "placeless_element : COPY TEXT",
  2876. "$$2 :",
  2877. "$$3 :",
  2878. "placeless_element : COPY TEXT THRU $$2 DELIMITED $$3 until",
  2879. "$$4 :",
  2880. "$$5 :",
  2881. "placeless_element : COPY THRU $$4 DELIMITED $$5 until",
  2882. "$$6 :",
  2883. "placeless_element : FOR VARIABLE '=' expr TO expr optional_by DO $$6 DELIMITED",
  2884. "placeless_element : simple_if",
  2885. "$$7 :",
  2886. "placeless_element : simple_if ELSE $$7 DELIMITED",
  2887. "placeless_element : reset_variables",
  2888. "placeless_element : RESET",
  2889. "reset_variables : RESET VARIABLE",
  2890. "reset_variables : reset_variables VARIABLE",
  2891. "reset_variables : reset_variables ',' VARIABLE",
  2892. "print_args : print_arg",
  2893. "print_args : print_args print_arg",
  2894. "print_arg : expr",
  2895. "print_arg : text",
  2896. "print_arg : position",
  2897. "$$8 :",
  2898. "simple_if : IF any_expr THEN $$8 DELIMITED",
  2899. "until :",
  2900. "until : UNTIL TEXT",
  2901. "any_expr : expr",
  2902. "any_expr : text_expr",
  2903. "text_expr : text EQUALEQUAL text",
  2904. "text_expr : text NOTEQUAL text",
  2905. "text_expr : text_expr ANDAND text_expr",
  2906. "text_expr : text_expr ANDAND expr",
  2907. "text_expr : expr ANDAND text_expr",
  2908. "text_expr : text_expr OROR text_expr",
  2909. "text_expr : text_expr OROR expr",
  2910. "text_expr : expr OROR text_expr",
  2911. "text_expr : '!' text_expr",
  2912. "optional_by :",
  2913. "optional_by : BY expr",
  2914. "optional_by : BY '*' expr",
  2915. "element : object_spec",
  2916. "element : LABEL ':' optional_separator element",
  2917. "element : LABEL ':' optional_separator position_not_place",
  2918. "element : LABEL ':' optional_separator place",
  2919. "$$9 :",
  2920. "$$10 :",
  2921. "element : '{' $$9 element_list '}' $$10 optional_element",
  2922. "element : placeless_element",
  2923. "optional_element :",
  2924. "optional_element : element",
  2925. "object_spec : BOX",
  2926. "object_spec : CIRCLE",
  2927. "object_spec : ELLIPSE",
  2928. "object_spec : ARC",
  2929. "object_spec : LINE",
  2930. "object_spec : ARROW",
  2931. "object_spec : MOVE",
  2932. "object_spec : SPLINE",
  2933. "object_spec : text",
  2934. "object_spec : PLOT expr",
  2935. "object_spec : PLOT expr text",
  2936. "$$11 :",
  2937. "object_spec : '[' $$11 element_list ']'",
  2938. "object_spec : object_spec HEIGHT expr",
  2939. "object_spec : object_spec RADIUS expr",
  2940. "object_spec : object_spec WIDTH expr",
  2941. "object_spec : object_spec DIAMETER expr",
  2942. "object_spec : object_spec expr",
  2943. "object_spec : object_spec UP",
  2944. "object_spec : object_spec UP expr",
  2945. "object_spec : object_spec DOWN",
  2946. "object_spec : object_spec DOWN expr",
  2947. "object_spec : object_spec RIGHT",
  2948. "object_spec : object_spec RIGHT expr",
  2949. "object_spec : object_spec LEFT",
  2950. "object_spec : object_spec LEFT expr",
  2951. "object_spec : object_spec FROM position",
  2952. "object_spec : object_spec TO position",
  2953. "object_spec : object_spec AT position",
  2954. "object_spec : object_spec WITH path",
  2955. "object_spec : object_spec BY expr_pair",
  2956. "object_spec : object_spec THEN",
  2957. "object_spec : object_spec DOTTED",
  2958. "object_spec : object_spec DOTTED expr",
  2959. "object_spec : object_spec DASHED",
  2960. "object_spec : object_spec DASHED expr",
  2961. "object_spec : object_spec FILL",
  2962. "object_spec : object_spec FILL expr",
  2963. "object_spec : object_spec CHOP",
  2964. "object_spec : object_spec CHOP expr",
  2965. "object_spec : object_spec SAME",
  2966. "object_spec : object_spec INVISIBLE",
  2967. "object_spec : object_spec LEFT_ARROW_HEAD",
  2968. "object_spec : object_spec RIGHT_ARROW_HEAD",
  2969. "object_spec : object_spec DOUBLE_ARROW_HEAD",
  2970. "object_spec : object_spec CW",
  2971. "object_spec : object_spec CCW",
  2972. "object_spec : object_spec text",
  2973. "object_spec : object_spec LJUST",
  2974. "object_spec : object_spec RJUST",
  2975. "object_spec : object_spec ABOVE",
  2976. "object_spec : object_spec BELOW",
  2977. "object_spec : object_spec THICKNESS expr",
  2978. "object_spec : object_spec ALIGNED",
  2979. "text : TEXT",
  2980. "text : SPRINTF '(' TEXT sprintf_args ')'",
  2981. "sprintf_args :",
  2982. "sprintf_args : sprintf_args ',' expr",
  2983. "position : position_not_place",
  2984. "position : place",
  2985. "position_not_place : expr_pair",
  2986. "position_not_place : position '+' expr_pair",
  2987. "position_not_place : position '-' expr_pair",
  2988. "position_not_place : '(' position ',' position ')'",
  2989. "position_not_place : expr between position AND position",
  2990. "position_not_place : expr '<' position ',' position '>'",
  2991. "between : BETWEEN",
  2992. "between : OF THE WAY BETWEEN",
  2993. "expr_pair : expr ',' expr",
  2994. "expr_pair : '(' expr_pair ')'",
  2995. "place : label",
  2996. "place : label corner",
  2997. "place : corner label",
  2998. "place : corner OF label",
  2999. "place : HERE",
  3000. "label : LABEL",
  3001. "label : nth_primitive",
  3002. "label : label '.' LABEL",
  3003. "ordinal : ORDINAL",
  3004. "ordinal : '`' any_expr TH",
  3005. "optional_ordinal_last : LAST",
  3006. "optional_ordinal_last : ordinal LAST",
  3007. "nth_primitive : ordinal object_type",
  3008. "nth_primitive : optional_ordinal_last object_type",
  3009. "object_type : BOX",
  3010. "object_type : CIRCLE",
  3011. "object_type : ELLIPSE",
  3012. "object_type : ARC",
  3013. "object_type : LINE",
  3014. "object_type : ARROW",
  3015. "object_type : SPLINE",
  3016. "object_type : '[' ']'",
  3017. "object_type : TEXT",
  3018. "label_path : '.' LABEL",
  3019. "label_path : label_path '.' LABEL",
  3020. "relative_path : corner",
  3021. "relative_path : label_path",
  3022. "relative_path : label_path corner",
  3023. "path : relative_path",
  3024. "path : ORDINAL LAST object_type relative_path",
  3025. "path : LAST object_type relative_path",
  3026. "path : ORDINAL object_type relative_path",
  3027. "path : LABEL relative_path",
  3028. "corner : DOT_N",
  3029. "corner : DOT_E",
  3030. "corner : DOT_W",
  3031. "corner : DOT_S",
  3032. "corner : DOT_NE",
  3033. "corner : DOT_SE",
  3034. "corner : DOT_NW",
  3035. "corner : DOT_SW",
  3036. "corner : DOT_C",
  3037. "corner : DOT_START",
  3038. "corner : DOT_END",
  3039. "corner : TOP",
  3040. "corner : BOTTOM",
  3041. "corner : LEFT",
  3042. "corner : RIGHT",
  3043. "corner : UPPER LEFT",
  3044. "corner : LOWER LEFT",
  3045. "corner : UPPER RIGHT",
  3046. "corner : LOWER RIGHT",
  3047. "corner : LEFT_CORNER",
  3048. "corner : RIGHT_CORNER",
  3049. "corner : UPPER LEFT_CORNER",
  3050. "corner : LOWER LEFT_CORNER",
  3051. "corner : UPPER RIGHT_CORNER",
  3052. "corner : LOWER RIGHT_CORNER",
  3053. "corner : CENTER",
  3054. "corner : START",
  3055. "corner : END",
  3056. "expr : VARIABLE",
  3057. "expr : NUMBER",
  3058. "expr : place DOT_X",
  3059. "expr : place DOT_Y",
  3060. "expr : place DOT_HT",
  3061. "expr : place DOT_WID",
  3062. "expr : place DOT_RAD",
  3063. "expr : expr '+' expr",
  3064. "expr : expr '-' expr",
  3065. "expr : expr '*' expr",
  3066. "expr : expr '/' expr",
  3067. "expr : expr '%' expr",
  3068. "expr : expr '^' expr",
  3069. "expr : '-' expr",
  3070. "expr : '(' any_expr ')'",
  3071. "expr : SIN '(' any_expr ')'",
  3072. "expr : COS '(' any_expr ')'",
  3073. "expr : ATAN2 '(' any_expr ',' any_expr ')'",
  3074. "expr : LOG '(' any_expr ')'",
  3075. "expr : EXP '(' any_expr ')'",
  3076. "expr : SQRT '(' any_expr ')'",
  3077. "expr : K_MAX '(' any_expr ',' any_expr ')'",
  3078. "expr : K_MIN '(' any_expr ',' any_expr ')'",
  3079. "expr : INT '(' any_expr ')'",
  3080. "expr : RAND '(' any_expr ')'",
  3081. "expr : RAND '(' ')'",
  3082. "expr : expr '<' expr",
  3083. "expr : expr LESSEQUAL expr",
  3084. "expr : expr '>' expr",
  3085. "expr : expr GREATEREQUAL expr",
  3086. "expr : expr EQUALEQUAL expr",
  3087. "expr : expr NOTEQUAL expr",
  3088. "expr : expr ANDAND expr",
  3089. "expr : expr OROR expr",
  3090. "expr : '!' expr",
  3091. };
  3092. #endif
  3093. #define yyclearin (yychar=(-1))
  3094. #define yyerrok (yyerrflag=0)
  3095. #ifdef YYSTACKSIZE
  3096. #ifndef YYMAXDEPTH
  3097. #define YYMAXDEPTH YYSTACKSIZE
  3098. #endif
  3099. #else
  3100. #ifdef YYMAXDEPTH
  3101. #define YYSTACKSIZE YYMAXDEPTH
  3102. #else
  3103. #define YYSTACKSIZE 500
  3104. #define YYMAXDEPTH 500
  3105. #endif
  3106. #endif
  3107. int yydebug;
  3108. int yynerrs;
  3109. int yyerrflag;
  3110. int yychar;
  3111. short *yyssp;
  3112. YYSTYPE *yyvsp;
  3113. YYSTYPE yyval;
  3114. YYSTYPE yylval;
  3115. short yyss[YYSTACKSIZE];
  3116. YYSTYPE yyvs[YYSTACKSIZE];
  3117. #define yystacksize YYSTACKSIZE
  3118. #line 1514 "/u/jjc/groff/pic/pic.y"
  3119.  
  3120. /* bison defines const to be empty unless __STDC__ is defined, which it
  3121. isn't under cfront */
  3122.  
  3123. #ifdef const
  3124. #undef const
  3125. #endif
  3126.  
  3127. static struct {
  3128.   const char *name;
  3129.   double val;
  3130.   int scaled;             // non-zero if val should be multiplied by scale
  3131. } defaults_table[] = {
  3132.   { "arcrad", .25, 1 },
  3133.   { "arrowht", .1, 1 },
  3134.   { "arrowwid", .05, 1 },
  3135.   { "circlerad", .25, 1 },
  3136.   { "boxht", .5, 1 },
  3137.   { "boxwid", .75, 1 },
  3138.   { "boxrad", 0.0, 1 },
  3139.   { "dashwid", .05, 1 },
  3140.   { "ellipseht", .5, 1 },
  3141.   { "ellipsewid", .75, 1 },
  3142.   { "moveht", .5, 1 },
  3143.   { "movewid", .5, 1 },
  3144.   { "lineht", .5, 1 },
  3145.   { "linewid", .5, 1 },
  3146.   { "textht", 0.0, 1 },
  3147.   { "textwid", 0.0, 1 },
  3148.   { "scale", 1.0, 0 },
  3149.   { "linethick", -1.0, 0 },        // in points
  3150.   { "fillval", .5, 0 },
  3151.   { "arrowhead", 1.0, 0 },
  3152.   { "maxpswid", 8.5, 0 },
  3153.   { "maxpsht", 11.0, 0 },
  3154. };
  3155.  
  3156. place *lookup_label(const char *label)
  3157. {
  3158.   saved_state *state = current_saved_state;
  3159.   PTABLE(place) *tbl = current_table;
  3160.   for (;;) {
  3161.     place *pl = tbl->lookup(label);
  3162.     if (pl)
  3163.       return pl;
  3164.     if (!state)
  3165.       return 0;
  3166.     tbl = state->tbl;
  3167.     state = state->prev;
  3168.   }
  3169. }
  3170.  
  3171. void define_label(const char *label, const place *pl)
  3172. {
  3173.   place *p = new place;
  3174.   *p = *pl;
  3175.   current_table->define(label, p);
  3176. }
  3177.  
  3178. int lookup_variable(const char *name, double *val)
  3179. {
  3180.   place *pl = lookup_label(name);
  3181.   if (pl) {
  3182.     *val = pl->x;
  3183.     return 1;
  3184.   }
  3185.   return 0;
  3186. }
  3187.  
  3188. void define_variable(const char *name, double val)
  3189. {
  3190.   place *p = new place;
  3191.   p->obj = 0;
  3192.   p->x = val;
  3193.   p->y = 0.0;
  3194.   current_table->define(name, p);
  3195.   if (strcmp(name, "scale") == 0) {
  3196.     // When the scale changes, reset all scaled pre-defined variables to
  3197.     // their default values.
  3198.     for (int i = 0; i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++) 
  3199.       if (defaults_table[i].scaled)
  3200.     define_variable(defaults_table[i].name, val*defaults_table[i].val);
  3201.   }
  3202. }
  3203.  
  3204. // called once only (not once per parse)
  3205.  
  3206. void parse_init()
  3207. {
  3208.   current_direction = RIGHT_DIRECTION;
  3209.   current_position.x = 0.0;
  3210.   current_position.y = 0.0;
  3211.   // This resets everything to its default value.
  3212.   reset_all();
  3213. }
  3214.  
  3215. void reset(const char *nm)
  3216. {
  3217.   for (int i = 0; i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++)
  3218.     if (strcmp(nm, defaults_table[i].name) == 0) {
  3219.       double val = defaults_table[i].val;
  3220.       if (defaults_table[i].scaled) {
  3221.     double scale;
  3222.     lookup_variable("scale", &scale);
  3223.     val *= scale;
  3224.       }
  3225.       define_variable(defaults_table[i].name, val);
  3226.       return;
  3227.     }
  3228.   lex_error("`%1' is not a predefined variable", nm);
  3229. }
  3230.  
  3231. void reset_all()
  3232. {
  3233.   // We only have to explicitly reset the pre-defined variables that
  3234.   // aren't scaled because `scale' is not scaled, and changing the
  3235.   // value of `scale' will reset all the pre-defined variables that
  3236.   // are scaled.
  3237.   for (int i = 0; i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++)
  3238.     if (!defaults_table[i].scaled)
  3239.       define_variable(defaults_table[i].name, defaults_table[i].val);
  3240. }
  3241.  
  3242. // called after each parse
  3243.  
  3244. void parse_cleanup()
  3245. {
  3246.   while (current_saved_state != 0) {
  3247.     delete current_table;
  3248.     current_table = current_saved_state->tbl;
  3249.     saved_state *tem = current_saved_state;
  3250.     current_saved_state = current_saved_state->prev;
  3251.     delete tem;
  3252.   }
  3253.   assert(current_table == &top_table);
  3254.   PTABLE_ITERATOR(place) iter(current_table);
  3255.   const char *key;
  3256.   place *pl;
  3257.   while (iter.next(&key, &pl))
  3258.     if (pl->obj != 0) {
  3259.       position pos = pl->obj->origin();
  3260.       pl->obj = 0;
  3261.       pl->x = pos.x;
  3262.       pl->y = pos.y;
  3263.     }
  3264.   while (olist.head != 0) {
  3265.     object *tem = olist.head;
  3266.     olist.head = olist.head->next;
  3267.     delete tem;
  3268.   }
  3269.   olist.tail = 0;
  3270.   current_direction = RIGHT_DIRECTION;
  3271.   current_position.x = 0.0;
  3272.   current_position.y = 0.0;
  3273. }
  3274.  
  3275. const char *ordinal_postfix(int n)
  3276. {
  3277.   if (n < 10 || n > 20)
  3278.     switch (n % 10) {
  3279.     case 1:
  3280.       return "st";
  3281.     case 2:
  3282.       return "nd";
  3283.     case 3:
  3284.       return "rd";
  3285.     }
  3286.   return "th";
  3287. }
  3288.  
  3289. const char *object_type_name(object_type type)
  3290. {
  3291.   switch (type) {
  3292.   case BOX_OBJECT:
  3293.     return "box";
  3294.   case CIRCLE_OBJECT:
  3295.     return "circle";
  3296.   case ELLIPSE_OBJECT:
  3297.     return "ellipse";
  3298.   case ARC_OBJECT:
  3299.     return "arc";
  3300.   case SPLINE_OBJECT:
  3301.     return "spline";
  3302.   case LINE_OBJECT:
  3303.     return "line";
  3304.   case ARROW_OBJECT:
  3305.     return "arrow";
  3306.   case MOVE_OBJECT:
  3307.     return "move";
  3308.   case TEXT_OBJECT:
  3309.     return "\"\"";
  3310.   case BLOCK_OBJECT:
  3311.     return "[]";
  3312.   case OTHER_OBJECT:
  3313.   case MARK_OBJECT:
  3314.   default:
  3315.     break;
  3316.   }
  3317.   return "object";
  3318. }
  3319.  
  3320. static char sprintf_buf[1024];
  3321.  
  3322. char *format_number(const char *form, double n)
  3323. {
  3324.   if (form == 0)
  3325.     form = "%g";
  3326.   else {
  3327.     // this is a fairly feeble attempt at validation of the format
  3328.     int nspecs = 0;
  3329.     for (const char *p = form; *p != '\0'; p++)
  3330.       if (*p == '%') {
  3331.     if (p[1] == '%')
  3332.       p++;
  3333.     else
  3334.       nspecs++;
  3335.       }
  3336.     if (nspecs > 1) {
  3337.       lex_error("bad format `%1'", form);
  3338.       return strsave(form);
  3339.     }
  3340.   }
  3341.   sprintf(sprintf_buf, form, n);
  3342.   return strsave(sprintf_buf);
  3343. }
  3344.  
  3345. char *do_sprintf(const char *form, const double *v, int nv)
  3346. {
  3347.   string result;
  3348.   int i = 0;
  3349.   string one_format;
  3350.   while (*form) {
  3351.     if (*form == '%') {
  3352.       one_format += *form++;
  3353.       for (; *form != '\0' && strchr("#-+ 0123456789.", *form) != 0; form++)
  3354.     one_format += *form;
  3355.       if (*form == '\0' || strchr("eEfgG%", *form) == 0) {
  3356.     lex_error("bad sprintf format");
  3357.     result += one_format;
  3358.     result += form;
  3359.     break;
  3360.       }
  3361.       if (*form == '%') {
  3362.     one_format += *form++;
  3363.     one_format += '\0';
  3364.     sprintf(sprintf_buf, one_format.contents());
  3365.       }
  3366.       else {
  3367.     if (i >= nv) {
  3368.       lex_error("too few arguments to sprintf");
  3369.       result += one_format;
  3370.       result += form;
  3371.       break;
  3372.     }
  3373.     one_format += *form++;
  3374.     one_format += '\0';
  3375.     sprintf(sprintf_buf, one_format.contents(), v[i++]);
  3376.       }
  3377.       one_format.clear();
  3378.       result += sprintf_buf;
  3379.     }
  3380.     else
  3381.       result += *form++;
  3382.   }
  3383.   result += '\0';
  3384.   return strsave(result.contents());
  3385. }
  3386. #line 3387 "y.tab.c"
  3387. #define YYABORT goto yyabort
  3388. #define YYACCEPT goto yyaccept
  3389. #define YYERROR goto yyerrlab
  3390. int
  3391. yyparse()
  3392. {
  3393.     register int yym, yyn, yystate;
  3394. #if YYDEBUG
  3395.     register char *yys;
  3396.     extern char *getenv();
  3397.  
  3398.     if (yys = getenv("YYDEBUG"))
  3399.     {
  3400.         yyn = *yys;
  3401.         if (yyn >= '0' && yyn <= '9')
  3402.             yydebug = yyn - '0';
  3403.     }
  3404. #endif
  3405.  
  3406.     yynerrs = 0;
  3407.     yyerrflag = 0;
  3408.     yychar = (-1);
  3409.  
  3410.     yyssp = yyss;
  3411.     yyvsp = yyvs;
  3412.     *yyssp = yystate = 0;
  3413.  
  3414. yyloop:
  3415.     if (yyn = yydefred[yystate]) goto yyreduce;
  3416.     if (yychar < 0)
  3417.     {
  3418.         if ((yychar = yylex()) < 0) yychar = 0;
  3419. #if YYDEBUG
  3420.         if (yydebug)
  3421.         {
  3422.             yys = 0;
  3423.             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  3424.             if (!yys) yys = "illegal-symbol";
  3425.             printf("yydebug: state %d, reading %d (%s)\n", yystate,
  3426.                     yychar, yys);
  3427.         }
  3428. #endif
  3429.     }
  3430.     if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
  3431.             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
  3432.     {
  3433. #if YYDEBUG
  3434.         if (yydebug)
  3435.             printf("yydebug: state %d, shifting to state %d\n",
  3436.                     yystate, yytable[yyn]);
  3437. #endif
  3438.         if (yyssp >= yyss + yystacksize - 1)
  3439.         {
  3440.             goto yyoverflow;
  3441.         }
  3442.         *++yyssp = yystate = yytable[yyn];
  3443.         *++yyvsp = yylval;
  3444.         yychar = (-1);
  3445.         if (yyerrflag > 0)  --yyerrflag;
  3446.         goto yyloop;
  3447.     }
  3448.     if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
  3449.             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
  3450.     {
  3451.         yyn = yytable[yyn];
  3452.         goto yyreduce;
  3453.     }
  3454.     if (yyerrflag) goto yyinrecovery;
  3455. #ifdef lint
  3456.     goto yynewerror;
  3457. #endif
  3458. yynewerror:
  3459.     yyerror("syntax error");
  3460. #ifdef lint
  3461.     goto yyerrlab;
  3462. #endif
  3463. yyerrlab:
  3464.     ++yynerrs;
  3465. yyinrecovery:
  3466.     if (yyerrflag < 3)
  3467.     {
  3468.         yyerrflag = 3;
  3469.         for (;;)
  3470.         {
  3471.             if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
  3472.                     yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
  3473.             {
  3474. #if YYDEBUG
  3475.                 if (yydebug)
  3476.                     printf("yydebug: state %d, error recovery shifting\
  3477.  to state %d\n", *yyssp, yytable[yyn]);
  3478. #endif
  3479.                 if (yyssp >= yyss + yystacksize - 1)
  3480.                 {
  3481.                     goto yyoverflow;
  3482.                 }
  3483.                 *++yyssp = yystate = yytable[yyn];
  3484.                 *++yyvsp = yylval;
  3485.                 goto yyloop;
  3486.             }
  3487.             else
  3488.             {
  3489. #if YYDEBUG
  3490.                 if (yydebug)
  3491.                     printf("yydebug: error recovery discarding state %d\n",
  3492.                             *yyssp);
  3493. #endif
  3494.                 if (yyssp <= yyss) goto yyabort;
  3495.                 --yyssp;
  3496.                 --yyvsp;
  3497.             }
  3498.         }
  3499.     }
  3500.     else
  3501.     {
  3502.         if (yychar == 0) goto yyabort;
  3503. #if YYDEBUG
  3504.         if (yydebug)
  3505.         {
  3506.             yys = 0;
  3507.             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  3508.             if (!yys) yys = "illegal-symbol";
  3509.             printf("yydebug: state %d, error recovery discards token %d (%s)\n",
  3510.                     yystate, yychar, yys);
  3511.         }
  3512. #endif
  3513.         yychar = (-1);
  3514.         goto yyloop;
  3515.     }
  3516. yyreduce:
  3517. #if YYDEBUG
  3518.     if (yydebug)
  3519.         printf("yydebug: state %d, reducing by rule %d (%s)\n",
  3520.                 yystate, yyn, yyrule[yyn]);
  3521. #endif
  3522.     yym = yylen[yyn];
  3523.     yyval = yyvsp[1-yym];
  3524.     switch (yyn)
  3525.     {
  3526. case 2:
  3527. #line 272 "/u/jjc/groff/pic/pic.y"
  3528. {
  3529.           if (olist.head)
  3530.             print_picture(olist.head);
  3531.         }
  3532. break;
  3533. case 3:
  3534. #line 281 "/u/jjc/groff/pic/pic.y"
  3535. { yyval.pl = yyvsp[-1].pl; }
  3536. break;
  3537. case 4:
  3538. #line 286 "/u/jjc/groff/pic/pic.y"
  3539. { yyval.pl = yyvsp[0].pl; }
  3540. break;
  3541. case 5:
  3542. #line 288 "/u/jjc/groff/pic/pic.y"
  3543. { yyval.pl = yyvsp[-2].pl; }
  3544. break;
  3545. case 10:
  3546. #line 303 "/u/jjc/groff/pic/pic.y"
  3547. {
  3548.           define_variable(yyvsp[-2].str, yyvsp[0].x);
  3549.           a_delete yyvsp[-2].str;
  3550.         }
  3551. break;
  3552. case 11:
  3553. #line 308 "/u/jjc/groff/pic/pic.y"
  3554. {
  3555.           place *p = lookup_label(yyvsp[-3].str);
  3556.           if (!p) {
  3557.             lex_error("variable `%1' not defined", yyvsp[-3].str);
  3558.             YYABORT;
  3559.           }
  3560.           p->obj = 0;
  3561.           p->x = yyvsp[0].x;
  3562.           p->y = 0.0;
  3563.           a_delete yyvsp[-3].str;
  3564.         }
  3565. break;
  3566. case 12:
  3567. #line 320 "/u/jjc/groff/pic/pic.y"
  3568. { current_direction = UP_DIRECTION; }
  3569. break;
  3570. case 13:
  3571. #line 322 "/u/jjc/groff/pic/pic.y"
  3572. { current_direction = DOWN_DIRECTION; }
  3573. break;
  3574. case 14:
  3575. #line 324 "/u/jjc/groff/pic/pic.y"
  3576. { current_direction = LEFT_DIRECTION; }
  3577. break;
  3578. case 15:
  3579. #line 326 "/u/jjc/groff/pic/pic.y"
  3580. { current_direction = RIGHT_DIRECTION; }
  3581. break;
  3582. case 16:
  3583. #line 328 "/u/jjc/groff/pic/pic.y"
  3584. {
  3585.           olist.append(make_command_object(yyvsp[0].lstr.str, yyvsp[0].lstr.filename,
  3586.                            yyvsp[0].lstr.lineno));
  3587.         }
  3588. break;
  3589. case 17:
  3590. #line 333 "/u/jjc/groff/pic/pic.y"
  3591. {
  3592.           olist.append(make_command_object(yyvsp[0].lstr.str, yyvsp[0].lstr.filename,
  3593.                            yyvsp[0].lstr.lineno));
  3594.         }
  3595. break;
  3596. case 18:
  3597. #line 338 "/u/jjc/groff/pic/pic.y"
  3598. {
  3599.           fprintf(stderr, "%s\n", yyvsp[0].lstr.str);
  3600.           a_delete yyvsp[0].lstr.str;
  3601.               fflush(stderr);
  3602.         }
  3603. break;
  3604. case 19:
  3605. #line 344 "/u/jjc/groff/pic/pic.y"
  3606. { delim_flag = 1; }
  3607. break;
  3608. case 20:
  3609. #line 346 "/u/jjc/groff/pic/pic.y"
  3610. {
  3611.           delim_flag = 0;
  3612.           system(yyvsp[0].str);
  3613.           a_delete yyvsp[0].str;
  3614.         }
  3615. break;
  3616. case 21:
  3617. #line 352 "/u/jjc/groff/pic/pic.y"
  3618. {
  3619.           if (yychar < 0)
  3620.             do_lookahead();
  3621.           do_copy(yyvsp[0].lstr.str);
  3622.           /* do not delete the filename*/
  3623.         }
  3624. break;
  3625. case 22:
  3626. #line 359 "/u/jjc/groff/pic/pic.y"
  3627. { delim_flag = 2; }
  3628. break;
  3629. case 23:
  3630. #line 361 "/u/jjc/groff/pic/pic.y"
  3631. { delim_flag = 0; }
  3632. break;
  3633. case 24:
  3634. #line 363 "/u/jjc/groff/pic/pic.y"
  3635. {
  3636.           if (yychar < 0)
  3637.             do_lookahead();
  3638.           copy_file_thru(yyvsp[-5].lstr.str, yyvsp[-2].str, yyvsp[0].str);
  3639.           /* do not delete the filename*/
  3640.           a_delete yyvsp[-2].str;
  3641.           a_delete yyvsp[0].str;
  3642.         }
  3643. break;
  3644. case 25:
  3645. #line 372 "/u/jjc/groff/pic/pic.y"
  3646. { delim_flag = 2; }
  3647. break;
  3648. case 26:
  3649. #line 374 "/u/jjc/groff/pic/pic.y"
  3650. { delim_flag = 0; }
  3651. break;
  3652. case 27:
  3653. #line 376 "/u/jjc/groff/pic/pic.y"
  3654. {
  3655.           if (yychar < 0)
  3656.             do_lookahead();
  3657.           copy_rest_thru(yyvsp[-2].str, yyvsp[0].str);
  3658.           a_delete yyvsp[-2].str;
  3659.           a_delete yyvsp[0].str;
  3660.         }
  3661. break;
  3662. case 28:
  3663. #line 384 "/u/jjc/groff/pic/pic.y"
  3664. { delim_flag = 1; }
  3665. break;
  3666. case 29:
  3667. #line 386 "/u/jjc/groff/pic/pic.y"
  3668. {
  3669.           delim_flag = 0;
  3670.           if (yychar < 0)
  3671.             do_lookahead();
  3672.           do_for(yyvsp[-8].str, yyvsp[-6].x, yyvsp[-4].x, yyvsp[-3].by.is_multiplicative, yyvsp[-3].by.val, yyvsp[0].str); 
  3673.         }
  3674. break;
  3675. case 30:
  3676. #line 393 "/u/jjc/groff/pic/pic.y"
  3677. {
  3678.           if (yychar < 0)
  3679.             do_lookahead();
  3680.           if (yyvsp[0].if_data.x != 0.0)
  3681.             push_body(yyvsp[0].if_data.body);
  3682.           a_delete yyvsp[0].if_data.body;
  3683.         }
  3684. break;
  3685. case 31:
  3686. #line 401 "/u/jjc/groff/pic/pic.y"
  3687. { delim_flag = 1; }
  3688. break;
  3689. case 32:
  3690. #line 403 "/u/jjc/groff/pic/pic.y"
  3691. {
  3692.           delim_flag = 0;
  3693.           if (yychar < 0)
  3694.             do_lookahead();
  3695.           if (yyvsp[-3].if_data.x != 0.0)
  3696.             push_body(yyvsp[-3].if_data.body);
  3697.           else
  3698.             push_body(yyvsp[0].str);
  3699.           a_delete yyvsp[-3].if_data.body;
  3700.           a_delete yyvsp[0].str;
  3701.         }
  3702. break;
  3703. case 34:
  3704. #line 416 "/u/jjc/groff/pic/pic.y"
  3705. { define_variable("scale", 1.0); }
  3706. break;
  3707. case 35:
  3708. #line 421 "/u/jjc/groff/pic/pic.y"
  3709. { reset(yyvsp[0].str); a_delete yyvsp[0].str; }
  3710. break;
  3711. case 36:
  3712. #line 423 "/u/jjc/groff/pic/pic.y"
  3713. { reset(yyvsp[0].str); a_delete yyvsp[0].str; }
  3714. break;
  3715. case 37:
  3716. #line 425 "/u/jjc/groff/pic/pic.y"
  3717. { reset(yyvsp[0].str); a_delete yyvsp[0].str; }
  3718. break;
  3719. case 38:
  3720. #line 430 "/u/jjc/groff/pic/pic.y"
  3721. { yyval.lstr = yyvsp[0].lstr; }
  3722. break;
  3723. case 39:
  3724. #line 432 "/u/jjc/groff/pic/pic.y"
  3725. {
  3726.           yyval.lstr.str = new char[strlen(yyvsp[-1].lstr.str) + strlen(yyvsp[0].lstr.str) + 1];
  3727.           strcpy(yyval.lstr.str, yyvsp[-1].lstr.str);
  3728.           strcat(yyval.lstr.str, yyvsp[0].lstr.str);
  3729.           a_delete yyvsp[-1].lstr.str;
  3730.           a_delete yyvsp[0].lstr.str;
  3731.           if (yyvsp[-1].lstr.filename) {
  3732.             yyval.lstr.filename = yyvsp[-1].lstr.filename;
  3733.             yyval.lstr.lineno = yyvsp[-1].lstr.lineno;
  3734.           }
  3735.           else if (yyvsp[0].lstr.filename) {
  3736.             yyval.lstr.filename = yyvsp[0].lstr.filename;
  3737.             yyval.lstr.lineno = yyvsp[0].lstr.lineno;
  3738.           }
  3739.         }
  3740. break;
  3741. case 40:
  3742. #line 451 "/u/jjc/groff/pic/pic.y"
  3743. {
  3744.           yyval.lstr.str = new char[GDIGITS + 1];
  3745.           sprintf(yyval.lstr.str, "%g", yyvsp[0].x);
  3746.           yyval.lstr.filename = 0;
  3747.           yyval.lstr.lineno = 0;
  3748.         }
  3749. break;
  3750. case 41:
  3751. #line 458 "/u/jjc/groff/pic/pic.y"
  3752. { yyval.lstr = yyvsp[0].lstr; }
  3753. break;
  3754. case 42:
  3755. #line 460 "/u/jjc/groff/pic/pic.y"
  3756. {
  3757.           yyval.lstr.str = new char[GDIGITS + 2 + GDIGITS + 1];
  3758.           sprintf(yyval.lstr.str, "%g, %g", yyvsp[0].pair.x, yyvsp[0].pair.y);
  3759.           yyval.lstr.filename = 0;
  3760.           yyval.lstr.lineno = 0;
  3761.         }
  3762. break;
  3763. case 43:
  3764. #line 469 "/u/jjc/groff/pic/pic.y"
  3765. { delim_flag = 1; }
  3766. break;
  3767. case 44:
  3768. #line 471 "/u/jjc/groff/pic/pic.y"
  3769. { delim_flag = 0; yyval.if_data.x = yyvsp[-3].x; yyval.if_data.body = yyvsp[0].str; }
  3770. break;
  3771. case 45:
  3772. #line 476 "/u/jjc/groff/pic/pic.y"
  3773. { yyval.str = 0; }
  3774. break;
  3775. case 46:
  3776. #line 478 "/u/jjc/groff/pic/pic.y"
  3777. { yyval.str = yyvsp[0].lstr.str; }
  3778. break;
  3779. case 47:
  3780. #line 483 "/u/jjc/groff/pic/pic.y"
  3781. { yyval.x = yyvsp[0].x; }
  3782. break;
  3783. case 48:
  3784. #line 485 "/u/jjc/groff/pic/pic.y"
  3785. { yyval.x = yyvsp[0].x; }
  3786. break;
  3787. case 49:
  3788. #line 490 "/u/jjc/groff/pic/pic.y"
  3789. {
  3790.           yyval.x = strcmp(yyvsp[-2].lstr.str, yyvsp[0].lstr.str) == 0;
  3791.           a_delete yyvsp[-2].lstr.str;
  3792.           a_delete yyvsp[0].lstr.str;
  3793.         }
  3794. break;
  3795. case 50:
  3796. #line 496 "/u/jjc/groff/pic/pic.y"
  3797. {
  3798.           yyval.x = strcmp(yyvsp[-2].lstr.str, yyvsp[0].lstr.str) != 0;
  3799.           a_delete yyvsp[-2].lstr.str;
  3800.           a_delete yyvsp[0].lstr.str;
  3801.         }
  3802. break;
  3803. case 51:
  3804. #line 502 "/u/jjc/groff/pic/pic.y"
  3805. { yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); }
  3806. break;
  3807. case 52:
  3808. #line 504 "/u/jjc/groff/pic/pic.y"
  3809. { yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); }
  3810. break;
  3811. case 53:
  3812. #line 506 "/u/jjc/groff/pic/pic.y"
  3813. { yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); }
  3814. break;
  3815. case 54:
  3816. #line 508 "/u/jjc/groff/pic/pic.y"
  3817. { yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); }
  3818. break;
  3819. case 55:
  3820. #line 510 "/u/jjc/groff/pic/pic.y"
  3821. { yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); }
  3822. break;
  3823. case 56:
  3824. #line 512 "/u/jjc/groff/pic/pic.y"
  3825. { yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); }
  3826. break;
  3827. case 57:
  3828. #line 514 "/u/jjc/groff/pic/pic.y"
  3829. { yyval.x = (yyvsp[0].x == 0.0); }
  3830. break;
  3831. case 58:
  3832. #line 520 "/u/jjc/groff/pic/pic.y"
  3833. { yyval.by.val = 1.0; yyval.by.is_multiplicative = 0; }
  3834. break;
  3835. case 59:
  3836. #line 522 "/u/jjc/groff/pic/pic.y"
  3837. { yyval.by.val = yyvsp[0].x; yyval.by.is_multiplicative = 0; }
  3838. break;
  3839. case 60:
  3840. #line 524 "/u/jjc/groff/pic/pic.y"
  3841. { yyval.by.val = yyvsp[0].x; yyval.by.is_multiplicative = 1; }
  3842. break;
  3843. case 61:
  3844. #line 529 "/u/jjc/groff/pic/pic.y"
  3845. {
  3846.           yyval.pl.obj = yyvsp[0].spec->make_object(¤t_position,
  3847.                        ¤t_direction);
  3848.           if (yyval.pl.obj == 0)
  3849.             YYABORT;
  3850.           delete yyvsp[0].spec;
  3851.           if (yyval.pl.obj)
  3852.             olist.append(yyval.pl.obj);
  3853.           else {
  3854.             yyval.pl.x = current_position.x;
  3855.             yyval.pl.y = current_position.y;
  3856.           }
  3857.         }
  3858. break;
  3859. case 62:
  3860. #line 543 "/u/jjc/groff/pic/pic.y"
  3861. { yyval.pl = yyvsp[0].pl; define_label(yyvsp[-3].str, & yyval.pl); a_delete yyvsp[-3].str; }
  3862. break;
  3863. case 63:
  3864. #line 545 "/u/jjc/groff/pic/pic.y"
  3865. {
  3866.           yyval.pl.obj = 0;
  3867.           yyval.pl.x = yyvsp[0].pair.x;
  3868.           yyval.pl.y = yyvsp[0].pair.y;
  3869.           define_label(yyvsp[-3].str, & yyval.pl);
  3870.           a_delete yyvsp[-3].str;
  3871.         }
  3872. break;
  3873. case 64:
  3874. #line 553 "/u/jjc/groff/pic/pic.y"
  3875. {
  3876.           yyval.pl = yyvsp[0].pl;
  3877.           define_label(yyvsp[-3].str, & yyval.pl);
  3878.           a_delete yyvsp[-3].str;
  3879.         }
  3880. break;
  3881. case 65:
  3882. #line 559 "/u/jjc/groff/pic/pic.y"
  3883. {
  3884.           yyval.state.x = current_position.x;
  3885.           yyval.state.y = current_position.y;
  3886.           yyval.state.dir = current_direction;
  3887.         }
  3888. break;
  3889. case 66:
  3890. #line 565 "/u/jjc/groff/pic/pic.y"
  3891. {
  3892.           current_position.x = yyvsp[-2].state.x;
  3893.           current_position.y = yyvsp[-2].state.y;
  3894.           current_direction = yyvsp[-2].state.dir;
  3895.         }
  3896. break;
  3897. case 67:
  3898. #line 571 "/u/jjc/groff/pic/pic.y"
  3899. {
  3900.           yyval.pl = yyvsp[-3].pl;
  3901.         }
  3902. break;
  3903. case 68:
  3904. #line 575 "/u/jjc/groff/pic/pic.y"
  3905. {
  3906.           yyval.pl.obj = 0;
  3907.           yyval.pl.x = current_position.x;
  3908.           yyval.pl.y = current_position.y;
  3909.         }
  3910. break;
  3911. case 69:
  3912. #line 584 "/u/jjc/groff/pic/pic.y"
  3913. {}
  3914. break;
  3915. case 70:
  3916. #line 586 "/u/jjc/groff/pic/pic.y"
  3917. {}
  3918. break;
  3919. case 71:
  3920. #line 591 "/u/jjc/groff/pic/pic.y"
  3921. {
  3922.           yyval.spec = new object_spec(BOX_OBJECT);
  3923.         }
  3924. break;
  3925. case 72:
  3926. #line 595 "/u/jjc/groff/pic/pic.y"
  3927. {
  3928.           yyval.spec = new object_spec(CIRCLE_OBJECT);
  3929.         }
  3930. break;
  3931. case 73:
  3932. #line 599 "/u/jjc/groff/pic/pic.y"
  3933. {
  3934.           yyval.spec = new object_spec(ELLIPSE_OBJECT);
  3935.         }
  3936. break;
  3937. case 74:
  3938. #line 603 "/u/jjc/groff/pic/pic.y"
  3939. {
  3940.           yyval.spec = new object_spec(ARC_OBJECT);
  3941.           yyval.spec->dir = current_direction;
  3942.         }
  3943. break;
  3944. case 75:
  3945. #line 608 "/u/jjc/groff/pic/pic.y"
  3946. {
  3947.           yyval.spec = new object_spec(LINE_OBJECT);
  3948.           lookup_variable("lineht", & yyval.spec->segment_height);
  3949.           lookup_variable("linewid", & yyval.spec->segment_width);
  3950.           yyval.spec->dir = current_direction;
  3951.         }
  3952. break;
  3953. case 76:
  3954. #line 615 "/u/jjc/groff/pic/pic.y"
  3955. {
  3956.           yyval.spec = new object_spec(ARROW_OBJECT);
  3957.           lookup_variable("lineht", & yyval.spec->segment_height);
  3958.           lookup_variable("linewid", & yyval.spec->segment_width);
  3959.           yyval.spec->dir = current_direction;
  3960.         }
  3961. break;
  3962. case 77:
  3963. #line 622 "/u/jjc/groff/pic/pic.y"
  3964. {
  3965.           yyval.spec = new object_spec(MOVE_OBJECT);
  3966.           lookup_variable("moveht", & yyval.spec->segment_height);
  3967.           lookup_variable("movewid", & yyval.spec->segment_width);
  3968.           yyval.spec->dir = current_direction;
  3969.         }
  3970. break;
  3971. case 78:
  3972. #line 629 "/u/jjc/groff/pic/pic.y"
  3973. {
  3974.           yyval.spec = new object_spec(SPLINE_OBJECT);
  3975.           lookup_variable("lineht", & yyval.spec->segment_height);
  3976.           lookup_variable("linewid", & yyval.spec->segment_width);
  3977.           yyval.spec->dir = current_direction;
  3978.         }
  3979. break;
  3980. case 79:
  3981. #line 636 "/u/jjc/groff/pic/pic.y"
  3982. {
  3983.           yyval.spec = new object_spec(TEXT_OBJECT);
  3984.           yyval.spec->text = new text_item(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno);
  3985.         }
  3986. break;
  3987. case 80:
  3988. #line 641 "/u/jjc/groff/pic/pic.y"
  3989. {
  3990.           yyval.spec = new object_spec(TEXT_OBJECT);
  3991.           yyval.spec->text = new text_item(format_number(0, yyvsp[0].x), 0, -1);
  3992.         }
  3993. break;
  3994. case 81:
  3995. #line 646 "/u/jjc/groff/pic/pic.y"
  3996. {
  3997.           yyval.spec = new object_spec(TEXT_OBJECT);
  3998.           yyval.spec->text = new text_item(format_number(yyvsp[0].lstr.str, yyvsp[-1].x),
  3999.                        yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno);
  4000.           a_delete yyvsp[0].lstr.str;
  4001.         }
  4002. break;
  4003. case 82:
  4004. #line 653 "/u/jjc/groff/pic/pic.y"
  4005. {
  4006.           saved_state *p = new saved_state;
  4007.           yyval.pstate = p;
  4008.           p->x = current_position.x;
  4009.           p->y = current_position.y;
  4010.           p->dir = current_direction;
  4011.           p->tbl = current_table;
  4012.           p->prev = current_saved_state;
  4013.           current_position.x = 0.0;
  4014.           current_position.y = 0.0;
  4015.           current_table = new PTABLE(place);
  4016.           current_saved_state = p;
  4017.           olist.append(make_mark_object());
  4018.         }
  4019. break;
  4020. case 83:
  4021. #line 668 "/u/jjc/groff/pic/pic.y"
  4022. {
  4023.           current_position.x = yyvsp[-2].pstate->x;
  4024.           current_position.y = yyvsp[-2].pstate->y;
  4025.           current_direction = yyvsp[-2].pstate->dir;
  4026.           yyval.spec = new object_spec(BLOCK_OBJECT);
  4027.           olist.wrap_up_block(& yyval.spec->oblist);
  4028.           yyval.spec->tbl = current_table;
  4029.           current_table = yyvsp[-2].pstate->tbl;
  4030.           current_saved_state = yyvsp[-2].pstate->prev;
  4031.           delete yyvsp[-2].pstate;
  4032.         }
  4033. break;
  4034. case 84:
  4035. #line 680 "/u/jjc/groff/pic/pic.y"
  4036. {
  4037.           yyval.spec = yyvsp[-2].spec;
  4038.           yyval.spec->height = yyvsp[0].x;
  4039.           yyval.spec->flags |= HAS_HEIGHT;
  4040.         }
  4041. break;
  4042. case 85:
  4043. #line 686 "/u/jjc/groff/pic/pic.y"
  4044. {
  4045.           yyval.spec = yyvsp[-2].spec;
  4046.           yyval.spec->radius = yyvsp[0].x;
  4047.           yyval.spec->flags |= HAS_RADIUS;
  4048.         }
  4049. break;
  4050. case 86:
  4051. #line 692 "/u/jjc/groff/pic/pic.y"
  4052. {
  4053.           yyval.spec = yyvsp[-2].spec;
  4054.           yyval.spec->width = yyvsp[0].x;
  4055.           yyval.spec->flags |= HAS_WIDTH;
  4056.         }
  4057. break;
  4058. case 87:
  4059. #line 698 "/u/jjc/groff/pic/pic.y"
  4060. {
  4061.           yyval.spec = yyvsp[-2].spec;
  4062.           yyval.spec->radius = yyvsp[0].x/2.0;
  4063.           yyval.spec->flags |= HAS_RADIUS;
  4064.         }
  4065. break;
  4066. case 88:
  4067. #line 704 "/u/jjc/groff/pic/pic.y"
  4068. {
  4069.           yyval.spec = yyvsp[-1].spec;
  4070.           yyval.spec->flags |= HAS_SEGMENT;
  4071.           switch (yyval.spec->dir) {
  4072.           case UP_DIRECTION:
  4073.             yyval.spec->segment_pos.y += yyvsp[0].x;
  4074.             break;
  4075.           case DOWN_DIRECTION:
  4076.             yyval.spec->segment_pos.y -= yyvsp[0].x;
  4077.             break;
  4078.           case RIGHT_DIRECTION:
  4079.             yyval.spec->segment_pos.x += yyvsp[0].x;
  4080.             break;
  4081.           case LEFT_DIRECTION:
  4082.             yyval.spec->segment_pos.x -= yyvsp[0].x;
  4083.             break;
  4084.           }
  4085.         }
  4086. break;
  4087. case 89:
  4088. #line 723 "/u/jjc/groff/pic/pic.y"
  4089. {
  4090.           yyval.spec = yyvsp[-1].spec;
  4091.           yyval.spec->dir = UP_DIRECTION;
  4092.           yyval.spec->flags |= HAS_SEGMENT;
  4093.           yyval.spec->segment_pos.y += yyval.spec->segment_height;
  4094.         }
  4095. break;
  4096. case 90:
  4097. #line 730 "/u/jjc/groff/pic/pic.y"
  4098. {
  4099.           yyval.spec = yyvsp[-2].spec;
  4100.           yyval.spec->dir = UP_DIRECTION;
  4101.           yyval.spec->flags |= HAS_SEGMENT;
  4102.           yyval.spec->segment_pos.y += yyvsp[0].x;
  4103.         }
  4104. break;
  4105. case 91:
  4106. #line 737 "/u/jjc/groff/pic/pic.y"
  4107. {
  4108.           yyval.spec = yyvsp[-1].spec;
  4109.           yyval.spec->dir = DOWN_DIRECTION;
  4110.           yyval.spec->flags |= HAS_SEGMENT;
  4111.           yyval.spec->segment_pos.y -= yyval.spec->segment_height;
  4112.         }
  4113. break;
  4114. case 92:
  4115. #line 744 "/u/jjc/groff/pic/pic.y"
  4116. {
  4117.           yyval.spec = yyvsp[-2].spec;
  4118.           yyval.spec->dir = DOWN_DIRECTION;
  4119.           yyval.spec->flags |= HAS_SEGMENT;
  4120.           yyval.spec->segment_pos.y -= yyvsp[0].x;
  4121.         }
  4122. break;
  4123. case 93:
  4124. #line 751 "/u/jjc/groff/pic/pic.y"
  4125. {
  4126.           yyval.spec = yyvsp[-1].spec;
  4127.           yyval.spec->dir = RIGHT_DIRECTION;
  4128.           yyval.spec->flags |= HAS_SEGMENT;
  4129.           yyval.spec->segment_pos.x += yyval.spec->segment_width;
  4130.         }
  4131. break;
  4132. case 94:
  4133. #line 758 "/u/jjc/groff/pic/pic.y"
  4134. {
  4135.           yyval.spec = yyvsp[-2].spec;
  4136.           yyval.spec->dir = RIGHT_DIRECTION;
  4137.           yyval.spec->flags |= HAS_SEGMENT;
  4138.           yyval.spec->segment_pos.x += yyvsp[0].x;
  4139.         }
  4140. break;
  4141. case 95:
  4142. #line 765 "/u/jjc/groff/pic/pic.y"
  4143. {
  4144.           yyval.spec = yyvsp[-1].spec;
  4145.           yyval.spec->dir = LEFT_DIRECTION;
  4146.           yyval.spec->flags |= HAS_SEGMENT;
  4147.           yyval.spec->segment_pos.x -= yyval.spec->segment_width;
  4148.         }
  4149. break;
  4150. case 96:
  4151. #line 772 "/u/jjc/groff/pic/pic.y"
  4152. {
  4153.           yyval.spec = yyvsp[-2].spec;
  4154.           yyval.spec->dir = LEFT_DIRECTION;
  4155.           yyval.spec->flags |= HAS_SEGMENT;
  4156.           yyval.spec->segment_pos.x -= yyvsp[0].x;
  4157.         }
  4158. break;
  4159. case 97:
  4160. #line 779 "/u/jjc/groff/pic/pic.y"
  4161. {
  4162.           yyval.spec = yyvsp[-2].spec;
  4163.           yyval.spec->flags |= HAS_FROM;
  4164.           yyval.spec->from.x = yyvsp[0].pair.x;
  4165.           yyval.spec->from.y = yyvsp[0].pair.y;
  4166.         }
  4167. break;
  4168. case 98:
  4169. #line 786 "/u/jjc/groff/pic/pic.y"
  4170. {
  4171.           yyval.spec = yyvsp[-2].spec;
  4172.           if (yyval.spec->flags & HAS_SEGMENT)
  4173.             yyval.spec->segment_list = new segment(yyval.spec->segment_pos,
  4174.                            yyval.spec->segment_is_absolute,
  4175.                            yyval.spec->segment_list);
  4176.           yyval.spec->flags |= HAS_SEGMENT;
  4177.           yyval.spec->segment_pos.x = yyvsp[0].pair.x;
  4178.           yyval.spec->segment_pos.y = yyvsp[0].pair.y;
  4179.           yyval.spec->segment_is_absolute = 1;
  4180.           yyval.spec->flags |= HAS_TO;
  4181.           yyval.spec->to.x = yyvsp[0].pair.x;
  4182.           yyval.spec->to.y = yyvsp[0].pair.y;
  4183.         }
  4184. break;
  4185. case 99:
  4186. #line 801 "/u/jjc/groff/pic/pic.y"
  4187. {
  4188.           yyval.spec = yyvsp[-2].spec;
  4189.           yyval.spec->flags |= HAS_AT;
  4190.           yyval.spec->at.x = yyvsp[0].pair.x;
  4191.           yyval.spec->at.y = yyvsp[0].pair.y;
  4192.           if (yyval.spec->type != ARC_OBJECT) {
  4193.             yyval.spec->flags |= HAS_FROM;
  4194.             yyval.spec->from.x = yyvsp[0].pair.x;
  4195.             yyval.spec->from.y = yyvsp[0].pair.y;
  4196.           }
  4197.         }
  4198. break;
  4199. case 100:
  4200. #line 813 "/u/jjc/groff/pic/pic.y"
  4201. {
  4202.           yyval.spec = yyvsp[-2].spec;
  4203.           yyval.spec->flags |= HAS_WITH;
  4204.           yyval.spec->with = yyvsp[0].pth;
  4205.         }
  4206. break;
  4207. case 101:
  4208. #line 819 "/u/jjc/groff/pic/pic.y"
  4209. {
  4210.           yyval.spec = yyvsp[-2].spec;
  4211.           yyval.spec->flags |= HAS_SEGMENT;
  4212.           yyval.spec->segment_pos.x += yyvsp[0].pair.x;
  4213.           yyval.spec->segment_pos.y += yyvsp[0].pair.y;
  4214.         }
  4215. break;
  4216. case 102:
  4217. #line 826 "/u/jjc/groff/pic/pic.y"
  4218. {
  4219.           yyval.spec = yyvsp[-1].spec;
  4220.           if (yyval.spec->flags & HAS_SEGMENT) {
  4221.             yyval.spec->segment_list = new segment(yyval.spec->segment_pos,
  4222.                            yyval.spec->segment_is_absolute,
  4223.                            yyval.spec->segment_list);
  4224.             yyval.spec->flags &= ~HAS_SEGMENT;
  4225.             yyval.spec->segment_pos.x = yyval.spec->segment_pos.y = 0.0;
  4226.             yyval.spec->segment_is_absolute = 0;
  4227.           }
  4228.         }
  4229. break;
  4230. case 103:
  4231. #line 838 "/u/jjc/groff/pic/pic.y"
  4232. {
  4233.           yyval.spec = yyvsp[-1].spec;
  4234.           yyval.spec->flags |= IS_DOTTED;
  4235.           lookup_variable("dashwid", & yyval.spec->dash_width);
  4236.         }
  4237. break;
  4238. case 104:
  4239. #line 844 "/u/jjc/groff/pic/pic.y"
  4240. {
  4241.           yyval.spec = yyvsp[-2].spec;
  4242.           yyval.spec->flags |= IS_DOTTED;
  4243.           yyval.spec->dash_width = yyvsp[0].x;
  4244.         }
  4245. break;
  4246. case 105:
  4247. #line 850 "/u/jjc/groff/pic/pic.y"
  4248. {
  4249.           yyval.spec = yyvsp[-1].spec;
  4250.           yyval.spec->flags |= IS_DASHED;
  4251.           lookup_variable("dashwid", & yyval.spec->dash_width);
  4252.         }
  4253. break;
  4254. case 106:
  4255. #line 856 "/u/jjc/groff/pic/pic.y"
  4256. {
  4257.           yyval.spec = yyvsp[-2].spec;
  4258.           yyval.spec->flags |= IS_DASHED;
  4259.           yyval.spec->dash_width = yyvsp[0].x;
  4260.         }
  4261. break;
  4262. case 107:
  4263. #line 862 "/u/jjc/groff/pic/pic.y"
  4264. {
  4265.           yyval.spec = yyvsp[-1].spec;
  4266.           yyval.spec->flags |= IS_DEFAULT_FILLED;
  4267.         }
  4268. break;
  4269. case 108:
  4270. #line 867 "/u/jjc/groff/pic/pic.y"
  4271. {
  4272.           yyval.spec = yyvsp[-2].spec;
  4273.           yyval.spec->flags |= IS_FILLED;
  4274.           yyval.spec->fill = yyvsp[0].x;
  4275.         }
  4276. break;
  4277. case 109:
  4278. #line 873 "/u/jjc/groff/pic/pic.y"
  4279. {
  4280.           yyval.spec = yyvsp[-1].spec;
  4281.           /* line chop chop means line chop 0 chop 0*/
  4282.           if (yyval.spec->flags & IS_DEFAULT_CHOPPED) {
  4283.             yyval.spec->flags |= IS_CHOPPED;
  4284.             yyval.spec->flags &= ~IS_DEFAULT_CHOPPED;
  4285.             yyval.spec->start_chop = yyval.spec->end_chop = 0.0;
  4286.           }
  4287.           else if (yyval.spec->flags & IS_CHOPPED) {
  4288.             yyval.spec->end_chop = 0.0;
  4289.           }
  4290.           else {
  4291.             yyval.spec->flags |= IS_DEFAULT_CHOPPED;
  4292.           }
  4293.         }
  4294. break;
  4295. case 110:
  4296. #line 889 "/u/jjc/groff/pic/pic.y"
  4297. {
  4298.           yyval.spec = yyvsp[-2].spec;
  4299.           if (yyval.spec->flags & IS_DEFAULT_CHOPPED) {
  4300.             yyval.spec->flags |= IS_CHOPPED;
  4301.             yyval.spec->flags &= ~IS_DEFAULT_CHOPPED;
  4302.             yyval.spec->start_chop = 0.0;
  4303.             yyval.spec->end_chop = yyvsp[0].x;
  4304.           }
  4305.           else if (yyval.spec->flags & IS_CHOPPED) {
  4306.             yyval.spec->end_chop = yyvsp[0].x;
  4307.           }
  4308.           else {
  4309.             yyval.spec->start_chop = yyval.spec->end_chop = yyvsp[0].x;
  4310.             yyval.spec->flags |= IS_CHOPPED;
  4311.           }
  4312.         }
  4313. break;
  4314. case 111:
  4315. #line 906 "/u/jjc/groff/pic/pic.y"
  4316. {
  4317.           yyval.spec = yyvsp[-1].spec;
  4318.           yyval.spec->flags |= IS_SAME;
  4319.         }
  4320. break;
  4321. case 112:
  4322. #line 911 "/u/jjc/groff/pic/pic.y"
  4323. {
  4324.           yyval.spec = yyvsp[-1].spec;
  4325.           yyval.spec->flags |= IS_INVISIBLE;
  4326.         }
  4327. break;
  4328. case 113:
  4329. #line 916 "/u/jjc/groff/pic/pic.y"
  4330. {
  4331.           yyval.spec = yyvsp[-1].spec;
  4332.           yyval.spec->flags |= HAS_LEFT_ARROW_HEAD;
  4333.         }
  4334. break;
  4335. case 114:
  4336. #line 921 "/u/jjc/groff/pic/pic.y"
  4337. {
  4338.           yyval.spec = yyvsp[-1].spec;
  4339.           yyval.spec->flags |= HAS_RIGHT_ARROW_HEAD;
  4340.         }
  4341. break;
  4342. case 115:
  4343. #line 926 "/u/jjc/groff/pic/pic.y"
  4344. {
  4345.           yyval.spec = yyvsp[-1].spec;
  4346.           yyval.spec->flags |= (HAS_LEFT_ARROW_HEAD|HAS_RIGHT_ARROW_HEAD);
  4347.         }
  4348. break;
  4349. case 116:
  4350. #line 931 "/u/jjc/groff/pic/pic.y"
  4351. {
  4352.           yyval.spec = yyvsp[-1].spec;
  4353.           yyval.spec->flags |= IS_CLOCKWISE;
  4354.         }
  4355. break;
  4356. case 117:
  4357. #line 936 "/u/jjc/groff/pic/pic.y"
  4358. {
  4359.           yyval.spec = yyvsp[-1].spec;
  4360.           yyval.spec->flags &= ~IS_CLOCKWISE;
  4361.         }
  4362. break;
  4363. case 118:
  4364. #line 941 "/u/jjc/groff/pic/pic.y"
  4365. {
  4366.           yyval.spec = yyvsp[-1].spec;
  4367.           for (text_item **p = & yyval.spec->text; *p; p = &(*p)->next)
  4368.             ;
  4369.           *p = new text_item(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno);
  4370.         }
  4371. break;
  4372. case 119:
  4373. #line 948 "/u/jjc/groff/pic/pic.y"
  4374. {
  4375.           yyval.spec = yyvsp[-1].spec;
  4376.           if (yyval.spec->text) {
  4377.             for (text_item *p = yyval.spec->text; p->next; p = p->next)
  4378.               ;
  4379.             p->adj.h = LEFT_ADJUST;
  4380.           }
  4381.         }
  4382. break;
  4383. case 120:
  4384. #line 957 "/u/jjc/groff/pic/pic.y"
  4385. {
  4386.           yyval.spec = yyvsp[-1].spec;
  4387.           if (yyval.spec->text) {
  4388.             for (text_item *p = yyval.spec->text; p->next; p = p->next)
  4389.               ;
  4390.             p->adj.h = RIGHT_ADJUST;
  4391.           }
  4392.         }
  4393. break;
  4394. case 121:
  4395. #line 966 "/u/jjc/groff/pic/pic.y"
  4396. {
  4397.           yyval.spec = yyvsp[-1].spec;
  4398.           if (yyval.spec->text) {
  4399.             for (text_item *p = yyval.spec->text; p->next; p = p->next)
  4400.               ;
  4401.             p->adj.v = ABOVE_ADJUST;
  4402.           }
  4403.         }
  4404. break;
  4405. case 122:
  4406. #line 975 "/u/jjc/groff/pic/pic.y"
  4407. {
  4408.           yyval.spec = yyvsp[-1].spec;
  4409.           if (yyval.spec->text) {
  4410.             for (text_item *p = yyval.spec->text; p->next; p = p->next)
  4411.               ;
  4412.             p->adj.v = BELOW_ADJUST;
  4413.           }
  4414.         }
  4415. break;
  4416. case 123:
  4417. #line 984 "/u/jjc/groff/pic/pic.y"
  4418. {
  4419.           yyval.spec = yyvsp[-2].spec;
  4420.           yyval.spec->flags |= HAS_THICKNESS;
  4421.           yyval.spec->thickness = yyvsp[0].x;
  4422.         }
  4423. break;
  4424. case 124:
  4425. #line 990 "/u/jjc/groff/pic/pic.y"
  4426. {
  4427.           yyval.spec = yyvsp[-1].spec;
  4428.           yyval.spec->flags |= IS_ALIGNED;
  4429.         }
  4430. break;
  4431. case 125:
  4432. #line 998 "/u/jjc/groff/pic/pic.y"
  4433. {
  4434.           yyval.lstr = yyvsp[0].lstr;
  4435.         }
  4436. break;
  4437. case 126:
  4438. #line 1002 "/u/jjc/groff/pic/pic.y"
  4439. {
  4440.           yyval.lstr.filename = yyvsp[-2].lstr.filename;
  4441.           yyval.lstr.lineno = yyvsp[-2].lstr.lineno;
  4442.           yyval.lstr.str = do_sprintf(yyvsp[-2].lstr.str, yyvsp[-1].dv.v, yyvsp[-1].dv.nv);
  4443.           a_delete yyvsp[-1].dv.v;
  4444.           a_delete yyvsp[-2].lstr.str;
  4445.         }
  4446. break;
  4447. case 127:
  4448. #line 1013 "/u/jjc/groff/pic/pic.y"
  4449. {
  4450.           yyval.dv.v = 0;
  4451.           yyval.dv.nv = 0;
  4452.           yyval.dv.maxv = 0;
  4453.         }
  4454. break;
  4455. case 128:
  4456. #line 1019 "/u/jjc/groff/pic/pic.y"
  4457. {
  4458.           yyval.dv = yyvsp[-2].dv;
  4459.           if (yyval.dv.nv >= yyval.dv.maxv) {
  4460.             if (yyval.dv.nv == 0) {
  4461.               yyval.dv.v = new double[4];
  4462.               yyval.dv.maxv = 4;
  4463.             }
  4464.             else {
  4465.               double *oldv = yyval.dv.v;
  4466.               yyval.dv.maxv *= 2;
  4467.               yyval.dv.v = new double[yyval.dv.maxv];
  4468.               memcpy(yyval.dv.v, oldv, yyval.dv.nv*sizeof(double));
  4469.               a_delete oldv;
  4470.             }
  4471.           }
  4472.           yyval.dv.v[yyval.dv.nv] = yyvsp[0].x;
  4473.           yyval.dv.nv += 1;
  4474.         }
  4475. break;
  4476. case 129:
  4477. #line 1041 "/u/jjc/groff/pic/pic.y"
  4478. { yyval.pair = yyvsp[0].pair; }
  4479. break;
  4480. case 130:
  4481. #line 1043 "/u/jjc/groff/pic/pic.y"
  4482. {
  4483.           position pos = yyvsp[0].pl;
  4484.           yyval.pair.x = pos.x;
  4485.           yyval.pair.y = pos.y;
  4486.         }
  4487. break;
  4488. case 131:
  4489. #line 1052 "/u/jjc/groff/pic/pic.y"
  4490. { yyval.pair = yyvsp[0].pair; }
  4491. break;
  4492. case 132:
  4493. #line 1054 "/u/jjc/groff/pic/pic.y"
  4494. {
  4495.           yyval.pair.x = yyvsp[-2].pair.x + yyvsp[0].pair.x;
  4496.           yyval.pair.y = yyvsp[-2].pair.y + yyvsp[0].pair.y;
  4497.         }
  4498. break;
  4499. case 133:
  4500. #line 1059 "/u/jjc/groff/pic/pic.y"
  4501. {
  4502.           yyval.pair.x = yyvsp[-2].pair.x - yyvsp[0].pair.x;
  4503.           yyval.pair.y = yyvsp[-2].pair.y - yyvsp[0].pair.y;
  4504.         }
  4505. break;
  4506. case 134:
  4507. #line 1064 "/u/jjc/groff/pic/pic.y"
  4508. {
  4509.           yyval.pair.x = yyvsp[-3].pair.x;
  4510.           yyval.pair.y = yyvsp[-1].pair.y;
  4511.         }
  4512. break;
  4513. case 135:
  4514. #line 1069 "/u/jjc/groff/pic/pic.y"
  4515. {
  4516.           yyval.pair.x = (1.0 - yyvsp[-4].x)*yyvsp[-2].pair.x + yyvsp[-4].x*yyvsp[0].pair.x;
  4517.           yyval.pair.y = (1.0 - yyvsp[-4].x)*yyvsp[-2].pair.y + yyvsp[-4].x*yyvsp[0].pair.y;
  4518.         }
  4519. break;
  4520. case 136:
  4521. #line 1074 "/u/jjc/groff/pic/pic.y"
  4522. {
  4523.           yyval.pair.x = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.x + yyvsp[-5].x*yyvsp[-1].pair.x;
  4524.           yyval.pair.y = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.y + yyvsp[-5].x*yyvsp[-1].pair.y;
  4525.         }
  4526. break;
  4527. case 139:
  4528. #line 1087 "/u/jjc/groff/pic/pic.y"
  4529. { yyval.pair.x = yyvsp[-2].x; yyval.pair.y = yyvsp[0].x; }
  4530. break;
  4531. case 140:
  4532. #line 1089 "/u/jjc/groff/pic/pic.y"
  4533. { yyval.pair = yyvsp[-1].pair; }
  4534. break;
  4535. case 141:
  4536. #line 1094 "/u/jjc/groff/pic/pic.y"
  4537. { yyval.pl = yyvsp[0].pl; }
  4538. break;
  4539. case 142:
  4540. #line 1096 "/u/jjc/groff/pic/pic.y"
  4541. {
  4542.           path pth(yyvsp[0].crn);
  4543.           if (!pth.follow(yyvsp[-1].pl, & yyval.pl))
  4544.             YYABORT;
  4545.         }
  4546. break;
  4547. case 143:
  4548. #line 1102 "/u/jjc/groff/pic/pic.y"
  4549. {
  4550.           path pth(yyvsp[-1].crn);
  4551.           if (!pth.follow(yyvsp[0].pl, & yyval.pl))
  4552.             YYABORT;
  4553.         }
  4554. break;
  4555. case 144:
  4556. #line 1108 "/u/jjc/groff/pic/pic.y"
  4557. {
  4558.           path pth(yyvsp[-2].crn);
  4559.           if (!pth.follow(yyvsp[0].pl, & yyval.pl))
  4560.             YYABORT;
  4561.         }
  4562. break;
  4563. case 145:
  4564. #line 1114 "/u/jjc/groff/pic/pic.y"
  4565. {
  4566.           yyval.pl.x = current_position.x;
  4567.           yyval.pl.y = current_position.y;
  4568.           yyval.pl.obj = 0;
  4569.         }
  4570. break;
  4571. case 146:
  4572. #line 1123 "/u/jjc/groff/pic/pic.y"
  4573. {
  4574.           place *p = lookup_label(yyvsp[0].str);
  4575.           if (!p) {
  4576.             lex_error("there is no place `%1'", yyvsp[0].str);
  4577.             YYABORT;
  4578.           }
  4579.           yyval.pl = *p;
  4580.           a_delete yyvsp[0].str;
  4581.         }
  4582. break;
  4583. case 147:
  4584. #line 1133 "/u/jjc/groff/pic/pic.y"
  4585. {
  4586.           yyval.pl.obj = yyvsp[0].obj;
  4587.         }
  4588. break;
  4589. case 148:
  4590. #line 1137 "/u/jjc/groff/pic/pic.y"
  4591. {
  4592.           path pth(yyvsp[0].str);
  4593.           if (!pth.follow(yyvsp[-2].pl, & yyval.pl))
  4594.             YYABORT;
  4595.         }
  4596. break;
  4597. case 149:
  4598. #line 1146 "/u/jjc/groff/pic/pic.y"
  4599. { yyval.n = yyvsp[0].n; }
  4600. break;
  4601. case 150:
  4602. #line 1148 "/u/jjc/groff/pic/pic.y"
  4603. {
  4604.           /* XXX Check for overflow (and non-integers?).*/
  4605.           yyval.n = (int)yyvsp[-1].x;
  4606.         }
  4607. break;
  4608. case 151:
  4609. #line 1156 "/u/jjc/groff/pic/pic.y"
  4610. { yyval.n = 1; }
  4611. break;
  4612. case 152:
  4613. #line 1158 "/u/jjc/groff/pic/pic.y"
  4614. { yyval.n = yyvsp[-1].n; }
  4615. break;
  4616. case 153:
  4617. #line 1163 "/u/jjc/groff/pic/pic.y"
  4618. {
  4619.           int count = 0;
  4620.           for (object *p = olist.head; p != 0; p = p->next)
  4621.             if (p->type() == yyvsp[0].obtype && ++count == yyvsp[-1].n) {
  4622.               yyval.obj = p;
  4623.               break;
  4624.             }
  4625.           if (p == 0) {
  4626.             lex_error("there is no %1%2 %3", yyvsp[-1].n, ordinal_postfix(yyvsp[-1].n),
  4627.                   object_type_name(yyvsp[0].obtype));
  4628.             YYABORT;
  4629.           }
  4630.         }
  4631. break;
  4632. case 154:
  4633. #line 1177 "/u/jjc/groff/pic/pic.y"
  4634. {
  4635.           int count = 0;
  4636.           for (object *p = olist.tail; p != 0; p = p->prev)
  4637.             if (p->type() == yyvsp[0].obtype && ++count == yyvsp[-1].n) {
  4638.               yyval.obj = p;
  4639.               break;
  4640.             }
  4641.           if (p == 0) {
  4642.             lex_error("there is no %1%2 last %3", yyvsp[-1].n,
  4643.                   ordinal_postfix(yyvsp[-1].n), object_type_name(yyvsp[0].obtype));
  4644.             YYABORT;
  4645.           }
  4646.         }
  4647. break;
  4648. case 155:
  4649. #line 1194 "/u/jjc/groff/pic/pic.y"
  4650. { yyval.obtype = BOX_OBJECT; }
  4651. break;
  4652. case 156:
  4653. #line 1196 "/u/jjc/groff/pic/pic.y"
  4654. { yyval.obtype = CIRCLE_OBJECT; }
  4655. break;
  4656. case 157:
  4657. #line 1198 "/u/jjc/groff/pic/pic.y"
  4658. { yyval.obtype = ELLIPSE_OBJECT; }
  4659. break;
  4660. case 158:
  4661. #line 1200 "/u/jjc/groff/pic/pic.y"
  4662. { yyval.obtype = ARC_OBJECT; }
  4663. break;
  4664. case 159:
  4665. #line 1202 "/u/jjc/groff/pic/pic.y"
  4666. { yyval.obtype = LINE_OBJECT; }
  4667. break;
  4668. case 160:
  4669. #line 1204 "/u/jjc/groff/pic/pic.y"
  4670. { yyval.obtype = ARROW_OBJECT; }
  4671. break;
  4672. case 161:
  4673. #line 1206 "/u/jjc/groff/pic/pic.y"
  4674. { yyval.obtype = SPLINE_OBJECT; }
  4675. break;
  4676. case 162:
  4677. #line 1208 "/u/jjc/groff/pic/pic.y"
  4678. { yyval.obtype = BLOCK_OBJECT; }
  4679. break;
  4680. case 163:
  4681. #line 1210 "/u/jjc/groff/pic/pic.y"
  4682. { yyval.obtype = TEXT_OBJECT; }
  4683. break;
  4684. case 164:
  4685. #line 1215 "/u/jjc/groff/pic/pic.y"
  4686. {
  4687.           yyval.pth = new path(yyvsp[0].str);
  4688.         }
  4689. break;
  4690. case 165:
  4691. #line 1219 "/u/jjc/groff/pic/pic.y"
  4692. {
  4693.           yyval.pth = yyvsp[-2].pth;
  4694.           yyval.pth->append(yyvsp[0].str);
  4695.         }
  4696. break;
  4697. case 166:
  4698. #line 1227 "/u/jjc/groff/pic/pic.y"
  4699. {
  4700.           yyval.pth = new path(yyvsp[0].crn);
  4701.         }
  4702. break;
  4703. case 167:
  4704. #line 1234 "/u/jjc/groff/pic/pic.y"
  4705. {
  4706.           yyval.pth = yyvsp[0].pth;
  4707.         }
  4708. break;
  4709. case 168:
  4710. #line 1238 "/u/jjc/groff/pic/pic.y"
  4711. {
  4712.           yyval.pth = yyvsp[-1].pth;
  4713.           yyval.pth->append(yyvsp[0].crn);
  4714.         }
  4715. break;
  4716. case 169:
  4717. #line 1246 "/u/jjc/groff/pic/pic.y"
  4718. {
  4719.           yyval.pth = yyvsp[0].pth;
  4720.         }
  4721. break;
  4722. case 170:
  4723. #line 1251 "/u/jjc/groff/pic/pic.y"
  4724. {
  4725.           lex_warning("`%1%2 last %3' in `with' argument ignored",
  4726.                   yyvsp[-3].n, ordinal_postfix(yyvsp[-3].n), object_type_name(yyvsp[-1].obtype));
  4727.           yyval.pth = yyvsp[0].pth;
  4728.         }
  4729. break;
  4730. case 171:
  4731. #line 1257 "/u/jjc/groff/pic/pic.y"
  4732. {
  4733.           lex_warning("`last %1' in `with' argument ignored",
  4734.                   object_type_name(yyvsp[-1].obtype));
  4735.           yyval.pth = yyvsp[0].pth;
  4736.         }
  4737. break;
  4738. case 172:
  4739. #line 1263 "/u/jjc/groff/pic/pic.y"
  4740. {
  4741.           lex_warning("`%1%2 %3' in `with' argument ignored",
  4742.                   yyvsp[-2].n, ordinal_postfix(yyvsp[-2].n), object_type_name(yyvsp[-1].obtype));
  4743.           yyval.pth = yyvsp[0].pth;
  4744.         }
  4745. break;
  4746. case 173:
  4747. #line 1269 "/u/jjc/groff/pic/pic.y"
  4748. {
  4749.           lex_warning("initial `%1' in `with' argument ignored", yyvsp[-1].str);
  4750.           a_delete yyvsp[-1].str;
  4751.           yyval.pth = yyvsp[0].pth;
  4752.         }
  4753. break;
  4754. case 174:
  4755. #line 1278 "/u/jjc/groff/pic/pic.y"
  4756. { yyval.crn = &object::north; }
  4757. break;
  4758. case 175:
  4759. #line 1280 "/u/jjc/groff/pic/pic.y"
  4760. { yyval.crn = &object::east; }
  4761. break;
  4762. case 176:
  4763. #line 1282 "/u/jjc/groff/pic/pic.y"
  4764. { yyval.crn = &object::west; }
  4765. break;
  4766. case 177:
  4767. #line 1284 "/u/jjc/groff/pic/pic.y"
  4768. { yyval.crn = &object::south; }
  4769. break;
  4770. case 178:
  4771. #line 1286 "/u/jjc/groff/pic/pic.y"
  4772. { yyval.crn = &object::north_east; }
  4773. break;
  4774. case 179:
  4775. #line 1288 "/u/jjc/groff/pic/pic.y"
  4776. { yyval.crn = &object:: south_east; }
  4777. break;
  4778. case 180:
  4779. #line 1290 "/u/jjc/groff/pic/pic.y"
  4780. { yyval.crn = &object::north_west; }
  4781. break;
  4782. case 181:
  4783. #line 1292 "/u/jjc/groff/pic/pic.y"
  4784. { yyval.crn = &object::south_west; }
  4785. break;
  4786. case 182:
  4787. #line 1294 "/u/jjc/groff/pic/pic.y"
  4788. { yyval.crn = &object::center; }
  4789. break;
  4790. case 183:
  4791. #line 1296 "/u/jjc/groff/pic/pic.y"
  4792. { yyval.crn = &object::start; }
  4793. break;
  4794. case 184:
  4795. #line 1298 "/u/jjc/groff/pic/pic.y"
  4796. { yyval.crn = &object::end; }
  4797. break;
  4798. case 185:
  4799. #line 1300 "/u/jjc/groff/pic/pic.y"
  4800. { yyval.crn = &object::north; }
  4801. break;
  4802. case 186:
  4803. #line 1302 "/u/jjc/groff/pic/pic.y"
  4804. { yyval.crn = &object::south; }
  4805. break;
  4806. case 187:
  4807. #line 1304 "/u/jjc/groff/pic/pic.y"
  4808. { yyval.crn = &object::west; }
  4809. break;
  4810. case 188:
  4811. #line 1306 "/u/jjc/groff/pic/pic.y"
  4812. { yyval.crn = &object::east; }
  4813. break;
  4814. case 189:
  4815. #line 1308 "/u/jjc/groff/pic/pic.y"
  4816. { yyval.crn = &object::north_west; }
  4817. break;
  4818. case 190:
  4819. #line 1310 "/u/jjc/groff/pic/pic.y"
  4820. { yyval.crn = &object::south_west; }
  4821. break;
  4822. case 191:
  4823. #line 1312 "/u/jjc/groff/pic/pic.y"
  4824. { yyval.crn = &object::north_east; }
  4825. break;
  4826. case 192:
  4827. #line 1314 "/u/jjc/groff/pic/pic.y"
  4828. { yyval.crn = &object::south_east; }
  4829. break;
  4830. case 193:
  4831. #line 1316 "/u/jjc/groff/pic/pic.y"
  4832. { yyval.crn = &object::west; }
  4833. break;
  4834. case 194:
  4835. #line 1318 "/u/jjc/groff/pic/pic.y"
  4836. { yyval.crn = &object::east; }
  4837. break;
  4838. case 195:
  4839. #line 1320 "/u/jjc/groff/pic/pic.y"
  4840. { yyval.crn = &object::north_west; }
  4841. break;
  4842. case 196:
  4843. #line 1322 "/u/jjc/groff/pic/pic.y"
  4844. { yyval.crn = &object::south_west; }
  4845. break;
  4846. case 197:
  4847. #line 1324 "/u/jjc/groff/pic/pic.y"
  4848. { yyval.crn = &object::north_east; }
  4849. break;
  4850. case 198:
  4851. #line 1326 "/u/jjc/groff/pic/pic.y"
  4852. { yyval.crn = &object::south_east; }
  4853. break;
  4854. case 199:
  4855. #line 1328 "/u/jjc/groff/pic/pic.y"
  4856. { yyval.crn = &object::center; }
  4857. break;
  4858. case 200:
  4859. #line 1330 "/u/jjc/groff/pic/pic.y"
  4860. { yyval.crn = &object::start; }
  4861. break;
  4862. case 201:
  4863. #line 1332 "/u/jjc/groff/pic/pic.y"
  4864. { yyval.crn = &object::end; }
  4865. break;
  4866. case 202:
  4867. #line 1337 "/u/jjc/groff/pic/pic.y"
  4868. {
  4869.           if (!lookup_variable(yyvsp[0].str, & yyval.x)) {
  4870.             lex_error("there is no variable `%1'", yyvsp[0].str);
  4871.             YYABORT;
  4872.           }
  4873.           a_delete yyvsp[0].str;
  4874.         }
  4875. break;
  4876. case 203:
  4877. #line 1345 "/u/jjc/groff/pic/pic.y"
  4878. { yyval.x = yyvsp[0].x; }
  4879. break;
  4880. case 204:
  4881. #line 1347 "/u/jjc/groff/pic/pic.y"
  4882. {
  4883.           if (yyvsp[-1].pl.obj != 0)
  4884.             yyval.x = yyvsp[-1].pl.obj->origin().x;
  4885.           else
  4886.             yyval.x = yyvsp[-1].pl.x;
  4887.         }
  4888. break;
  4889. case 205:
  4890. #line 1354 "/u/jjc/groff/pic/pic.y"
  4891. {
  4892.           if (yyvsp[-1].pl.obj != 0)
  4893.             yyval.x = yyvsp[-1].pl.obj->origin().y;
  4894.           else
  4895.             yyval.x = yyvsp[-1].pl.y;
  4896.         }
  4897. break;
  4898. case 206:
  4899. #line 1361 "/u/jjc/groff/pic/pic.y"
  4900. {
  4901.           if (yyvsp[-1].pl.obj != 0)
  4902.             yyval.x = yyvsp[-1].pl.obj->height();
  4903.           else
  4904.             yyval.x = 0.0;
  4905.         }
  4906. break;
  4907. case 207:
  4908. #line 1368 "/u/jjc/groff/pic/pic.y"
  4909. {
  4910.           if (yyvsp[-1].pl.obj != 0)
  4911.             yyval.x = yyvsp[-1].pl.obj->width();
  4912.           else
  4913.             yyval.x = 0.0;
  4914.         }
  4915. break;
  4916. case 208:
  4917. #line 1375 "/u/jjc/groff/pic/pic.y"
  4918. {
  4919.           if (yyvsp[-1].pl.obj != 0)
  4920.             yyval.x = yyvsp[-1].pl.obj->radius();
  4921.           else
  4922.             yyval.x = 0.0;
  4923.         }
  4924. break;
  4925. case 209:
  4926. #line 1382 "/u/jjc/groff/pic/pic.y"
  4927. { yyval.x = yyvsp[-2].x + yyvsp[0].x; }
  4928. break;
  4929. case 210:
  4930. #line 1384 "/u/jjc/groff/pic/pic.y"
  4931. { yyval.x = yyvsp[-2].x - yyvsp[0].x; }
  4932. break;
  4933. case 211:
  4934. #line 1386 "/u/jjc/groff/pic/pic.y"
  4935. { yyval.x = yyvsp[-2].x * yyvsp[0].x; }
  4936. break;
  4937. case 212:
  4938. #line 1388 "/u/jjc/groff/pic/pic.y"
  4939. {
  4940.           if (yyvsp[0].x == 0.0) {
  4941.             lex_error("division by zero");
  4942.             YYABORT;
  4943.           }
  4944.           yyval.x = yyvsp[-2].x/yyvsp[0].x;
  4945.         }
  4946. break;
  4947. case 213:
  4948. #line 1396 "/u/jjc/groff/pic/pic.y"
  4949. {
  4950.           if (yyvsp[0].x == 0.0) {
  4951.             lex_error("modulus by zero");
  4952.             YYABORT;
  4953.           }
  4954.           yyval.x = fmod(yyvsp[-2].x, yyvsp[0].x);
  4955.         }
  4956. break;
  4957. case 214:
  4958. #line 1404 "/u/jjc/groff/pic/pic.y"
  4959. {
  4960.           errno = 0;
  4961.           yyval.x = pow(yyvsp[-2].x, yyvsp[0].x);
  4962.           if (errno == EDOM) {
  4963.             lex_error("arguments to `^' operator out of domain");
  4964.             YYABORT;
  4965.           }
  4966.           if (errno == ERANGE) {
  4967.             lex_error("result of `^' operator out of range");
  4968.             YYABORT;
  4969.           }
  4970.         }
  4971. break;
  4972. case 215:
  4973. #line 1417 "/u/jjc/groff/pic/pic.y"
  4974. { yyval.x = -yyvsp[0].x; }
  4975. break;
  4976. case 216:
  4977. #line 1419 "/u/jjc/groff/pic/pic.y"
  4978. { yyval.x = yyvsp[-1].x; }
  4979. break;
  4980. case 217:
  4981. #line 1421 "/u/jjc/groff/pic/pic.y"
  4982. {
  4983.           errno = 0;
  4984.           yyval.x = sin(yyvsp[-1].x);
  4985.           if (errno == ERANGE) {
  4986.             lex_error("sin result out of range");
  4987.             YYABORT;
  4988.           }
  4989.         }
  4990. break;
  4991. case 218:
  4992. #line 1430 "/u/jjc/groff/pic/pic.y"
  4993. {
  4994.           errno = 0;
  4995.           yyval.x = cos(yyvsp[-1].x);
  4996.           if (errno == ERANGE) {
  4997.             lex_error("cos result out of range");
  4998.             YYABORT;
  4999.           }
  5000.         }
  5001. break;
  5002. case 219:
  5003. #line 1439 "/u/jjc/groff/pic/pic.y"
  5004. {
  5005.           errno = 0;
  5006.           yyval.x = atan2(yyvsp[-3].x, yyvsp[-1].x);
  5007.           if (errno == EDOM) {
  5008.             lex_error("atan2 argument out of domain");
  5009.             YYABORT;
  5010.           }
  5011.           if (errno == ERANGE) {
  5012.             lex_error("atan2 result out of range");
  5013.             YYABORT;
  5014.           }
  5015.         }
  5016. break;
  5017. case 220:
  5018. #line 1452 "/u/jjc/groff/pic/pic.y"
  5019. {
  5020.           errno = 0;
  5021.           yyval.x = log10(yyvsp[-1].x);
  5022.           if (errno == ERANGE) {
  5023.             lex_error("log result out of range");
  5024.             YYABORT;
  5025.           }
  5026.         }
  5027. break;
  5028. case 221:
  5029. #line 1461 "/u/jjc/groff/pic/pic.y"
  5030. {
  5031.           errno = 0;
  5032.           yyval.x = pow(10.0, yyvsp[-1].x);
  5033.           if (errno == ERANGE) {
  5034.             lex_error("exp result out of range");
  5035.             YYABORT;
  5036.           }
  5037.         }
  5038. break;
  5039. case 222:
  5040. #line 1470 "/u/jjc/groff/pic/pic.y"
  5041. {
  5042.           errno = 0;
  5043.           yyval.x = sqrt(yyvsp[-1].x);
  5044.           if (errno == EDOM) {
  5045.             lex_error("sqrt argument out of domain");
  5046.             YYABORT;
  5047.           }
  5048.         }
  5049. break;
  5050. case 223:
  5051. #line 1479 "/u/jjc/groff/pic/pic.y"
  5052. { yyval.x = yyvsp[-3].x > yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; }
  5053. break;
  5054. case 224:
  5055. #line 1481 "/u/jjc/groff/pic/pic.y"
  5056. { yyval.x = yyvsp[-3].x < yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; }
  5057. break;
  5058. case 225:
  5059. #line 1483 "/u/jjc/groff/pic/pic.y"
  5060. { yyval.x = floor(yyvsp[-1].x); }
  5061. break;
  5062. case 226:
  5063. #line 1485 "/u/jjc/groff/pic/pic.y"
  5064. { yyval.x = 1.0 + floor(((rand()&0x7fff)/double(0x7fff))*yyvsp[-1].x); }
  5065. break;
  5066. case 227:
  5067. #line 1487 "/u/jjc/groff/pic/pic.y"
  5068. {
  5069.           /* return a random number in the range [0,1) */
  5070.           /* portable, but not very random */
  5071.           yyval.x = (rand() & 0x7fff) / double(0x8000);
  5072.         }
  5073. break;
  5074. case 228:
  5075. #line 1493 "/u/jjc/groff/pic/pic.y"
  5076. { yyval.x = (yyvsp[-2].x < yyvsp[0].x); }
  5077. break;
  5078. case 229:
  5079. #line 1495 "/u/jjc/groff/pic/pic.y"
  5080. { yyval.x = (yyvsp[-2].x <= yyvsp[0].x); }
  5081. break;
  5082. case 230:
  5083. #line 1497 "/u/jjc/groff/pic/pic.y"
  5084. { yyval.x = (yyvsp[-2].x > yyvsp[0].x); }
  5085. break;
  5086. case 231:
  5087. #line 1499 "/u/jjc/groff/pic/pic.y"
  5088. { yyval.x = (yyvsp[-2].x >= yyvsp[0].x); }
  5089. break;
  5090. case 232:
  5091. #line 1501 "/u/jjc/groff/pic/pic.y"
  5092. { yyval.x = (yyvsp[-2].x == yyvsp[0].x); }
  5093. break;
  5094. case 233:
  5095. #line 1503 "/u/jjc/groff/pic/pic.y"
  5096. { yyval.x = (yyvsp[-2].x != yyvsp[0].x); }
  5097. break;
  5098. case 234:
  5099. #line 1505 "/u/jjc/groff/pic/pic.y"
  5100. { yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); }
  5101. break;
  5102. case 235:
  5103. #line 1507 "/u/jjc/groff/pic/pic.y"
  5104. { yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); }
  5105. break;
  5106. case 236:
  5107. #line 1509 "/u/jjc/groff/pic/pic.y"
  5108. { yyval.x = (yyvsp[0].x == 0.0); }
  5109. break;
  5110. #line 5111 "y.tab.c"
  5111.     }
  5112.     yyssp -= yym;
  5113.     yystate = *yyssp;
  5114.     yyvsp -= yym;
  5115.     yym = yylhs[yyn];
  5116.     if (yystate == 0 && yym == 0)
  5117.     {
  5118. #if YYDEBUG
  5119.         if (yydebug)
  5120.             printf("yydebug: after reduction, shifting from state 0 to\
  5121.  state %d\n", YYFINAL);
  5122. #endif
  5123.         yystate = YYFINAL;
  5124.         *++yyssp = YYFINAL;
  5125.         *++yyvsp = yyval;
  5126.         if (yychar < 0)
  5127.         {
  5128.             if ((yychar = yylex()) < 0) yychar = 0;
  5129. #if YYDEBUG
  5130.             if (yydebug)
  5131.             {
  5132.                 yys = 0;
  5133.                 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  5134.                 if (!yys) yys = "illegal-symbol";
  5135.                 printf("yydebug: state %d, reading %d (%s)\n",
  5136.                         YYFINAL, yychar, yys);
  5137.             }
  5138. #endif
  5139.         }
  5140.         if (yychar == 0) goto yyaccept;
  5141.         goto yyloop;
  5142.     }
  5143.     if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
  5144.             yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
  5145.         yystate = yytable[yyn];
  5146.     else
  5147.         yystate = yydgoto[yym];
  5148. #if YYDEBUG
  5149.     if (yydebug)
  5150.         printf("yydebug: after reduction, shifting from state %d \
  5151. to state %d\n", *yyssp, yystate);
  5152. #endif
  5153.     if (yyssp >= yyss + yystacksize - 1)
  5154.     {
  5155.         goto yyoverflow;
  5156.     }
  5157.     *++yyssp = yystate;
  5158.     *++yyvsp = yyval;
  5159.     goto yyloop;
  5160. yyoverflow:
  5161.     yyerror("yacc stack overflow");
  5162. yyabort:
  5163.     return (1);
  5164. yyaccept:
  5165.     return (0);
  5166. }
  5167.