Coverage Report

Created: 2025-02-03 06:41

/src/mruby/mrbgems/mruby-compiler/core/y.tab.c
Line
Count
Source (jump to first uncovered line)
1
/* A Bison parser, made by Lrama 0.6.9.  */
2
3
/* Bison implementation for Yacc-like parsers in C
4
5
   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6
   Inc.
7
8
   This program is free software: you can redistribute it and/or modify
9
   it under the terms of the GNU General Public License as published by
10
   the Free Software Foundation, either version 3 of the License, or
11
   (at your option) any later version.
12
13
   This program is distributed in the hope that it will be useful,
14
   but WITHOUT ANY WARRANTY; without even the implied warranty of
15
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
   GNU General Public License for more details.
17
18
   You should have received a copy of the GNU General Public License
19
   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
20
21
/* As a special exception, you may create a larger work that contains
22
   part or all of the Bison parser skeleton and distribute that work
23
   under terms of your choice, so long as that work isn't itself a
24
   parser generator using the skeleton or a modified version thereof
25
   as a parser skeleton.  Alternatively, if you modify or redistribute
26
   the parser skeleton itself, you may (at your option) remove this
27
   special exception, which will cause the skeleton and the resulting
28
   Bison output files to be licensed under the GNU General Public
29
   License without this special exception.
30
31
   This special exception was added by the Free Software Foundation in
32
   version 2.2 of Bison.  */
33
34
/* C LALR(1) parser skeleton written by Richard Stallman, by
35
   simplifying the original so-called "semantic" parser.  */
36
37
/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38
   especially those whose name start with YY_ or yy_.  They are
39
   private implementation details that can be changed or removed.  */
40
41
/* All symbols defined below should begin with yy or YY, to avoid
42
   infringing on user name space.  This should be done even for local
43
   variables, as they might otherwise be expanded by user macros.
44
   There are some unavoidable exceptions within include files to
45
   define necessary library symbols; they are noted "INFRINGES ON
46
   USER NAME SPACE" below.  */
47
48
/* Identify Bison output, and Bison version.  */
49
#define YYBISON 30802
50
51
/* Bison version string.  */
52
#define YYBISON_VERSION "3.8.2"
53
54
/* Skeleton name.  */
55
#define YYSKELETON_NAME "yacc.c"
56
57
/* Pure parsers.  */
58
#define YYPURE 1
59
60
/* Push parsers.  */
61
#define YYPUSH 0
62
63
/* Pull parsers.  */
64
#define YYPULL 1
65
66
67
/* First part of user prologue.  */
68
#line 7 "mrbgems/mruby-compiler/core/parse.y"
69
70
#undef PARSER_DEBUG
71
#ifdef PARSER_DEBUG
72
# define YYDEBUG 1
73
#endif
74
#define YYSTACK_USE_ALLOCA 1
75
76
#include <ctype.h>
77
#include <stdlib.h>
78
#include <string.h>
79
#include <mruby.h>
80
#include <mruby/compile.h>
81
#include <mruby/proc.h>
82
#include <mruby/error.h>
83
#include <mruby/throw.h>
84
#include <mruby/string.h>
85
#include <mruby/dump.h>
86
#include <mruby/internal.h>
87
#include <mruby/presym.h>
88
#include "node.h"
89
90
#define YYLEX_PARAM p
91
92
typedef mrb_ast_node node;
93
typedef struct mrb_parser_state parser_state;
94
typedef struct mrb_parser_heredoc_info parser_heredoc_info;
95
96
static int yyparse(parser_state *p);
97
static int yylex(void *lval, void *lp, parser_state *p);
98
static void yyerror(void *lp, parser_state *p, const char *s);
99
static void yywarning(parser_state *p, const char *s);
100
static void backref_error(parser_state *p, node *n);
101
static void void_expr_error(parser_state *p, node *n);
102
static void tokadd(parser_state *p, int32_t c);
103
104
806k
#define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
105
106
typedef unsigned int stack_type;
107
108
144k
#define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
109
0
#define BITSTACK_POP(stack)     ((stack) = (stack) >> 1)
110
144k
#define BITSTACK_LEXPOP(stack)  ((stack) = ((stack) >> 1) | ((stack) & 1))
111
0
#define BITSTACK_SET_P(stack)   ((stack)&1)
112
113
72.4k
#define COND_PUSH(n)    BITSTACK_PUSH(p->cond_stack, (n))
114
0
#define COND_POP()      BITSTACK_POP(p->cond_stack)
115
72.4k
#define COND_LEXPOP()   BITSTACK_LEXPOP(p->cond_stack)
116
0
#define COND_P()        BITSTACK_SET_P(p->cond_stack)
117
118
72.4k
#define CMDARG_PUSH(n)  BITSTACK_PUSH(p->cmdarg_stack, (n))
119
#define CMDARG_POP()    BITSTACK_POP(p->cmdarg_stack)
120
72.4k
#define CMDARG_LEXPOP() BITSTACK_LEXPOP(p->cmdarg_stack)
121
0
#define CMDARG_P()      BITSTACK_SET_P(p->cmdarg_stack)
122
123
4.38k
#define SET_LINENO(c,n) ((c)->lineno = (n))
124
141k
#define NODE_LINENO(c,n) do {\
125
141k
  if (n) {\
126
141k
     (c)->filename_index = (n)->filename_index;\
127
141k
     (c)->lineno = (n)->lineno;\
128
141k
  }\
129
141k
} while (0)
130
131
47.0M
#define sym(x) ((mrb_sym)(intptr_t)(x))
132
#define nsym(x) ((node*)(intptr_t)(x))
133
109
#define nint(x) ((node*)(intptr_t)(x))
134
1.67M
#define intn(x) ((int)(intptr_t)(x))
135
0
#define typen(x) ((enum node_type)(intptr_t)(x))
136
137
795k
#define NUM_SUFFIX_R   (1<<0)
138
795k
#define NUM_SUFFIX_I   (1<<1)
139
140
static inline mrb_sym
141
intern_cstr_gen(parser_state *p, const char *s)
142
26.6k
{
143
26.6k
  return mrb_intern_cstr(p->mrb, s);
144
26.6k
}
145
26.6k
#define intern_cstr(s) intern_cstr_gen(p,(s))
146
147
static inline mrb_sym
148
intern_gen(parser_state *p, const char *s, size_t len)
149
86.6k
{
150
86.6k
  return mrb_intern(p->mrb, s, len);
151
86.6k
}
152
86.6k
#define intern(s,len) intern_gen(p,(s),(len))
153
154
6.65k
#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
155
156
static mrb_sym
157
intern_numparam_gen(parser_state *p, int num)
158
0
{
159
0
  char buf[3];
160
0
  buf[0] = '_'; buf[1] = '0'+num; buf[2] = '\0';
161
0
  return intern(buf, 2);
162
0
}
163
0
#define intern_numparam(n) intern_numparam_gen(p,(n))
164
165
static void
166
cons_free_gen(parser_state *p, node *cons)
167
1.25M
{
168
1.25M
  cons->cdr = p->cells;
169
1.25M
  p->cells = cons;
170
1.25M
}
171
1.25M
#define cons_free(c) cons_free_gen(p, (c))
172
173
static void*
174
parser_palloc(parser_state *p, size_t size)
175
3.89M
{
176
3.89M
  void *m = mrb_mempool_alloc(p->pool, size);
177
178
3.89M
  if (!m) {
179
0
    MRB_THROW(p->mrb->jmp);
180
0
  }
181
3.89M
  return m;
182
3.89M
}
183
184
416k
#define parser_pfree(ptr) do { if (sizeof(node) <= sizeof(*(ptr))) cons_free((node*)ptr);} while (0)
185
186
static node*
187
cons_gen(parser_state *p, node *car, node *cdr)
188
4.04M
{
189
4.04M
  node *c;
190
191
4.04M
  if (p->cells) {
192
1.25M
    c = p->cells;
193
1.25M
    p->cells = p->cells->cdr;
194
1.25M
  }
195
2.79M
  else {
196
2.79M
    c = (node*)parser_palloc(p, sizeof(mrb_ast_node));
197
2.79M
  }
198
199
4.04M
  c->car = car;
200
4.04M
  c->cdr = cdr;
201
4.04M
  c->lineno = p->lineno;
202
4.04M
  c->filename_index = p->current_filename_index;
203
  /* beginning of next partial file; need to point the previous file */
204
4.04M
  if (p->lineno == 0 && p->current_filename_index > 0) {
205
0
    c->filename_index--;
206
0
  }
207
4.04M
  return c;
208
4.04M
}
209
2.79M
#define cons(a,b) cons_gen(p,(a),(b))
210
211
static node*
212
list1_gen(parser_state *p, node *a)
213
796k
{
214
796k
  return cons(a, 0);
215
796k
}
216
796k
#define list1(a) list1_gen(p, (a))
217
218
static node*
219
list2_gen(parser_state *p, node *a, node *b)
220
61.6k
{
221
61.6k
  return cons(a, cons(b,0));
222
61.6k
}
223
61.6k
#define list2(a,b) list2_gen(p, (a),(b))
224
225
static node*
226
list3_gen(parser_state *p, node *a, node *b, node *c)
227
265k
{
228
265k
  return cons(a, cons(b, cons(c,0)));
229
265k
}
230
265k
#define list3(a,b,c) list3_gen(p, (a),(b),(c))
231
232
static node*
233
list4_gen(parser_state *p, node *a, node *b, node *c, node *d)
234
51.5k
{
235
51.5k
  return cons(a, cons(b, cons(c, cons(d, 0))));
236
51.5k
}
237
75.8k
#define list4(a,b,c,d) list4_gen(p, (a),(b),(c),(d))
238
239
static node*
240
list5_gen(parser_state *p, node *a, node *b, node *c, node *d, node *e)
241
109
{
242
109
  return cons(a, cons(b, cons(c, cons(d, cons(e, 0)))));
243
109
}
244
109
#define list5(a,b,c,d,e) list5_gen(p, (a),(b),(c),(d),(e))
245
246
static node*
247
list6_gen(parser_state *p, node *a, node *b, node *c, node *d, node *e, node *f)
248
0
{
249
0
  return cons(a, cons(b, cons(c, cons(d, cons(e, cons(f, 0))))));
250
0
}
251
0
#define list6(a,b,c,d,e,f) list6_gen(p, (a),(b),(c),(d),(e),(f))
252
253
static node*
254
append_gen(parser_state *p, node *a, node *b)
255
751k
{
256
751k
  node *c = a;
257
258
751k
  if (!a) return b;
259
466k
  if (!b) return a;
260
2.22G
  while (c->cdr) {
261
2.22G
    c = c->cdr;
262
2.22G
  }
263
466k
  c->cdr = b;
264
466k
  return a;
265
466k
}
266
0
#define append(a,b) append_gen(p,(a),(b))
267
751k
#define push(a,b) append_gen(p,(a),list1(b))
268
269
static char*
270
parser_strndup(parser_state *p, const char *s, size_t len)
271
681k
{
272
681k
  char *b = (char*)parser_palloc(p, len+1);
273
274
681k
  memcpy(b, s, len);
275
681k
  b[len] = '\0';
276
681k
  return b;
277
681k
}
278
#undef strndup
279
0
#define strndup(s,len) parser_strndup(p, s, len)
280
281
static char*
282
parser_strdup(parser_state *p, const char *s)
283
265k
{
284
265k
  return parser_strndup(p, s, strlen(s));
285
265k
}
286
#undef strdup
287
#define strdup(s) parser_strdup(p, s)
288
289
static void
290
dump_int(uint16_t i, char *s)
291
0
{
292
0
  char *p = s;
293
0
  char *t = s;
294
295
0
  while (i > 0) {
296
0
    *p++ = (i % 10)+'0';
297
0
    i /= 10;
298
0
  }
299
0
  if (p == s) *p++ = '0';
300
0
  *p = 0;
301
0
  p--;  /* point the last char */
302
0
  while (t < p) {
303
0
    char c = *t;
304
0
    *t++ = *p;
305
0
    *p-- = c;
306
0
  }
307
0
}
308
309
/* xxx ----------------------------- */
310
311
static node*
312
local_switch(parser_state *p)
313
109
{
314
109
  node *prev = p->locals;
315
316
109
  p->locals = cons(0, 0);
317
109
  return prev;
318
109
}
319
320
static void
321
local_resume(parser_state *p, node *prev)
322
109
{
323
109
  p->locals = prev;
324
109
}
325
326
static void
327
local_nest(parser_state *p)
328
0
{
329
0
  p->locals = cons(0, p->locals);
330
0
}
331
332
static void
333
local_unnest(parser_state *p)
334
0
{
335
0
  if (p->locals) {
336
0
    p->locals = p->locals->cdr;
337
0
  }
338
0
}
339
340
static mrb_bool
341
local_var_p(parser_state *p, mrb_sym sym)
342
127k
{
343
127k
  const struct RProc *u;
344
127k
  node *l = p->locals;
345
346
165k
  while (l) {
347
127k
    node *n = l->car;
348
39.3M
    while (n) {
349
39.3M
      if (sym(n->car) == sym) return TRUE;
350
39.2M
      n = n->cdr;
351
39.2M
    }
352
38.1k
    l = l->cdr;
353
38.1k
  }
354
355
38.1k
  u = p->upper;
356
38.1k
  while (u && !MRB_PROC_CFUNC_P(u)) {
357
0
    const struct mrb_irep *ir = u->body.irep;
358
0
    const mrb_sym *v = ir->lv;
359
0
    int i;
360
361
0
    if (v) {
362
0
      for (i=0; i+1 < ir->nlocals; i++) {
363
0
        if (v[i] == sym) return TRUE;
364
0
      }
365
0
    }
366
0
    if (MRB_PROC_SCOPE_P(u)) break;
367
0
    u = u->upper;
368
0
  }
369
38.1k
  return FALSE;
370
38.1k
}
371
372
static void
373
local_add_f(parser_state *p, mrb_sym sym)
374
19.0k
{
375
19.0k
  if (p->locals) {
376
19.0k
    node *n = p->locals->car;
377
7.72M
    while (n) {
378
7.71M
      if (sym(n->car) == sym) {
379
0
        mrb_int len;
380
0
        const char* name = mrb_sym_name_len(p->mrb, sym, &len);
381
0
        if (len > 0 && name[0] != '_') {
382
0
          yyerror(NULL, p, "duplicated argument name");
383
0
          return;
384
0
        }
385
0
      }
386
7.71M
      n = n->cdr;
387
7.71M
    }
388
19.0k
    p->locals->car = push(p->locals->car, nsym(sym));
389
19.0k
  }
390
19.0k
}
391
392
static void
393
local_add(parser_state *p, mrb_sym sym)
394
48.4k
{
395
48.4k
  if (!local_var_p(p, sym)) {
396
18.9k
    local_add_f(p, sym);
397
18.9k
  }
398
48.4k
}
399
400
/* allocate register for block */
401
0
#define local_add_blk(p) local_add_f(p, 0)
402
403
static void
404
local_add_kw(parser_state *p, mrb_sym kwd)
405
0
{
406
  /* allocate register for keywords hash */
407
0
  local_add_f(p, kwd ? kwd : intern_op(pow));
408
0
}
409
410
static node*
411
locals_node(parser_state *p)
412
218
{
413
218
  return p->locals ? p->locals->car : NULL;
414
218
}
415
416
static void
417
nvars_nest(parser_state *p)
418
0
{
419
0
  p->nvars = cons(nint(0), p->nvars);
420
0
}
421
422
static void
423
nvars_block(parser_state *p)
424
109
{
425
109
  p->nvars = cons(nint(-2), p->nvars);
426
109
}
427
428
static void
429
nvars_unnest(parser_state *p)
430
109
{
431
109
  p->nvars = p->nvars->cdr;
432
109
}
433
434
/* (:scope (vars..) (prog...)) */
435
static node*
436
new_scope(parser_state *p, node *body)
437
109
{
438
109
  return cons((node*)NODE_SCOPE, cons(locals_node(p), body));
439
109
}
440
441
/* (:begin prog...) */
442
static node*
443
new_begin(parser_state *p, node *body)
444
68.5k
{
445
68.5k
  if (body) {
446
61.6k
    return list2((node*)NODE_BEGIN, body);
447
61.6k
  }
448
6.87k
  return cons((node*)NODE_BEGIN, 0);
449
68.5k
}
450
451
#define newline_node(n) (n)
452
453
/* (:rescue body rescue else) */
454
static node*
455
new_rescue(parser_state *p, node *body, node *resq, node *els)
456
0
{
457
0
  return list4((node*)NODE_RESCUE, body, resq, els);
458
0
}
459
460
static node*
461
new_mod_rescue(parser_state *p, node *body, node *resq)
462
0
{
463
0
  return new_rescue(p, body, list1(list3(0, 0, resq)), 0);
464
0
}
465
466
/* (:ensure body ensure) */
467
static node*
468
new_ensure(parser_state *p, node *a, node *b)
469
0
{
470
0
  return cons((node*)NODE_ENSURE, cons(a, cons(0, b)));
471
0
}
472
473
/* (:nil) */
474
static node*
475
new_nil(parser_state *p)
476
0
{
477
0
  return list1((node*)NODE_NIL);
478
0
}
479
480
/* (:true) */
481
static node*
482
new_true(parser_state *p)
483
0
{
484
0
  return list1((node*)NODE_TRUE);
485
0
}
486
487
/* (:false) */
488
static node*
489
new_false(parser_state *p)
490
0
{
491
0
  return list1((node*)NODE_FALSE);
492
0
}
493
494
/* (:alias new old) */
495
static node*
496
new_alias(parser_state *p, mrb_sym a, mrb_sym b)
497
0
{
498
0
  return cons((node*)NODE_ALIAS, cons(nsym(a), nsym(b)));
499
0
}
500
501
/* (:if cond then else) */
502
static node*
503
new_if(parser_state *p, node *a, node *b, node *c)
504
6.82k
{
505
6.82k
  void_expr_error(p, a);
506
6.82k
  return list4((node*)NODE_IF, a, b, c);
507
6.82k
}
508
509
/* (:unless cond then else) */
510
static node*
511
new_unless(parser_state *p, node *a, node *b, node *c)
512
0
{
513
0
  void_expr_error(p, a);
514
0
  return list4((node*)NODE_IF, a, c, b);
515
0
}
516
517
/* (:while cond body) */
518
static node*
519
new_while(parser_state *p, node *a, node *b)
520
0
{
521
0
  void_expr_error(p, a);
522
0
  return cons((node*)NODE_WHILE, cons(a, b));
523
0
}
524
525
/* (:until cond body) */
526
static node*
527
new_until(parser_state *p, node *a, node *b)
528
0
{
529
0
  void_expr_error(p, a);
530
0
  return cons((node*)NODE_UNTIL, cons(a, b));
531
0
}
532
533
/* (:for var obj body) */
534
static node*
535
new_for(parser_state *p, node *v, node *o, node *b)
536
0
{
537
0
  void_expr_error(p, o);
538
0
  return list4((node*)NODE_FOR, v, o, b);
539
0
}
540
541
/* (:case a ((when ...) body) ((when...) body)) */
542
static node*
543
new_case(parser_state *p, node *a, node *b)
544
0
{
545
0
  node *n = list2((node*)NODE_CASE, a);
546
0
  node *n2 = n;
547
548
0
  void_expr_error(p, a);
549
0
  while (n2->cdr) {
550
0
    n2 = n2->cdr;
551
0
  }
552
0
  n2->cdr = b;
553
0
  return n;
554
0
}
555
556
/* (:postexe a) */
557
static node*
558
new_postexe(parser_state *p, node *a)
559
0
{
560
0
  return cons((node*)NODE_POSTEXE, a);
561
0
}
562
563
/* (:self) */
564
static node*
565
new_self(parser_state *p)
566
0
{
567
0
  return list1((node*)NODE_SELF);
568
0
}
569
570
/* (:call a b c) */
571
static node*
572
new_call(parser_state *p, node *a, mrb_sym b, node *c, int pass)
573
37.9k
{
574
37.9k
  node *n = list4(nint(pass?NODE_CALL:NODE_SCALL), a, nsym(b), c);
575
37.9k
  void_expr_error(p, a);
576
37.9k
  NODE_LINENO(n, a);
577
37.9k
  return n;
578
37.9k
}
579
580
/* (:fcall self mid args) */
581
static node*
582
new_fcall(parser_state *p, mrb_sym b, node *c)
583
109
{
584
109
  node *n = list4((node*)NODE_FCALL, 0, nsym(b), c);
585
109
  NODE_LINENO(n, c);
586
109
  return n;
587
109
}
588
589
/* (a b . c) */
590
static node*
591
new_callargs(parser_state *p, node *a, node *b, node *c)
592
36.1k
{
593
36.1k
  return cons(a, cons(b, c));
594
36.1k
}
595
596
/* (:super . c) */
597
static node*
598
new_super(parser_state *p, node *c)
599
0
{
600
0
  return cons((node*)NODE_SUPER, c);
601
0
}
602
603
/* (:zsuper) */
604
static node*
605
new_zsuper(parser_state *p)
606
0
{
607
0
  return cons((node*)NODE_ZSUPER, 0);
608
0
}
609
610
/* (:yield . c) */
611
static node*
612
new_yield(parser_state *p, node *c)
613
0
{
614
0
  if (c && c->cdr && c->cdr->cdr) {
615
0
        yyerror(NULL, p, "both block arg and actual block given");
616
0
  }
617
618
0
  return cons((node*)NODE_YIELD, c);
619
0
}
620
621
/* (:return . c) */
622
static node*
623
new_return(parser_state *p, node *c)
624
0
{
625
0
  return cons((node*)NODE_RETURN, c);
626
0
}
627
628
/* (:break . c) */
629
static node*
630
new_break(parser_state *p, node *c)
631
0
{
632
0
  return cons((node*)NODE_BREAK, c);
633
0
}
634
635
/* (:next . c) */
636
static node*
637
new_next(parser_state *p, node *c)
638
0
{
639
0
  return cons((node*)NODE_NEXT, c);
640
0
}
641
642
/* (:redo) */
643
static node*
644
new_redo(parser_state *p)
645
0
{
646
0
  return list1((node*)NODE_REDO);
647
0
}
648
649
/* (:retry) */
650
static node*
651
new_retry(parser_state *p)
652
0
{
653
0
  return list1((node*)NODE_RETRY);
654
0
}
655
656
/* (:dot2 a b) */
657
static node*
658
new_dot2(parser_state *p, node *a, node *b)
659
0
{
660
0
  return cons((node*)NODE_DOT2, cons(a, b));
661
0
}
662
663
/* (:dot3 a b) */
664
static node*
665
new_dot3(parser_state *p, node *a, node *b)
666
0
{
667
0
  return cons((node*)NODE_DOT3, cons(a, b));
668
0
}
669
670
/* (:colon2 b c) */
671
static node*
672
new_colon2(parser_state *p, node *b, mrb_sym c)
673
59
{
674
59
  void_expr_error(p, b);
675
59
  return cons((node*)NODE_COLON2, cons(b, nsym(c)));
676
59
}
677
678
/* (:colon3 . c) */
679
static node*
680
new_colon3(parser_state *p, mrb_sym c)
681
0
{
682
0
  return cons((node*)NODE_COLON3, nsym(c));
683
0
}
684
685
/* (:and a b) */
686
static node*
687
new_and(parser_state *p, node *a, node *b)
688
1.13k
{
689
1.13k
  void_expr_error(p, a);
690
1.13k
  return cons((node*)NODE_AND, cons(a, b));
691
1.13k
}
692
693
/* (:or a b) */
694
static node*
695
new_or(parser_state *p, node *a, node *b)
696
2.11k
{
697
2.11k
  void_expr_error(p, a);
698
2.11k
  return cons((node*)NODE_OR, cons(a, b));
699
2.11k
}
700
701
/* (:array a...) */
702
static node*
703
new_array(parser_state *p, node *a)
704
6.53k
{
705
6.53k
  return cons((node*)NODE_ARRAY, a);
706
6.53k
}
707
708
/* (:splat . a) */
709
static node*
710
new_splat(parser_state *p, node *a)
711
0
{
712
0
  void_expr_error(p, a);
713
0
  return cons((node*)NODE_SPLAT, a);
714
0
}
715
716
/* (:hash (k . v) (k . v)...) */
717
static node*
718
new_hash(parser_state *p, node *a)
719
1.66k
{
720
1.66k
  return cons((node*)NODE_HASH, a);
721
1.66k
}
722
723
/* (:kw_hash (k . v) (k . v)...) */
724
static node*
725
new_kw_hash(parser_state *p, node *a)
726
0
{
727
0
  return cons((node*)NODE_KW_HASH, a);
728
0
}
729
730
/* (:sym . a) */
731
static node*
732
new_sym(parser_state *p, mrb_sym sym)
733
0
{
734
0
  return cons((node*)NODE_SYM, nsym(sym));
735
0
}
736
737
static mrb_sym
738
new_strsym(parser_state *p, node* str)
739
0
{
740
0
  const char *s = (const char*)str->cdr->car;
741
0
  size_t len = (size_t)str->cdr->cdr;
742
743
0
  return mrb_intern(p->mrb, s, len);
744
0
}
745
746
/* (:lvar . a) */
747
static node*
748
new_lvar(parser_state *p, mrb_sym sym)
749
63.6k
{
750
63.6k
  return cons((node*)NODE_LVAR, nsym(sym));
751
63.6k
}
752
753
/* (:gvar . a) */
754
static node*
755
new_gvar(parser_state *p, mrb_sym sym)
756
0
{
757
0
  return cons((node*)NODE_GVAR, nsym(sym));
758
0
}
759
760
/* (:ivar . a) */
761
static node*
762
new_ivar(parser_state *p, mrb_sym sym)
763
6.65k
{
764
6.65k
  return cons((node*)NODE_IVAR, nsym(sym));
765
6.65k
}
766
767
/* (:cvar . a) */
768
static node*
769
new_cvar(parser_state *p, mrb_sym sym)
770
0
{
771
0
  return cons((node*)NODE_CVAR, nsym(sym));
772
0
}
773
774
/* (:nvar . a) */
775
static node*
776
new_nvar(parser_state *p, int num)
777
0
{
778
0
  int nvar;
779
0
  node *nvars = p->nvars->cdr;
780
0
  while (nvars) {
781
0
    nvar = intn(nvars->car);
782
0
    if (nvar == -2) break; /* top of the scope */
783
0
    if (nvar > 0) {
784
0
      yyerror(NULL, p, "numbered parameter used in outer block");
785
0
      break;
786
0
    }
787
0
    nvars->car = nint(-1);
788
0
    nvars = nvars->cdr;
789
0
  }
790
0
  nvar = intn(p->nvars->car);
791
0
  if (nvar == -1) {
792
0
    yyerror(NULL, p, "numbered parameter used in inner block");
793
0
  }
794
0
  else {
795
0
    p->nvars->car = nint(nvar > num ? nvar : num);
796
0
  }
797
0
  return cons((node*)NODE_NVAR, nint(num));
798
0
}
799
800
/* (:const . a) */
801
static node*
802
new_const(parser_state *p, mrb_sym sym)
803
4.81k
{
804
4.81k
  return cons((node*)NODE_CONST, nsym(sym));
805
4.81k
}
806
807
/* (:undef a...) */
808
static node*
809
new_undef(parser_state *p, mrb_sym sym)
810
0
{
811
0
  return list2((node*)NODE_UNDEF, nsym(sym));
812
0
}
813
814
/* (:class class super body) */
815
static node*
816
new_class(parser_state *p, node *c, node *s, node *b)
817
0
{
818
0
  void_expr_error(p, s);
819
0
  return list4((node*)NODE_CLASS, c, s, cons(locals_node(p), b));
820
0
}
821
822
/* (:sclass obj body) */
823
static node*
824
new_sclass(parser_state *p, node *o, node *b)
825
0
{
826
0
  void_expr_error(p, o);
827
0
  return list3((node*)NODE_SCLASS, o, cons(locals_node(p), b));
828
0
}
829
830
/* (:module module body) */
831
static node*
832
new_module(parser_state *p, node *m, node *b)
833
0
{
834
0
  return list3((node*)NODE_MODULE, m, cons(locals_node(p), b));
835
0
}
836
837
/* (:def m lv (arg . body)) */
838
static node*
839
new_def(parser_state *p, mrb_sym m, node *a, node *b)
840
109
{
841
109
  return list5((node*)NODE_DEF, nsym(m), 0, a, b);
842
109
}
843
844
static void
845
defn_setup(parser_state *p, node *d, node *a, node *b)
846
109
{
847
109
  node *n = d->cdr->cdr;
848
849
109
  n->car = locals_node(p);
850
109
  p->cmdarg_stack = intn(n->cdr->car);
851
109
  n->cdr->car = a;
852
109
  local_resume(p, n->cdr->cdr->car);
853
109
  n->cdr->cdr->car = b;
854
109
}
855
856
/* (:sdef obj m lv (arg . body)) */
857
static node*
858
new_sdef(parser_state *p, node *o, mrb_sym m, node *a, node *b)
859
0
{
860
0
  void_expr_error(p, o);
861
0
  return list6((node*)NODE_SDEF, o, nsym(m), 0, a, b);
862
0
}
863
864
static void
865
defs_setup(parser_state *p, node *d, node *a, node *b)
866
0
{
867
0
  node *n = d->cdr->cdr->cdr;
868
869
0
  n->car = locals_node(p);
870
0
  p->cmdarg_stack = intn(n->cdr->car);
871
0
  n->cdr->car = a;
872
0
  local_resume(p, n->cdr->cdr->car);
873
0
  n->cdr->cdr->car = b;
874
0
}
875
876
/* (:arg . sym) */
877
static node*
878
new_arg(parser_state *p, mrb_sym sym)
879
0
{
880
0
  return cons((node*)NODE_ARG, nsym(sym));
881
0
}
882
883
static void
884
local_add_margs(parser_state *p, node *n)
885
218
{
886
218
  while (n) {
887
0
    if (typen(n->car->car) == NODE_MASGN) {
888
0
      node *t = n->car->cdr->cdr;
889
890
0
      n->car->cdr->cdr = NULL;
891
0
      while (t) {
892
0
        local_add_f(p, sym(t->car));
893
0
        t = t->cdr;
894
0
      }
895
0
      local_add_margs(p, n->car->cdr->car->car);
896
0
      local_add_margs(p, n->car->cdr->car->cdr->cdr->car);
897
0
    }
898
0
    n = n->cdr;
899
0
  }
900
218
}
901
902
static void
903
local_add_lv(parser_state *p, node *lv)
904
0
{
905
0
  while (lv) {
906
0
    local_add_f(p, sym(lv->car));
907
0
    lv = lv->cdr;
908
0
  }
909
0
}
910
911
/* (m o r m2 tail) */
912
/* m: (a b c) */
913
/* o: ((a . e1) (b . e2)) */
914
/* r: a */
915
/* m2: (a b c) */
916
/* b: a */
917
static node*
918
new_args(parser_state *p, node *m, node *opt, mrb_sym rest, node *m2, node *tail)
919
109
{
920
109
  node *n;
921
922
109
  local_add_margs(p, m);
923
109
  local_add_margs(p, m2);
924
109
  n = cons(m2, tail);
925
109
  n = cons(nsym(rest), n);
926
109
  n = cons(opt, n);
927
109
  while (opt) {
928
    /* opt: (sym . (opt . lv)) -> (sym . opt) */
929
0
    local_add_lv(p, opt->car->cdr->cdr);
930
0
    opt->car->cdr = opt->car->cdr->car;
931
0
    opt = opt->cdr;
932
0
  }
933
109
  return cons(m, n);
934
109
}
935
936
/* (:args_tail keywords rest_keywords_sym block_sym) */
937
static node*
938
new_args_tail(parser_state *p, node *kws, node *kwrest, mrb_sym blk)
939
0
{
940
0
  node *k;
941
942
0
  if (kws || kwrest) {
943
0
    local_add_kw(p, (kwrest && kwrest->cdr)? sym(kwrest->cdr) : 0);
944
0
  }
945
946
0
  local_add_blk(p);
947
0
  if (blk) local_add_f(p, blk);
948
949
  /* allocate register for keywords arguments */
950
  /* order is for Proc#parameters */
951
0
  for (k = kws; k; k = k->cdr) {
952
0
    if (!k->car->cdr->cdr->car) { /* allocate required keywords */
953
0
      local_add_f(p, sym(k->car->cdr->car));
954
0
    }
955
0
  }
956
0
  for (k = kws; k; k = k->cdr) {
957
0
    if (k->car->cdr->cdr->car) { /* allocate keywords with default */
958
0
      local_add_lv(p, k->car->cdr->cdr->car->cdr);
959
0
      k->car->cdr->cdr->car = k->car->cdr->cdr->car->car;
960
0
      local_add_f(p, sym(k->car->cdr->car));
961
0
    }
962
0
  }
963
964
0
  return list4((node*)NODE_ARGS_TAIL, kws, kwrest, nsym(blk));
965
0
}
966
967
/* (:kw_arg kw_sym def_arg) */
968
static node*
969
new_kw_arg(parser_state *p, mrb_sym kw, node *def_arg)
970
0
{
971
0
  mrb_assert(kw);
972
0
  return list3((node*)NODE_KW_ARG, nsym(kw), def_arg);
973
0
}
974
975
/* (:kw_rest_args . a) */
976
static node*
977
new_kw_rest_args(parser_state *p, mrb_sym sym)
978
0
{
979
0
  return cons((node*)NODE_KW_REST_ARGS, nsym(sym));
980
0
}
981
982
static node*
983
new_args_dots(parser_state *p, node *m)
984
0
{
985
0
  mrb_sym r = intern_op(mul);
986
0
  mrb_sym k = intern_op(pow);
987
0
  mrb_sym b = intern_op(and);
988
0
  local_add_f(p, r);
989
0
  return new_args(p, m, 0, r, 0,
990
0
                  new_args_tail(p, 0, new_kw_rest_args(p, k), b));
991
0
}
992
993
/* (:block_arg . a) */
994
static node*
995
new_block_arg(parser_state *p, node *a)
996
0
{
997
0
  return cons((node*)NODE_BLOCK_ARG, a);
998
0
}
999
1000
static node*
1001
setup_numparams(parser_state *p, node *a)
1002
0
{
1003
0
  int nvars = intn(p->nvars->car);
1004
0
  if (nvars > 0) {
1005
0
    int i;
1006
0
    mrb_sym sym;
1007
    // m || opt || rest || tail
1008
0
    if (a && (a->car || (a->cdr && a->cdr->car) || (a->cdr->cdr && a->cdr->cdr->car) || (a->cdr->cdr->cdr->cdr && a->cdr->cdr->cdr->cdr->car))) {
1009
0
      yyerror(NULL, p, "ordinary parameter is defined");
1010
0
    }
1011
0
    else if (p->locals) {
1012
      /* p->locals should not be NULL unless error happens before the point */
1013
0
      node* args = 0;
1014
0
      for (i = nvars; i > 0; i--) {
1015
0
        char buf[3];
1016
1017
0
        buf[0] = '_';
1018
0
        buf[1] = i+'0';
1019
0
        buf[2] = '\0';
1020
0
        sym = intern_cstr(buf);
1021
0
        args = cons(new_arg(p, sym), args);
1022
0
        p->locals->car = cons(nsym(sym), p->locals->car);
1023
0
      }
1024
0
      a = new_args(p, args, 0, 0, 0, 0);
1025
0
    }
1026
0
  }
1027
0
  return a;
1028
0
}
1029
1030
/* (:block arg body) */
1031
static node*
1032
new_block(parser_state *p, node *a, node *b)
1033
0
{
1034
0
  a = setup_numparams(p, a);
1035
0
  return list4((node*)NODE_BLOCK, locals_node(p), a, b);
1036
0
}
1037
1038
/* (:lambda arg body) */
1039
static node*
1040
new_lambda(parser_state *p, node *a, node *b)
1041
0
{
1042
0
  a = setup_numparams(p, a);
1043
0
  return list4((node*)NODE_LAMBDA, locals_node(p), a, b);
1044
0
}
1045
1046
/* (:asgn lhs rhs) */
1047
static node*
1048
new_asgn(parser_state *p, node *a, node *b)
1049
48.4k
{
1050
48.4k
  void_expr_error(p, b);
1051
48.4k
  return cons((node*)NODE_ASGN, cons(a, b));
1052
48.4k
}
1053
1054
/* (:masgn mlhs=(pre rest post)  mrhs) */
1055
static node*
1056
new_masgn(parser_state *p, node *a, node *b)
1057
0
{
1058
0
  void_expr_error(p, b);
1059
0
  return cons((node*)NODE_MASGN, cons(a, b));
1060
0
}
1061
1062
/* (:masgn mlhs mrhs) no check */
1063
static node*
1064
new_masgn_param(parser_state *p, node *a, node *b)
1065
0
{
1066
0
  return cons((node*)NODE_MASGN, cons(a, b));
1067
0
}
1068
1069
/* (:asgn lhs rhs) */
1070
static node*
1071
new_op_asgn(parser_state *p, node *a, mrb_sym op, node *b)
1072
6.65k
{
1073
6.65k
  void_expr_error(p, b);
1074
6.65k
  return list4((node*)NODE_OP_ASGN, a, nsym(op), b);
1075
6.65k
}
1076
1077
static node*
1078
new_imaginary(parser_state *p, node *imaginary)
1079
0
{
1080
0
  return new_call(p, new_const(p, MRB_SYM_2(p->mrb, Kernel)), MRB_SYM_2(p->mrb, Complex),
1081
0
                  new_callargs(p, list2(list3((node*)NODE_INT, (node*)strdup("0"), nint(10)), imaginary), 0, 0), '.');
1082
0
}
1083
1084
static node*
1085
new_rational(parser_state *p, node *rational)
1086
0
{
1087
0
  return new_call(p, new_const(p, MRB_SYM_2(p->mrb, Kernel)), MRB_SYM_2(p->mrb, Rational), new_callargs(p, list1(rational), 0, 0), '.');
1088
0
}
1089
1090
/* (:int . i) */
1091
static node*
1092
new_int(parser_state *p, const char *s, int base, int suffix)
1093
265k
{
1094
265k
  node* result = list3((node*)NODE_INT, (node*)strdup(s), nint(base));
1095
265k
  if (suffix & NUM_SUFFIX_R) {
1096
0
    result = new_rational(p, result);
1097
0
  }
1098
265k
  if (suffix & NUM_SUFFIX_I) {
1099
0
    result = new_imaginary(p, result);
1100
0
  }
1101
265k
  return result;
1102
265k
}
1103
1104
#ifndef MRB_NO_FLOAT
1105
/* (:float . i) */
1106
static node*
1107
new_float(parser_state *p, const char *s, int suffix)
1108
0
{
1109
0
  node* result = cons((node*)NODE_FLOAT, (node*)strdup(s));
1110
0
  if (suffix & NUM_SUFFIX_R) {
1111
0
    result = new_rational(p, result);
1112
0
  }
1113
0
  if (suffix & NUM_SUFFIX_I) {
1114
0
    result = new_imaginary(p, result);
1115
0
  }
1116
0
  return result;
1117
0
}
1118
#endif
1119
1120
/* (:str . (s . len)) */
1121
static node*
1122
new_str(parser_state *p, const char *s, size_t len)
1123
416k
{
1124
416k
  return cons((node*)NODE_STR, cons((node*)strndup(s, len), nint(len)));
1125
416k
}
1126
1127
/* (:dstr . a) */
1128
static node*
1129
new_dstr(parser_state *p, node *a)
1130
0
{
1131
0
  return cons((node*)NODE_DSTR, a);
1132
0
}
1133
1134
static int
1135
string_node_p(node *n)
1136
0
{
1137
0
  return (int)(typen(n->car) == NODE_STR);
1138
0
}
1139
1140
static node*
1141
composite_string_node(parser_state *p, node *a, node *b)
1142
0
{
1143
0
  size_t newlen = (size_t)a->cdr + (size_t)b->cdr;
1144
0
  char *str = (char*)mrb_mempool_realloc(p->pool, a->car, (size_t)a->cdr + 1, newlen + 1);
1145
0
  memcpy(str + (size_t)a->cdr, b->car, (size_t)b->cdr);
1146
0
  str[newlen] = '\0';
1147
0
  a->car = (node*)str;
1148
0
  a->cdr = (node*)newlen;
1149
0
  cons_free(b);
1150
0
  return a;
1151
0
}
1152
1153
static node*
1154
concat_string(parser_state *p, node *a, node *b)
1155
0
{
1156
0
  if (string_node_p(a)) {
1157
0
    if (string_node_p(b)) {
1158
      /* a == NODE_STR && b == NODE_STR */
1159
0
      composite_string_node(p, a->cdr, b->cdr);
1160
0
      cons_free(b);
1161
0
      return a;
1162
0
    }
1163
0
    else {
1164
      /* a == NODE_STR && b == NODE_DSTR */
1165
1166
0
      if (string_node_p(b->cdr->car)) {
1167
        /* a == NODE_STR && b->[NODE_STR, ...] */
1168
0
        composite_string_node(p, a->cdr, b->cdr->car->cdr);
1169
0
        cons_free(b->cdr->car);
1170
0
        b->cdr->car = a;
1171
0
        return b;
1172
0
      }
1173
0
    }
1174
0
  }
1175
0
  else {
1176
0
    node *c; /* last node of a */
1177
0
    for (c = a; c->cdr != NULL; c = c->cdr)
1178
0
      ;
1179
0
    if (string_node_p(b)) {
1180
      /* a == NODE_DSTR && b == NODE_STR */
1181
0
      if (string_node_p(c->car)) {
1182
        /* a->[..., NODE_STR] && b == NODE_STR */
1183
0
        composite_string_node(p, c->car->cdr, b->cdr);
1184
0
        cons_free(b);
1185
0
        return a;
1186
0
      }
1187
1188
0
      push(a, b);
1189
0
      return a;
1190
0
    }
1191
0
    else {
1192
      /* a == NODE_DSTR && b == NODE_DSTR */
1193
0
      if (string_node_p(c->car) && string_node_p(b->cdr->car)) {
1194
        /* a->[..., NODE_STR] && b->[NODE_STR, ...] */
1195
0
        node *d = b->cdr;
1196
0
        cons_free(b);
1197
0
        composite_string_node(p, c->car->cdr, d->car->cdr);
1198
0
        cons_free(d->car);
1199
0
        c->cdr = d->cdr;
1200
0
        cons_free(d);
1201
0
        return a;
1202
0
      }
1203
0
      else {
1204
0
        c->cdr = b->cdr;
1205
0
        cons_free(b);
1206
0
        return a;
1207
0
      }
1208
0
    }
1209
0
  }
1210
1211
0
  return new_dstr(p, list2(a, b));
1212
0
}
1213
1214
/* (:str . (s . len)) */
1215
static node*
1216
new_xstr(parser_state *p, const char *s, int len)
1217
0
{
1218
0
  return cons((node*)NODE_XSTR, cons((node*)strndup(s, len), nint(len)));
1219
0
}
1220
1221
/* (:xstr . a) */
1222
static node*
1223
new_dxstr(parser_state *p, node *a)
1224
0
{
1225
0
  return cons((node*)NODE_DXSTR, a);
1226
0
}
1227
1228
/* (:dsym . a) */
1229
static node*
1230
new_dsym(parser_state *p, node *a)
1231
0
{
1232
0
  return cons((node*)NODE_DSYM, a);
1233
0
}
1234
1235
/* (:regx . (s . (opt . enc))) */
1236
static node*
1237
new_regx(parser_state *p, const char *p1, const char* p2, const char* p3)
1238
0
{
1239
0
  return cons((node*)NODE_REGX, cons((node*)p1, cons((node*)p2, (node*)p3)));
1240
0
}
1241
1242
/* (:dregx . (a . b)) */
1243
static node*
1244
new_dregx(parser_state *p, node *a, node *b)
1245
0
{
1246
0
  return cons((node*)NODE_DREGX, cons(a, b));
1247
0
}
1248
1249
/* (:backref . n) */
1250
static node*
1251
new_back_ref(parser_state *p, int n)
1252
0
{
1253
0
  return cons((node*)NODE_BACK_REF, nint(n));
1254
0
}
1255
1256
/* (:nthref . n) */
1257
static node*
1258
new_nth_ref(parser_state *p, int n)
1259
0
{
1260
0
  return cons((node*)NODE_NTH_REF, nint(n));
1261
0
}
1262
1263
/* (:heredoc . a) */
1264
static node*
1265
new_heredoc(parser_state *p)
1266
0
{
1267
0
  parser_heredoc_info *inf = (parser_heredoc_info*)parser_palloc(p, sizeof(parser_heredoc_info));
1268
0
  return cons((node*)NODE_HEREDOC, (node*)inf);
1269
0
}
1270
1271
static void
1272
new_bv(parser_state *p, mrb_sym id)
1273
0
{
1274
0
}
1275
1276
static node*
1277
new_literal_delim(parser_state *p)
1278
0
{
1279
0
  return cons((node*)NODE_LITERAL_DELIM, 0);
1280
0
}
1281
1282
/* (:words . a) */
1283
static node*
1284
new_words(parser_state *p, node *a)
1285
0
{
1286
0
  return cons((node*)NODE_WORDS, a);
1287
0
}
1288
1289
/* (:symbols . a) */
1290
static node*
1291
new_symbols(parser_state *p, node *a)
1292
0
{
1293
0
  return cons((node*)NODE_SYMBOLS, a);
1294
0
}
1295
1296
/* xxx ----------------------------- */
1297
1298
/* (:call a op) */
1299
static node*
1300
call_uni_op(parser_state *p, node *recv, const char *m)
1301
0
{
1302
0
  void_expr_error(p, recv);
1303
0
  return new_call(p, recv, intern_cstr(m), 0, '.');
1304
0
}
1305
1306
/* (:call a op b) */
1307
static node*
1308
call_bin_op(parser_state *p, node *recv, const char *m, node *arg1)
1309
26.6k
{
1310
26.6k
  return new_call(p, recv, intern_cstr(m), new_callargs(p, list1(arg1), 0, 0), '.');
1311
26.6k
}
1312
1313
static void
1314
args_with_block(parser_state *p, node *a, node *b)
1315
0
{
1316
0
  if (b) {
1317
0
    if (a->cdr && a->cdr->cdr) {
1318
0
      yyerror(NULL, p, "both block arg and actual block given");
1319
0
    }
1320
0
    a->cdr->cdr = b;
1321
0
  }
1322
0
}
1323
1324
static void
1325
endless_method_name(parser_state *p, node *defn)
1326
0
{
1327
0
  mrb_sym sym = sym(defn->cdr->car);
1328
0
  mrb_int len;
1329
0
  const char *name = mrb_sym_name_len(p->mrb, sym, &len);
1330
1331
0
  if (len > 1 && name[len-1] == '=') {
1332
0
    for (int i=0; i<len-1; i++) {
1333
0
      if (!identchar(name[i])) return;
1334
0
    }
1335
0
    yyerror(NULL, p, "setter method cannot be defined by endless method definition");
1336
0
  }
1337
0
}
1338
1339
static void
1340
call_with_block(parser_state *p, node *a, node *b)
1341
0
{
1342
0
  node *n;
1343
1344
0
  switch (typen(a->car)) {
1345
0
  case NODE_SUPER:
1346
0
  case NODE_ZSUPER:
1347
0
    if (!a->cdr) a->cdr = new_callargs(p, 0, 0, b);
1348
0
    else args_with_block(p, a->cdr, b);
1349
0
    break;
1350
0
  case NODE_CALL:
1351
0
  case NODE_FCALL:
1352
0
  case NODE_SCALL:
1353
    /* (NODE_CALL recv mid (args kw . blk)) */
1354
0
    n = a->cdr->cdr->cdr; /* (args kw . blk) */
1355
0
    if (!n->car) n->car = new_callargs(p, 0, 0, b);
1356
0
    else args_with_block(p, n->car, b);
1357
0
    break;
1358
0
  case NODE_RETURN:
1359
0
  case NODE_BREAK:
1360
0
  case NODE_NEXT:
1361
0
    if (a->cdr == NULL) return;
1362
0
    call_with_block(p, a->cdr, b);
1363
0
    break;
1364
0
  default:
1365
0
    break;
1366
0
  }
1367
0
}
1368
1369
static node*
1370
new_negate(parser_state *p, node *n)
1371
0
{
1372
0
  return cons((node*)NODE_NEGATE, n);
1373
0
}
1374
1375
static node*
1376
cond(node *n)
1377
6.82k
{
1378
6.82k
  return n;
1379
6.82k
}
1380
1381
static node*
1382
ret_args(parser_state *p, node *n)
1383
0
{
1384
0
  if (n->cdr->cdr) {
1385
0
    yyerror(NULL, p, "block argument should not be given");
1386
0
    return NULL;
1387
0
  }
1388
0
  if (!n->car) return NULL;
1389
0
  if (!n->car->cdr) return n->car->car;
1390
0
  return new_array(p, n->car);
1391
0
}
1392
1393
static void
1394
assignable(parser_state *p, node *lhs)
1395
55.1k
{
1396
55.1k
  switch (intn(lhs->car)) {
1397
48.4k
  case NODE_LVAR:
1398
48.4k
    local_add(p, sym(lhs->cdr));
1399
48.4k
    break;
1400
0
  case NODE_CONST:
1401
0
    if (p->in_def)
1402
0
      yyerror(NULL, p, "dynamic constant assignment");
1403
0
    break;
1404
55.1k
  }
1405
55.1k
}
1406
1407
static node*
1408
var_reference(parser_state *p, node *lhs)
1409
20.0k
{
1410
20.0k
  if (intn(lhs->car) == NODE_LVAR) {
1411
15.2k
    if (!local_var_p(p, sym(lhs->cdr))) {
1412
109
      node *n = new_fcall(p, sym(lhs->cdr), 0);
1413
109
      cons_free(lhs);
1414
109
      return n;
1415
109
    }
1416
15.2k
  }
1417
19.9k
  return lhs;
1418
20.0k
}
1419
1420
static node*
1421
label_reference(parser_state *p, mrb_sym sym)
1422
0
{
1423
0
  const char *name = mrb_sym_name(p->mrb, sym);
1424
1425
0
  if (local_var_p(p, sym)) {
1426
0
    return new_lvar(p, sym);
1427
0
  }
1428
0
  else if (ISUPPER(name[0])) {
1429
0
    return new_const(p, sym);
1430
0
  }
1431
0
  else {
1432
0
    return new_fcall(p, sym, 0);
1433
0
  }
1434
0
}
1435
1436
typedef enum mrb_string_type  string_type;
1437
1438
typedef struct parser_lex_strterm {
1439
  int type;
1440
  int level;
1441
  int term;
1442
  int paren;
1443
  struct parser_lex_strterm *prev;
1444
} parser_lex_strterm;
1445
1446
static parser_lex_strterm*
1447
new_strterm(parser_state *p, string_type type, int term, int paren)
1448
416k
{
1449
416k
  parser_lex_strterm *lex = (parser_lex_strterm*)parser_palloc(p, sizeof(parser_lex_strterm));
1450
416k
  lex->type = type;
1451
416k
  lex->level = 0;
1452
416k
  lex->term = term;
1453
416k
  lex->paren = paren;
1454
416k
  lex->prev = p->lex_strterm;
1455
416k
  return lex;
1456
416k
}
1457
1458
static void
1459
end_strterm(parser_state *p)
1460
416k
{
1461
416k
  parser_lex_strterm *term = p->lex_strterm->prev;
1462
416k
  parser_pfree(p->lex_strterm);
1463
416k
  p->lex_strterm = term;
1464
416k
}
1465
1466
static node*
1467
push_strterm(parser_state *p)
1468
0
{
1469
0
  node *n = cons((node*)p->lex_strterm, p->parsing_heredoc);
1470
0
  p->lex_strterm = NULL;
1471
0
  return n;
1472
0
}
1473
1474
static void
1475
pop_strterm(parser_state *p, node *n)
1476
0
{
1477
0
  p->lex_strterm = (parser_lex_strterm*)n->car;
1478
0
  p->parsing_heredoc = n->cdr;
1479
0
  cons_free(n);
1480
0
}
1481
1482
static parser_heredoc_info *
1483
parsing_heredoc_info(parser_state *p)
1484
0
{
1485
0
  node *nd = p->parsing_heredoc;
1486
0
  if (nd == NULL) return NULL;
1487
  /* mrb_assert(nd->car->car == NODE_HEREDOC); */
1488
0
  return (parser_heredoc_info*)nd->car->cdr;
1489
0
}
1490
1491
static void
1492
heredoc_treat_nextline(parser_state *p)
1493
203k
{
1494
203k
  if (p->heredocs_from_nextline == NULL) return;
1495
0
  if (p->parsing_heredoc && p->lex_strterm) {
1496
0
    append(p->heredocs_from_nextline, p->parsing_heredoc);
1497
0
  }
1498
0
  p->parsing_heredoc = p->heredocs_from_nextline;
1499
0
  p->lex_strterm = new_strterm(p, parsing_heredoc_info(p)->type, 0, 0);
1500
0
  p->heredocs_from_nextline = NULL;
1501
0
}
1502
1503
static void
1504
heredoc_end(parser_state *p)
1505
0
{
1506
0
  p->parsing_heredoc = p->parsing_heredoc->cdr;
1507
0
  if (p->parsing_heredoc == NULL) {
1508
0
    p->lstate = EXPR_BEG;
1509
0
    end_strterm(p);
1510
0
  }
1511
0
  else {
1512
    /* next heredoc */
1513
0
    p->lex_strterm->type = parsing_heredoc_info(p)->type;
1514
0
  }
1515
0
}
1516
416k
#define is_strterm_type(p,str_func) ((p)->lex_strterm->type & (str_func))
1517
1518
/* xxx ----------------------------- */
1519
1520
1521
#line 1522 "mrbgems/mruby-compiler/core/y.tab.c"
1522
1523
# ifndef YY_CAST
1524
#  ifdef __cplusplus
1525
#   define YY_CAST(Type, Val) static_cast<Type> (Val)
1526
#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
1527
#  else
1528
12.7M
#   define YY_CAST(Type, Val) ((Type) (Val))
1529
#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
1530
#  endif
1531
# endif
1532
# ifndef YY_NULLPTR
1533
#  if defined __cplusplus
1534
#   if 201103L <= __cplusplus
1535
#    define YY_NULLPTR nullptr
1536
#   else
1537
#    define YY_NULLPTR 0
1538
#   endif
1539
#  else
1540
0
#   define YY_NULLPTR ((void*)0)
1541
#  endif
1542
# endif
1543
1544
/* Use api.header.include to #include this header
1545
   instead of duplicating it here.  */
1546
/* Debug traces.  */
1547
#ifndef YYDEBUG
1548
# define YYDEBUG 0
1549
#endif
1550
#if YYDEBUG && !defined(yydebug)
1551
extern int yydebug;
1552
#endif
1553
1554
1555
/* Token kinds.  */
1556
#ifndef YYTOKENTYPE
1557
# define YYTOKENTYPE
1558
  enum yytokentype
1559
  {
1560
    YYEMPTY = -2,
1561
    YYEOF = 0,                     /* "end of file"  */
1562
    YYerror = 256,                 /* error  */
1563
    YYUNDEF = 257,                 /* "invalid token"  */
1564
    keyword_class = 258,           /* "'class'"  */
1565
    keyword_module = 259,          /* "'module'"  */
1566
    keyword_def = 260,             /* "'def'"  */
1567
    keyword_begin = 261,           /* "'begin'"  */
1568
    keyword_if = 262,              /* "'if'"  */
1569
    keyword_unless = 263,          /* "'unless'"  */
1570
    keyword_while = 264,           /* "'while'"  */
1571
    keyword_until = 265,           /* "'until'"  */
1572
    keyword_for = 266,             /* "'for'"  */
1573
    keyword_undef = 267,           /* "'undef'"  */
1574
    keyword_rescue = 268,          /* "'rescue'"  */
1575
    keyword_ensure = 269,          /* "'ensure'"  */
1576
    keyword_end = 270,             /* "'end'"  */
1577
    keyword_then = 271,            /* "'then'"  */
1578
    keyword_elsif = 272,           /* "'elsif'"  */
1579
    keyword_else = 273,            /* "'else'"  */
1580
    keyword_case = 274,            /* "'case'"  */
1581
    keyword_when = 275,            /* "'when'"  */
1582
    keyword_break = 276,           /* "'break'"  */
1583
    keyword_next = 277,            /* "'next'"  */
1584
    keyword_redo = 278,            /* "'redo'"  */
1585
    keyword_retry = 279,           /* "'retry'"  */
1586
    keyword_in = 280,              /* "'in'"  */
1587
    keyword_do = 281,              /* "'do'"  */
1588
    keyword_do_cond = 282,         /* "'do' for condition"  */
1589
    keyword_do_block = 283,        /* "'do' for block"  */
1590
    keyword_do_LAMBDA = 284,       /* "'do' for lambda"  */
1591
    keyword_return = 285,          /* "'return'"  */
1592
    keyword_yield = 286,           /* "'yield'"  */
1593
    keyword_super = 287,           /* "'super'"  */
1594
    keyword_self = 288,            /* "'self'"  */
1595
    keyword_nil = 289,             /* "'nil'"  */
1596
    keyword_true = 290,            /* "'true'"  */
1597
    keyword_false = 291,           /* "'false'"  */
1598
    keyword_and = 292,             /* "'and'"  */
1599
    keyword_or = 293,              /* "'or'"  */
1600
    keyword_not = 294,             /* "'not'"  */
1601
    modifier_if = 295,             /* "'if' modifier"  */
1602
    modifier_unless = 296,         /* "'unless' modifier"  */
1603
    modifier_while = 297,          /* "'while' modifier"  */
1604
    modifier_until = 298,          /* "'until' modifier"  */
1605
    modifier_rescue = 299,         /* "'rescue' modifier"  */
1606
    keyword_alias = 300,           /* "'alis'"  */
1607
    keyword_BEGIN = 301,           /* "'BEGIN'"  */
1608
    keyword_END = 302,             /* "'END'"  */
1609
    keyword__LINE__ = 303,         /* "'__LINE__'"  */
1610
    keyword__FILE__ = 304,         /* "'__FILE__'"  */
1611
    keyword__ENCODING__ = 305,     /* "'__ENCODING__'"  */
1612
    tIDENTIFIER = 306,             /* "local variable or method"  */
1613
    tFID = 307,                    /* "method"  */
1614
    tGVAR = 308,                   /* "global variable"  */
1615
    tIVAR = 309,                   /* "instance variable"  */
1616
    tCONSTANT = 310,               /* "constant"  */
1617
    tCVAR = 311,                   /* "class variable"  */
1618
    tLABEL_TAG = 312,              /* "label"  */
1619
    tINTEGER = 313,                /* "integer literal"  */
1620
    tFLOAT = 314,                  /* "float literal"  */
1621
    tCHAR = 315,                   /* "character literal"  */
1622
    tXSTRING = 316,                /* tXSTRING  */
1623
    tREGEXP = 317,                 /* tREGEXP  */
1624
    tSTRING = 318,                 /* tSTRING  */
1625
    tSTRING_PART = 319,            /* tSTRING_PART  */
1626
    tSTRING_MID = 320,             /* tSTRING_MID  */
1627
    tNTH_REF = 321,                /* tNTH_REF  */
1628
    tBACK_REF = 322,               /* tBACK_REF  */
1629
    tREGEXP_END = 323,             /* tREGEXP_END  */
1630
    tNUMPARAM = 324,               /* "numbered parameter"  */
1631
    tUPLUS = 325,                  /* "unary plus"  */
1632
    tUMINUS = 326,                 /* "unary minus"  */
1633
    tCMP = 327,                    /* "<=>"  */
1634
    tEQ = 328,                     /* "=="  */
1635
    tEQQ = 329,                    /* "==="  */
1636
    tNEQ = 330,                    /* "!="  */
1637
    tGEQ = 331,                    /* ">="  */
1638
    tLEQ = 332,                    /* "<="  */
1639
    tANDOP = 333,                  /* "&&"  */
1640
    tOROP = 334,                   /* "||"  */
1641
    tMATCH = 335,                  /* "=~"  */
1642
    tNMATCH = 336,                 /* "!~"  */
1643
    tDOT2 = 337,                   /* ".."  */
1644
    tDOT3 = 338,                   /* "..."  */
1645
    tBDOT2 = 339,                  /* tBDOT2  */
1646
    tBDOT3 = 340,                  /* tBDOT3  */
1647
    tAREF = 341,                   /* tAREF  */
1648
    tASET = 342,                   /* tASET  */
1649
    tLSHFT = 343,                  /* "<<"  */
1650
    tRSHFT = 344,                  /* ">>"  */
1651
    tCOLON2 = 345,                 /* "::"  */
1652
    tCOLON3 = 346,                 /* tCOLON3  */
1653
    tOP_ASGN = 347,                /* tOP_ASGN  */
1654
    tASSOC = 348,                  /* "=>"  */
1655
    tLPAREN = 349,                 /* tLPAREN  */
1656
    tLPAREN_ARG = 350,             /* "("  */
1657
    tRPAREN = 351,                 /* ")"  */
1658
    tLBRACK = 352,                 /* "["  */
1659
    tLBRACE = 353,                 /* tLBRACE  */
1660
    tLBRACE_ARG = 354,             /* "{"  */
1661
    tSTAR = 355,                   /* "*"  */
1662
    tPOW = 356,                    /* tPOW  */
1663
    tDSTAR = 357,                  /* "**"  */
1664
    tAMPER = 358,                  /* "&"  */
1665
    tLAMBDA = 359,                 /* "->"  */
1666
    tANDDOT = 360,                 /* "&."  */
1667
    tSYMBEG = 361,                 /* "symbol"  */
1668
    tSTRING_BEG = 362,             /* "string literal"  */
1669
    tXSTRING_BEG = 363,            /* tXSTRING_BEG  */
1670
    tSTRING_DVAR = 364,            /* tSTRING_DVAR  */
1671
    tREGEXP_BEG = 365,             /* tREGEXP_BEG  */
1672
    tWORDS_BEG = 366,              /* tWORDS_BEG  */
1673
    tSYMBOLS_BEG = 367,            /* tSYMBOLS_BEG  */
1674
    tLAMBEG = 368,                 /* tLAMBEG  */
1675
    tHEREDOC_BEG = 369,            /* "here document"  */
1676
    tHEREDOC_END = 370,            /* tHEREDOC_END  */
1677
    tLITERAL_DELIM = 371,          /* tLITERAL_DELIM  */
1678
    tHD_LITERAL_DELIM = 372,       /* tHD_LITERAL_DELIM  */
1679
    tHD_STRING_PART = 373,         /* tHD_STRING_PART  */
1680
    tHD_STRING_MID = 374,          /* tHD_STRING_MID  */
1681
    tLOWEST = 375,                 /* tLOWEST  */
1682
    tUMINUS_NUM = 376,             /* tUMINUS_NUM  */
1683
    tLAST_TOKEN = 377              /* tLAST_TOKEN  */
1684
  };
1685
  typedef enum yytokentype yytoken_kind_t;
1686
#endif
1687
1688
/* Value type.  */
1689
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1690
union YYSTYPE
1691
{
1692
#line 1465 "mrbgems/mruby-compiler/core/parse.y"
1693
1694
    node *nd;
1695
    mrb_sym id;
1696
    int num;
1697
    stack_type stack;
1698
    const struct vtable *vars;
1699
1700
#line 1701 "mrbgems/mruby-compiler/core/y.tab.c"
1701
1702
};
1703
typedef union YYSTYPE YYSTYPE;
1704
# define YYSTYPE_IS_TRIVIAL 1
1705
# define YYSTYPE_IS_DECLARED 1
1706
#endif
1707
1708
/* Location type.  */
1709
#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
1710
typedef struct YYLTYPE YYLTYPE;
1711
struct YYLTYPE
1712
{
1713
  int first_line;
1714
  int first_column;
1715
  int last_line;
1716
  int last_column;
1717
};
1718
# define YYLTYPE_IS_DECLARED 1
1719
# define YYLTYPE_IS_TRIVIAL 1
1720
#endif
1721
1722
1723
1724
1725
int yyparse (parser_state *p);
1726
1727
1728
1729
1730
/* Symbol kind.  */
1731
enum yysymbol_kind_t
1732
{
1733
  YYSYMBOL_YYEMPTY = -2,
1734
  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
1735
  YYSYMBOL_YYerror = 1,                    /* error  */
1736
  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
1737
  YYSYMBOL_keyword_class = 3,              /* "'class'"  */
1738
  YYSYMBOL_keyword_module = 4,             /* "'module'"  */
1739
  YYSYMBOL_keyword_def = 5,                /* "'def'"  */
1740
  YYSYMBOL_keyword_begin = 6,              /* "'begin'"  */
1741
  YYSYMBOL_keyword_if = 7,                 /* "'if'"  */
1742
  YYSYMBOL_keyword_unless = 8,             /* "'unless'"  */
1743
  YYSYMBOL_keyword_while = 9,              /* "'while'"  */
1744
  YYSYMBOL_keyword_until = 10,             /* "'until'"  */
1745
  YYSYMBOL_keyword_for = 11,               /* "'for'"  */
1746
  YYSYMBOL_keyword_undef = 12,             /* "'undef'"  */
1747
  YYSYMBOL_keyword_rescue = 13,            /* "'rescue'"  */
1748
  YYSYMBOL_keyword_ensure = 14,            /* "'ensure'"  */
1749
  YYSYMBOL_keyword_end = 15,               /* "'end'"  */
1750
  YYSYMBOL_keyword_then = 16,              /* "'then'"  */
1751
  YYSYMBOL_keyword_elsif = 17,             /* "'elsif'"  */
1752
  YYSYMBOL_keyword_else = 18,              /* "'else'"  */
1753
  YYSYMBOL_keyword_case = 19,              /* "'case'"  */
1754
  YYSYMBOL_keyword_when = 20,              /* "'when'"  */
1755
  YYSYMBOL_keyword_break = 21,             /* "'break'"  */
1756
  YYSYMBOL_keyword_next = 22,              /* "'next'"  */
1757
  YYSYMBOL_keyword_redo = 23,              /* "'redo'"  */
1758
  YYSYMBOL_keyword_retry = 24,             /* "'retry'"  */
1759
  YYSYMBOL_keyword_in = 25,                /* "'in'"  */
1760
  YYSYMBOL_keyword_do = 26,                /* "'do'"  */
1761
  YYSYMBOL_keyword_do_cond = 27,           /* "'do' for condition"  */
1762
  YYSYMBOL_keyword_do_block = 28,          /* "'do' for block"  */
1763
  YYSYMBOL_keyword_do_LAMBDA = 29,         /* "'do' for lambda"  */
1764
  YYSYMBOL_keyword_return = 30,            /* "'return'"  */
1765
  YYSYMBOL_keyword_yield = 31,             /* "'yield'"  */
1766
  YYSYMBOL_keyword_super = 32,             /* "'super'"  */
1767
  YYSYMBOL_keyword_self = 33,              /* "'self'"  */
1768
  YYSYMBOL_keyword_nil = 34,               /* "'nil'"  */
1769
  YYSYMBOL_keyword_true = 35,              /* "'true'"  */
1770
  YYSYMBOL_keyword_false = 36,             /* "'false'"  */
1771
  YYSYMBOL_keyword_and = 37,               /* "'and'"  */
1772
  YYSYMBOL_keyword_or = 38,                /* "'or'"  */
1773
  YYSYMBOL_keyword_not = 39,               /* "'not'"  */
1774
  YYSYMBOL_modifier_if = 40,               /* "'if' modifier"  */
1775
  YYSYMBOL_modifier_unless = 41,           /* "'unless' modifier"  */
1776
  YYSYMBOL_modifier_while = 42,            /* "'while' modifier"  */
1777
  YYSYMBOL_modifier_until = 43,            /* "'until' modifier"  */
1778
  YYSYMBOL_modifier_rescue = 44,           /* "'rescue' modifier"  */
1779
  YYSYMBOL_keyword_alias = 45,             /* "'alis'"  */
1780
  YYSYMBOL_keyword_BEGIN = 46,             /* "'BEGIN'"  */
1781
  YYSYMBOL_keyword_END = 47,               /* "'END'"  */
1782
  YYSYMBOL_keyword__LINE__ = 48,           /* "'__LINE__'"  */
1783
  YYSYMBOL_keyword__FILE__ = 49,           /* "'__FILE__'"  */
1784
  YYSYMBOL_keyword__ENCODING__ = 50,       /* "'__ENCODING__'"  */
1785
  YYSYMBOL_tIDENTIFIER = 51,               /* "local variable or method"  */
1786
  YYSYMBOL_tFID = 52,                      /* "method"  */
1787
  YYSYMBOL_tGVAR = 53,                     /* "global variable"  */
1788
  YYSYMBOL_tIVAR = 54,                     /* "instance variable"  */
1789
  YYSYMBOL_tCONSTANT = 55,                 /* "constant"  */
1790
  YYSYMBOL_tCVAR = 56,                     /* "class variable"  */
1791
  YYSYMBOL_tLABEL_TAG = 57,                /* "label"  */
1792
  YYSYMBOL_tINTEGER = 58,                  /* "integer literal"  */
1793
  YYSYMBOL_tFLOAT = 59,                    /* "float literal"  */
1794
  YYSYMBOL_tCHAR = 60,                     /* "character literal"  */
1795
  YYSYMBOL_tXSTRING = 61,                  /* tXSTRING  */
1796
  YYSYMBOL_tREGEXP = 62,                   /* tREGEXP  */
1797
  YYSYMBOL_tSTRING = 63,                   /* tSTRING  */
1798
  YYSYMBOL_tSTRING_PART = 64,              /* tSTRING_PART  */
1799
  YYSYMBOL_tSTRING_MID = 65,               /* tSTRING_MID  */
1800
  YYSYMBOL_tNTH_REF = 66,                  /* tNTH_REF  */
1801
  YYSYMBOL_tBACK_REF = 67,                 /* tBACK_REF  */
1802
  YYSYMBOL_tREGEXP_END = 68,               /* tREGEXP_END  */
1803
  YYSYMBOL_tNUMPARAM = 69,                 /* "numbered parameter"  */
1804
  YYSYMBOL_tUPLUS = 70,                    /* "unary plus"  */
1805
  YYSYMBOL_tUMINUS = 71,                   /* "unary minus"  */
1806
  YYSYMBOL_tCMP = 72,                      /* "<=>"  */
1807
  YYSYMBOL_tEQ = 73,                       /* "=="  */
1808
  YYSYMBOL_tEQQ = 74,                      /* "==="  */
1809
  YYSYMBOL_tNEQ = 75,                      /* "!="  */
1810
  YYSYMBOL_tGEQ = 76,                      /* ">="  */
1811
  YYSYMBOL_tLEQ = 77,                      /* "<="  */
1812
  YYSYMBOL_tANDOP = 78,                    /* "&&"  */
1813
  YYSYMBOL_tOROP = 79,                     /* "||"  */
1814
  YYSYMBOL_tMATCH = 80,                    /* "=~"  */
1815
  YYSYMBOL_tNMATCH = 81,                   /* "!~"  */
1816
  YYSYMBOL_tDOT2 = 82,                     /* ".."  */
1817
  YYSYMBOL_tDOT3 = 83,                     /* "..."  */
1818
  YYSYMBOL_tBDOT2 = 84,                    /* tBDOT2  */
1819
  YYSYMBOL_tBDOT3 = 85,                    /* tBDOT3  */
1820
  YYSYMBOL_tAREF = 86,                     /* tAREF  */
1821
  YYSYMBOL_tASET = 87,                     /* tASET  */
1822
  YYSYMBOL_tLSHFT = 88,                    /* "<<"  */
1823
  YYSYMBOL_tRSHFT = 89,                    /* ">>"  */
1824
  YYSYMBOL_tCOLON2 = 90,                   /* "::"  */
1825
  YYSYMBOL_tCOLON3 = 91,                   /* tCOLON3  */
1826
  YYSYMBOL_tOP_ASGN = 92,                  /* tOP_ASGN  */
1827
  YYSYMBOL_tASSOC = 93,                    /* "=>"  */
1828
  YYSYMBOL_tLPAREN = 94,                   /* tLPAREN  */
1829
  YYSYMBOL_tLPAREN_ARG = 95,               /* "("  */
1830
  YYSYMBOL_tRPAREN = 96,                   /* ")"  */
1831
  YYSYMBOL_tLBRACK = 97,                   /* "["  */
1832
  YYSYMBOL_tLBRACE = 98,                   /* tLBRACE  */
1833
  YYSYMBOL_tLBRACE_ARG = 99,               /* "{"  */
1834
  YYSYMBOL_tSTAR = 100,                    /* "*"  */
1835
  YYSYMBOL_tPOW = 101,                     /* tPOW  */
1836
  YYSYMBOL_tDSTAR = 102,                   /* "**"  */
1837
  YYSYMBOL_tAMPER = 103,                   /* "&"  */
1838
  YYSYMBOL_tLAMBDA = 104,                  /* "->"  */
1839
  YYSYMBOL_tANDDOT = 105,                  /* "&."  */
1840
  YYSYMBOL_tSYMBEG = 106,                  /* "symbol"  */
1841
  YYSYMBOL_tSTRING_BEG = 107,              /* "string literal"  */
1842
  YYSYMBOL_tXSTRING_BEG = 108,             /* tXSTRING_BEG  */
1843
  YYSYMBOL_tSTRING_DVAR = 109,             /* tSTRING_DVAR  */
1844
  YYSYMBOL_tREGEXP_BEG = 110,              /* tREGEXP_BEG  */
1845
  YYSYMBOL_tWORDS_BEG = 111,               /* tWORDS_BEG  */
1846
  YYSYMBOL_tSYMBOLS_BEG = 112,             /* tSYMBOLS_BEG  */
1847
  YYSYMBOL_tLAMBEG = 113,                  /* tLAMBEG  */
1848
  YYSYMBOL_tHEREDOC_BEG = 114,             /* "here document"  */
1849
  YYSYMBOL_tHEREDOC_END = 115,             /* tHEREDOC_END  */
1850
  YYSYMBOL_tLITERAL_DELIM = 116,           /* tLITERAL_DELIM  */
1851
  YYSYMBOL_tHD_LITERAL_DELIM = 117,        /* tHD_LITERAL_DELIM  */
1852
  YYSYMBOL_tHD_STRING_PART = 118,          /* tHD_STRING_PART  */
1853
  YYSYMBOL_tHD_STRING_MID = 119,           /* tHD_STRING_MID  */
1854
  YYSYMBOL_tLOWEST = 120,                  /* tLOWEST  */
1855
  YYSYMBOL_121_ = 121,                     /* '='  */
1856
  YYSYMBOL_122_ = 122,                     /* '?'  */
1857
  YYSYMBOL_123_ = 123,                     /* ':'  */
1858
  YYSYMBOL_124_ = 124,                     /* '>'  */
1859
  YYSYMBOL_125_ = 125,                     /* '<'  */
1860
  YYSYMBOL_126_ = 126,                     /* '|'  */
1861
  YYSYMBOL_127_ = 127,                     /* '^'  */
1862
  YYSYMBOL_128_ = 128,                     /* '&'  */
1863
  YYSYMBOL_129_ = 129,                     /* '+'  */
1864
  YYSYMBOL_130_ = 130,                     /* '-'  */
1865
  YYSYMBOL_131_ = 131,                     /* '*'  */
1866
  YYSYMBOL_132_ = 132,                     /* '/'  */
1867
  YYSYMBOL_133_ = 133,                     /* '%'  */
1868
  YYSYMBOL_tUMINUS_NUM = 134,              /* tUMINUS_NUM  */
1869
  YYSYMBOL_135_ = 135,                     /* '!'  */
1870
  YYSYMBOL_136_ = 136,                     /* '~'  */
1871
  YYSYMBOL_tLAST_TOKEN = 137,              /* tLAST_TOKEN  */
1872
  YYSYMBOL_138_ = 138,                     /* '{'  */
1873
  YYSYMBOL_139_ = 139,                     /* '}'  */
1874
  YYSYMBOL_140_ = 140,                     /* '['  */
1875
  YYSYMBOL_141_ = 141,                     /* ']'  */
1876
  YYSYMBOL_142_ = 142,                     /* ','  */
1877
  YYSYMBOL_143_ = 143,                     /* '`'  */
1878
  YYSYMBOL_144_ = 144,                     /* '('  */
1879
  YYSYMBOL_145_ = 145,                     /* ')'  */
1880
  YYSYMBOL_146_ = 146,                     /* ';'  */
1881
  YYSYMBOL_147_ = 147,                     /* '.'  */
1882
  YYSYMBOL_148_n_ = 148,                   /* '\n'  */
1883
  YYSYMBOL_YYACCEPT = 149,                 /* $accept  */
1884
  YYSYMBOL_150_1 = 150,                    /* $@1  */
1885
  YYSYMBOL_program = 151,                  /* program  */
1886
  YYSYMBOL_top_compstmt = 152,             /* top_compstmt  */
1887
  YYSYMBOL_top_stmts = 153,                /* top_stmts  */
1888
  YYSYMBOL_top_stmt = 154,                 /* top_stmt  */
1889
  YYSYMBOL_155_2 = 155,                    /* @2  */
1890
  YYSYMBOL_bodystmt = 156,                 /* bodystmt  */
1891
  YYSYMBOL_compstmt = 157,                 /* compstmt  */
1892
  YYSYMBOL_stmts = 158,                    /* stmts  */
1893
  YYSYMBOL_159_3 = 159,                    /* $@3  */
1894
  YYSYMBOL_stmt = 160,                     /* stmt  */
1895
  YYSYMBOL_command_asgn = 161,             /* command_asgn  */
1896
  YYSYMBOL_command_rhs = 162,              /* command_rhs  */
1897
  YYSYMBOL_expr = 163,                     /* expr  */
1898
  YYSYMBOL_defn_head = 164,                /* defn_head  */
1899
  YYSYMBOL_165_4 = 165,                    /* $@4  */
1900
  YYSYMBOL_defs_head = 166,                /* defs_head  */
1901
  YYSYMBOL_expr_value = 167,               /* expr_value  */
1902
  YYSYMBOL_command_call = 168,             /* command_call  */
1903
  YYSYMBOL_block_command = 169,            /* block_command  */
1904
  YYSYMBOL_170_5 = 170,                    /* $@5  */
1905
  YYSYMBOL_cmd_brace_block = 171,          /* cmd_brace_block  */
1906
  YYSYMBOL_command = 172,                  /* command  */
1907
  YYSYMBOL_mlhs = 173,                     /* mlhs  */
1908
  YYSYMBOL_mlhs_inner = 174,               /* mlhs_inner  */
1909
  YYSYMBOL_mlhs_basic = 175,               /* mlhs_basic  */
1910
  YYSYMBOL_mlhs_item = 176,                /* mlhs_item  */
1911
  YYSYMBOL_mlhs_list = 177,                /* mlhs_list  */
1912
  YYSYMBOL_mlhs_post = 178,                /* mlhs_post  */
1913
  YYSYMBOL_mlhs_node = 179,                /* mlhs_node  */
1914
  YYSYMBOL_lhs = 180,                      /* lhs  */
1915
  YYSYMBOL_cname = 181,                    /* cname  */
1916
  YYSYMBOL_cpath = 182,                    /* cpath  */
1917
  YYSYMBOL_fname = 183,                    /* fname  */
1918
  YYSYMBOL_fsym = 184,                     /* fsym  */
1919
  YYSYMBOL_undef_list = 185,               /* undef_list  */
1920
  YYSYMBOL_186_6 = 186,                    /* $@6  */
1921
  YYSYMBOL_op = 187,                       /* op  */
1922
  YYSYMBOL_reswords = 188,                 /* reswords  */
1923
  YYSYMBOL_arg = 189,                      /* arg  */
1924
  YYSYMBOL_aref_args = 190,                /* aref_args  */
1925
  YYSYMBOL_arg_rhs = 191,                  /* arg_rhs  */
1926
  YYSYMBOL_paren_args = 192,               /* paren_args  */
1927
  YYSYMBOL_opt_paren_args = 193,           /* opt_paren_args  */
1928
  YYSYMBOL_opt_call_args = 194,            /* opt_call_args  */
1929
  YYSYMBOL_call_args = 195,                /* call_args  */
1930
  YYSYMBOL_196_7 = 196,                    /* @7  */
1931
  YYSYMBOL_command_args = 197,             /* command_args  */
1932
  YYSYMBOL_block_arg = 198,                /* block_arg  */
1933
  YYSYMBOL_opt_block_arg = 199,            /* opt_block_arg  */
1934
  YYSYMBOL_comma = 200,                    /* comma  */
1935
  YYSYMBOL_args = 201,                     /* args  */
1936
  YYSYMBOL_mrhs = 202,                     /* mrhs  */
1937
  YYSYMBOL_primary = 203,                  /* primary  */
1938
  YYSYMBOL_204_8 = 204,                    /* @8  */
1939
  YYSYMBOL_205_9 = 205,                    /* @9  */
1940
  YYSYMBOL_206_10 = 206,                   /* $@10  */
1941
  YYSYMBOL_207_11 = 207,                   /* $@11  */
1942
  YYSYMBOL_208_12 = 208,                   /* @12  */
1943
  YYSYMBOL_209_13 = 209,                   /* @13  */
1944
  YYSYMBOL_210_14 = 210,                   /* $@14  */
1945
  YYSYMBOL_211_15 = 211,                   /* $@15  */
1946
  YYSYMBOL_212_16 = 212,                   /* $@16  */
1947
  YYSYMBOL_213_17 = 213,                   /* $@17  */
1948
  YYSYMBOL_214_18 = 214,                   /* $@18  */
1949
  YYSYMBOL_215_19 = 215,                   /* $@19  */
1950
  YYSYMBOL_216_20 = 216,                   /* @20  */
1951
  YYSYMBOL_217_21 = 217,                   /* @21  */
1952
  YYSYMBOL_218_22 = 218,                   /* @22  */
1953
  YYSYMBOL_219_23 = 219,                   /* @23  */
1954
  YYSYMBOL_primary_value = 220,            /* primary_value  */
1955
  YYSYMBOL_then = 221,                     /* then  */
1956
  YYSYMBOL_do = 222,                       /* do  */
1957
  YYSYMBOL_if_tail = 223,                  /* if_tail  */
1958
  YYSYMBOL_opt_else = 224,                 /* opt_else  */
1959
  YYSYMBOL_for_var = 225,                  /* for_var  */
1960
  YYSYMBOL_f_margs = 226,                  /* f_margs  */
1961
  YYSYMBOL_227_24 = 227,                   /* $@24  */
1962
  YYSYMBOL_block_args_tail = 228,          /* block_args_tail  */
1963
  YYSYMBOL_opt_block_args_tail = 229,      /* opt_block_args_tail  */
1964
  YYSYMBOL_block_param = 230,              /* block_param  */
1965
  YYSYMBOL_opt_block_param = 231,          /* opt_block_param  */
1966
  YYSYMBOL_232_25 = 232,                   /* $@25  */
1967
  YYSYMBOL_block_param_def = 233,          /* block_param_def  */
1968
  YYSYMBOL_opt_bv_decl = 234,              /* opt_bv_decl  */
1969
  YYSYMBOL_bv_decls = 235,                 /* bv_decls  */
1970
  YYSYMBOL_bvar = 236,                     /* bvar  */
1971
  YYSYMBOL_f_larglist = 237,               /* f_larglist  */
1972
  YYSYMBOL_lambda_body = 238,              /* lambda_body  */
1973
  YYSYMBOL_239_26 = 239,                   /* @26  */
1974
  YYSYMBOL_do_block = 240,                 /* do_block  */
1975
  YYSYMBOL_block_call = 241,               /* block_call  */
1976
  YYSYMBOL_method_call = 242,              /* method_call  */
1977
  YYSYMBOL_243_27 = 243,                   /* @27  */
1978
  YYSYMBOL_brace_block = 244,              /* brace_block  */
1979
  YYSYMBOL_245_28 = 245,                   /* @28  */
1980
  YYSYMBOL_case_body = 246,                /* case_body  */
1981
  YYSYMBOL_cases = 247,                    /* cases  */
1982
  YYSYMBOL_opt_rescue = 248,               /* opt_rescue  */
1983
  YYSYMBOL_exc_list = 249,                 /* exc_list  */
1984
  YYSYMBOL_exc_var = 250,                  /* exc_var  */
1985
  YYSYMBOL_opt_ensure = 251,               /* opt_ensure  */
1986
  YYSYMBOL_literal = 252,                  /* literal  */
1987
  YYSYMBOL_string = 253,                   /* string  */
1988
  YYSYMBOL_string_fragment = 254,          /* string_fragment  */
1989
  YYSYMBOL_string_rep = 255,               /* string_rep  */
1990
  YYSYMBOL_string_interp = 256,            /* string_interp  */
1991
  YYSYMBOL_257_29 = 257,                   /* @29  */
1992
  YYSYMBOL_xstring = 258,                  /* xstring  */
1993
  YYSYMBOL_regexp = 259,                   /* regexp  */
1994
  YYSYMBOL_heredoc = 260,                  /* heredoc  */
1995
  YYSYMBOL_heredoc_bodies = 261,           /* heredoc_bodies  */
1996
  YYSYMBOL_heredoc_body = 262,             /* heredoc_body  */
1997
  YYSYMBOL_heredoc_string_rep = 263,       /* heredoc_string_rep  */
1998
  YYSYMBOL_heredoc_string_interp = 264,    /* heredoc_string_interp  */
1999
  YYSYMBOL_265_30 = 265,                   /* @30  */
2000
  YYSYMBOL_words = 266,                    /* words  */
2001
  YYSYMBOL_symbol = 267,                   /* symbol  */
2002
  YYSYMBOL_basic_symbol = 268,             /* basic_symbol  */
2003
  YYSYMBOL_sym = 269,                      /* sym  */
2004
  YYSYMBOL_symbols = 270,                  /* symbols  */
2005
  YYSYMBOL_numeric = 271,                  /* numeric  */
2006
  YYSYMBOL_variable = 272,                 /* variable  */
2007
  YYSYMBOL_var_lhs = 273,                  /* var_lhs  */
2008
  YYSYMBOL_var_ref = 274,                  /* var_ref  */
2009
  YYSYMBOL_backref = 275,                  /* backref  */
2010
  YYSYMBOL_superclass = 276,               /* superclass  */
2011
  YYSYMBOL_277_31 = 277,                   /* $@31  */
2012
  YYSYMBOL_f_opt_arglist_paren = 278,      /* f_opt_arglist_paren  */
2013
  YYSYMBOL_f_arglist_paren = 279,          /* f_arglist_paren  */
2014
  YYSYMBOL_f_arglist = 280,                /* f_arglist  */
2015
  YYSYMBOL_f_label = 281,                  /* f_label  */
2016
  YYSYMBOL_f_kw = 282,                     /* f_kw  */
2017
  YYSYMBOL_f_block_kw = 283,               /* f_block_kw  */
2018
  YYSYMBOL_f_block_kwarg = 284,            /* f_block_kwarg  */
2019
  YYSYMBOL_f_kwarg = 285,                  /* f_kwarg  */
2020
  YYSYMBOL_kwrest_mark = 286,              /* kwrest_mark  */
2021
  YYSYMBOL_f_kwrest = 287,                 /* f_kwrest  */
2022
  YYSYMBOL_args_tail = 288,                /* args_tail  */
2023
  YYSYMBOL_opt_args_tail = 289,            /* opt_args_tail  */
2024
  YYSYMBOL_f_args = 290,                   /* f_args  */
2025
  YYSYMBOL_f_bad_arg = 291,                /* f_bad_arg  */
2026
  YYSYMBOL_f_norm_arg = 292,               /* f_norm_arg  */
2027
  YYSYMBOL_f_arg_item = 293,               /* f_arg_item  */
2028
  YYSYMBOL_294_32 = 294,                   /* @32  */
2029
  YYSYMBOL_f_arg = 295,                    /* f_arg  */
2030
  YYSYMBOL_f_opt_asgn = 296,               /* f_opt_asgn  */
2031
  YYSYMBOL_f_opt = 297,                    /* f_opt  */
2032
  YYSYMBOL_f_block_opt = 298,              /* f_block_opt  */
2033
  YYSYMBOL_f_block_optarg = 299,           /* f_block_optarg  */
2034
  YYSYMBOL_f_optarg = 300,                 /* f_optarg  */
2035
  YYSYMBOL_restarg_mark = 301,             /* restarg_mark  */
2036
  YYSYMBOL_f_rest_arg = 302,               /* f_rest_arg  */
2037
  YYSYMBOL_blkarg_mark = 303,              /* blkarg_mark  */
2038
  YYSYMBOL_f_block_arg = 304,              /* f_block_arg  */
2039
  YYSYMBOL_opt_f_block_arg = 305,          /* opt_f_block_arg  */
2040
  YYSYMBOL_singleton = 306,                /* singleton  */
2041
  YYSYMBOL_307_33 = 307,                   /* $@33  */
2042
  YYSYMBOL_assoc_list = 308,               /* assoc_list  */
2043
  YYSYMBOL_assocs = 309,                   /* assocs  */
2044
  YYSYMBOL_assoc = 310,                    /* assoc  */
2045
  YYSYMBOL_operation = 311,                /* operation  */
2046
  YYSYMBOL_operation2 = 312,               /* operation2  */
2047
  YYSYMBOL_operation3 = 313,               /* operation3  */
2048
  YYSYMBOL_dot_or_colon = 314,             /* dot_or_colon  */
2049
  YYSYMBOL_call_op = 315,                  /* call_op  */
2050
  YYSYMBOL_call_op2 = 316,                 /* call_op2  */
2051
  YYSYMBOL_opt_terms = 317,                /* opt_terms  */
2052
  YYSYMBOL_opt_nl = 318,                   /* opt_nl  */
2053
  YYSYMBOL_rparen = 319,                   /* rparen  */
2054
  YYSYMBOL_trailer = 320,                  /* trailer  */
2055
  YYSYMBOL_term = 321,                     /* term  */
2056
  YYSYMBOL_nl = 322,                       /* nl  */
2057
  YYSYMBOL_terms = 323,                    /* terms  */
2058
  YYSYMBOL_none = 324                      /* none  */
2059
};
2060
typedef enum yysymbol_kind_t yysymbol_kind_t;
2061
2062
2063
2064
2065
#ifdef short
2066
# undef short
2067
#endif
2068
2069
/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
2070
   <limits.h> and (if available) <stdint.h> are included
2071
   so that the code can choose integer types of a good width.  */
2072
2073
#ifndef __PTRDIFF_MAX__
2074
# include <limits.h> /* INFRINGES ON USER NAME SPACE */
2075
# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
2076
#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
2077
#  define YY_STDINT_H
2078
# endif
2079
#endif
2080
2081
/* Narrow types that promote to a signed type and that can represent a
2082
   signed or unsigned integer of at least N bits.  In tables they can
2083
   save space and decrease cache pressure.  Promoting to a signed type
2084
   helps avoid bugs in integer arithmetic.  */
2085
2086
#ifdef __INT_LEAST8_MAX__
2087
typedef __INT_LEAST8_TYPE__ yytype_int8;
2088
#elif defined YY_STDINT_H
2089
typedef int_least8_t yytype_int8;
2090
#else
2091
typedef signed char yytype_int8;
2092
#endif
2093
2094
#ifdef __INT_LEAST16_MAX__
2095
typedef __INT_LEAST16_TYPE__ yytype_int16;
2096
#elif defined YY_STDINT_H
2097
typedef int_least16_t yytype_int16;
2098
#else
2099
typedef short yytype_int16;
2100
#endif
2101
2102
/* Work around bug in HP-UX 11.23, which defines these macros
2103
   incorrectly for preprocessor constants.  This workaround can likely
2104
   be removed in 2023, as HPE has promised support for HP-UX 11.23
2105
   (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
2106
   <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
2107
#ifdef __hpux
2108
# undef UINT_LEAST8_MAX
2109
# undef UINT_LEAST16_MAX
2110
# define UINT_LEAST8_MAX 255
2111
# define UINT_LEAST16_MAX 65535
2112
#endif
2113
2114
#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
2115
typedef __UINT_LEAST8_TYPE__ yytype_uint8;
2116
#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
2117
       && UINT_LEAST8_MAX <= INT_MAX)
2118
typedef uint_least8_t yytype_uint8;
2119
#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
2120
typedef unsigned char yytype_uint8;
2121
#else
2122
typedef short yytype_uint8;
2123
#endif
2124
2125
#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
2126
typedef __UINT_LEAST16_TYPE__ yytype_uint16;
2127
#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
2128
       && UINT_LEAST16_MAX <= INT_MAX)
2129
typedef uint_least16_t yytype_uint16;
2130
#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
2131
typedef unsigned short yytype_uint16;
2132
#else
2133
typedef int yytype_uint16;
2134
#endif
2135
2136
#ifndef YYPTRDIFF_T
2137
# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
2138
290
#  define YYPTRDIFF_T __PTRDIFF_TYPE__
2139
#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
2140
# elif defined PTRDIFF_MAX
2141
#  ifndef ptrdiff_t
2142
#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
2143
#  endif
2144
#  define YYPTRDIFF_T ptrdiff_t
2145
#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
2146
# else
2147
#  define YYPTRDIFF_T long
2148
#  define YYPTRDIFF_MAXIMUM LONG_MAX
2149
# endif
2150
#endif
2151
2152
#ifndef YYSIZE_T
2153
# ifdef __SIZE_TYPE__
2154
#  define YYSIZE_T __SIZE_TYPE__
2155
# elif defined size_t
2156
#  define YYSIZE_T size_t
2157
# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
2158
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
2159
#  define YYSIZE_T size_t
2160
# else
2161
#  define YYSIZE_T unsigned
2162
# endif
2163
#endif
2164
2165
#define YYSIZE_MAXIMUM                                  \
2166
  YY_CAST (YYPTRDIFF_T,                                 \
2167
           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
2168
            ? YYPTRDIFF_MAXIMUM                         \
2169
            : YY_CAST (YYSIZE_T, -1)))
2170
2171
162
#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
2172
2173
2174
/* Stored state numbers (used for stacks). */
2175
typedef yytype_int16 yy_state_t;
2176
2177
/* State numbers in computations.  */
2178
typedef int yy_state_fast_t;
2179
2180
#ifndef YY_
2181
# if defined YYENABLE_NLS && YYENABLE_NLS
2182
#  if ENABLE_NLS
2183
#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
2184
#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
2185
#  endif
2186
# endif
2187
# ifndef YY_
2188
0
#  define YY_(Msgid) Msgid
2189
# endif
2190
#endif
2191
2192
2193
#ifndef YY_ATTRIBUTE_PURE
2194
# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
2195
#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
2196
# else
2197
#  define YY_ATTRIBUTE_PURE
2198
# endif
2199
#endif
2200
2201
#ifndef YY_ATTRIBUTE_UNUSED
2202
# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
2203
#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
2204
# else
2205
#  define YY_ATTRIBUTE_UNUSED
2206
# endif
2207
#endif
2208
2209
/* Suppress unused-variable warnings by "using" E.  */
2210
#if ! defined lint || defined __GNUC__
2211
763
# define YY_USE(E) ((void) (E))
2212
#else
2213
# define YY_USE(E) /* empty */
2214
#endif
2215
2216
/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
2217
#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
2218
# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
2219
#  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
2220
    _Pragma ("GCC diagnostic push")                                     \
2221
    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
2222
# else
2223
#  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
2224
    _Pragma ("GCC diagnostic push")                                     \
2225
    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
2226
    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
2227
# endif
2228
# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
2229
    _Pragma ("GCC diagnostic pop")
2230
#else
2231
218
# define YY_INITIAL_VALUE(Value) Value
2232
#endif
2233
#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2234
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2235
# define YY_IGNORE_MAYBE_UNINITIALIZED_END
2236
#endif
2237
#ifndef YY_INITIAL_VALUE
2238
# define YY_INITIAL_VALUE(Value) /* Nothing. */
2239
#endif
2240
2241
#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
2242
# define YY_IGNORE_USELESS_CAST_BEGIN                          \
2243
    _Pragma ("GCC diagnostic push")                            \
2244
    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
2245
# define YY_IGNORE_USELESS_CAST_END            \
2246
    _Pragma ("GCC diagnostic pop")
2247
#endif
2248
#ifndef YY_IGNORE_USELESS_CAST_BEGIN
2249
# define YY_IGNORE_USELESS_CAST_BEGIN
2250
# define YY_IGNORE_USELESS_CAST_END
2251
#endif
2252
2253
2254
7.70M
#define YY_ASSERT(E) ((void) (0 && (E)))
2255
2256
#if 1
2257
2258
/* The parser invokes alloca or malloc; define the necessary symbols.  */
2259
2260
# ifdef YYSTACK_USE_ALLOCA
2261
#  if YYSTACK_USE_ALLOCA
2262
#   ifdef __GNUC__
2263
#    define YYSTACK_ALLOC __builtin_alloca
2264
#   elif defined __BUILTIN_VA_ARG_INCR
2265
#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
2266
#   elif defined _AIX
2267
#    define YYSTACK_ALLOC __alloca
2268
#   elif defined _MSC_VER
2269
#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
2270
#    define alloca _alloca
2271
#   else
2272
#    define YYSTACK_ALLOC alloca
2273
#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
2274
#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
2275
      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
2276
#     ifndef EXIT_SUCCESS
2277
#      define EXIT_SUCCESS 0
2278
#     endif
2279
#    endif
2280
#   endif
2281
#  endif
2282
# endif
2283
2284
# ifdef YYSTACK_ALLOC
2285
   /* Pacify GCC's 'empty if-body' warning.  */
2286
18
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
2287
#  ifndef YYSTACK_ALLOC_MAXIMUM
2288
    /* The OS might guarantee only one guard page at the bottom of the stack,
2289
       and a page size can be as small as 4096 bytes.  So we cannot safely
2290
       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
2291
       to allow for a few compiler-allocated temporary stack slots.  */
2292
0
#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
2293
#  endif
2294
# else
2295
#  define YYSTACK_ALLOC YYMALLOC
2296
#  define YYSTACK_FREE YYFREE
2297
#  ifndef YYSTACK_ALLOC_MAXIMUM
2298
#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
2299
#  endif
2300
#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
2301
       && ! ((defined YYMALLOC || defined malloc) \
2302
             && (defined YYFREE || defined free)))
2303
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
2304
#   ifndef EXIT_SUCCESS
2305
#    define EXIT_SUCCESS 0
2306
#   endif
2307
#  endif
2308
#  ifndef YYMALLOC
2309
#   define YYMALLOC malloc
2310
#   if ! defined malloc && ! defined EXIT_SUCCESS
2311
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
2312
#   endif
2313
#  endif
2314
#  ifndef YYFREE
2315
#   define YYFREE free
2316
#   if ! defined free && ! defined EXIT_SUCCESS
2317
void free (void *); /* INFRINGES ON USER NAME SPACE */
2318
#   endif
2319
#  endif
2320
# endif
2321
#endif /* 1 */
2322
2323
#if (! defined yyoverflow \
2324
     && (! defined __cplusplus \
2325
         || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
2326
             && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
2327
2328
/* A type that is properly aligned for any stack member.  */
2329
union yyalloc
2330
{
2331
  yy_state_t yyss_alloc;
2332
  YYSTYPE yyvs_alloc;
2333
  YYLTYPE yyls_alloc;
2334
};
2335
2336
/* The size of the maximum gap between one aligned stack and the next.  */
2337
54
# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
2338
2339
/* The size of an array large to enough to hold all stacks, each with
2340
   N elements.  */
2341
# define YYSTACK_BYTES(N) \
2342
     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
2343
             + YYSIZEOF (YYLTYPE)) \
2344
      + 2 * YYSTACK_GAP_MAXIMUM)
2345
2346
# define YYCOPY_NEEDED 1
2347
2348
/* Relocate STACK from its old location to the new one.  The
2349
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
2350
   elements in the stack, and YYPTR gives the new location of the
2351
   stack.  Advance YYPTR to a properly aligned location for the next
2352
   stack.  */
2353
# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
2354
54
    do                                                                  \
2355
54
      {                                                                 \
2356
54
        YYPTRDIFF_T yynewbytes;                                         \
2357
54
        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
2358
54
        Stack = &yyptr->Stack_alloc;                                    \
2359
54
        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
2360
54
        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
2361
54
      }                                                                 \
2362
54
    while (0)
2363
2364
#endif
2365
2366
#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
2367
/* Copy COUNT objects from SRC to DST.  The source and destination do
2368
   not overlap.  */
2369
# ifndef YYCOPY
2370
#  if defined __GNUC__ && 1 < __GNUC__
2371
#   define YYCOPY(Dst, Src, Count) \
2372
54
      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
2373
#  else
2374
#   define YYCOPY(Dst, Src, Count)              \
2375
      do                                        \
2376
        {                                       \
2377
          YYPTRDIFF_T yyi;                      \
2378
          for (yyi = 0; yyi < (Count); yyi++)   \
2379
            (Dst)[yyi] = (Src)[yyi];            \
2380
        }                                       \
2381
      while (0)
2382
#  endif
2383
# endif
2384
#endif /* !YYCOPY_NEEDED */
2385
2386
/* YYFINAL -- State number of the termination state.  */
2387
7.70M
#define YYFINAL  106
2388
/* YYLAST -- Last index in YYTABLE.  */
2389
15.1M
#define YYLAST   13386
2390
2391
/* YYNTOKENS -- Number of terminals.  */
2392
5.57M
#define YYNTOKENS  149
2393
/* YYNNTS -- Number of nonterminals.  */
2394
#define YYNNTS  176
2395
/* YYNRULES -- Number of rules.  */
2396
#define YYNRULES  620
2397
/* YYNSTATES -- Number of states.  */
2398
#define YYNSTATES  1085
2399
2400
/* YYMAXUTOK -- Last valid token kind.  */
2401
5.09M
#define YYMAXUTOK   377
2402
2403
2404
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
2405
   as returned by yylex, with out-of-bounds checking.  */
2406
#define YYTRANSLATE(YYX)                                \
2407
5.09M
  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
2408
5.09M
   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
2409
5.09M
   : YYSYMBOL_YYUNDEF)
2410
2411
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
2412
   as returned by yylex.  */
2413
static const yytype_uint8 yytranslate[] =
2414
{
2415
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2416
     148,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2417
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2418
       2,     2,     2,   135,     2,     2,     2,   133,   128,     2,
2419
     144,   145,   131,   129,   142,   130,   147,   132,     2,     2,
2420
       2,     2,     2,     2,     2,     2,     2,     2,   123,   146,
2421
     125,   121,   124,   122,     2,     2,     2,     2,     2,     2,
2422
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2423
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2424
       2,   140,     2,   141,   127,     2,   143,     2,     2,     2,
2425
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2426
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2427
       2,     2,     2,   138,   126,   139,   136,     2,     2,     2,
2428
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2429
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2430
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2431
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2432
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2433
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2434
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2435
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2436
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2437
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2438
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2439
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2440
       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
2441
       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
2442
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
2443
      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
2444
      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
2445
      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
2446
      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
2447
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
2448
      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
2449
      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
2450
      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
2451
     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
2452
     115,   116,   117,   118,   119,   120,   134,   137
2453
};
2454
2455
#if YYDEBUG
2456
/* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
2457
static const yytype_int16 yyrline[] =
2458
{
2459
       0,  1636,  1636,  1636,  1647,  1653,  1657,  1662,  1666,  1672,
2460
    1674,  1673,  1687,  1714,  1720,  1724,  1729,  1733,  1739,  1739,
2461
    1743,  1747,  1751,  1755,  1759,  1763,  1767,  1772,  1773,  1777,
2462
    1781,  1785,  1789,  1795,  1798,  1802,  1806,  1810,  1814,  1818,
2463
    1823,  1827,  1836,  1845,  1854,  1863,  1870,  1871,  1875,  1879,
2464
    1880,  1884,  1888,  1892,  1896,  1900,  1910,  1909,  1924,  1933,
2465
    1934,  1937,  1938,  1945,  1944,  1959,  1963,  1968,  1972,  1977,
2466
    1981,  1986,  1990,  1994,  1998,  2002,  2008,  2012,  2018,  2019,
2467
    2025,  2029,  2033,  2037,  2041,  2045,  2049,  2053,  2057,  2061,
2468
    2067,  2068,  2074,  2078,  2084,  2088,  2094,  2098,  2102,  2106,
2469
    2110,  2114,  2120,  2126,  2133,  2137,  2141,  2145,  2149,  2153,
2470
    2159,  2165,  2170,  2176,  2180,  2183,  2187,  2191,  2198,  2199,
2471
    2200,  2201,  2206,  2213,  2214,  2217,  2221,  2221,  2227,  2228,
2472
    2229,  2230,  2231,  2232,  2233,  2234,  2235,  2236,  2237,  2238,
2473
    2239,  2240,  2241,  2242,  2243,  2244,  2245,  2246,  2247,  2248,
2474
    2249,  2250,  2251,  2252,  2253,  2254,  2255,  2256,  2259,  2259,
2475
    2259,  2260,  2260,  2261,  2261,  2261,  2262,  2262,  2262,  2262,
2476
    2263,  2263,  2263,  2264,  2264,  2264,  2265,  2265,  2265,  2265,
2477
    2266,  2266,  2266,  2266,  2267,  2267,  2267,  2267,  2268,  2268,
2478
    2268,  2268,  2269,  2269,  2269,  2269,  2270,  2270,  2273,  2277,
2479
    2281,  2285,  2289,  2293,  2297,  2302,  2307,  2312,  2316,  2320,
2480
    2324,  2328,  2332,  2336,  2340,  2344,  2348,  2352,  2356,  2360,
2481
    2364,  2368,  2372,  2376,  2380,  2384,  2388,  2392,  2396,  2400,
2482
    2404,  2408,  2412,  2416,  2420,  2424,  2428,  2432,  2436,  2440,
2483
    2444,  2448,  2452,  2456,  2460,  2469,  2478,  2487,  2496,  2502,
2484
    2503,  2508,  2512,  2519,  2523,  2530,  2534,  2543,  2560,  2561,
2485
    2564,  2565,  2566,  2571,  2576,  2583,  2589,  2594,  2599,  2604,
2486
    2611,  2611,  2622,  2626,  2632,  2636,  2642,  2645,  2651,  2655,
2487
    2660,  2665,  2669,  2675,  2680,  2684,  2690,  2691,  2692,  2693,
2488
    2694,  2695,  2696,  2697,  2702,  2701,  2713,  2717,  2712,  2722,
2489
    2722,  2726,  2730,  2734,  2738,  2743,  2748,  2752,  2756,  2760,
2490
    2764,  2768,  2769,  2775,  2782,  2774,  2795,  2803,  2811,  2811,
2491
    2811,  2818,  2818,  2818,  2825,  2831,  2836,  2838,  2835,  2847,
2492
    2845,  2863,  2868,  2861,  2885,  2883,  2899,  2909,  2920,  2924,
2493
    2928,  2932,  2938,  2945,  2946,  2947,  2950,  2951,  2954,  2955,
2494
    2963,  2964,  2970,  2974,  2977,  2981,  2985,  2989,  2994,  2998,
2495
    3002,  3006,  3012,  3011,  3021,  3025,  3029,  3033,  3039,  3044,
2496
    3049,  3053,  3057,  3061,  3065,  3069,  3073,  3077,  3081,  3085,
2497
    3089,  3093,  3097,  3101,  3105,  3111,  3116,  3123,  3123,  3127,
2498
    3132,  3139,  3143,  3149,  3150,  3153,  3158,  3161,  3165,  3171,
2499
    3175,  3182,  3181,  3198,  3208,  3212,  3217,  3224,  3228,  3232,
2500
    3236,  3240,  3244,  3248,  3252,  3256,  3263,  3262,  3277,  3276,
2501
    3292,  3300,  3309,  3312,  3319,  3322,  3326,  3327,  3330,  3334,
2502
    3337,  3341,  3344,  3345,  3346,  3347,  3350,  3351,  3357,  3358,
2503
    3359,  3363,  3376,  3377,  3383,  3388,  3387,  3397,  3401,  3407,
2504
    3411,  3424,  3428,  3434,  3437,  3438,  3441,  3447,  3453,  3454,
2505
    3457,  3464,  3463,  3476,  3480,  3494,  3498,  3510,  3517,  3524,
2506
    3525,  3526,  3527,  3528,  3532,  3538,  3542,  3552,  3553,  3554,
2507
    3558,  3564,  3568,  3572,  3576,  3580,  3586,  3590,  3596,  3600,
2508
    3604,  3608,  3612,  3616,  3620,  3628,  3635,  3641,  3642,  3646,
2509
    3650,  3649,  3666,  3667,  3670,  3676,  3680,  3686,  3687,  3691,
2510
    3695,  3701,  3705,  3711,  3717,  3724,  3730,  3737,  3741,  3747,
2511
    3751,  3757,  3758,  3761,  3765,  3771,  3775,  3779,  3783,  3789,
2512
    3794,  3799,  3803,  3807,  3811,  3815,  3819,  3823,  3827,  3831,
2513
    3835,  3839,  3843,  3847,  3851,  3856,  3862,  3867,  3872,  3877,
2514
    3882,  3889,  3893,  3900,  3905,  3904,  3916,  3920,  3926,  3934,
2515
    3942,  3950,  3954,  3960,  3964,  3970,  3971,  3974,  3979,  3986,
2516
    3987,  3990,  3994,  4000,  4004,  4010,  4015,  4015,  4040,  4041,
2517
    4047,  4052,  4058,  4064,  4069,  4073,  4078,  4083,  4093,  4098,
2518
    4104,  4105,  4106,  4109,  4110,  4111,  4112,  4115,  4116,  4117,
2519
    4120,  4121,  4124,  4128,  4134,  4135,  4141,  4142,  4145,  4146,
2520
    4149,  4152,  4153,  4154,  4157,  4158,  4161,  4166,  4169,  4170,
2521
    4174
2522
};
2523
#endif
2524
2525
/** Accessing symbol of state STATE.  */
2526
218
#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
2527
2528
#if 1
2529
/* The user-facing name of the symbol whose (internal) number is
2530
   YYSYMBOL.  No bounds checking.  */
2531
static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2532
2533
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
2534
   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
2535
static const char *const yytname[] =
2536
{
2537
  "\"end of file\"", "error", "\"invalid token\"", "\"'class'\"",
2538
  "\"'module'\"", "\"'def'\"", "\"'begin'\"", "\"'if'\"", "\"'unless'\"",
2539
  "\"'while'\"", "\"'until'\"", "\"'for'\"", "\"'undef'\"", "\"'rescue'\"",
2540
  "\"'ensure'\"", "\"'end'\"", "\"'then'\"", "\"'elsif'\"", "\"'else'\"",
2541
  "\"'case'\"", "\"'when'\"", "\"'break'\"", "\"'next'\"", "\"'redo'\"",
2542
  "\"'retry'\"", "\"'in'\"", "\"'do'\"", "\"'do' for condition\"",
2543
  "\"'do' for block\"", "\"'do' for lambda\"", "\"'return'\"",
2544
  "\"'yield'\"", "\"'super'\"", "\"'self'\"", "\"'nil'\"", "\"'true'\"",
2545
  "\"'false'\"", "\"'and'\"", "\"'or'\"", "\"'not'\"", "\"'if' modifier\"",
2546
  "\"'unless' modifier\"", "\"'while' modifier\"", "\"'until' modifier\"",
2547
  "\"'rescue' modifier\"", "\"'alis'\"", "\"'BEGIN'\"", "\"'END'\"",
2548
  "\"'__LINE__'\"", "\"'__FILE__'\"", "\"'__ENCODING__'\"",
2549
  "\"local variable or method\"", "\"method\"", "\"global variable\"",
2550
  "\"instance variable\"", "\"constant\"", "\"class variable\"",
2551
  "\"label\"", "\"integer literal\"", "\"float literal\"",
2552
  "\"character literal\"", "tXSTRING", "tREGEXP", "tSTRING",
2553
  "tSTRING_PART", "tSTRING_MID", "tNTH_REF", "tBACK_REF", "tREGEXP_END",
2554
  "\"numbered parameter\"", "\"unary plus\"", "\"unary minus\"", "\"<=>\"",
2555
  "\"==\"", "\"===\"", "\"!=\"", "\">=\"", "\"<=\"", "\"&&\"", "\"||\"",
2556
  "\"=~\"", "\"!~\"", "\"..\"", "\"...\"", "tBDOT2", "tBDOT3", "tAREF",
2557
  "tASET", "\"<<\"", "\">>\"", "\"::\"", "tCOLON3", "tOP_ASGN", "\"=>\"",
2558
  "tLPAREN", "\"(\"", "\")\"", "\"[\"", "tLBRACE", "\"{\"", "\"*\"",
2559
  "tPOW", "\"**\"", "\"&\"", "\"->\"", "\"&.\"", "\"symbol\"",
2560
  "\"string literal\"", "tXSTRING_BEG", "tSTRING_DVAR", "tREGEXP_BEG",
2561
  "tWORDS_BEG", "tSYMBOLS_BEG", "tLAMBEG", "\"here document\"",
2562
  "tHEREDOC_END", "tLITERAL_DELIM", "tHD_LITERAL_DELIM", "tHD_STRING_PART",
2563
  "tHD_STRING_MID", "tLOWEST", "'='", "'?'", "':'", "'>'", "'<'", "'|'",
2564
  "'^'", "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "tUMINUS_NUM", "'!'",
2565
  "'~'", "tLAST_TOKEN", "'{'", "'}'", "'['", "']'", "','", "'`'", "'('",
2566
  "')'", "';'", "'.'", "'\\n'", "$accept", "$@1", "program",
2567
  "top_compstmt", "top_stmts", "top_stmt", "@2", "bodystmt", "compstmt",
2568
  "stmts", "$@3", "stmt", "command_asgn", "command_rhs", "expr",
2569
  "defn_head", "$@4", "defs_head", "expr_value", "command_call",
2570
  "block_command", "$@5", "cmd_brace_block", "command", "mlhs",
2571
  "mlhs_inner", "mlhs_basic", "mlhs_item", "mlhs_list", "mlhs_post",
2572
  "mlhs_node", "lhs", "cname", "cpath", "fname", "fsym", "undef_list",
2573
  "$@6", "op", "reswords", "arg", "aref_args", "arg_rhs", "paren_args",
2574
  "opt_paren_args", "opt_call_args", "call_args", "@7", "command_args",
2575
  "block_arg", "opt_block_arg", "comma", "args", "mrhs", "primary", "@8",
2576
  "@9", "$@10", "$@11", "@12", "@13", "$@14", "$@15", "$@16", "$@17",
2577
  "$@18", "$@19", "@20", "@21", "@22", "@23", "primary_value", "then",
2578
  "do", "if_tail", "opt_else", "for_var", "f_margs", "$@24",
2579
  "block_args_tail", "opt_block_args_tail", "block_param",
2580
  "opt_block_param", "$@25", "block_param_def", "opt_bv_decl", "bv_decls",
2581
  "bvar", "f_larglist", "lambda_body", "@26", "do_block", "block_call",
2582
  "method_call", "@27", "brace_block", "@28", "case_body", "cases",
2583
  "opt_rescue", "exc_list", "exc_var", "opt_ensure", "literal", "string",
2584
  "string_fragment", "string_rep", "string_interp", "@29", "xstring",
2585
  "regexp", "heredoc", "heredoc_bodies", "heredoc_body",
2586
  "heredoc_string_rep", "heredoc_string_interp", "@30", "words", "symbol",
2587
  "basic_symbol", "sym", "symbols", "numeric", "variable", "var_lhs",
2588
  "var_ref", "backref", "superclass", "$@31", "f_opt_arglist_paren",
2589
  "f_arglist_paren", "f_arglist", "f_label", "f_kw", "f_block_kw",
2590
  "f_block_kwarg", "f_kwarg", "kwrest_mark", "f_kwrest", "args_tail",
2591
  "opt_args_tail", "f_args", "f_bad_arg", "f_norm_arg", "f_arg_item",
2592
  "@32", "f_arg", "f_opt_asgn", "f_opt", "f_block_opt", "f_block_optarg",
2593
  "f_optarg", "restarg_mark", "f_rest_arg", "blkarg_mark", "f_block_arg",
2594
  "opt_f_block_arg", "singleton", "$@33", "assoc_list", "assocs", "assoc",
2595
  "operation", "operation2", "operation3", "dot_or_colon", "call_op",
2596
  "call_op2", "opt_terms", "opt_nl", "rparen", "trailer", "term", "nl",
2597
  "terms", "none", YY_NULLPTR
2598
};
2599
2600
static const char *
2601
yysymbol_name (yysymbol_kind_t yysymbol)
2602
0
{
2603
0
  return yytname[yysymbol];
2604
0
}
2605
#endif
2606
2607
7.70M
#define YYPACT_NINF (-870)
2608
2609
#define yypact_value_is_default(Yyn) \
2610
7.70M
  ((Yyn) == YYPACT_NINF)
2611
2612
73.5k
#define YYTABLE_NINF (-621)
2613
2614
#define yytable_value_is_error(Yyn) \
2615
73.5k
  ((Yyn) == YYTABLE_NINF)
2616
2617
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
2618
   STATE-NUM.  */
2619
static const yytype_int16 yypact[] =
2620
{
2621
    -870,  3957,   130,  8673, 10797, 11139,  6981,  -870, 10443, 10443,
2622
    -870,  -870, 10911,  8163,  6597,  8909,  8909,  -870,  -870,  8909,
2623
    4478,  1831,  -870,  -870,  -870,  -870,    19,  8163,  -870,    36,
2624
    -870,  -870,  -870,  7123,  4070,  -870,  -870,  7265,  -870,  -870,
2625
    -870,  -870,  -870,  -870,  -870,    89, 10561, 10561, 10561, 10561,
2626
     152,  5856,  1426,  9381,  9735,  8445,  -870,  7881,   422,   515,
2627
    1221,   920,  1245,  -870,    90, 10679, 10561,  -870,  1443,  -870,
2628
     988,  -870,   306,  1273,  1273,  -870,  -870,   138,    69,  -870,
2629
      74, 11025,  -870,   107,  2381,   735,   769,    47,    53,  -870,
2630
     399,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,
2631
     319,   119,  -870,   347,    98,  -870,  -870,  -870,  -870,  -870,
2632
    -870,   124,   124,    19,   743,   773,  -870, 10443,   120,  5975,
2633
     292,  1295,  1295,  -870,   147,  -870,   775,  -870,  -870,    98,
2634
    -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,
2635
    -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,
2636
    -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,    23,    51,
2637
      54,    87,  -870,  -870,  -870,  -870,  -870,  -870,    93,   102,
2638
     112,   145,  -870,   193,  -870,  -870,  -870,  -870,  -870,  -870,
2639
    -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,
2640
    -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,
2641
    -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,   200,
2642
    5034,   222,   306,  1273,  1273,   188,   134, 13191,   831,   218,
2643
     199,   224,   188, 10443, 10443,   852,   243,  -870,  -870,   960,
2644
     275,    79,   104,  -870,  -870,  -870,  -870,  -870,  -870,  -870,
2645
    -870,  -870,  8022,  -870,  -870,   167,  -870,  -870,  -870,  -870,
2646
    -870,  -870,  1443,  -870,   620,  -870,   310,  -870,  -870,  1443,
2647
    4206,   122, 10561, 10561, 10561, 10561,  -870, 13129,  -870,  -870,
2648
     195,   320,   195,  -870,  -870,  -870,  9027,  -870,  -870,  8909,
2649
    -870,  -870,  -870,  -870,  6597,  6835,  -870,   250,  6094,  -870,
2650
     987,   296, 13253, 13253,   425,  8791,  5856,   263,  1443,   988,
2651
    1443,   317,  -870,  8791,  1443,   281,  1129,  1129,  -870, 13129,
2652
     302,  1129,  -870,   389, 11253,   316,  1004,  1007,  1068,  1402,
2653
    -870,  -870,  -870,  -870,  -870,  1252,  -870,  -870,  -870,  -870,
2654
    -870,  -870,   666,  1255,  -870,  -870,  1021,  -870,  1242,  -870,
2655
    1317,  -870,  1320,   374,   378,  -870,  -870,  -870,  -870,  6359,
2656
   10443, 10443, 10443, 10443,  8791, 10443, 10443,    68,  -870,  -870,
2657
    -870,  -870,   424,  1443,  -870,  -870,  -870,  -870,  -870,  -870,
2658
    -870,  1589,   369,   381,  5034, 10561,  -870,   367,   465,   380,
2659
    -870,  1443,  -870,  -870,  -870,   392, 10561,  -870,   410,   509,
2660
     423,   518,  -870,  -870,   462,  5034,  -870,  -870,  9853,  -870,
2661
    5856,  8559,   444,  9853, 10561, 10561, 10561, 10561, 10561, 10561,
2662
   10561, 10561, 10561, 10561, 10561, 10561, 10561, 10561,   539, 10561,
2663
   10561, 10561, 10561, 10561, 10561, 10561, 10561, 10561, 10561, 10561,
2664
   10561,  3007,  -870,  8909,  -870,  3752,  -870,  -870, 12649,  -870,
2665
    -870,  -870,  -870, 10679, 10679,  -870,   503,  -870,   306,  -870,
2666
    1093,  -870,  -870,  -870,  -870,  -870,  -870, 11531,  8909, 11617,
2667
    5034, 10443,  -870,  -870,  -870,   595,   604,   225,   501,   505,
2668
    -870,  5180,   608, 10561, 11703,  8909, 11789, 10561, 10561,  5472,
2669
     308,   308,   106, 11875,  8909, 11961,  -870,   566,  -870,  6094,
2670
     310,  -870,  -870,  9971,   621,  -870, 10561, 10561, 13191, 13191,
2671
   13191, 10561,  -870,  -870,  9145,  -870, 10561,  -870,  9499,  6716,
2672
     493,  1443,   195,   195,  -870,  -870,   318,   499,  -870,  -870,
2673
    -870,  8163,  5591,   506, 11703, 11789, 10561,   988,  1443,  -870,
2674
    -870,  6478,   504,   988,  -870,  -870,  9617,  -870,  1443,  9735,
2675
    -870,  -870,  -870,  1093,    74, 11253,  -870, 11253, 12047,  8909,
2676
   12133,  2010,  -870,  -870,   507,  -870,  1345,  6094,   666,  -870,
2677
    -870,  -870,  -870,  -870,  -870,  -870, 10561, 10561,  -870,  -870,
2678
    -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,
2679
    1431,  1443,  1443,   513, 10679,   642, 13191,   605,  -870,  -870,
2680
    -870,    37,  -870,  -870,  1691,  -870, 13191,  2010,  -870,  -870,
2681
    1712,  -870,  -870, 10679,   644,    83, 10561,  -870, 12845,   195,
2682
    -870,  1443, 11253,   521,  -870,  -870,  -870,   616,   549,  3375,
2683
    -870,  -870,  1116,   307,  2135,  2135,  2135,  2135,  2029,  2029,
2684
    3438,  2505,  2135,  2135, 13253, 13253,  1521,  1521,  -870,   296,
2685
   13191,  2029,  2029,  1668,  1668,  1694,   237,   237,   296,   296,
2686
     296,  3634,  7621,  4750,  7739,  -870,   124,  -870,   530,   195,
2687
     432,  -870,   450,  -870,  -870,  4342,  -870,  -870,  2280,    83,
2688
      83,  -870,  2882,  -870,  -870,  -870,  -870,  -870,  1443, 10443,
2689
    5034,   874,   654,  -870,   124,   536,   124,   671,   318,  8304,
2690
    -870, 10089,   674,  -870, 10561, 10561,   278,  -870,  7383,  7502,
2691
     556,   309,   327,   674,  -870,  -870,  -870,  -870,    64,    73,
2692
     558,   111,   121, 10443,  8163,   572,   690, 13191,    81,  -870,
2693
   13191, 13191, 13191,   287, 10561, 13129,  -870,   195, 13191,  -870,
2694
    -870,  -870,  -870,  9263,  9499,  -870,  -870,  -870,   576,  -870,
2695
    -870,    22,   988,  1443,  1129,   444,  -870,   874,   654,   575,
2696
    1031,  1156,  -870,   113,  2010,  -870,   579,  -870,   296,   296,
2697
    -870,  -870,   912,  1443,   578,  -870,  -870,  1929,   681, 12721,
2698
    -870,   679,   424,  -870,   380,  -870,  1443,  -870,  -870,   586,
2699
     589,   606,  -870,   607,   679,   606,   710, 12783,  -870,  -870,
2700
    2010,  5034,  -870,  -870, 12916, 10207,  -870,  -870, 11253,  8791,
2701
   10679, 10561, 12219,  8909, 12305,   561, 10679, 10679,  -870,   503,
2702
     551,  9145, 10679, 10679,  -870,   503,    53,   138,  5034,  6094,
2703
      83,  -870,  1443,   740,  -870,  -870,  -870,  -870, 12845,  -870,
2704
     665,  -870,  5737,   746,  -870, 10443,   749,  -870, 10561, 10561,
2705
     379, 10561, 10561,   753,  6240,  6240,   128,   308,  -870,  -870,
2706
    -870, 10325,  5326, 13191,  -870,  6716,   195,  -870,  -870,  -870,
2707
     161,   625,  1449,  5034,  6094,  -870,  -870,  -870,   619,  -870,
2708
    1484,  1443, 10561, 10561,  -870,  -870,  2010,  -870,  1712,  -870,
2709
    1712,  -870,  1712,  -870,  -870, 10561, 10561,  -870,  -870,  -870,
2710
   11367,  -870,   632,   380,   637, 11367,  -870,   640,   645,  -870,
2711
     774, 10561, 12987,  -870,  -870, 13191,  4614,  4886,   647,   407,
2712
     463, 10561, 10561,  -870,  -870,  -870,  -870,  -870, 10679,  -870,
2713
    -870,  -870,  -870,  -870,  -870,  -870,   778,   656,  6094,  5034,
2714
    -870,  -870, 11481,   188,  -870,  -870,  6240,  -870,  -870,   188,
2715
    -870, 10561,  -870,   782,   790,  -870, 13191,   168,  -870,  9499,
2716
    -870,  1615,   791,   672,  1457,  1457,  1063,  -870, 13191, 13191,
2717
     606,   675,   606,   606, 13191, 13191,   687,   688,   763,  1119,
2718
     605,  -870,  -870,  1421,  -870,  1119,  2010,  -870,  1712,  -870,
2719
    -870, 13058,   478, 13191, 13191,  -870,  -870,  -870,  -870,   691,
2720
     805,   776,  -870,  1127,  1007,  1068,  5034,  -870,  5180,  -870,
2721
    -870,  6240,  -870,  -870,  -870,  -870,   693,  -870,  -870,  -870,
2722
    -870,   696,   696,  1457,   697,  -870,  1712,  -870,  -870,  -870,
2723
    -870,  -870,  -870, 12391,  -870,   380,   605,  -870,  -870,   701,
2724
     705,   708,  -870,   720,   708,  -870,  -870,  1093, 12477,  8909,
2725
   12563,   604,   278,   851,  1615,   287,  1457,   696,  1457,   606,
2726
     723,   733,  -870,  2010,  -870,  1712,  -870,  1712,  -870,  1712,
2727
    -870,  -870,   874,   654,   745,   299,   535,  -870,  -870,  -870,
2728
    -870,   696,  -870,   708,   751,   708,   708,   161,  -870,  1712,
2729
    -870,  -870,  -870,   708,  -870
2730
};
2731
2732
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
2733
   Performed when YYTABLE does not specify something else to do.  Zero
2734
   means the default is an error.  */
2735
static const yytype_int16 yydefact[] =
2736
{
2737
       2,     0,     0,     0,     0,     0,     0,   294,     0,     0,
2738
     318,   321,     0,     0,   606,   338,   339,   340,   341,   306,
2739
     270,   270,   491,   490,   492,   493,   608,     0,    10,     0,
2740
     495,   494,   496,   481,   592,   483,   482,   485,   484,   477,
2741
     478,   438,   439,   497,   498,   489,     0,     0,     0,     0,
2742
       0,     0,   296,   620,   620,    88,   313,     0,     0,     0,
2743
       0,     0,     0,   453,     0,     0,     0,     3,   606,     6,
2744
       9,    27,    33,   545,   545,    49,    60,    59,     0,    76,
2745
       0,    80,    90,     0,    54,   248,     0,    61,   311,   286,
2746
     287,   436,   288,   289,   290,   434,   433,   465,   435,   432,
2747
     488,     0,   291,   292,   270,     5,     1,     8,   338,   339,
2748
     306,   620,   414,     0,   113,   114,   489,     0,     0,     0,
2749
       0,   545,   545,   116,   499,   342,     0,   488,   292,     0,
2750
     334,   168,   178,   169,   165,   194,   195,   196,   197,   176,
2751
     191,   184,   174,   173,   189,   172,   171,   167,   192,   166,
2752
     179,   183,   185,   177,   170,   186,   193,   188,   187,   180,
2753
     190,   175,   164,   182,   181,   163,   161,   162,   158,   159,
2754
     160,   118,   120,   119,   153,   154,   131,   132,   133,   140,
2755
     137,   139,   134,   135,   155,   156,   141,   142,   146,   149,
2756
     150,   136,   138,   128,   129,   130,   143,   144,   145,   147,
2757
     148,   151,   152,   157,   576,    55,   121,   122,   575,     0,
2758
       0,     0,    58,   545,   545,     0,     0,    54,     0,   488,
2759
       0,   292,     0,     0,     0,   112,     0,   353,   352,     0,
2760
       0,   488,   292,   187,   180,   190,   175,   158,   159,   160,
2761
     118,   119,     0,   123,   125,    20,   124,   456,   461,   460,
2762
     614,   616,   606,   617,     0,   458,     0,   618,   615,   607,
2763
     590,   489,   278,   589,   273,     0,   265,   277,    74,   269,
2764
     620,   436,   620,   580,    75,    73,   620,   259,   307,     0,
2765
      72,   258,   413,    71,   606,     0,    18,     0,     0,   221,
2766
       0,   222,   209,   212,   303,     0,     0,     0,   606,    15,
2767
     606,    78,    14,     0,   606,     0,   611,   611,   249,     0,
2768
       0,   611,   578,     0,     0,    86,     0,    96,   103,   545,
2769
     471,   470,   472,   473,   467,     0,   469,   468,   440,   445,
2770
     444,   447,     0,     0,   442,   449,     0,   451,     0,   463,
2771
       0,   475,     0,   479,   480,    53,   236,   237,     4,   607,
2772
       0,     0,     0,     0,     0,     0,     0,   552,   548,   547,
2773
     546,   549,   550,     0,   554,   566,   521,   522,   570,   569,
2774
     565,   545,     0,   507,     0,   514,   519,   620,   524,   620,
2775
     544,     0,   551,   553,   556,   530,     0,   563,   530,   568,
2776
     530,   572,   528,   503,     0,     0,   401,   403,     0,    92,
2777
       0,    84,    81,     0,     0,     0,     0,     0,     0,     0,
2778
       0,     0,     0,     0,   208,   211,     0,     0,     0,     0,
2779
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2780
       0,     0,   603,   620,   602,     0,   605,   604,     0,   418,
2781
     416,   312,   437,     0,     0,   407,    65,   310,   331,   113,
2782
     114,   115,   479,   480,   507,   500,   329,     0,   620,     0,
2783
       0,     0,   601,   600,    56,     0,   620,   303,     0,     0,
2784
     344,     0,   343,     0,     0,   620,     0,     0,     0,     0,
2785
       0,     0,   303,     0,   620,     0,   326,     0,   126,     0,
2786
       0,   457,   459,     0,     0,   619,   584,   585,   279,   588,
2787
     272,     0,   608,   266,     0,   275,     0,   267,     0,   606,
2788
       0,   606,   620,   620,   260,   271,   606,     0,   309,    52,
2789
     609,     0,     0,     0,     0,     0,     0,    17,   606,   301,
2790
      13,   607,    77,   297,   300,   304,   613,   250,   612,   613,
2791
     252,   305,   579,   102,    94,     0,    89,     0,     0,   620,
2792
       0,   545,   314,   398,   530,   474,     0,     0,   448,   454,
2793
     441,   443,   450,   452,   464,   476,     0,     0,     7,    21,
2794
      22,    23,    24,    25,    50,    51,   511,   558,   512,   510,
2795
       0,   606,   606,   530,     0,     0,   513,     0,   526,   574,
2796
     523,     0,   527,   508,     0,   537,   559,     0,   540,   567,
2797
       0,   542,   571,     0,     0,   620,   278,    28,    30,     0,
2798
      31,   606,     0,    82,    93,    48,    34,    46,     0,   253,
2799
     198,    29,     0,   292,   226,   231,   232,   233,   228,   230,
2800
     240,   241,   234,   235,   207,   210,   238,   239,    32,   218,
2801
     608,   227,   229,   223,   224,   225,   213,   214,   215,   216,
2802
     217,   593,   598,   594,   599,   412,   270,   410,     0,   620,
2803
     593,   595,   594,   596,   411,   270,   593,   594,   270,   620,
2804
     620,    35,   253,   199,    45,   206,    63,    66,     0,     0,
2805
       0,   113,   114,   117,     0,     0,   620,     0,   606,     0,
2806
     295,   620,   620,   424,     0,     0,   620,   345,   597,   302,
2807
       0,   593,   594,   620,   347,   319,   346,   322,   597,   302,
2808
       0,   593,   594,     0,     0,     0,     0,   277,     0,   325,
2809
     583,   586,   582,   276,   281,   280,   274,   620,   587,   581,
2810
     257,   255,   261,   262,   264,   308,   610,    19,     0,    26,
2811
     205,    79,    16,   606,   611,    95,    87,    99,   101,     0,
2812
      98,   100,   608,     0,     0,   466,     0,   455,   219,   220,
2813
     552,   550,   361,   606,   354,   506,   504,     0,    41,   244,
2814
     336,     0,     0,   520,   620,   573,     0,   529,   557,   530,
2815
     530,   530,   564,   530,   552,   530,    43,   246,   337,   389,
2816
     387,     0,   386,   385,   285,     0,    91,    85,     0,     0,
2817
       0,     0,     0,   620,     0,     0,     0,     0,   409,    69,
2818
     415,   262,     0,     0,   408,    67,   404,    62,     0,     0,
2819
     620,   332,     0,     0,   415,   335,   577,    57,   425,   426,
2820
     620,   427,     0,   620,   350,     0,     0,   348,     0,     0,
2821
     415,     0,     0,     0,     0,     0,   415,     0,   127,   462,
2822
     324,     0,     0,   282,   268,   606,   620,    11,   298,   251,
2823
      97,     0,   391,     0,     0,   315,   446,   362,   359,   555,
2824
       0,   606,     0,     0,   525,   509,     0,   533,     0,   535,
2825
       0,   541,     0,   538,   543,     0,     0,   384,   608,   608,
2826
     516,   517,   620,   620,   369,     0,   561,   369,   369,   367,
2827
       0,   281,   283,    83,    47,   254,   593,   594,     0,   593,
2828
     594,     0,     0,    40,   203,    39,   204,    70,     0,    37,
2829
     201,    38,   202,    68,   405,   406,     0,     0,     0,     0,
2830
     501,   330,     0,     0,   429,   351,     0,    12,   431,     0,
2831
     316,     0,   317,     0,     0,   327,   280,   620,   256,   263,
2832
     397,     0,     0,     0,     0,     0,   357,   505,    42,   245,
2833
     530,   530,   530,   530,    44,   247,     0,     0,     0,   515,
2834
       0,   365,   366,   369,   377,   560,     0,   380,     0,   382,
2835
     402,   284,   415,   243,   242,    36,   200,   419,   417,     0,
2836
       0,     0,   428,     0,   104,   111,     0,   430,     0,   320,
2837
     323,     0,   421,   422,   420,   395,   608,   393,   396,   400,
2838
     399,   363,   360,     0,   355,   534,     0,   531,   536,   539,
2839
     390,   388,   303,     0,   518,   620,     0,   368,   375,   369,
2840
     369,   369,   562,   369,   369,    64,   333,   110,     0,   620,
2841
       0,   620,   620,     0,     0,   392,     0,   358,     0,   530,
2842
     597,   302,   364,     0,   372,     0,   374,     0,   381,     0,
2843
     378,   383,   107,   109,     0,   593,   594,   423,   349,   328,
2844
     394,   356,   532,   369,   369,   369,   369,   105,   373,     0,
2845
     370,   376,   379,   369,   371
2846
};
2847
2848
/* YYPGOTO[NTERM-NUM].  */
2849
static const yytype_int16 yypgoto[] =
2850
{
2851
    -870,  -870,  -870,   372,  -870,    43,  -870,  -299,   301,  -870,
2852
    -870,    46,  -165,  -305,    34,  1724,  -870,  1884,    21,   -50,
2853
    -870,  -870,  -483,   -12,   885,  -205,    15,   -27,  -285,  -477,
2854
     -47,  2818,   -59,   893,     5,   -18,  -870,  -870,    38,  -870,
2855
    1204,  -870,   184,    56,  -252,  -325,    96,  -870,    10,  -420,
2856
    -231,    14,    52,  -358,    28,  -870,  -870,  -870,  -870,  -870,
2857
    -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,
2858
    -870,     9,  -188,  -444,  -141,  -623,  -870,  -870,  -870,   115,
2859
     258,  -870,  -583,  -870,  -870,  -464,  -870,  -142,  -870,  -870,
2860
    -870,    91,  -870,  -870,  -870,   -87,  -870,  -470,  -870,  -131,
2861
    -870,  -870,  -870,  -870,  -870,   103,    41,  -160,  -870,  -870,
2862
    -870,  -870,  -870,  -277,  -870,   670,  -870,  -870,  -870,   -11,
2863
    -870,  -870,  -870,  2545,  2999,   913,  2385,  -870,  -870,    60,
2864
     512,    25,   135,   341,   -40,  -870,  -870,  -870,   117,   730,
2865
    -185,  -226,  -824,  -706,  -513,  -870,   186,  -751,  -547,  -869,
2866
     -42,  -536,  -870,   252,  -870,   -44,  -343,  -870,  -870,  -870,
2867
     101,  -445,   600,  -353,  -870,  -870,   -60,  -870,    24,   -20,
2868
     492,  -250,   508,  -280,   -46,    -1
2869
};
2870
2871
/* YYDEFGOTO[NTERM-NUM].  */
2872
static const yytype_int16 yydefgoto[] =
2873
{
2874
       0,     1,     2,    67,    68,    69,   287,   465,   466,   298,
2875
     521,   299,    71,   616,    72,   213,   689,   214,   215,    75,
2876
      76,   820,   677,    77,    78,   300,    79,    80,    81,   546,
2877
      82,   216,   123,   124,   243,   244,   245,   714,   654,   207,
2878
      84,   305,   620,   655,   278,   510,   511,   279,   280,   269,
2879
     503,   539,   659,   610,    85,   210,   303,   743,   304,   319,
2880
     753,   223,   844,   224,   845,   713,  1001,   680,   678,   929,
2881
     460,   290,   471,   705,   836,   837,   230,   763,   954,  1027,
2882
     974,   888,   791,   889,   792,   861,  1006,  1007,   552,   865,
2883
     605,   397,    87,    88,   670,   447,   669,   494,  1004,   692,
2884
     830,   933,   937,    89,    90,    91,   333,   334,   557,    92,
2885
      93,    94,   558,   253,   254,   255,   489,    95,    96,    97,
2886
     327,    98,    99,   219,   220,   102,   221,   456,   679,   372,
2887
     373,   374,   375,   376,   891,   892,   377,   378,   379,   777,
2888
     595,   381,   382,   383,   384,   580,   385,   386,   387,   896,
2889
     897,   388,   389,   390,   391,   392,   588,   209,   461,   310,
2890
     513,   273,   129,   684,   657,   464,   459,   438,   517,   862,
2891
     518,   537,   257,   258,   259,   302
2892
};
2893
2894
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
2895
   positive, shift that token.  If negative, reduce the rule whose
2896
   number is the opposite.  If YYTABLE_NINF, syntax error.  */
2897
static const yytype_int16 yytable[] =
2898
{
2899
     105,   441,   246,   266,   266,   520,   285,   266,   315,   286,
2900
      86,   205,    86,   126,   126,   345,   246,   218,   218,   281,
2901
     716,   229,   349,   218,   218,   218,   435,   437,   218,   545,
2902
     222,   283,   125,   125,   479,   252,   592,   707,   256,   895,
2903
     125,   507,   212,   212,   206,   621,   107,    70,   212,    70,
2904
     782,   206,   308,   312,   402,   559,   868,   540,   779,   451,
2905
      86,   542,   326,   729,   316,   206,   301,   270,   270,   833,
2906
     746,   270,   393,   393,   218,   585,   277,   282,   656,   439,
2907
     843,   778,   665,   125,   726,   668,   818,   819,   726,  -107,
2908
     316,   528,   348,   553,   729,   206,   604,   470,  -109,   395,
2909
     336,   338,   340,   342,  -104,   306,   686,  1032,   658,   125,
2910
     281,   268,   274,  -491,   446,   275,   272,   272,   271,   271,
2911
     272,   656,   271,   665,   439,   576,   218,  1008,    86,  -111,
2912
     106,  -110,   686,   685,   394,   797,  -106,   436,   671,   674,
2913
     368,  -490,   863,   -77,  -492,   582,  -108,   395,   343,   344,
2914
     700,   448,   432,  -105,   307,   311,   271,   271,   476,   710,
2915
     445,   687,   789,   284,   -91,   369,   396,   277,   282,   485,
2916
    -491,   449,   686,   561,   288,   450,   561,  -493,   561,   497,
2917
     561,  -487,   561,  -495,  1032,   445,   832,  -415,   493,   577,
2918
     398,   440,  -494,   442,   434,   611,   247,   686,  -490,   248,
2919
     249,  -492,  -496,   598,   470,   601,   -99,   294,  -593,   790,
2920
    -112,   443,   393,   393,  -487,  -101,   399,  -594,   779,    86,
2921
    1008,   -96,   895,   502,   749,   895,   864,   250,   403,   251,
2922
     525,   779,   218,   218,  -493,  -481,   440,   928,   615,   395,
2923
    -495,   778,   276,  -112,   480,   481,  -103,   326,  -102,  -494,
2924
    1014,  -415,   531,   -98,   778,   473,   550,   212,   212,  -496,
2925
     538,   538,   545,  -100,   266,   538,  -415,   266,   276,   505,
2926
     -97,   505,   455,   468,   469,   514,   490,   467,   615,   615,
2927
     206,   757,   507,  -485,   504,   218,   508,   544,   218,   729,
2928
     462,   477,  -481,   218,   218,   835,   832,    86,   482,  -415,
2929
     486,  -415,   895,   247,    86,    86,   248,   249,  -415,   488,
2930
    -486,   301,    86,   726,   726,  -106,   478,   526,   516,   519,
2931
     536,   903,   530,   316,  1002,   752,   917,   545,   512,   782,
2932
     493,   270,   923,   829,   250,   704,   251,   502,   419,  -104,
2933
    -485,   527,   125,   355,   356,  -111,  -110,   463,   607,   533,
2934
     452,   453,   297,   617,   613,   355,   356,   778,    86,   218,
2935
     218,   218,   218,    86,   218,   218,   556,   778,   428,   429,
2936
     430,   569,   570,   571,   572,   515,   589,   506,   589,   271,
2937
     272,   823,   271,    86,   212,   212,   212,   212,   522,   574,
2938
     575,   726,   568,   617,   617,    70,   561,   419,   683,   444,
2939
     573,   841,   247,   945,    86,   248,   249,   218,   529,    86,
2940
     316,  -486,   622,   814,  -106,   301,   816,  -106,  -106,   842,
2941
     297,   266,   535,   247,   966,   967,   248,   249,  -111,   125,
2942
    -106,   874,   514,   247,   814,   251,   248,   249,   -76,   444,
2943
    -104,   541,   218,   520,   543,  -106,   266,  -106,  -108,   656,
2944
     609,   665,   622,   622,   250,   609,   251,   514,   547,    41,
2945
     778,   -96,    42,   266,   250,   693,   251,   218,  -111,    86,
2946
     218,   941,   266,   663,   514,   566,   663,  1003,   908,   567,
2947
      86,   578,   723,   514,   218,   328,   329,   330,    86,  -103,
2948
     584,   664,   900,   218,   859,   688,   854,   663,    86,   812,
2949
    -105,   913,  -502,   737,   729,   554,    58,   919,   921,   587,
2950
     246,   505,   505,   545,   663,   664,   590,   526,   745,   926,
2951
     544,   105,   591,   663,   812,   520,   733,   734,  -106,   726,
2952
     852,    86,   664,   778,   594,   732,   271,   266,   331,   332,
2953
      86,   664,   813,   775,   778,   718,  -110,   775,   514,   971,
2954
     972,  -108,   597,  -106,   316,   813,   316,   583,   218,   206,
2955
     599,   271,   804,   663,   952,   600,    86,  -102,    70,   602,
2956
     918,  -108,   768,   125,   -98,   125,   335,   742,   271,   329,
2957
     330,   664,   520,   603,  -108,   544,   614,   271,   663,   523,
2958
     638,   786,  -100,   218,   877,   879,   881,   297,   883,  -105,
2959
     884,   104,   676,   104,   793,   727,   664,   271,   104,   104,
2960
     690,   271,   218,   985,   104,   104,   104,   691,   911,   104,
2961
     805,   316,   694,   795,   697,   854,   695,   673,   675,   555,
2962
     990,   331,   332,   454,   454,   615,   719,   744,   731,   271,
2963
     125,   615,   271,   918,   736,   739,   -91,   615,   615,   754,
2964
    -108,   104,   271,  -108,  -108,   767,   771,   770,   505,   788,
2965
     799,   673,   675,   798,   281,   104,   809,   281,   793,   793,
2966
     800,   810,  -105,   811,   772,   815,   247,   824,   817,   248,
2967
     249,  -108,  1052,  -108,   912,   281,   825,   686,   218,    86,
2968
     831,   834,   832,   -97,   827,   834,   848,   840,   538,   846,
2969
     822,   297,   834,   246,   774,   850,   366,   367,   368,   251,
2970
     740,   849,   808,   212,  1064,   857,   860,   104,   866,   104,
2971
     870,   277,   218,   472,   277,   872,   505,   206,   876,   924,
2972
     472,   878,   851,   369,   847,   491,   576,   554,   248,   249,
2973
     808,   508,   277,   609,  -302,   996,   899,   212,   880,   882,
2974
     617,   998,   206,   615,   885,   931,   617,   915,   932,  -302,
2975
     936,   955,   617,   617,   940,   520,   764,   495,   942,  -590,
2976
     950,   544,   696,   589,   970,  1015,  1017,  1018,  1019,   973,
2977
     703,   247,   976,   781,   248,   249,   785,   978,   982,   980,
2978
     715,   266,   532,   987,  -302,   988,   534,   999,  -594,  -591,
2979
      86,  -302,   514,   380,   380,  1000,  1009,   316,    86,   622,
2980
     104,  1010,   218,  1020,  1021,   622,   218,  1016,  1022,   793,
2981
    1036,   622,   622,   104,   104,  -342,   125,    86,    86,   934,
2982
    1035,  1037,   938,  -481,   856,  1044,   271,   271,  1046,  1048,
2983
    -342,    86,   663,  1053,   218,   904,   780,  1055,  -481,   783,
2984
    1057,   380,   380,    86,    86,   505,   939,   495,   756,   431,
2985
     664,    86,  1059,  -485,  1072,   457,  1069,  -593,   617,   212,
2986
     949,   579,    86,    86,   432,  -342,   104,  -594,  -485,   104,
2987
     432,  -590,  -342,  -481,   104,   104,  1077,  -590,   104,   593,
2988
    -481,   589,   589,  1079,   738,   104,   104,   227,   130,   969,
2989
    -597,  1068,  1070,   104,   975,   887,   271,   893,   925,   433,
2990
    1067,  -591,   856,  -485,   271,   458,   434,  -591,   125,   208,
2991
    -485,   474,   434,   125,   492,   890,   775,   622,   773,   899,
2992
    1024,  1029,   899,  1040,   899,     0,   432,    86,    86,     0,
2993
       0,   993,  -489,   380,   380,    86,   834,     0,     0,   104,
2994
     104,   104,   104,   104,   104,   104,   104,  -489,     0,     0,
2995
     125,     0,     0,   760,  -597,   358,   359,   360,   361,     0,
2996
       0,   475,     0,     0,   104,     0,   894,     0,   434,  -597,
2997
       0,   761,   899,   339,   329,   330,  1045,     0,   706,   706,
2998
     914,   916,  -489,     0,     0,   104,   920,   922,   104,  -489,
2999
     104,   730,     0,   104,     0,    86,   780,    86,   735,   899,
3000
      86,   899,  -597,   899,  -597,   899,     0,     0,  -593,   780,
3001
     741,  -597,   914,   916,   589,   920,   922,   266,   350,   351,
3002
     352,   353,   354,   104,     0,   899,   331,   332,   514,   495,
3003
     693,   834,   898,   104,   104,     0,   495,     0,   218,   380,
3004
     483,     0,   271,     0,   867,     0,     0,  -593,   104,     0,
3005
     104,   104,   960,     0,   962,   432,     0,     0,   963,     0,
3006
       0,   104,     0,   765,   766,   104,     0,   524,   663,   104,
3007
       0,     0,   562,     0,   104,   329,   330,  1025,     0,   104,
3008
     893,     0,   432,   893,   548,   893,   664,  -488,     0,     0,
3009
     484,   380,   986,   796,     0,   890,     0,   434,   890,   432,
3010
       0,   890,  -488,   890,   760,     0,   358,   359,   360,   361,
3011
     927,  -593,   104,     0,     0,   986,     0,   475,   961,     0,
3012
       0,   104,   761,   935,   434,     0,  -593,   331,   332,     0,
3013
    1011,  1012,   271,   893,   549,   943,   944,  -488,     0,   104,
3014
       0,   434,     0,   947,  -488,   977,   979,   104,  -292,     0,
3015
       0,   890,  1031,     0,  1034,   953,     0,     0,     0,  -593,
3016
     893,  -593,   893,  -292,   893,  -593,   893,     0,  -593,     0,
3017
     826,     0,  -594,  -303,   104,     0,   821,     0,   890,     0,
3018
     890,     0,   890,     0,   890,     0,   893,     0,  -303,  1047,
3019
       0,     0,  1049,   104,     0,  1013,   802,     0,  -292,  1023,
3020
       0,     0,   217,   217,   890,  -292,     0,  1038,   217,   267,
3021
     267,   432,     0,   267,   432,  1030,   472,     0,  1033,   989,
3022
       0,  1028,   432,  -303,  1071,   858,     0,   997,     0,  1073,
3023
    -303,  1075,     0,     0,   247,  1076,  -594,   248,   249,     0,
3024
     289,   291,   292,   293,     0,   869,   803,   267,   309,   458,
3025
       0,  -594,     0,   434,     0,  1083,   434,  1039,     0,   346,
3026
     347,   502,     0,     0,   434,   250,     0,   251,     0,   104,
3027
     104,   380,     0,   337,   875,   329,   330,  1054,  1056,  1058,
3028
       0,  1060,  1061,     0,  -594,     0,  -594,  1041,     0,  1042,
3029
    -594,     0,  1043,  -594,   563,  1074,   329,   330,   341,   329,
3030
     330,     0,     0,   104,     0,   555,   329,   330,   560,   329,
3031
     330,   217,     0,     0,   357,     0,   358,   359,   360,   361,
3032
     930,  1078,  1080,  1081,  1082,     0,     0,   331,   332,     0,
3033
       0,  1084,   362,     0,     0,     0,   357,   948,   358,   359,
3034
     360,   361,     0,     0,     0,   706,   363,     0,   331,   332,
3035
       0,   331,   332,   957,   362,     0,     0,   364,   331,   332,
3036
       0,   331,   332,   365,   366,   367,   368,     0,   363,     0,
3037
     564,   329,   330,   565,   329,   330,     0,     0,     0,   364,
3038
       0,   104,     0,     0,  -620,   365,   366,   367,   368,   104,
3039
     104,   369,     0,   104,   370,     0,   104,   104,   755,   329,
3040
     330,     0,   104,   104,     0,     0,     0,   371,   104,   104,
3041
       0,     0,     0,   369,     0,     0,   370,   217,   217,     0,
3042
       0,     0,   104,   331,   332,   104,   331,   332,     0,   371,
3043
       0,   472,     0,     0,   104,   104,     0,   472,     0,     0,
3044
       0,     0,   104,   357,     0,   358,   359,   360,   361,     0,
3045
       0,   331,   332,   104,   104,     0,   498,   499,   500,   346,
3046
       0,   362,   357,     0,   358,   359,   360,   361,     0,     0,
3047
     267,     0,   760,   267,   358,   359,   360,   361,   217,   217,
3048
     362,     0,     0,     0,     0,     0,   364,     0,     0,     0,
3049
     761,     0,   365,   366,   367,   368,     0,     0,   760,     0,
3050
     358,   359,   360,   361,     0,   364,     0,     0,   104,     0,
3051
       0,   365,   366,   367,   368,   364,   761,     0,   104,   104,
3052
     369,   762,     0,   370,     0,   760,   104,   358,   359,   360,
3053
     361,  -299,     0,     0,  -299,  -299,   551,     0,     0,   369,
3054
       0,   364,   370,   761,   217,   217,   217,   217,   247,   217,
3055
     217,   248,   249,  1026,   247,     0,     0,   248,   249,     0,
3056
       0,  -299,  -299,     0,  -299,     0,     0,     0,   364,   586,
3057
       0,     0,     0,     0,   956,     0,     0,     0,     0,   250,
3058
     596,   251,     0,     0,     0,   951,   104,   251,   104,     0,
3059
       0,   104,   608,     0,     0,     0,     0,   619,   624,   625,
3060
     626,   627,   628,   629,   630,   631,   632,   633,   634,   635,
3061
     636,   637,   419,   639,   640,   641,   642,   643,   644,   645,
3062
     646,   647,   648,   649,   650,     0,     0,   267,     0,   104,
3063
     357,     0,   358,   359,   360,   361,     0,   672,   672,     0,
3064
     426,   427,   428,   429,   430,     0,     0,     0,   362,     0,
3065
       0,     0,   267,     0,     0,   217,  1005,     0,   358,   359,
3066
     360,   361,     0,     0,   581,     0,     0,   672,     0,   267,
3067
       0,   672,   672,   364,   761,     0,     0,     0,   267,   365,
3068
     366,   367,   368,     0,     0,     0,     0,   717,     0,     0,
3069
     720,   721,     0,     0,     0,   722,     0,     0,   725,     0,
3070
     728,     0,   309,   293,     0,     0,     0,   369,     0,     0,
3071
     370,     0,     0,     0,     0,    73,     0,    73,   121,   121,
3072
     672,     0,     0,     0,     0,     0,   121,     0,     0,     0,
3073
     725,     0,   357,   309,   358,   359,   360,   361,     0,     0,
3074
       0,     0,     0,   267,     0,     0,   416,   417,     0,     0,
3075
     362,     0,     0,   784,     0,   358,   359,   360,   361,   419,
3076
     758,   759,     0,     0,     0,    73,   776,     0,     0,   121,
3077
       0,   362,   416,   417,     0,   364,     0,     0,   769,     0,
3078
       0,   365,   366,   367,   368,   419,   425,   426,   427,   428,
3079
     429,   430,     0,     0,     0,   121,   364,   787,     0,     0,
3080
     794,     0,     0,   366,   367,   368,     0,     0,     0,   369,
3081
       0,     0,   370,   426,   427,   428,   429,   430,     0,     0,
3082
       0,  -414,     0,     0,     0,     0,     0,     0,     0,     0,
3083
     369,     0,     0,    73,  -414,  -414,  -414,  -414,  -414,  -414,
3084
       0,  -414,     0,     0,     0,     0,     0,  -414,  -414,  -414,
3085
       0,     0,     0,     0,     0,     0,     0,     0,  -414,  -414,
3086
       0,  -414,  -414,  -414,  -414,  -414,     0,     0,     0,     0,
3087
       0,     0,     0,   217,     0,    74,     0,    74,   122,   122,
3088
       0,     0,     0,     0,     0,   828,   122,     0,   769,   787,
3089
       0,     0,     0,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
3090
    -414,  -414,  -414,  -414,  -414,     0,     0,   217,     0,  -414,
3091
    -414,  -414,     0,     0,  -414,     0,     0,     0,   853,     0,
3092
    -414,     0,  -414,     0,    73,    74,  -414,   725,   309,   122,
3093
       0,     0,     0,     0,     0,     0,  -414,     0,     0,  -414,
3094
    -414,     0,     0,  -414,     0,  -414,  -414,  -414,  -414,  -414,
3095
    -414,  -414,  -414,  -414,  -414,   122,     0,     0,     0,  -414,
3096
    -414,  -414,  -414,  -414,     0,   276,  -414,  -414,  -414,  -414,
3097
     357,     0,   358,   359,   360,   361,     0,     0,     0,     0,
3098
       0,     0,     0,     0,     0,     0,     0,     0,   362,   902,
3099
       0,     0,     0,    74,   672,   905,     0,   267,     0,     0,
3100
     672,   672,    73,     0,   871,   725,   672,   672,     0,    73,
3101
      73,     0,     0,   364,     0,     0,     0,    73,     0,   365,
3102
     366,   367,   368,     0,     0,     0,     0,     0,   121,   217,
3103
       0,     0,   672,   672,     0,   672,   672,     0,     0,     0,
3104
       0,     0,     0,     0,     0,   946,     0,   369,     0,   293,
3105
     370,   357,     0,   358,   359,   360,   361,     0,     0,     0,
3106
       0,     0,     0,    73,     0,     0,   958,   959,    73,   362,
3107
       0,     0,     0,     0,     0,     0,     0,     0,     0,   964,
3108
     965,     0,     0,     0,    74,     0,     0,     0,    73,     0,
3109
       0,     0,     0,     0,   364,   981,     0,     0,     0,     0,
3110
     365,   366,   367,   368,     0,   983,   984,   416,   417,    73,
3111
       0,     0,   672,     0,    73,   121,     0,    73,     0,     0,
3112
     419,     0,     0,     0,     0,     0,     0,     0,   369,     0,
3113
       0,   370,     0,     0,     0,   672,     0,     0,     0,     0,
3114
       0,     0,     0,   309,     0,   423,   424,   425,   426,   427,
3115
     428,   429,   430,     0,     0,     0,     0,    73,    73,     0,
3116
       0,     0,    74,     0,     0,     0,     0,     0,     0,    74,
3117
      74,     0,     0,     0,    73,     0,     0,    74,     0,     0,
3118
       0,     0,     0,     0,     0,    73,     0,     0,   122,     0,
3119
       0,     0,     0,    73,     0,     0,     0,  -621,  -621,  -621,
3120
    -621,   408,   409,    73,     0,  -621,  -621,     0,     0,     0,
3121
       0,     0,     0,   416,   417,     0,     0,     0,     0,     0,
3122
       0,     0,     0,    74,     0,     0,   419,     0,    74,     0,
3123
       0,     0,     0,   267,     0,     0,    73,     0,     0,     0,
3124
       0,     0,     0,     0,     0,    73,     0,     0,    74,   421,
3125
     422,   423,   424,   425,   426,   427,   428,   429,   430,   121,
3126
       0,   121,     0,     0,     0,     0,     0,     0,     0,    74,
3127
    -620,    73,     0,     0,    74,   122,     0,    74,     0,     0,
3128
       0,     0,     0,  -620,  -620,  -620,  -620,  -620,  -620,     0,
3129
    -620,     0,     0,     0,     0,     0,  -620,  -620,     0,     0,
3130
       0,     0,     0,     0,     0,     0,     0,  -620,  -620,     0,
3131
    -620,  -620,  -620,  -620,  -620,     0,     0,    74,    74,     0,
3132
       0,     0,     0,     0,     0,     0,   121,     0,     0,     0,
3133
       0,     0,     0,     0,    74,     0,     0,     0,     0,     0,
3134
       0,     0,     0,     0,     0,    74,     0,     0,     0,     0,
3135
       0,     0,     0,    74,     0,     0,     0,     0,     0,     0,
3136
    -620,     0,     0,    74,     0,     0,     0,     0,     0,     0,
3137
       0,     0,     0,     0,     0,  -620,   103,     0,   103,   128,
3138
     128,     0,     0,     0,     0,  -620,     0,   232,  -620,  -620,
3139
       0,     0,     0,     0,    73,     0,    74,     0,     0,     0,
3140
       0,     0,     0,     0,     0,    74,     0,     0,  -620,  -620,
3141
       0,     0,     0,     0,   276,  -620,  -620,  -620,  -620,   122,
3142
       0,   122,     0,     0,     0,     0,   103,     0,     0,     0,
3143
     318,    74,     0,     0,     0,     0,     0,     0,     0,     0,
3144
       0,     0,     0,   404,   405,   406,   407,   408,   409,   410,
3145
     411,   412,   413,   414,   415,     0,   318,     0,     0,   416,
3146
     417,     0,     0,     0,   418,     0,     0,     0,     0,     0,
3147
       0,     0,   419,     0,     0,     0,     0,     0,     0,     0,
3148
       0,     0,     0,     0,     0,     0,   122,     0,     0,     0,
3149
       0,     0,     0,   420,   103,   421,   422,   423,   424,   425,
3150
     426,   427,   428,   429,   430,    73,     0,     0,     0,     0,
3151
       0,     0,   121,    73,    73,     0,     0,     0,     0,     0,
3152
      73,     0,     0,     0,     0,     0,    73,    73,     0,     0,
3153
       0,     0,    73,    73,     0,     0,   100,     0,   100,   127,
3154
     127,   127,     0,     0,     0,     0,    73,   231,     0,     0,
3155
       0,     0,     0,     0,    74,     0,     0,     0,    73,    73,
3156
       0,     0,     0,     0,     0,     0,    73,   404,   405,   406,
3157
     407,   408,   409,   410,     0,   412,   413,    73,    73,     0,
3158
       0,     0,     0,   416,   417,   103,   100,     0,     0,     0,
3159
     317,     0,     0,     0,     0,     0,   419,     0,     0,     0,
3160
       0,     0,     0,     0,   121,     0,     0,     0,     0,   121,
3161
       0,     0,     0,     0,     0,     0,   317,     0,     0,   421,
3162
     422,   423,   424,   425,   426,   427,   428,   429,   430,     0,
3163
       0,     0,    73,     0,     0,     0,     0,     0,     0,     0,
3164
       0,     0,    73,    73,     0,     0,   121,     0,     0,     0,
3165
      73,     0,     0,     0,   100,     0,     0,     0,     0,     0,
3166
       0,     0,     0,   103,     0,    74,     0,     0,     0,     0,
3167
     103,   103,   122,    74,    74,     0,     0,     0,   103,     0,
3168
      74,     0,     0,     0,     0,     0,    74,    74,     0,   318,
3169
       0,     0,    74,    74,     0,     0,     0,     0,     0,     0,
3170
       0,     0,     0,     0,     0,     0,    74,     0,     0,     0,
3171
      73,     0,    73,     0,     0,    73,     0,     0,    74,    74,
3172
       0,     0,     0,     0,   103,     0,    74,     0,     0,   103,
3173
       0,     0,     0,     0,     0,     0,     0,    74,    74,     0,
3174
       0,     0,     0,     0,     0,   100,     0,     0,     0,   103,
3175
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3176
       0,     0,     0,     0,   122,     0,     0,     0,     0,   122,
3177
     103,     0,     0,     0,     0,   103,   318,     0,   623,     0,
3178
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3179
       0,     0,    74,     0,     0,     0,     0,     0,     0,     0,
3180
       0,     0,    74,    74,     0,     0,   122,     0,     0,    83,
3181
      74,    83,     0,     0,     0,     0,     0,     0,   623,   623,
3182
     228,     0,     0,   100,     0,     0,     0,     0,     0,     0,
3183
     100,   100,     0,     0,     0,   103,     0,     0,   100,     0,
3184
       0,     0,     0,     0,     0,     0,   103,     0,     0,   317,
3185
       0,     0,     0,     0,   103,     0,     0,     0,     0,    83,
3186
       0,     0,     0,     0,   103,     0,     0,     0,     0,     0,
3187
      74,     0,    74,     0,     0,    74,     0,     0,     0,     0,
3188
       0,     0,     0,     0,   100,     0,     0,     0,     0,   100,
3189
       0,     0,     0,     0,     0,     0,     0,   103,     0,     0,
3190
       0,     0,     0,     0,     0,     0,   103,     0,     0,   100,
3191
       0,     0,     0,     0,     0,     0,   801,     0,     0,     0,
3192
     318,     0,   318,     0,     0,     0,     0,    83,     0,     0,
3193
     100,     0,   103,     0,     0,   100,   317,     0,     0,     0,
3194
       0,     0,     0,     0,   404,   405,   406,   407,   408,   409,
3195
     410,   411,   412,   413,   414,   415,     0,     0,     0,     0,
3196
     416,   417,     0,     0,     0,     0,     0,     0,     0,     0,
3197
       0,     0,     0,   419,     0,     0,     0,     0,     0,     0,
3198
       0,     0,     0,     0,     0,     0,     0,   318,     0,     0,
3199
     101,     0,   101,     0,   420,   100,   421,   422,   423,   424,
3200
     425,   426,   427,   428,   429,   430,   100,     0,     0,     0,
3201
       0,     0,     0,     0,   100,     0,     0,     0,    83,     0,
3202
       0,     0,     0,     0,   100,     0,     0,     0,     0,     0,
3203
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3204
     101,     0,     0,     0,     0,     0,     0,     0,   651,   652,
3205
       0,     0,   653,     0,     0,   103,     0,   100,     0,     0,
3206
       0,     0,     0,     0,     0,     0,   100,   174,   175,   176,
3207
     177,   178,   179,   180,   181,     0,     0,   182,   183,     0,
3208
     317,     0,   317,   184,   185,   186,   187,     0,     0,     0,
3209
       0,     0,   100,     0,     0,     0,    83,   188,   189,   190,
3210
       0,     0,     0,    83,    83,     0,     0,     0,   101,     0,
3211
       0,    83,     0,     0,     0,     0,     0,     0,     0,     0,
3212
       0,   191,   192,   193,   194,   195,   196,   197,   198,   199,
3213
     200,     0,   201,   202,     0,     0,     0,     0,     0,     0,
3214
     203,   276,     0,     0,     0,     0,     0,   317,     0,     0,
3215
       0,     0,     0,     0,     0,     0,     0,    83,     0,     0,
3216
       0,     0,    83,     0,     0,     0,   103,     0,     0,     0,
3217
       0,     0,     0,   318,   103,   623,     0,     0,     0,     0,
3218
       0,   623,    83,     0,     0,     0,     0,   623,   623,     0,
3219
       0,     0,     0,   103,   103,     0,     0,     0,     0,   101,
3220
       0,     0,     0,    83,     0,     0,     0,   103,    83,     0,
3221
       0,   618,     0,     0,     0,   100,     0,     0,     0,   103,
3222
     103,     0,     0,     0,     0,     0,     0,   103,     0,     0,
3223
       0,     0,     0,     0,     0,     0,     0,     0,   103,   103,
3224
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3225
       0,   618,   618,     0,     0,     0,     0,     0,     0,     0,
3226
       0,     0,     0,     0,     0,   128,     0,     0,    83,     0,
3227
     128,     0,     0,     0,     0,     0,     0,   101,     0,    83,
3228
       0,     0,     0,     0,   101,   101,     0,    83,     0,     0,
3229
       0,     0,   101,   623,     0,     0,     0,    83,     0,     0,
3230
       0,     0,     0,   103,   103,     0,     0,   995,     0,     0,
3231
       0,   103,     0,     0,     0,     0,     0,     0,     0,     0,
3232
       0,     0,     0,     0,     0,     0,   100,     0,     0,     0,
3233
      83,     0,     0,   317,   100,     0,     0,     0,   101,    83,
3234
       0,     0,     0,   101,     0,     0,     0,     0,     0,     0,
3235
       0,     0,     0,   100,   100,     0,     0,     0,     0,     0,
3236
       0,     0,     0,   101,     0,    83,     0,   100,     0,     0,
3237
       0,   103,     0,   103,     0,     0,   103,     0,     0,   100,
3238
     100,     0,     0,     0,   101,     0,     0,   100,     0,   101,
3239
       0,     0,   101,     0,     0,     0,     0,     0,   100,   100,
3240
       0,     0,     0,     0,     0,     0,     0,     0,     0,   801,
3241
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3242
       0,     0,     0,     0,     0,   127,     0,     0,     0,     0,
3243
     127,     0,   101,   101,     0,     0,     0,   404,   405,   406,
3244
     407,   408,   409,   410,   411,   412,   413,   414,   415,   101,
3245
       0,     0,     0,   416,   417,     0,     0,     0,     0,     0,
3246
     101,     0,     0,   100,   100,     0,   419,   994,   101,     0,
3247
       0,   100,     0,     0,     0,     0,     0,     0,   101,     0,
3248
       0,     0,     0,     0,     0,     0,     0,   420,    83,   421,
3249
     422,   423,   424,   425,   426,   427,   428,   429,   430,     0,
3250
     404,   405,   406,   407,   408,   409,     0,  -277,   412,   413,
3251
       0,   101,     0,     0,     0,     0,   416,   417,     0,     0,
3252
     101,     0,     0,     0,     0,     0,     0,     0,     0,   419,
3253
       0,   100,     0,   100,     0,     0,   100,     0,     0,     0,
3254
       0,     0,     0,     0,     0,     0,   101,     0,     0,     0,
3255
       0,     0,   421,   422,   423,   424,   425,   426,   427,   428,
3256
     429,   430,     0,     0,     0,     0,     0,     0,     0,     0,
3257
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3258
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3259
       0,     0,     0,     0,     0,     0,     0,     0,     0,    83,
3260
       0,     0,     0,     0,     0,     0,     0,    83,   618,     0,
3261
       0,     0,     0,     0,   618,     0,     0,     0,     0,     0,
3262
     618,   618,     0,     0,  -597,     0,    83,    83,     0,     0,
3263
       0,     0,     0,     0,     0,     0,     0,  -597,  -597,  -597,
3264
      83,  -597,  -597,     0,  -597,     0,     0,     0,     0,     0,
3265
    -597,     0,    83,    83,     0,     0,     0,     0,     0,     0,
3266
      83,  -597,  -597,     0,  -597,  -597,  -597,  -597,  -597,   101,
3267
       0,    83,    83,     0,     0,     0,     0,     0,     0,     0,
3268
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3269
       0,     0,     0,     0,     0,     0,  -597,  -597,  -597,  -597,
3270
    -597,  -597,  -597,  -597,  -597,  -597,  -597,  -597,     0,     0,
3271
       0,     0,  -597,  -597,  -597,     0,   806,  -597,     0,     0,
3272
       0,     0,     0,     0,     0,  -597,   618,     0,     0,  -597,
3273
       0,     0,     0,     0,     0,     0,    83,    83,     0,  -597,
3274
     992,     0,  -597,  -597,    83,  -107,  -597,     0,  -597,  -597,
3275
    -597,  -597,  -597,  -597,  -597,  -597,  -597,  -597,     0,     0,
3276
       0,     0,  -597,  -597,  -597,     0,   -99,     0,     0,  -597,
3277
    -597,  -597,  -597,     0,     0,     0,     0,     0,     0,     0,
3278
     101,     0,     0,     0,     0,     0,     0,     0,   101,   101,
3279
       0,     0,     0,   660,   661,   101,     0,   662,     0,     0,
3280
       0,   101,   101,     0,    83,     0,    83,   101,   101,    83,
3281
       0,     0,   174,   175,   176,   177,   178,   179,   180,   181,
3282
       0,   101,   182,   183,     0,     0,     0,     0,   184,   185,
3283
     186,   187,     0,   101,   101,     0,     0,     0,     0,     0,
3284
       0,   101,   188,   189,   190,     0,     0,     0,     0,     0,
3285
       0,     0,   101,   101,     0,     0,     0,     0,     0,     0,
3286
       0,     0,     0,     0,     0,     0,   191,   192,   193,   194,
3287
     195,   196,   197,   198,   199,   200,     0,   201,   202,     0,
3288
       0,     0,     0,     0,     0,   203,   276,     0,     0,     0,
3289
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3290
       0,     0,     0,     0,     0,     0,     0,   101,     0,     0,
3291
       0,     0,     0,     0,     0,     0,     0,   101,   101,     0,
3292
       0,     0,     0,     0,     0,   101,     0,     0,     0,     0,
3293
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3294
       0,     0,     0,     0,     0,     0,     0,  -620,     3,     0,
3295
       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
3296
       0,     0,     0,     0,     0,     0,    14,     0,    15,    16,
3297
      17,    18,     0,     0,     0,     0,     0,    19,    20,    21,
3298
      22,    23,    24,    25,     0,   101,    26,   101,     0,     0,
3299
     101,     0,    27,    28,    29,    30,    31,    32,    33,    34,
3300
      35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
3301
      42,     0,     0,    43,    44,     0,    45,    46,    47,     0,
3302
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3303
       0,    48,    49,     0,     0,     0,     0,     0,    50,     0,
3304
       0,    51,    52,     0,    53,    54,     0,    55,     0,     0,
3305
       0,    56,     0,    57,    58,    59,     0,    60,    61,    62,
3306
    -293,    63,  -620,     0,     0,  -620,  -620,     0,     0,     0,
3307
       0,     0,     0,  -293,  -293,  -293,  -293,  -293,  -293,     0,
3308
    -293,    64,    65,    66,     0,     0,     0,  -293,  -293,  -293,
3309
       0,     0,     0,  -620,     0,  -620,     0,  -293,  -293,     0,
3310
    -293,  -293,  -293,  -293,  -293,     0,     0,     0,     0,     0,
3311
       0,     0,     0,     0,     0,     0,     0,  -293,     0,     0,
3312
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3313
       0,     0,  -293,  -293,  -293,  -293,  -293,  -293,  -293,  -293,
3314
    -293,  -293,  -293,  -293,     0,     0,     0,     0,  -293,  -293,
3315
    -293,     0,     0,  -293,     0,     0,     0,     0,     0,  -293,
3316
       0,  -293,     0,     0,     0,  -293,     0,     0,     0,     0,
3317
       0,     0,     0,  -293,     0,  -293,     0,     0,  -293,  -293,
3318
       0,     0,  -293,  -293,  -293,  -293,  -293,  -293,  -293,  -293,
3319
    -293,  -293,  -293,  -293,     0,     0,  -481,     0,     0,  -293,
3320
    -293,  -293,  -293,     0,     0,  -293,  -293,  -293,  -293,  -481,
3321
    -481,  -481,  -481,  -481,  -481,     0,  -481,     0,     0,     0,
3322
       0,     0,     0,  -481,  -481,     0,     0,     0,     0,     0,
3323
       0,     0,     0,  -481,  -481,     0,  -481,  -481,  -481,  -481,
3324
    -481,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3325
       0,     0,     0,   496,     0,     0,     0,     0,     0,     0,
3326
       0,     0,     0,     0,     0,     0,     0,     0,  -481,  -481,
3327
    -481,  -481,  -481,  -481,  -481,  -481,  -481,  -481,  -481,  -481,
3328
       0,     0,     0,     0,  -481,  -481,  -481,     0,  -481,  -481,
3329
       0,     0,     0,     0,     0,  -481,     0,  -481,     0,     0,
3330
       0,  -481,     0,     0,     0,     0,     0,     0,     0,     0,
3331
       0,  -481,     0,     0,  -481,  -481,     0,  -481,  -481,     0,
3332
    -481,  -481,  -481,  -481,  -481,  -481,  -481,  -481,  -481,  -481,
3333
       0,     0,  -620,     0,     0,  -481,  -481,  -481,  -481,     0,
3334
       0,  -481,  -481,  -481,  -481,  -620,  -620,  -620,  -620,  -620,
3335
    -620,     0,  -620,     0,     0,     0,     0,     0,  -620,  -620,
3336
    -620,     0,     0,     0,     0,     0,     0,     0,     0,  -620,
3337
    -620,     0,  -620,  -620,  -620,  -620,  -620,     0,     0,     0,
3338
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3339
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3340
       0,     0,     0,     0,  -620,  -620,  -620,  -620,  -620,  -620,
3341
    -620,  -620,  -620,  -620,  -620,  -620,     0,     0,     0,     0,
3342
    -620,  -620,  -620,     0,     0,  -620,     0,     0,     0,     0,
3343
       0,  -620,     0,  -620,     0,     0,     0,  -620,     0,     0,
3344
       0,     0,     0,     0,     0,     0,     0,  -620,     0,     0,
3345
    -620,  -620,     0,     0,  -620,     0,  -620,  -620,  -620,  -620,
3346
    -620,  -620,  -620,  -620,  -620,  -620,     0,     0,  -620,     0,
3347
    -620,  -620,  -620,  -620,  -620,     0,   276,  -620,  -620,  -620,
3348
    -620,  -620,  -620,  -620,  -620,  -620,  -620,     0,  -620,     0,
3349
       0,     0,     0,     0,     0,  -620,  -620,     0,     0,     0,
3350
       0,     0,     0,     0,     0,  -620,  -620,     0,  -620,  -620,
3351
    -620,  -620,  -620,     0,     0,     0,     0,     0,     0,     0,
3352
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3353
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3354
    -620,  -620,  -620,  -620,  -620,  -620,  -620,  -620,  -620,  -620,
3355
    -620,  -620,     0,     0,     0,     0,  -620,  -620,  -620,     0,
3356
       0,  -620,     0,     0,     0,     0,     0,  -620,     0,  -620,
3357
       0,     0,     0,  -620,     0,     0,     0,     0,     0,     0,
3358
       0,     0,     0,  -620,     0,     0,  -620,  -620,     0,     0,
3359
    -620,     0,  -620,  -620,  -620,  -620,  -620,  -620,  -620,  -620,
3360
    -620,  -620,     0,     0,  -597,     0,     0,  -620,  -620,  -620,
3361
    -620,     0,   276,  -620,  -620,  -620,  -620,  -597,  -597,  -597,
3362
       0,  -597,  -597,     0,  -597,     0,     0,     0,     0,     0,
3363
    -597,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3364
       0,  -597,  -597,     0,  -597,  -597,  -597,  -597,  -597,     0,
3365
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3366
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3367
       0,     0,     0,     0,     0,     0,  -597,  -597,  -597,  -597,
3368
    -597,  -597,  -597,  -597,  -597,  -597,  -597,  -597,     0,     0,
3369
       0,     0,  -597,  -597,  -597,     0,   806,  -597,     0,     0,
3370
       0,     0,     0,     0,     0,  -597,     0,     0,     0,  -597,
3371
       0,     0,     0,     0,     0,     0,     0,     0,     0,  -597,
3372
       0,     0,  -597,  -597,     0,  -107,  -597,     0,  -597,  -597,
3373
    -597,  -597,  -597,  -597,  -597,  -597,  -597,  -597,     0,     0,
3374
    -302,     0,  -597,  -597,  -597,     0,  -597,     0,     0,  -597,
3375
    -597,  -597,  -597,  -302,  -302,  -302,     0,  -302,  -302,     0,
3376
    -302,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3377
       0,     0,     0,     0,     0,     0,     0,  -302,  -302,     0,
3378
    -302,  -302,  -302,  -302,  -302,     0,     0,     0,     0,     0,
3379
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3380
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3381
       0,     0,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
3382
    -302,  -302,  -302,  -302,     0,     0,     0,     0,  -302,  -302,
3383
    -302,     0,   807,  -302,     0,     0,     0,     0,     0,     0,
3384
       0,  -302,     0,     0,     0,  -302,     0,     0,     0,     0,
3385
       0,     0,     0,     0,     0,  -302,     0,     0,  -302,  -302,
3386
       0,  -109,  -302,     0,  -302,  -302,  -302,  -302,  -302,  -302,
3387
    -302,  -302,  -302,  -302,     0,     0,  -302,     0,     0,  -302,
3388
    -302,     0,  -101,     0,     0,  -302,  -302,  -302,  -302,  -302,
3389
    -302,  -302,     0,  -302,  -302,     0,  -302,     0,     0,     0,
3390
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3391
       0,     0,     0,  -302,  -302,     0,  -302,  -302,  -302,  -302,
3392
    -302,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3393
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3394
       0,     0,     0,     0,     0,     0,     0,     0,  -302,  -302,
3395
    -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
3396
       0,     0,     0,     0,  -302,  -302,  -302,     0,   807,  -302,
3397
       0,     0,     0,     0,     0,     0,     0,  -302,     0,     0,
3398
       0,  -302,     0,     0,     0,     0,     0,     0,     0,     0,
3399
       0,  -302,     0,     0,  -302,  -302,     0,  -109,  -302,     0,
3400
    -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
3401
       0,     0,     0,     0,     0,  -302,  -302,     0,  -302,     0,
3402
       0,  -302,  -302,  -302,  -302,   295,     0,     4,     5,     6,
3403
       7,     8,     9,    10,    11,    12,    13,  -620,  -620,  -620,
3404
       0,     0,  -620,    14,     0,    15,    16,    17,    18,     0,
3405
       0,     0,     0,     0,    19,    20,    21,    22,    23,    24,
3406
      25,     0,     0,    26,     0,     0,     0,     0,     0,    27,
3407
       0,    29,    30,    31,    32,    33,    34,    35,    36,    37,
3408
      38,     0,    39,    40,    41,     0,     0,    42,     0,     0,
3409
      43,    44,     0,    45,    46,    47,     0,     0,     0,     0,
3410
       0,     0,     0,     0,     0,     0,     0,     0,    48,    49,
3411
       0,     0,     0,     0,     0,    50,     0,     0,    51,    52,
3412
       0,    53,    54,     0,    55,     0,     0,     0,    56,     0,
3413
      57,    58,    59,     0,    60,    61,    62,     0,    63,  -620,
3414
       0,     0,  -620,  -620,     0,     0,     0,     0,     0,     0,
3415
       0,     0,     0,     0,     0,     0,     0,     0,    64,    65,
3416
      66,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3417
    -620,   295,  -620,     4,     5,     6,     7,     8,     9,    10,
3418
      11,    12,    13,     0,     0,  -620,     0,  -620,  -620,    14,
3419
       0,    15,    16,    17,    18,     0,     0,     0,     0,     0,
3420
      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
3421
       0,     0,     0,     0,     0,    27,     0,    29,    30,    31,
3422
      32,    33,    34,    35,    36,    37,    38,     0,    39,    40,
3423
      41,     0,     0,    42,     0,     0,    43,    44,     0,    45,
3424
      46,    47,     0,     0,     0,     0,     0,     0,     0,     0,
3425
       0,     0,     0,     0,    48,    49,     0,     0,     0,     0,
3426
       0,    50,     0,     0,    51,    52,     0,    53,    54,     0,
3427
      55,     0,     0,     0,    56,     0,    57,    58,    59,     0,
3428
      60,    61,    62,     0,    63,  -620,     0,     0,  -620,  -620,
3429
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3430
       0,     0,     0,     0,    64,    65,    66,     0,     0,     0,
3431
       0,     0,     0,     0,     0,     0,  -620,   295,  -620,     4,
3432
       5,     6,     7,     8,     9,    10,    11,    12,    13,     0,
3433
       0,  -620,     0,     0,  -620,    14,  -620,    15,    16,    17,
3434
      18,     0,     0,     0,     0,     0,    19,    20,    21,    22,
3435
      23,    24,    25,     0,     0,    26,     0,     0,     0,     0,
3436
       0,    27,     0,    29,    30,    31,    32,    33,    34,    35,
3437
      36,    37,    38,     0,    39,    40,    41,     0,     0,    42,
3438
       0,     0,    43,    44,     0,    45,    46,    47,     0,     0,
3439
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3440
      48,    49,     0,     0,     0,     0,     0,    50,     0,     0,
3441
      51,    52,     0,    53,    54,     0,    55,     0,     0,     0,
3442
      56,     0,    57,    58,    59,     0,    60,    61,    62,     0,
3443
      63,  -620,     0,     0,  -620,  -620,     0,     0,     0,     0,
3444
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3445
      64,    65,    66,     0,     0,     0,     0,     0,     0,     0,
3446
       0,     0,  -620,   295,  -620,     4,     5,     6,     7,     8,
3447
       9,    10,    11,    12,    13,     0,     0,  -620,     0,     0,
3448
    -620,    14,     0,    15,    16,    17,    18,     0,     0,     0,
3449
       0,     0,    19,    20,    21,    22,    23,    24,    25,     0,
3450
       0,    26,     0,     0,     0,     0,     0,    27,     0,    29,
3451
      30,    31,    32,    33,    34,    35,    36,    37,    38,     0,
3452
      39,    40,    41,     0,     0,    42,     0,     0,    43,    44,
3453
       0,    45,    46,    47,     0,     0,     0,     0,     0,     0,
3454
       0,     0,     0,     0,     0,     0,    48,    49,     0,     0,
3455
       0,     0,     0,    50,     0,     0,    51,    52,     0,    53,
3456
      54,     0,    55,     0,     0,     0,    56,     0,    57,    58,
3457
      59,     0,    60,    61,    62,     0,    63,  -620,     0,     0,
3458
    -620,  -620,     3,     0,     4,     5,     6,     7,     8,     9,
3459
      10,    11,    12,    13,     0,     0,    64,    65,    66,     0,
3460
      14,     0,    15,    16,    17,    18,     0,     0,  -620,     0,
3461
    -620,    19,    20,    21,    22,    23,    24,    25,     0,     0,
3462
      26,     0,     0,     0,     0,     0,    27,    28,    29,    30,
3463
      31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
3464
      40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
3465
      45,    46,    47,     0,     0,     0,     0,     0,     0,     0,
3466
       0,     0,     0,     0,     0,    48,    49,     0,     0,     0,
3467
       0,     0,    50,     0,     0,    51,    52,     0,    53,    54,
3468
       0,    55,     0,     0,     0,    56,     0,    57,    58,    59,
3469
       0,    60,    61,    62,     0,    63,  -620,     0,     0,  -620,
3470
    -620,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3471
       0,     0,     0,     0,     0,    64,    65,    66,     0,     0,
3472
    -620,     0,     0,     0,     0,     0,     0,  -620,   295,  -620,
3473
       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
3474
       0,  -620,  -620,     0,     0,     0,    14,     0,    15,    16,
3475
      17,    18,     0,     0,     0,     0,     0,    19,    20,    21,
3476
      22,    23,    24,    25,     0,     0,    26,     0,     0,     0,
3477
       0,     0,    27,     0,    29,    30,    31,    32,    33,    34,
3478
      35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
3479
      42,     0,     0,    43,    44,     0,    45,    46,    47,     0,
3480
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3481
       0,    48,    49,     0,     0,     0,     0,     0,    50,     0,
3482
       0,    51,    52,     0,    53,    54,     0,    55,     0,     0,
3483
       0,    56,     0,    57,    58,    59,     0,    60,    61,    62,
3484
       0,    63,  -620,     0,     0,  -620,  -620,   295,     0,     4,
3485
       5,     6,     7,     8,     9,    10,    11,    12,    13,     0,
3486
       0,    64,    65,    66,     0,    14,     0,    15,    16,    17,
3487
      18,     0,     0,  -620,     0,  -620,    19,    20,    21,    22,
3488
      23,    24,    25,     0,     0,    26,     0,     0,     0,     0,
3489
       0,    27,     0,    29,    30,    31,    32,    33,    34,    35,
3490
      36,    37,    38,     0,    39,    40,    41,     0,     0,    42,
3491
       0,     0,    43,    44,     0,    45,    46,    47,     0,     0,
3492
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3493
      48,    49,     0,     0,     0,     0,     0,    50,     0,     0,
3494
     296,    52,     0,    53,    54,     0,    55,     0,     0,     0,
3495
      56,     0,    57,    58,    59,     0,    60,    61,    62,     0,
3496
      63,  -620,     0,     0,  -620,  -620,   295,     0,     4,     5,
3497
       6,     7,     8,     9,    10,    11,    12,    13,     0,     0,
3498
      64,    65,    66,     0,    14,     0,    15,    16,    17,    18,
3499
       0,  -620,  -620,     0,  -620,    19,    20,    21,    22,    23,
3500
      24,    25,     0,     0,    26,     0,     0,     0,     0,     0,
3501
      27,     0,    29,    30,    31,    32,    33,    34,    35,    36,
3502
      37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
3503
       0,    43,    44,     0,    45,    46,    47,     0,     0,     0,
3504
       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
3505
      49,     0,     0,     0,     0,     0,    50,     0,     0,    51,
3506
      52,     0,    53,    54,     0,    55,     0,     0,     0,    56,
3507
       0,    57,    58,    59,     0,    60,    61,    62,     0,    63,
3508
    -620,     0,     0,  -620,  -620,   295,     0,     4,     5,     6,
3509
       7,     8,     9,    10,    11,    12,    13,     0,     0,    64,
3510
      65,    66,     0,    14,     0,    15,    16,    17,    18,     0,
3511
    -620,  -620,     0,  -620,    19,    20,    21,    22,    23,    24,
3512
      25,     0,     0,    26,     0,     0,     0,     0,     0,    27,
3513
       0,    29,    30,    31,    32,    33,    34,    35,    36,    37,
3514
      38,     0,    39,    40,    41,     0,     0,    42,     0,     0,
3515
      43,    44,     0,    45,    46,    47,     0,     0,     0,     0,
3516
       0,     0,     0,     0,     0,     0,     0,     0,    48,    49,
3517
       0,     0,     0,     0,     0,    50,     0,     0,    51,    52,
3518
       0,    53,    54,     0,    55,     0,     0,     0,    56,     0,
3519
      57,    58,    59,     0,    60,    61,    62,     0,    63,  -620,
3520
       0,     0,  -620,  -620,     0,     0,     0,     0,     0,     0,
3521
       0,     0,     0,     0,     0,     0,     0,     0,    64,    65,
3522
      66,     0,     0,  -620,     0,     0,     0,     0,     0,     0,
3523
    -620,   295,  -620,     4,     5,     6,     7,     8,     9,    10,
3524
      11,    12,    13,     0,     0,  -620,     0,     0,     0,    14,
3525
       0,    15,    16,    17,    18,     0,     0,     0,     0,     0,
3526
      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
3527
       0,     0,     0,     0,     0,    27,     0,    29,    30,    31,
3528
      32,    33,    34,    35,    36,    37,    38,     0,    39,    40,
3529
      41,     0,     0,    42,     0,     0,    43,    44,     0,    45,
3530
      46,    47,     0,     0,     0,     0,     0,     0,     0,     0,
3531
       0,     0,     0,     0,    48,    49,     0,     0,     0,     0,
3532
       0,    50,     0,     0,    51,    52,     0,    53,    54,     0,
3533
      55,     0,     0,     0,    56,     0,    57,    58,    59,     0,
3534
      60,    61,    62,     0,    63,  -620,     0,     0,  -620,  -620,
3535
       0,     0,     4,     5,     6,     7,     8,     9,    10,    11,
3536
      12,    13,     0,     0,    64,    65,    66,     0,    14,     0,
3537
      15,    16,    17,    18,     0,     0,  -620,     0,  -620,    19,
3538
      20,    21,    22,    23,    24,    25,     0,     0,    26,     0,
3539
       0,     0,     0,     0,    27,    28,    29,    30,    31,    32,
3540
      33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
3541
       0,     0,    42,     0,     0,    43,    44,     0,    45,    46,
3542
      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3543
       0,     0,     0,    48,    49,     0,     0,     0,     0,     0,
3544
      50,     0,     0,    51,    52,     0,    53,    54,     0,    55,
3545
       0,     0,     0,    56,     0,    57,    58,    59,     0,    60,
3546
      61,    62,     0,    63,   247,     0,     0,   248,   249,     0,
3547
       0,     4,     5,     6,     7,     8,     9,    10,    11,    12,
3548
      13,     0,     0,    64,    65,    66,     0,    14,     0,    15,
3549
      16,    17,    18,     0,     0,   250,     0,   251,    19,    20,
3550
      21,    22,    23,    24,    25,     0,     0,    26,     0,     0,
3551
       0,     0,     0,    27,     0,    29,    30,    31,    32,    33,
3552
      34,    35,    36,    37,    38,     0,    39,    40,    41,     0,
3553
       0,    42,     0,     0,    43,    44,     0,    45,    46,    47,
3554
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3555
       0,     0,    48,    49,     0,     0,     0,     0,     0,    50,
3556
       0,     0,    51,    52,     0,    53,    54,     0,    55,     0,
3557
       0,     0,    56,     0,    57,    58,    59,     0,    60,    61,
3558
      62,     0,    63,   247,     0,     0,   248,   249,     0,     0,
3559
       4,     5,     6,     7,     8,     9,    10,    11,    12,     0,
3560
       0,     0,    64,    65,    66,     0,    14,     0,    15,    16,
3561
      17,    18,     0,     0,   250,     0,   251,    19,    20,    21,
3562
      22,    23,    24,    25,     0,     0,    26,     0,     0,     0,
3563
       0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
3564
      35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
3565
      42,     0,     0,    43,    44,     0,    45,    46,    47,     0,
3566
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3567
       0,    48,    49,     0,     0,     0,     0,     0,   211,     0,
3568
       0,   119,    52,     0,    53,    54,     0,     0,     0,     0,
3569
       0,    56,     0,    57,    58,    59,     0,    60,    61,    62,
3570
       0,    63,   247,     0,     0,   248,   249,     0,     0,     4,
3571
       5,     6,     7,     8,     9,    10,    11,    12,     0,     0,
3572
       0,    64,    65,    66,     0,    14,     0,   108,   109,    17,
3573
      18,     0,     0,   250,     0,   251,   110,   111,   112,    22,
3574
      23,    24,    25,     0,     0,   113,     0,     0,     0,     0,
3575
       0,     0,     0,     0,    30,    31,    32,    33,    34,    35,
3576
      36,    37,    38,     0,    39,    40,    41,     0,     0,    42,
3577
       0,     0,    43,    44,     0,    45,    46,    47,     0,     0,
3578
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3579
      48,    49,     0,     0,     0,     0,     0,   211,     0,     0,
3580
     119,    52,     0,    53,    54,     0,     0,     0,     0,     0,
3581
      56,     0,    57,    58,    59,     0,    60,    61,    62,     0,
3582
      63,   247,     0,     0,   248,   249,     0,     0,     4,     5,
3583
       6,     7,     8,     9,    10,    11,    12,     0,     0,     0,
3584
      64,   265,    66,     0,    14,     0,    15,    16,    17,    18,
3585
       0,     0,   250,     0,   251,    19,    20,    21,    22,    23,
3586
      24,    25,     0,     0,    26,     0,     0,     0,     0,     0,
3587
       0,     0,     0,    30,    31,    32,    33,    34,    35,    36,
3588
      37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
3589
       0,    43,    44,     0,    45,    46,    47,     0,     0,     0,
3590
       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
3591
      49,     0,     0,     0,     0,     0,   211,     0,     0,   119,
3592
      52,     0,    53,    54,     0,     0,     0,     0,     0,    56,
3593
       0,    57,    58,    59,     0,    60,    61,    62,     0,    63,
3594
     247,     0,     0,   248,   249,     0,     0,     0,     0,     0,
3595
       0,     0,     0,     0,     0,     0,     0,     0,     0,    64,
3596
      65,    66,     0,     0,     0,     0,     0,     0,     0,     0,
3597
       0,     0,     0,   251,   131,   132,   133,   134,   135,   136,
3598
     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
3599
     147,   148,   149,   150,   151,   152,   153,   154,     0,     0,
3600
       0,   155,   156,   157,   158,   159,   160,   161,   162,   163,
3601
     164,     0,     0,     0,     0,     0,   165,   166,   167,   168,
3602
     169,   170,   171,   172,    35,    36,   173,    38,     0,     0,
3603
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3604
     116,   174,   175,   176,   177,   178,   179,   180,   181,     0,
3605
       0,   182,   183,     0,     0,     0,     0,   184,   185,   186,
3606
     187,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3607
       0,   188,   189,   190,     0,     0,     0,     0,     0,     0,
3608
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3609
       0,     0,     0,     0,     0,   191,   192,   193,   194,   195,
3610
     196,   197,   198,   199,   200,     0,   201,   202,     0,     0,
3611
       0,     0,     0,     0,   203,   204,  -590,  -590,  -590,  -590,
3612
    -590,  -590,  -590,  -590,  -590,     0,     0,     0,     0,     0,
3613
       0,     0,  -590,     0,  -590,  -590,  -590,  -590,     0,  -590,
3614
       0,     0,     0,  -590,  -590,  -590,  -590,  -590,  -590,  -590,
3615
       0,     0,  -590,     0,     0,     0,     0,     0,     0,     0,
3616
       0,  -590,  -590,  -590,  -590,  -590,  -590,  -590,  -590,  -590,
3617
       0,  -590,  -590,  -590,     0,     0,  -590,     0,     0,  -590,
3618
    -590,     0,  -590,  -590,  -590,     0,     0,     0,     0,     0,
3619
       0,     0,     0,     0,     0,     0,     0,  -590,  -590,     0,
3620
       0,     0,     0,     0,  -590,     0,     0,  -590,  -590,     0,
3621
    -590,  -590,     0,  -590,     0,  -590,  -590,  -590,     0,  -590,
3622
    -590,  -590,     0,  -590,  -590,  -590,     0,  -590,     0,     0,
3623
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3624
       0,     0,     0,     0,     0,     0,     0,  -590,  -590,  -590,
3625
       0,  -590,     0,     0,     0,     0,     0,  -590,  -591,  -591,
3626
    -591,  -591,  -591,  -591,  -591,  -591,  -591,     0,     0,     0,
3627
       0,     0,     0,     0,  -591,     0,  -591,  -591,  -591,  -591,
3628
       0,  -591,     0,     0,     0,  -591,  -591,  -591,  -591,  -591,
3629
    -591,  -591,     0,     0,  -591,     0,     0,     0,     0,     0,
3630
       0,     0,     0,  -591,  -591,  -591,  -591,  -591,  -591,  -591,
3631
    -591,  -591,     0,  -591,  -591,  -591,     0,     0,  -591,     0,
3632
       0,  -591,  -591,     0,  -591,  -591,  -591,     0,     0,     0,
3633
       0,     0,     0,     0,     0,     0,     0,     0,     0,  -591,
3634
    -591,     0,     0,     0,     0,     0,  -591,     0,     0,  -591,
3635
    -591,     0,  -591,  -591,     0,  -591,     0,  -591,  -591,  -591,
3636
       0,  -591,  -591,  -591,     0,  -591,  -591,  -591,     0,  -591,
3637
       0,     0,     0,     0,     0,     0,  -593,  -593,  -593,  -593,
3638
    -593,  -593,  -593,  -593,  -593,     0,     0,     0,     0,  -591,
3639
    -591,  -591,  -593,  -591,  -593,  -593,  -593,  -593,     0,  -591,
3640
       0,     0,     0,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
3641
       0,     0,  -593,     0,     0,     0,     0,     0,     0,     0,
3642
       0,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
3643
       0,  -593,  -593,  -593,     0,     0,  -593,     0,     0,  -593,
3644
    -593,     0,  -593,  -593,  -593,     0,     0,     0,     0,     0,
3645
       0,     0,     0,     0,     0,     0,     0,  -593,  -593,     0,
3646
       0,     0,     0,     0,  -593,   838,     0,  -593,  -593,     0,
3647
    -593,  -593,     0,  -593,     0,  -593,  -593,  -593,     0,  -593,
3648
    -593,  -593,     0,  -593,  -593,  -593,     0,  -593,     0,     0,
3649
       0,     0,     0,     0,  -107,  -594,  -594,  -594,  -594,  -594,
3650
    -594,  -594,  -594,  -594,     0,     0,     0,  -593,  -593,  -593,
3651
       0,  -594,     0,  -594,  -594,  -594,  -594,  -593,     0,     0,
3652
       0,     0,  -594,  -594,  -594,  -594,  -594,  -594,  -594,     0,
3653
       0,  -594,     0,     0,     0,     0,     0,     0,     0,     0,
3654
    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,     0,
3655
    -594,  -594,  -594,     0,     0,  -594,     0,     0,  -594,  -594,
3656
       0,  -594,  -594,  -594,     0,     0,     0,     0,     0,     0,
3657
       0,     0,     0,     0,     0,     0,  -594,  -594,     0,     0,
3658
       0,     0,     0,  -594,   839,     0,  -594,  -594,     0,  -594,
3659
    -594,     0,  -594,     0,  -594,  -594,  -594,     0,  -594,  -594,
3660
    -594,     0,  -594,  -594,  -594,     0,  -594,     0,     0,     0,
3661
       0,     0,     0,  -109,  -595,  -595,  -595,  -595,  -595,  -595,
3662
    -595,  -595,  -595,     0,     0,     0,  -594,  -594,  -594,     0,
3663
    -595,     0,  -595,  -595,  -595,  -595,  -594,     0,     0,     0,
3664
       0,  -595,  -595,  -595,  -595,  -595,  -595,  -595,     0,     0,
3665
    -595,     0,     0,     0,     0,     0,     0,     0,     0,  -595,
3666
    -595,  -595,  -595,  -595,  -595,  -595,  -595,  -595,     0,  -595,
3667
    -595,  -595,     0,     0,  -595,     0,     0,  -595,  -595,     0,
3668
    -595,  -595,  -595,     0,     0,     0,     0,     0,     0,     0,
3669
       0,     0,     0,     0,     0,  -595,  -595,     0,     0,     0,
3670
       0,     0,  -595,     0,     0,  -595,  -595,     0,  -595,  -595,
3671
       0,  -595,     0,  -595,  -595,  -595,     0,  -595,  -595,  -595,
3672
       0,  -595,  -595,  -595,     0,  -595,     0,     0,     0,     0,
3673
       0,     0,  -596,  -596,  -596,  -596,  -596,  -596,  -596,  -596,
3674
    -596,     0,     0,     0,     0,  -595,  -595,  -595,  -596,     0,
3675
    -596,  -596,  -596,  -596,     0,  -595,     0,     0,     0,  -596,
3676
    -596,  -596,  -596,  -596,  -596,  -596,     0,     0,  -596,     0,
3677
       0,     0,     0,     0,     0,     0,     0,  -596,  -596,  -596,
3678
    -596,  -596,  -596,  -596,  -596,  -596,     0,  -596,  -596,  -596,
3679
       0,     0,  -596,     0,     0,  -596,  -596,     0,  -596,  -596,
3680
    -596,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3681
       0,     0,     0,  -596,  -596,     0,     0,     0,     0,     0,
3682
    -596,     0,     0,  -596,  -596,     0,  -596,  -596,     0,  -596,
3683
       0,  -596,  -596,  -596,     0,  -596,  -596,  -596,     0,  -596,
3684
    -596,  -596,     0,  -596,     0,     0,     0,     0,     0,     0,
3685
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3686
       0,     0,     0,  -596,  -596,  -596,     0,     0,     0,     0,
3687
       0,     0,     0,  -596,   131,   132,   133,   134,   135,   136,
3688
     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
3689
     147,   148,   149,   150,   151,   152,   153,   154,     0,     0,
3690
       0,   155,   156,   157,   233,   234,   235,   236,   162,   163,
3691
     164,     0,     0,     0,     0,     0,   165,   166,   167,   237,
3692
     238,   239,   240,   172,   320,   321,   241,   322,     0,     0,
3693
       0,     0,     0,     0,   323,     0,     0,     0,     0,     0,
3694
     324,   174,   175,   176,   177,   178,   179,   180,   181,     0,
3695
       0,   182,   183,     0,     0,     0,     0,   184,   185,   186,
3696
     187,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3697
       0,   188,   189,   190,     0,     0,     0,     0,   325,     0,
3698
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3699
       0,     0,     0,     0,     0,   191,   192,   193,   194,   195,
3700
     196,   197,   198,   199,   200,     0,   201,   202,     0,     0,
3701
       0,     0,     0,     0,   203,   131,   132,   133,   134,   135,
3702
     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
3703
     146,   147,   148,   149,   150,   151,   152,   153,   154,     0,
3704
       0,     0,   155,   156,   157,   233,   234,   235,   236,   162,
3705
     163,   164,     0,     0,     0,     0,     0,   165,   166,   167,
3706
     237,   238,   239,   240,   172,   320,   321,   241,   322,     0,
3707
       0,     0,     0,     0,     0,   323,     0,     0,     0,     0,
3708
       0,     0,   174,   175,   176,   177,   178,   179,   180,   181,
3709
       0,     0,   182,   183,     0,     0,     0,     0,   184,   185,
3710
     186,   187,     0,     0,     0,     0,     0,     0,     0,     0,
3711
       0,     0,   188,   189,   190,     0,     0,     0,     0,   487,
3712
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3713
       0,     0,     0,     0,     0,     0,   191,   192,   193,   194,
3714
     195,   196,   197,   198,   199,   200,     0,   201,   202,     0,
3715
       0,     0,     0,     0,     0,   203,   131,   132,   133,   134,
3716
     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
3717
     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
3718
       0,     0,     0,   155,   156,   157,   233,   234,   235,   236,
3719
     162,   163,   164,     0,     0,     0,     0,     0,   165,   166,
3720
     167,   237,   238,   239,   240,   172,     0,     0,   241,     0,
3721
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3722
       0,     0,     0,   174,   175,   176,   177,   178,   179,   180,
3723
     181,     0,     0,   182,   183,     0,     0,     0,     0,   184,
3724
     185,   186,   187,     0,     0,     0,     0,     0,     0,     0,
3725
       0,     0,     0,   188,   189,   190,     0,     0,     0,   242,
3726
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3727
       0,     0,     0,     0,     0,     0,     0,   191,   192,   193,
3728
     194,   195,   196,   197,   198,   199,   200,     0,   201,   202,
3729
       0,     0,     0,     0,     0,     0,   203,   131,   132,   133,
3730
     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
3731
     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
3732
     154,     0,     0,     0,   155,   156,   157,   233,   234,   235,
3733
     236,   162,   163,   164,     0,     0,     0,     0,     0,   165,
3734
     166,   167,   237,   238,   239,   240,   172,     0,     0,   241,
3735
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3736
       0,     0,     0,     0,   174,   175,   176,   177,   178,   179,
3737
     180,   181,     0,     0,   182,   183,     0,     0,     0,     0,
3738
     184,   185,   186,   187,     0,     0,     0,     0,     0,     0,
3739
       0,     0,     0,     0,   188,   189,   190,     0,     0,     0,
3740
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3741
       0,     0,     0,     0,     0,     0,     0,     0,   191,   192,
3742
     193,   194,   195,   196,   197,   198,   199,   200,     0,   201,
3743
     202,     0,     0,     0,     0,     0,     0,   203,     4,     5,
3744
       6,     7,     8,     9,    10,    11,    12,     0,     0,     0,
3745
       0,     0,     0,     0,    14,     0,   108,   109,    17,    18,
3746
       0,     0,     0,     0,     0,   110,   111,   112,    22,    23,
3747
      24,    25,     0,     0,   113,     0,     0,     0,     0,     0,
3748
       0,     0,     0,    30,    31,    32,    33,    34,    35,    36,
3749
      37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
3750
       0,    43,    44,     0,   116,     0,     0,     0,     0,     0,
3751
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3752
       0,     0,     0,     0,     0,     0,   313,     0,     0,   119,
3753
      52,     0,    53,    54,     0,     0,     0,     0,     0,    56,
3754
       0,    57,    58,    59,     0,    60,    61,    62,     0,    63,
3755
       0,     0,     4,     5,     6,     7,     8,     9,    10,    11,
3756
      12,     0,     0,     0,     0,     0,     0,     0,    14,   120,
3757
     108,   109,    17,    18,     0,     0,     0,   314,     0,   110,
3758
     111,   112,    22,    23,    24,    25,     0,     0,   113,     0,
3759
       0,     0,     0,     0,     0,     0,     0,    30,    31,    32,
3760
      33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
3761
       0,     0,    42,     0,     0,    43,    44,     0,   116,     0,
3762
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3763
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3764
     313,     0,     0,   119,    52,     0,    53,    54,     0,     0,
3765
       0,     0,     0,    56,     0,    57,    58,    59,     0,    60,
3766
      61,    62,     0,    63,     0,     0,     4,     5,     6,     7,
3767
       8,     9,    10,    11,    12,    13,     0,     0,     0,     0,
3768
       0,     0,    14,   120,    15,    16,    17,    18,     0,     0,
3769
       0,   612,     0,    19,    20,    21,    22,    23,    24,    25,
3770
       0,     0,    26,     0,     0,     0,     0,     0,    27,    28,
3771
      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
3772
       0,    39,    40,    41,     0,     0,    42,     0,     0,    43,
3773
      44,     0,    45,    46,    47,     0,     0,     0,     0,     0,
3774
       0,     0,     0,     0,     0,     0,     0,    48,    49,     0,
3775
       0,     0,     0,     0,    50,     0,     0,    51,    52,     0,
3776
      53,    54,     0,    55,     0,     0,     0,    56,     0,    57,
3777
      58,    59,     0,    60,    61,    62,     0,    63,     0,     0,
3778
       0,     0,     0,     0,     4,     5,     6,     7,     8,     9,
3779
      10,    11,    12,    13,     0,     0,     0,    64,    65,    66,
3780
      14,     0,    15,    16,    17,    18,     0,     0,     0,     0,
3781
       0,    19,    20,    21,    22,    23,    24,    25,     0,     0,
3782
      26,     0,     0,     0,     0,     0,    27,     0,    29,    30,
3783
      31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
3784
      40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
3785
      45,    46,    47,     0,     0,     0,     0,     0,     0,     0,
3786
       0,     0,     0,     0,     0,    48,    49,     0,     0,     0,
3787
       0,     0,    50,     0,     0,    51,    52,     0,    53,    54,
3788
       0,    55,     0,     0,     0,    56,     0,    57,    58,    59,
3789
       0,    60,    61,    62,     0,    63,     0,     0,     0,     0,
3790
       0,     0,     4,     5,     6,     7,     8,     9,    10,    11,
3791
      12,     0,     0,     0,     0,    64,    65,    66,    14,     0,
3792
      15,    16,    17,    18,     0,     0,     0,     0,     0,    19,
3793
      20,    21,    22,    23,    24,    25,     0,     0,   113,     0,
3794
       0,     0,     0,     0,     0,     0,     0,    30,    31,    32,
3795
     260,    34,    35,    36,    37,    38,     0,    39,    40,    41,
3796
       0,     0,    42,     0,     0,    43,    44,     0,   261,    46,
3797
      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3798
       0,     0,     0,    48,    49,     0,     0,     0,     0,     0,
3799
     211,     0,     0,   119,    52,     0,    53,    54,     0,   262,
3800
       0,   263,   264,    56,     0,    57,    58,    59,     0,    60,
3801
      61,    62,     0,    63,     0,     0,     0,     0,     0,     0,
3802
       4,     5,     6,     7,     8,     9,    10,    11,    12,     0,
3803
       0,     0,     0,    64,   265,    66,    14,     0,    15,    16,
3804
      17,    18,     0,     0,     0,     0,     0,    19,    20,    21,
3805
      22,    23,    24,    25,     0,     0,   113,     0,     0,     0,
3806
       0,     0,     0,     0,     0,    30,    31,    32,   260,    34,
3807
      35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
3808
      42,     0,     0,    43,    44,     0,   261,    46,    47,     0,
3809
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3810
       0,    48,   509,     0,     0,     0,     0,     0,   211,     0,
3811
       0,   119,    52,     0,    53,    54,     0,   262,     0,   263,
3812
     264,    56,     0,    57,    58,    59,     0,    60,    61,    62,
3813
       0,    63,     0,     0,     0,     0,     0,     0,     4,     5,
3814
       6,     7,     8,     9,    10,    11,    12,     0,     0,     0,
3815
       0,    64,   265,    66,    14,     0,   108,   109,    17,    18,
3816
       0,     0,     0,     0,     0,   110,   111,   112,    22,    23,
3817
      24,    25,     0,     0,   113,     0,     0,     0,     0,     0,
3818
       0,     0,     0,    30,    31,    32,   260,    34,    35,    36,
3819
      37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
3820
       0,    43,    44,     0,   261,    46,    47,     0,     0,     0,
3821
       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
3822
      49,     0,     0,     0,     0,     0,   211,     0,     0,   119,
3823
      52,     0,    53,    54,     0,   724,     0,   263,   264,    56,
3824
       0,    57,    58,    59,     0,    60,    61,    62,     0,    63,
3825
       0,     0,     0,     0,     0,     0,     4,     5,     6,     7,
3826
       8,     9,    10,    11,    12,     0,     0,     0,     0,    64,
3827
     265,    66,    14,     0,   108,   109,    17,    18,     0,     0,
3828
       0,     0,     0,   110,   111,   112,    22,    23,    24,    25,
3829
       0,     0,   113,     0,     0,     0,     0,     0,     0,     0,
3830
       0,    30,    31,    32,   260,    34,    35,    36,    37,    38,
3831
       0,    39,    40,    41,     0,     0,    42,     0,     0,    43,
3832
      44,     0,   261,    46,    47,     0,     0,     0,     0,     0,
3833
       0,     0,     0,     0,     0,     0,     0,    48,   855,     0,
3834
       0,     0,     0,     0,   211,     0,     0,   119,    52,     0,
3835
      53,    54,     0,   724,     0,   263,   264,    56,     0,    57,
3836
      58,    59,     0,    60,    61,    62,     0,    63,     0,     0,
3837
       0,     0,     0,     0,     4,     5,     6,     7,     8,     9,
3838
      10,    11,    12,     0,     0,     0,     0,    64,   265,    66,
3839
      14,     0,   108,   109,    17,    18,     0,     0,     0,     0,
3840
       0,   110,   111,   112,    22,    23,    24,    25,     0,     0,
3841
     113,     0,     0,     0,     0,     0,     0,     0,     0,    30,
3842
      31,    32,   260,    34,    35,    36,    37,    38,     0,    39,
3843
      40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
3844
     261,    46,    47,     0,     0,     0,     0,     0,     0,     0,
3845
       0,     0,     0,     0,     0,    48,    49,     0,     0,     0,
3846
       0,     0,   211,     0,     0,   119,    52,     0,    53,    54,
3847
       0,   262,     0,   263,     0,    56,     0,    57,    58,    59,
3848
       0,    60,    61,    62,     0,    63,     0,     0,     0,     0,
3849
       0,     0,     4,     5,     6,     7,     8,     9,    10,    11,
3850
      12,     0,     0,     0,     0,    64,   265,    66,    14,     0,
3851
     108,   109,    17,    18,     0,     0,     0,     0,     0,   110,
3852
     111,   112,    22,    23,    24,    25,     0,     0,   113,     0,
3853
       0,     0,     0,     0,     0,     0,     0,    30,    31,    32,
3854
     260,    34,    35,    36,    37,    38,     0,    39,    40,    41,
3855
       0,     0,    42,     0,     0,    43,    44,     0,   261,    46,
3856
      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3857
       0,     0,     0,    48,    49,     0,     0,     0,     0,     0,
3858
     211,     0,     0,   119,    52,     0,    53,    54,     0,     0,
3859
       0,   263,   264,    56,     0,    57,    58,    59,     0,    60,
3860
      61,    62,     0,    63,     0,     0,     0,     0,     0,     0,
3861
       4,     5,     6,     7,     8,     9,    10,    11,    12,     0,
3862
       0,     0,     0,    64,   265,    66,    14,     0,   108,   109,
3863
      17,    18,     0,     0,     0,     0,     0,   110,   111,   112,
3864
      22,    23,    24,    25,     0,     0,   113,     0,     0,     0,
3865
       0,     0,     0,     0,     0,    30,    31,    32,   260,    34,
3866
      35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
3867
      42,     0,     0,    43,    44,     0,   261,    46,    47,     0,
3868
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3869
       0,    48,    49,     0,     0,     0,     0,     0,   211,     0,
3870
       0,   119,    52,     0,    53,    54,     0,   724,     0,   263,
3871
       0,    56,     0,    57,    58,    59,     0,    60,    61,    62,
3872
       0,    63,     0,     0,     0,     0,     0,     0,     4,     5,
3873
       6,     7,     8,     9,    10,    11,    12,     0,     0,     0,
3874
       0,    64,   265,    66,    14,     0,   108,   109,    17,    18,
3875
       0,     0,     0,     0,     0,   110,   111,   112,    22,    23,
3876
      24,    25,     0,     0,   113,     0,     0,     0,     0,     0,
3877
       0,     0,     0,    30,    31,    32,   260,    34,    35,    36,
3878
      37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
3879
       0,    43,    44,     0,   261,    46,    47,     0,     0,     0,
3880
       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
3881
      49,     0,     0,     0,     0,     0,   211,     0,     0,   119,
3882
      52,     0,    53,    54,     0,     0,     0,   263,     0,    56,
3883
       0,    57,    58,    59,     0,    60,    61,    62,     0,    63,
3884
       0,     0,     0,     0,     0,     0,     4,     5,     6,     7,
3885
       8,     9,    10,    11,    12,     0,     0,     0,     0,    64,
3886
     265,    66,    14,     0,    15,    16,    17,    18,     0,     0,
3887
       0,     0,     0,    19,    20,    21,    22,    23,    24,    25,
3888
       0,     0,   113,     0,     0,     0,     0,     0,     0,     0,
3889
       0,    30,    31,    32,    33,    34,    35,    36,    37,    38,
3890
       0,    39,    40,    41,     0,     0,    42,     0,     0,    43,
3891
      44,     0,    45,    46,    47,     0,     0,     0,     0,     0,
3892
       0,     0,     0,     0,     0,     0,     0,    48,    49,     0,
3893
       0,     0,     0,     0,   211,     0,     0,   119,    52,     0,
3894
      53,    54,     0,   606,     0,     0,     0,    56,     0,    57,
3895
      58,    59,     0,    60,    61,    62,     0,    63,     0,     0,
3896
       0,     0,     0,     0,     4,     5,     6,     7,     8,     9,
3897
      10,    11,    12,     0,     0,     0,     0,    64,   265,    66,
3898
      14,     0,   108,   109,    17,    18,     0,     0,     0,     0,
3899
       0,   110,   111,   112,    22,    23,    24,    25,     0,     0,
3900
     113,     0,     0,     0,     0,     0,     0,     0,     0,    30,
3901
      31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
3902
      40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
3903
      45,    46,    47,     0,     0,     0,     0,     0,     0,     0,
3904
       0,     0,     0,     0,     0,    48,    49,     0,     0,     0,
3905
       0,     0,   211,     0,     0,   119,    52,     0,    53,    54,
3906
       0,   262,     0,     0,     0,    56,     0,    57,    58,    59,
3907
       0,    60,    61,    62,     0,    63,     0,     0,     0,     0,
3908
       0,     0,     4,     5,     6,     7,     8,     9,    10,    11,
3909
      12,     0,     0,     0,     0,    64,   265,    66,    14,     0,
3910
     108,   109,    17,    18,     0,     0,     0,     0,     0,   110,
3911
     111,   112,    22,    23,    24,    25,     0,     0,   113,     0,
3912
       0,     0,     0,     0,     0,     0,     0,    30,    31,    32,
3913
      33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
3914
       0,     0,    42,     0,     0,    43,    44,     0,    45,    46,
3915
      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3916
       0,     0,     0,    48,    49,     0,     0,     0,     0,     0,
3917
     211,     0,     0,   119,    52,     0,    53,    54,     0,   606,
3918
       0,     0,     0,    56,     0,    57,    58,    59,     0,    60,
3919
      61,    62,     0,    63,     0,     0,     0,     0,     0,     0,
3920
       4,     5,     6,     7,     8,     9,    10,    11,    12,     0,
3921
       0,     0,     0,    64,   265,    66,    14,     0,   108,   109,
3922
      17,    18,     0,     0,     0,     0,     0,   110,   111,   112,
3923
      22,    23,    24,    25,     0,     0,   113,     0,     0,     0,
3924
       0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
3925
      35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
3926
      42,     0,     0,    43,    44,     0,    45,    46,    47,     0,
3927
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3928
       0,    48,    49,     0,     0,     0,     0,     0,   211,     0,
3929
       0,   119,    52,     0,    53,    54,     0,   901,     0,     0,
3930
       0,    56,     0,    57,    58,    59,     0,    60,    61,    62,
3931
       0,    63,     0,     0,     0,     0,     0,     0,     4,     5,
3932
       6,     7,     8,     9,    10,    11,    12,     0,     0,     0,
3933
       0,    64,   265,    66,    14,     0,   108,   109,    17,    18,
3934
       0,     0,     0,     0,     0,   110,   111,   112,    22,    23,
3935
      24,    25,     0,     0,   113,     0,     0,     0,     0,     0,
3936
       0,     0,     0,    30,    31,    32,    33,    34,    35,    36,
3937
      37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
3938
       0,    43,    44,     0,    45,    46,    47,     0,     0,     0,
3939
       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
3940
      49,     0,     0,     0,     0,     0,   211,     0,     0,   119,
3941
      52,     0,    53,    54,     0,   724,     0,     0,     0,    56,
3942
       0,    57,    58,    59,     0,    60,    61,    62,     0,    63,
3943
       0,     0,     0,     0,     0,     0,     4,     5,     6,     7,
3944
       8,     9,    10,    11,    12,     0,     0,     0,     0,    64,
3945
     265,    66,    14,     0,    15,    16,    17,    18,     0,     0,
3946
       0,     0,     0,    19,    20,    21,    22,    23,    24,    25,
3947
       0,     0,    26,     0,     0,     0,     0,     0,     0,     0,
3948
       0,    30,    31,    32,    33,    34,    35,    36,    37,    38,
3949
       0,    39,    40,    41,     0,     0,    42,     0,     0,    43,
3950
      44,     0,    45,    46,    47,     0,     0,     0,     0,     0,
3951
       0,     0,     0,     0,     0,     0,     0,    48,    49,     0,
3952
       0,     0,     0,     0,   211,     0,     0,   119,    52,     0,
3953
      53,    54,     0,     0,     0,     0,     0,    56,     0,    57,
3954
      58,    59,     0,    60,    61,    62,     0,    63,     0,     0,
3955
       0,     0,     0,     0,     4,     5,     6,     7,     8,     9,
3956
      10,    11,    12,     0,     0,     0,     0,    64,    65,    66,
3957
      14,     0,   108,   109,    17,    18,     0,     0,     0,     0,
3958
       0,   110,   111,   112,    22,    23,    24,    25,     0,     0,
3959
     113,     0,     0,     0,     0,     0,     0,     0,     0,    30,
3960
      31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
3961
      40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
3962
      45,    46,    47,     0,     0,     0,     0,     0,     0,     0,
3963
       0,     0,     0,     0,     0,    48,    49,     0,     0,     0,
3964
       0,     0,   211,     0,     0,   119,    52,     0,    53,    54,
3965
       0,     0,     0,     0,     0,    56,     0,    57,    58,    59,
3966
       0,    60,    61,    62,     0,    63,     0,     0,     0,     0,
3967
       0,     0,     4,     5,     6,     7,     8,     9,    10,    11,
3968
      12,     0,     0,     0,     0,    64,   265,    66,    14,     0,
3969
      15,    16,    17,    18,     0,     0,     0,     0,     0,    19,
3970
      20,    21,    22,    23,    24,    25,     0,     0,   113,     0,
3971
       0,     0,     0,     0,     0,     0,     0,    30,    31,    32,
3972
      33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
3973
       0,     0,    42,     0,     0,    43,    44,     0,    45,    46,
3974
      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3975
       0,     0,     0,    48,    49,     0,     0,     0,     0,     0,
3976
     211,     0,     0,   119,    52,     0,    53,    54,     0,     0,
3977
       0,     0,     0,    56,     0,    57,    58,    59,     0,    60,
3978
      61,    62,     0,    63,     0,     0,     0,     0,     0,     0,
3979
       4,     5,     6,     7,     8,     9,    10,    11,    12,     0,
3980
       0,     0,     0,    64,   265,    66,    14,     0,   108,   109,
3981
      17,    18,     0,     0,     0,     0,     0,   110,   111,   112,
3982
      22,    23,    24,    25,     0,     0,   113,     0,     0,     0,
3983
       0,     0,     0,     0,     0,    30,    31,    32,   114,    34,
3984
      35,    36,   115,    38,     0,    39,    40,    41,     0,     0,
3985
      42,     0,     0,    43,    44,     0,   116,     0,     0,     0,
3986
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3987
       0,     0,     0,     0,     0,   117,     0,     0,   118,     0,
3988
       0,   119,    52,     0,    53,    54,     0,     0,     0,     0,
3989
       0,    56,     0,    57,    58,    59,     0,    60,    61,    62,
3990
       0,    63,     0,     0,     4,     5,     6,     7,     8,     9,
3991
      10,    11,    12,     0,     0,     0,     0,     0,     0,     0,
3992
      14,   120,   108,   109,    17,    18,     0,     0,     0,     0,
3993
       0,   110,   111,   112,    22,    23,    24,    25,     0,     0,
3994
     113,     0,     0,     0,     0,     0,     0,     0,     0,    30,
3995
      31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
3996
      40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
3997
     225,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3998
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3999
       0,     0,   226,     0,     0,    51,    52,     0,    53,    54,
4000
       0,    55,     0,     0,     0,    56,     0,    57,    58,    59,
4001
       0,    60,    61,    62,     0,    63,     0,     0,     4,     5,
4002
       6,     7,     8,     9,    10,    11,    12,     0,     0,     0,
4003
       0,     0,     0,     0,    14,   120,   108,   109,    17,    18,
4004
       0,     0,     0,     0,     0,   110,   111,   112,    22,    23,
4005
      24,    25,     0,     0,   113,     0,     0,     0,     0,     0,
4006
       0,     0,     0,    30,    31,    32,    33,    34,    35,    36,
4007
      37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
4008
       0,    43,    44,     0,   116,     0,     0,     0,     0,     0,
4009
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4010
       0,     0,     0,     0,     0,     0,   313,     0,     0,   400,
4011
      52,     0,    53,    54,     0,   401,     0,     0,     0,    56,
4012
       0,    57,    58,    59,     0,    60,    61,    62,     0,    63,
4013
       0,     0,     4,     5,     6,     7,     8,     9,    10,    11,
4014
      12,     0,     0,     0,     0,     0,     0,     0,    14,   120,
4015
     108,   109,    17,    18,     0,     0,     0,     0,     0,   110,
4016
     111,   112,    22,    23,    24,    25,     0,     0,   113,     0,
4017
       0,     0,     0,     0,     0,     0,     0,    30,    31,    32,
4018
     114,    34,    35,    36,   115,    38,     0,    39,    40,    41,
4019
       0,     0,    42,     0,     0,    43,    44,     0,   116,     0,
4020
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4021
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4022
     118,     0,     0,   119,    52,     0,    53,    54,     0,     0,
4023
       0,     0,     0,    56,     0,    57,    58,    59,     0,    60,
4024
      61,    62,     0,    63,     0,     0,     4,     5,     6,     7,
4025
       8,     9,    10,    11,    12,     0,     0,     0,     0,     0,
4026
       0,     0,    14,   120,   108,   109,    17,    18,     0,     0,
4027
       0,     0,     0,   110,   111,   112,    22,    23,    24,    25,
4028
       0,     0,   113,     0,     0,     0,     0,     0,     0,     0,
4029
       0,    30,    31,    32,    33,    34,    35,    36,    37,    38,
4030
       0,    39,    40,    41,     0,     0,    42,     0,     0,    43,
4031
      44,     0,   116,     0,     0,     0,     0,     0,     0,     0,
4032
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4033
       0,     0,     0,     0,   313,     0,     0,   400,    52,     0,
4034
      53,    54,     0,     0,     0,     0,     0,    56,     0,    57,
4035
      58,    59,     0,    60,    61,    62,     0,    63,     0,     0,
4036
       4,     5,     6,     7,     8,     9,    10,    11,    12,     0,
4037
       0,     0,     0,     0,     0,     0,    14,   120,   108,   109,
4038
      17,    18,     0,     0,     0,     0,     0,   110,   111,   112,
4039
      22,    23,    24,    25,     0,     0,   113,     0,     0,     0,
4040
       0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
4041
      35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
4042
      42,     0,     0,    43,    44,     0,   116,     0,     0,     0,
4043
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4044
       0,     0,     0,     0,     0,     0,     0,     0,   968,     0,
4045
       0,   119,    52,     0,    53,    54,     0,     0,     0,     0,
4046
       0,    56,     0,    57,    58,    59,     0,    60,    61,    62,
4047
       0,    63,     0,     0,     4,     5,     6,     7,     8,     9,
4048
      10,    11,    12,     0,     0,     0,     0,     0,     0,     0,
4049
      14,   120,   108,   109,    17,    18,     0,     0,     0,     0,
4050
       0,   110,   111,   112,    22,    23,    24,    25,     0,     0,
4051
     113,     0,     0,     0,     0,     0,     0,     0,     0,    30,
4052
      31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
4053
      40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
4054
     225,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4055
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4056
       0,     0,   991,     0,     0,   119,    52,     0,    53,    54,
4057
       0,     0,   681,   652,     0,    56,   682,    57,    58,    59,
4058
       0,    60,    61,    62,     0,    63,     0,     0,     0,     0,
4059
       0,   174,   175,   176,   177,   178,   179,   180,   181,     0,
4060
       0,   182,   183,     0,     0,   120,     0,   184,   185,   186,
4061
     187,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4062
       0,   188,   189,   190,     0,     0,     0,     0,     0,     0,
4063
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4064
       0,     0,     0,     0,     0,   191,   192,   193,   194,   195,
4065
     196,   197,   198,   199,   200,     0,   201,   202,   666,   661,
4066
       0,     0,   667,     0,   203,   276,     0,     0,     0,     0,
4067
       0,     0,     0,     0,     0,     0,     0,   174,   175,   176,
4068
     177,   178,   179,   180,   181,     0,     0,   182,   183,     0,
4069
       0,     0,     0,   184,   185,   186,   187,     0,     0,     0,
4070
       0,     0,     0,     0,     0,     0,     0,   188,   189,   190,
4071
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4072
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4073
       0,   191,   192,   193,   194,   195,   196,   197,   198,   199,
4074
     200,     0,   201,   202,   698,   652,     0,     0,   699,     0,
4075
     203,   276,     0,     0,     0,     0,     0,     0,     0,     0,
4076
       0,     0,     0,   174,   175,   176,   177,   178,   179,   180,
4077
     181,     0,     0,   182,   183,     0,     0,     0,     0,   184,
4078
     185,   186,   187,     0,     0,     0,     0,     0,     0,     0,
4079
       0,     0,     0,   188,   189,   190,     0,     0,     0,     0,
4080
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4081
       0,     0,     0,     0,     0,     0,     0,   191,   192,   193,
4082
     194,   195,   196,   197,   198,   199,   200,     0,   201,   202,
4083
     701,   661,     0,     0,   702,     0,   203,   276,     0,     0,
4084
       0,     0,     0,     0,     0,     0,     0,     0,     0,   174,
4085
     175,   176,   177,   178,   179,   180,   181,     0,     0,   182,
4086
     183,     0,     0,     0,     0,   184,   185,   186,   187,     0,
4087
       0,     0,     0,     0,     0,     0,     0,     0,     0,   188,
4088
     189,   190,     0,     0,     0,     0,     0,     0,     0,     0,
4089
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4090
       0,     0,     0,   191,   192,   193,   194,   195,   196,   197,
4091
     198,   199,   200,     0,   201,   202,   708,   652,     0,     0,
4092
     709,     0,   203,   276,     0,     0,     0,     0,     0,     0,
4093
       0,     0,     0,     0,     0,   174,   175,   176,   177,   178,
4094
     179,   180,   181,     0,     0,   182,   183,     0,     0,     0,
4095
       0,   184,   185,   186,   187,     0,     0,     0,     0,     0,
4096
       0,     0,     0,     0,     0,   188,   189,   190,     0,     0,
4097
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4098
       0,     0,     0,     0,     0,     0,     0,     0,     0,   191,
4099
     192,   193,   194,   195,   196,   197,   198,   199,   200,     0,
4100
     201,   202,   711,   661,     0,     0,   712,     0,   203,   276,
4101
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4102
       0,   174,   175,   176,   177,   178,   179,   180,   181,     0,
4103
       0,   182,   183,     0,     0,     0,     0,   184,   185,   186,
4104
     187,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4105
       0,   188,   189,   190,     0,     0,     0,     0,     0,     0,
4106
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4107
       0,     0,     0,     0,     0,   191,   192,   193,   194,   195,
4108
     196,   197,   198,   199,   200,     0,   201,   202,   747,   652,
4109
       0,     0,   748,     0,   203,   276,     0,     0,     0,     0,
4110
       0,     0,     0,     0,     0,     0,     0,   174,   175,   176,
4111
     177,   178,   179,   180,   181,     0,     0,   182,   183,     0,
4112
       0,     0,     0,   184,   185,   186,   187,     0,     0,     0,
4113
       0,     0,     0,     0,     0,     0,     0,   188,   189,   190,
4114
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4115
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4116
       0,   191,   192,   193,   194,   195,   196,   197,   198,   199,
4117
     200,     0,   201,   202,   750,   661,     0,     0,   751,     0,
4118
     203,   276,     0,     0,     0,     0,     0,     0,     0,     0,
4119
       0,     0,     0,   174,   175,   176,   177,   178,   179,   180,
4120
     181,     0,     0,   182,   183,     0,     0,     0,     0,   184,
4121
     185,   186,   187,     0,     0,     0,     0,     0,     0,     0,
4122
       0,     0,     0,   188,   189,   190,     0,     0,     0,     0,
4123
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4124
       0,     0,     0,     0,     0,     0,     0,   191,   192,   193,
4125
     194,   195,   196,   197,   198,   199,   200,     0,   201,   202,
4126
     906,   652,     0,     0,   907,     0,   203,   276,     0,     0,
4127
       0,     0,     0,     0,     0,     0,     0,     0,     0,   174,
4128
     175,   176,   177,   178,   179,   180,   181,     0,     0,   182,
4129
     183,     0,     0,     0,     0,   184,   185,   186,   187,     0,
4130
       0,     0,     0,     0,     0,     0,     0,     0,     0,   188,
4131
     189,   190,     0,     0,     0,     0,     0,     0,     0,     0,
4132
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4133
       0,     0,     0,   191,   192,   193,   194,   195,   196,   197,
4134
     198,   199,   200,     0,   201,   202,   909,   661,     0,     0,
4135
     910,     0,   203,   276,     0,     0,     0,     0,     0,     0,
4136
       0,     0,     0,     0,     0,   174,   175,   176,   177,   178,
4137
     179,   180,   181,     0,     0,   182,   183,     0,     0,     0,
4138
       0,   184,   185,   186,   187,     0,     0,     0,     0,     0,
4139
       0,     0,     0,     0,     0,   188,   189,   190,     0,     0,
4140
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4141
       0,     0,     0,     0,     0,     0,     0,     0,     0,   191,
4142
     192,   193,   194,   195,   196,   197,   198,   199,   200,     0,
4143
     201,   202,  1050,   652,     0,     0,  1051,     0,   203,   276,
4144
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4145
       0,   174,   175,   176,   177,   178,   179,   180,   181,     0,
4146
       0,   182,   183,     0,     0,     0,     0,   184,   185,   186,
4147
     187,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4148
       0,   188,   189,   190,     0,     0,     0,     0,     0,     0,
4149
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4150
       0,     0,     0,     0,     0,   191,   192,   193,   194,   195,
4151
     196,   197,   198,   199,   200,     0,   201,   202,  1062,   652,
4152
       0,     0,  1063,     0,   203,   276,     0,     0,     0,     0,
4153
       0,     0,     0,     0,     0,     0,     0,   174,   175,   176,
4154
     177,   178,   179,   180,   181,     0,     0,   182,   183,     0,
4155
       0,     0,     0,   184,   185,   186,   187,     0,     0,     0,
4156
       0,     0,     0,     0,     0,     0,     0,   188,   189,   190,
4157
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4158
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4159
       0,   191,   192,   193,   194,   195,   196,   197,   198,   199,
4160
     200,     0,   201,   202,  1065,   661,     0,     0,  1066,     0,
4161
     203,   276,     0,     0,     0,     0,     0,     0,     0,     0,
4162
       0,     0,     0,   174,   175,   176,   177,   178,   179,   180,
4163
     181,     0,     0,   182,   183,     0,     0,     0,     0,   184,
4164
     185,   186,   187,     0,     0,     0,     0,     0,     0,     0,
4165
       0,     0,     0,   188,   189,   190,     0,     0,     0,     0,
4166
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4167
       0,     0,     0,     0,     0,     0,     0,   191,   192,   193,
4168
     194,   195,   196,   197,   198,   199,   200,     0,   201,   202,
4169
     666,   661,     0,     0,   667,     0,   203,   276,     0,     0,
4170
       0,     0,     0,     0,     0,     0,     0,     0,     0,   174,
4171
     175,   176,   177,   178,   179,   180,   181,     0,     0,   182,
4172
     183,     0,     0,     0,     0,   184,   185,   186,   187,     0,
4173
       0,     0,     0,     0,     0,     0,     0,     0,     0,   188,
4174
     189,   190,     0,     0,     0,     0,     0,     0,     0,     0,
4175
       0,     0,     0,     0,     0,   873,     0,     0,     0,     0,
4176
       0,     0,     0,   191,   192,   193,   194,   195,   196,   197,
4177
     198,   199,   200,     0,   201,   202,     0,     0,     0,     0,
4178
       0,     0,   203,   404,   405,   406,   407,   408,   409,   410,
4179
     411,   412,   413,   414,   415,     0,     0,     0,     0,   416,
4180
     417,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4181
       0,     0,   419,     0,     0,     0,     0,   886,     0,     0,
4182
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4183
       0,     0,     0,   420,     0,   421,   422,   423,   424,   425,
4184
     426,   427,   428,   429,   430,   404,   405,   406,   407,   408,
4185
     409,   410,   411,   412,   413,   414,   415,     0,     0,     0,
4186
       0,   416,   417,     0,     0,     0,     0,     0,     0,     0,
4187
       0,     0,     0,     0,   419,     0,     0,     0,     0,     0,
4188
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4189
       0,     0,     0,     0,     0,   420,     0,   421,   422,   423,
4190
     424,   425,   426,   427,   428,   429,   430,   404,   405,   406,
4191
     407,   408,   409,   410,   411,   412,   413,   414,   415,     0,
4192
       0,     0,     0,   416,   417,     0,     0,     0,     0,     0,
4193
       0,     0,     0,     0,     0,     0,   419,     0,     0,     0,
4194
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4195
       0,     0,     0,     0,     0,     0,     0,   420,     0,   421,
4196
     422,   423,   424,   425,   426,   427,   428,   429,   430,     0,
4197
       0,     0,     0,     0,     0,     0,     0,  -277,   404,   405,
4198
     406,   407,   408,   409,   410,   411,   412,   413,   414,   415,
4199
       0,     0,     0,     0,   416,   417,     0,     0,     0,     0,
4200
       0,     0,     0,     0,     0,     0,     0,   419,     0,     0,
4201
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4202
       0,     0,     0,     0,     0,     0,     0,     0,   420,     0,
4203
     421,   422,   423,   424,   425,   426,   427,   428,   429,   430,
4204
       0,     0,     0,     0,     0,     0,     0,     0,  -279,   404,
4205
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
4206
     415,     0,     0,     0,     0,   416,   417,     0,     0,     0,
4207
       0,     0,     0,     0,     0,     0,     0,     0,   419,     0,
4208
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4209
       0,     0,     0,     0,     0,     0,     0,     0,     0,   420,
4210
       0,   421,   422,   423,   424,   425,   426,   427,   428,   429,
4211
     430,     0,     0,     0,     0,     0,     0,     0,     0,  -280,
4212
     404,   405,   406,   407,   408,   409,   410,   411,   412,   413,
4213
     414,   415,     0,     0,     0,     0,   416,   417,     0,     0,
4214
       0,     0,     0,     0,     0,     0,     0,     0,     0,   419,
4215
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4216
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4217
     420,     0,   421,   422,   423,   424,   425,   426,   427,   428,
4218
     429,   430,     0,     0,     0,     0,     0,     0,     0,     0,
4219
    -282,   404,   405,   406,   407,   408,   409,   410,   411,   412,
4220
     413,   414,   415,     0,     0,     0,     0,   416,   417,     0,
4221
       0,     0,   501,     0,     0,     0,     0,     0,     0,     0,
4222
     419,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4223
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4224
       0,   420,     0,   421,   422,   423,   424,   425,   426,   427,
4225
     428,   429,   430,   404,   405,   406,   407,   408,   409,   410,
4226
     411,   412,   413,   414,   415,     0,     0,     0,     0,   416,
4227
     417,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4228
       0,     0,   419,     0,     0,     0,     0,     0,     0,     0,
4229
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4230
       0,     0,     0,   420,     0,   421,   422,   423,   424,   425,
4231
     426,   427,   428,   429,   430,   404,   405,   406,   407,   408,
4232
     409,   410,   411,   412,   413,  -621,  -621,     0,     0,     0,
4233
       0,   416,   417,     0,     0,     0,     0,     0,     0,     0,
4234
       0,     0,     0,     0,   419,     0,     0,     0,     0,     0,
4235
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4236
       0,     0,     0,     0,     0,     0,     0,   421,   422,   423,
4237
     424,   425,   426,   427,   428,   429,   430
4238
};
4239
4240
static const yytype_int16 yycheck[] =
4241
{
4242
       1,    88,    13,    15,    16,   285,    26,    19,    55,    27,
4243
       1,     6,     3,     4,     5,    65,    27,     8,     9,    20,
4244
     490,    12,    68,    14,    15,    16,    86,    87,    19,   314,
4245
       9,    21,     4,     5,   222,    14,   379,   481,    14,   790,
4246
      12,   272,     8,     9,     6,   403,     3,     1,    14,     3,
4247
     597,    13,    53,    54,    81,   332,   762,   307,   594,   118,
4248
      51,   311,    57,   508,    55,    27,    51,    15,    16,   692,
4249
     547,    19,    73,    74,    65,   374,    20,    21,   431,    26,
4250
     703,   594,   435,    55,   504,   438,   669,   670,   508,    25,
4251
      81,   296,    68,   319,   539,    57,   395,    16,    25,    74,
4252
      59,    60,    61,    62,    25,    53,   459,   976,   433,    81,
4253
     111,    15,    16,    90,   104,    19,    15,    16,    15,    16,
4254
      19,   474,    19,   476,    26,    57,   117,   951,   119,    25,
4255
       0,    25,   485,   458,    74,   612,    25,    90,   443,   444,
4256
     103,    90,    29,   121,    90,   371,    25,   122,    58,    59,
4257
     475,   117,   105,    25,    53,    54,    53,    54,   218,   484,
4258
     104,   460,    79,   144,   142,   128,    28,   111,   112,   229,
4259
     147,    51,   525,   333,   138,    55,   336,    90,   338,    57,
4260
     340,    92,   342,    90,  1053,   129,    18,    26,    20,   121,
4261
     121,   138,    90,    90,   147,   400,   115,   550,   147,   118,
4262
     119,   147,    90,   388,    16,   390,   142,    55,   144,   126,
4263
     121,    92,   213,   214,    92,   142,   142,   144,   754,   210,
4264
    1044,   142,   973,   142,   549,   976,   113,   146,   121,   148,
4265
     290,   767,   223,   224,   147,    90,   138,   820,   403,   214,
4266
     147,   754,   144,   121,   223,   224,   142,   242,   142,   147,
4267
     956,    90,   298,   142,   767,   121,   316,   223,   224,   147,
4268
     306,   307,   547,   142,   276,   311,   105,   279,   144,   270,
4269
     142,   272,   125,   213,   214,   276,   252,    55,   443,   444,
4270
     242,   558,   513,    90,   270,   276,   272,   314,   279,   734,
4271
      90,    92,   147,   284,   285,    17,    18,   288,    55,   138,
4272
      25,   140,  1053,   115,   295,   296,   118,   119,   147,   142,
4273
      92,   296,   303,   733,   734,    16,    92,    92,   284,   285,
4274
     306,   798,   298,   314,   947,   551,   809,   612,   276,   876,
4275
      20,   279,   815,   691,   146,    27,   148,   142,   101,   121,
4276
     147,   295,   314,    37,    38,   121,   121,   147,   398,   303,
4277
      58,    59,    51,   403,   401,    37,    38,   870,   349,   350,
4278
     351,   352,   353,   354,   355,   356,   325,   880,   131,   132,
4279
     133,   350,   351,   352,   353,   279,   377,    57,   379,   276,
4280
     279,   680,   279,   374,   350,   351,   352,   353,   138,   355,
4281
     356,   811,   349,   443,   444,   349,   556,   101,   457,    92,
4282
     354,    92,   115,   847,   395,   118,   119,   398,   145,   400,
4283
     401,    92,   403,   665,   115,   400,   668,   118,   119,    92,
4284
     119,   433,   141,   115,   888,   889,   118,   119,   121,   401,
4285
     121,   774,   433,   115,   686,   148,   118,   119,   121,    92,
4286
     121,   139,   433,   723,    55,   146,   458,   148,   121,   802,
4287
     398,   804,   443,   444,   146,   403,   148,   458,   142,    60,
4288
     973,   142,    63,   475,   146,   466,   148,   458,   121,   460,
4289
     461,    92,   484,   435,   475,   101,   438,   947,   803,   101,
4290
     471,    57,   502,   484,   475,    63,    64,    65,   479,   142,
4291
     121,   435,   791,   484,   744,   461,   727,   459,   489,    92,
4292
     121,   806,   121,   521,   949,   319,   107,   812,   813,   142,
4293
     521,   512,   513,   798,   476,   459,    51,    92,   545,   818,
4294
     547,   522,   142,   485,    92,   805,   512,   513,   121,   949,
4295
     718,   522,   476,  1046,   142,   511,   433,   549,   116,   117,
4296
     531,   485,    92,   587,  1057,   493,   121,   591,   549,   892,
4297
     893,    16,   142,   121,   545,    92,   547,   371,   549,   521,
4298
      51,   458,   622,   525,   863,   142,   557,   142,   522,    51,
4299
      92,   121,   584,   545,   142,   547,    61,   531,   475,    64,
4300
      65,   525,   862,   121,   121,   612,   142,   484,   550,   288,
4301
      51,   603,   142,   584,   779,   780,   781,   296,   783,   121,
4302
     785,     1,    99,     3,   605,   504,   550,   504,     8,     9,
4303
      15,   508,   603,   918,    14,    15,    16,    13,    57,    19,
4304
     640,   612,   121,   609,    16,   856,   121,   443,   444,    63,
4305
     929,   116,   117,   121,   122,   800,    15,   536,   145,   536,
4306
     612,   806,   539,    92,   145,   139,   142,   812,   813,   142,
4307
     115,    51,   549,   118,   119,   142,    51,    15,   659,    15,
4308
      44,   477,   478,   142,   665,    65,   656,   668,   669,   670,
4309
     121,   141,   121,   659,    69,   665,   115,   141,   668,   118,
4310
     119,   146,  1025,   148,   123,   686,    15,  1040,   679,   680,
4311
     691,   692,    18,   142,   689,   696,   714,   141,   744,   141,
4312
     679,   400,   703,   714,   587,    15,   101,   102,   103,   148,
4313
     526,   139,   656,   679,  1039,   139,   141,   117,   139,   119,
4314
     142,   665,   713,   215,   668,    44,   727,   689,   142,   816,
4315
     222,   142,   718,   128,   713,   115,    57,   551,   118,   119,
4316
     684,   727,   686,   691,    90,   933,   790,   713,   142,   142,
4317
     800,   939,   714,   918,    44,    15,   806,   807,    93,   105,
4318
      14,   142,   812,   813,    15,  1045,   580,   259,    15,    26,
4319
     145,   798,   471,   774,   142,   960,   961,   962,   963,   142,
4320
     479,   115,   142,   597,   118,   119,   600,   142,   141,    15,
4321
     489,   803,   300,    15,   140,   139,   304,    15,   144,    26,
4322
     791,   147,   803,    73,    74,    15,    15,   798,   799,   800,
4323
     210,   139,   803,   126,   126,   806,   807,   142,    55,   820,
4324
      15,   812,   813,   223,   224,    90,   798,   818,   819,   830,
4325
     139,    55,   833,    90,   733,   142,   733,   734,   142,   142,
4326
     105,   832,   804,   142,   835,   799,   594,   142,   105,   597,
4327
     142,   121,   122,   844,   845,   856,   835,   349,   557,    90,
4328
     804,   852,   142,    90,  1049,    90,    15,   144,   918,   835,
4329
     856,   363,   863,   864,   105,   140,   276,   144,   105,   279,
4330
     105,   138,   147,   140,   284,   285,   141,   144,   288,   381,
4331
     147,   892,   893,   142,   522,   295,   296,    12,     5,   890,
4332
      26,  1042,  1044,   303,   895,   790,   803,   790,   817,   140,
4333
    1041,   138,   811,   140,   811,   140,   147,   144,   890,     6,
4334
     147,    90,   147,   895,   254,   790,   970,   918,   587,   973,
4335
     970,   973,   976,   993,   978,    -1,   105,   928,   929,    -1,
4336
      -1,   932,    90,   213,   214,   936,   947,    -1,    -1,   349,
4337
     350,   351,   352,   353,   354,   355,   356,   105,    -1,    -1,
4338
     932,    -1,    -1,    51,    90,    53,    54,    55,    56,    -1,
4339
      -1,   140,    -1,    -1,   374,    -1,   790,    -1,   147,   105,
4340
      -1,    69,  1026,    63,    64,    65,  1006,    -1,   480,   481,
4341
     806,   807,   140,    -1,    -1,   395,   812,   813,   398,   147,
4342
     400,   509,    -1,   403,    -1,   996,   754,   998,   516,  1053,
4343
    1001,  1055,   138,  1057,   140,  1059,    -1,    -1,   144,   767,
4344
     528,   147,   838,   839,  1025,   841,   842,  1039,    40,    41,
4345
      42,    43,    44,   433,    -1,  1079,   116,   117,  1039,   531,
4346
    1041,  1042,   790,   443,   444,    -1,   538,    -1,  1039,   319,
4347
      90,    -1,   949,    -1,   142,    -1,    -1,    26,   458,    -1,
4348
     460,   461,   876,    -1,   878,   105,    -1,    -1,   882,    -1,
4349
      -1,   471,    -1,   581,   582,   475,    -1,    90,  1040,   479,
4350
      -1,    -1,    61,    -1,   484,    64,    65,   970,    -1,   489,
4351
     973,    -1,   105,   976,    90,   978,  1040,    90,    -1,    -1,
4352
     140,   371,   918,   611,    -1,   970,    -1,   147,   973,   105,
4353
      -1,   976,   105,   978,    51,    -1,    53,    54,    55,    56,
4354
     819,    90,   522,    -1,    -1,   941,    -1,   140,   876,    -1,
4355
      -1,   531,    69,   832,   147,    -1,   105,   116,   117,    -1,
4356
     954,   955,  1039,  1026,   140,   844,   845,   140,    -1,   549,
4357
      -1,   147,    -1,   852,   147,   897,   898,   557,    90,    -1,
4358
      -1,  1026,   976,    -1,   978,   864,    -1,    -1,    -1,   138,
4359
    1053,   140,  1055,   105,  1057,   144,  1059,    -1,   147,    -1,
4360
     688,    -1,    26,    90,   584,    -1,   678,    -1,  1053,    -1,
4361
    1055,    -1,  1057,    -1,  1059,    -1,  1079,    -1,   105,  1013,
4362
      -1,    -1,  1016,   603,    -1,   142,    90,    -1,   140,    90,
4363
      -1,    -1,     8,     9,  1079,   147,    -1,    90,    14,    15,
4364
      16,   105,    -1,    19,   105,   973,   718,    -1,   976,   928,
4365
      -1,   973,   105,   140,  1048,   743,    -1,   936,    -1,  1053,
4366
     147,  1055,    -1,    -1,   115,  1059,    90,   118,   119,    -1,
4367
      46,    47,    48,    49,    -1,   763,   140,    53,    54,   140,
4368
      -1,   105,    -1,   147,    -1,  1079,   147,   140,    -1,    65,
4369
      66,   142,    -1,    -1,   147,   146,    -1,   148,    -1,   679,
4370
     680,   551,    -1,    62,   776,    64,    65,  1029,  1030,  1031,
4371
      -1,  1033,  1034,    -1,   138,    -1,   140,   996,    -1,   998,
4372
     144,    -1,  1001,   147,    62,  1053,    64,    65,    63,    64,
4373
      65,    -1,    -1,   713,    -1,    63,    64,    65,    63,    64,
4374
      65,   117,    -1,    -1,    51,    -1,    53,    54,    55,    56,
4375
     822,  1073,  1074,  1075,  1076,    -1,    -1,   116,   117,    -1,
4376
      -1,  1083,    69,    -1,    -1,    -1,    51,   855,    53,    54,
4377
      55,    56,    -1,    -1,    -1,   847,    83,    -1,   116,   117,
4378
      -1,   116,   117,   871,    69,    -1,    -1,    94,   116,   117,
4379
      -1,   116,   117,   100,   101,   102,   103,    -1,    83,    -1,
4380
      63,    64,    65,    63,    64,    65,    -1,    -1,    -1,    94,
4381
      -1,   791,    -1,    -1,   121,   100,   101,   102,   103,   799,
4382
     800,   128,    -1,   803,   131,    -1,   806,   807,    63,    64,
4383
      65,    -1,   812,   813,    -1,    -1,    -1,   144,   818,   819,
4384
      -1,    -1,    -1,   128,    -1,    -1,   131,   223,   224,    -1,
4385
      -1,    -1,   832,   116,   117,   835,   116,   117,    -1,   144,
4386
      -1,   933,    -1,    -1,   844,   845,    -1,   939,    -1,    -1,
4387
      -1,    -1,   852,    51,    -1,    53,    54,    55,    56,    -1,
4388
      -1,   116,   117,   863,   864,    -1,   262,   263,   264,   265,
4389
      -1,    69,    51,    -1,    53,    54,    55,    56,    -1,    -1,
4390
     276,    -1,    51,   279,    53,    54,    55,    56,   284,   285,
4391
      69,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
4392
      69,    -1,   100,   101,   102,   103,    -1,    -1,    51,    -1,
4393
      53,    54,    55,    56,    -1,    94,    -1,    -1,   918,    -1,
4394
      -1,   100,   101,   102,   103,    94,    69,    -1,   928,   929,
4395
     128,   100,    -1,   131,    -1,    51,   936,    53,    54,    55,
4396
      56,   115,    -1,    -1,   118,   119,   144,    -1,    -1,   128,
4397
      -1,    94,   131,    69,   350,   351,   352,   353,   115,   355,
4398
     356,   118,   119,   142,   115,    -1,    -1,   118,   119,    -1,
4399
      -1,   145,   146,    -1,   148,    -1,    -1,    -1,    94,   375,
4400
      -1,    -1,    -1,    -1,   100,    -1,    -1,    -1,    -1,   146,
4401
     386,   148,    -1,    -1,    -1,   146,   996,   148,   998,    -1,
4402
      -1,  1001,   398,    -1,    -1,    -1,    -1,   403,   404,   405,
4403
     406,   407,   408,   409,   410,   411,   412,   413,   414,   415,
4404
     416,   417,   101,   419,   420,   421,   422,   423,   424,   425,
4405
     426,   427,   428,   429,   430,    -1,    -1,   433,    -1,  1039,
4406
      51,    -1,    53,    54,    55,    56,    -1,   443,   444,    -1,
4407
     129,   130,   131,   132,   133,    -1,    -1,    -1,    69,    -1,
4408
      -1,    -1,   458,    -1,    -1,   461,    51,    -1,    53,    54,
4409
      55,    56,    -1,    -1,    85,    -1,    -1,   473,    -1,   475,
4410
      -1,   477,   478,    94,    69,    -1,    -1,    -1,   484,   100,
4411
     101,   102,   103,    -1,    -1,    -1,    -1,   493,    -1,    -1,
4412
     496,   497,    -1,    -1,    -1,   501,    -1,    -1,   504,    -1,
4413
     506,    -1,   508,   509,    -1,    -1,    -1,   128,    -1,    -1,
4414
     131,    -1,    -1,    -1,    -1,     1,    -1,     3,     4,     5,
4415
     526,    -1,    -1,    -1,    -1,    -1,    12,    -1,    -1,    -1,
4416
     536,    -1,    51,   539,    53,    54,    55,    56,    -1,    -1,
4417
      -1,    -1,    -1,   549,    -1,    -1,    88,    89,    -1,    -1,
4418
      69,    -1,    -1,    51,    -1,    53,    54,    55,    56,   101,
4419
     566,   567,    -1,    -1,    -1,    51,    85,    -1,    -1,    55,
4420
      -1,    69,    88,    89,    -1,    94,    -1,    -1,   584,    -1,
4421
      -1,   100,   101,   102,   103,   101,   128,   129,   130,   131,
4422
     132,   133,    -1,    -1,    -1,    81,    94,   603,    -1,    -1,
4423
     606,    -1,    -1,   101,   102,   103,    -1,    -1,    -1,   128,
4424
      -1,    -1,   131,   129,   130,   131,   132,   133,    -1,    -1,
4425
      -1,     0,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4426
     128,    -1,    -1,   119,    13,    14,    15,    16,    17,    18,
4427
      -1,    20,    -1,    -1,    -1,    -1,    -1,    26,    27,    28,
4428
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
4429
      -1,    40,    41,    42,    43,    44,    -1,    -1,    -1,    -1,
4430
      -1,    -1,    -1,   679,    -1,     1,    -1,     3,     4,     5,
4431
      -1,    -1,    -1,    -1,    -1,   691,    12,    -1,   694,   695,
4432
      -1,    -1,    -1,    72,    73,    74,    75,    76,    77,    78,
4433
      79,    80,    81,    82,    83,    -1,    -1,   713,    -1,    88,
4434
      89,    90,    -1,    -1,    93,    -1,    -1,    -1,   724,    -1,
4435
      99,    -1,   101,    -1,   210,    51,   105,   733,   734,    55,
4436
      -1,    -1,    -1,    -1,    -1,    -1,   115,    -1,    -1,   118,
4437
     119,    -1,    -1,   122,    -1,   124,   125,   126,   127,   128,
4438
     129,   130,   131,   132,   133,    81,    -1,    -1,    -1,   138,
4439
     139,   140,   141,   142,    -1,   144,   145,   146,   147,   148,
4440
      51,    -1,    53,    54,    55,    56,    -1,    -1,    -1,    -1,
4441
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,   795,
4442
      -1,    -1,    -1,   119,   800,   801,    -1,   803,    -1,    -1,
4443
     806,   807,   288,    -1,    85,   811,   812,   813,    -1,   295,
4444
     296,    -1,    -1,    94,    -1,    -1,    -1,   303,    -1,   100,
4445
     101,   102,   103,    -1,    -1,    -1,    -1,    -1,   314,   835,
4446
      -1,    -1,   838,   839,    -1,   841,   842,    -1,    -1,    -1,
4447
      -1,    -1,    -1,    -1,    -1,   851,    -1,   128,    -1,   855,
4448
     131,    51,    -1,    53,    54,    55,    56,    -1,    -1,    -1,
4449
      -1,    -1,    -1,   349,    -1,    -1,   872,   873,   354,    69,
4450
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   885,
4451
     886,    -1,    -1,    -1,   210,    -1,    -1,    -1,   374,    -1,
4452
      -1,    -1,    -1,    -1,    94,   901,    -1,    -1,    -1,    -1,
4453
     100,   101,   102,   103,    -1,   911,   912,    88,    89,   395,
4454
      -1,    -1,   918,    -1,   400,   401,    -1,   403,    -1,    -1,
4455
     101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   128,    -1,
4456
      -1,   131,    -1,    -1,    -1,   941,    -1,    -1,    -1,    -1,
4457
      -1,    -1,    -1,   949,    -1,   126,   127,   128,   129,   130,
4458
     131,   132,   133,    -1,    -1,    -1,    -1,   443,   444,    -1,
4459
      -1,    -1,   288,    -1,    -1,    -1,    -1,    -1,    -1,   295,
4460
     296,    -1,    -1,    -1,   460,    -1,    -1,   303,    -1,    -1,
4461
      -1,    -1,    -1,    -1,    -1,   471,    -1,    -1,   314,    -1,
4462
      -1,    -1,    -1,   479,    -1,    -1,    -1,    72,    73,    74,
4463
      75,    76,    77,   489,    -1,    80,    81,    -1,    -1,    -1,
4464
      -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
4465
      -1,    -1,    -1,   349,    -1,    -1,   101,    -1,   354,    -1,
4466
      -1,    -1,    -1,  1039,    -1,    -1,   522,    -1,    -1,    -1,
4467
      -1,    -1,    -1,    -1,    -1,   531,    -1,    -1,   374,   124,
4468
     125,   126,   127,   128,   129,   130,   131,   132,   133,   545,
4469
      -1,   547,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   395,
4470
       0,   557,    -1,    -1,   400,   401,    -1,   403,    -1,    -1,
4471
      -1,    -1,    -1,    13,    14,    15,    16,    17,    18,    -1,
4472
      20,    -1,    -1,    -1,    -1,    -1,    26,    27,    -1,    -1,
4473
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
4474
      40,    41,    42,    43,    44,    -1,    -1,   443,   444,    -1,
4475
      -1,    -1,    -1,    -1,    -1,    -1,   612,    -1,    -1,    -1,
4476
      -1,    -1,    -1,    -1,   460,    -1,    -1,    -1,    -1,    -1,
4477
      -1,    -1,    -1,    -1,    -1,   471,    -1,    -1,    -1,    -1,
4478
      -1,    -1,    -1,   479,    -1,    -1,    -1,    -1,    -1,    -1,
4479
      90,    -1,    -1,   489,    -1,    -1,    -1,    -1,    -1,    -1,
4480
      -1,    -1,    -1,    -1,    -1,   105,     1,    -1,     3,     4,
4481
       5,    -1,    -1,    -1,    -1,   115,    -1,    12,   118,   119,
4482
      -1,    -1,    -1,    -1,   680,    -1,   522,    -1,    -1,    -1,
4483
      -1,    -1,    -1,    -1,    -1,   531,    -1,    -1,   138,   139,
4484
      -1,    -1,    -1,    -1,   144,   145,   146,   147,   148,   545,
4485
      -1,   547,    -1,    -1,    -1,    -1,    51,    -1,    -1,    -1,
4486
      55,   557,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4487
      -1,    -1,    -1,    72,    73,    74,    75,    76,    77,    78,
4488
      79,    80,    81,    82,    83,    -1,    81,    -1,    -1,    88,
4489
      89,    -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,
4490
      -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4491
      -1,    -1,    -1,    -1,    -1,    -1,   612,    -1,    -1,    -1,
4492
      -1,    -1,    -1,   122,   119,   124,   125,   126,   127,   128,
4493
     129,   130,   131,   132,   133,   791,    -1,    -1,    -1,    -1,
4494
      -1,    -1,   798,   799,   800,    -1,    -1,    -1,    -1,    -1,
4495
     806,    -1,    -1,    -1,    -1,    -1,   812,   813,    -1,    -1,
4496
      -1,    -1,   818,   819,    -1,    -1,     1,    -1,     3,     4,
4497
       5,     6,    -1,    -1,    -1,    -1,   832,    12,    -1,    -1,
4498
      -1,    -1,    -1,    -1,   680,    -1,    -1,    -1,   844,   845,
4499
      -1,    -1,    -1,    -1,    -1,    -1,   852,    72,    73,    74,
4500
      75,    76,    77,    78,    -1,    80,    81,   863,   864,    -1,
4501
      -1,    -1,    -1,    88,    89,   210,    51,    -1,    -1,    -1,
4502
      55,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,
4503
      -1,    -1,    -1,    -1,   890,    -1,    -1,    -1,    -1,   895,
4504
      -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,   124,
4505
     125,   126,   127,   128,   129,   130,   131,   132,   133,    -1,
4506
      -1,    -1,   918,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4507
      -1,    -1,   928,   929,    -1,    -1,   932,    -1,    -1,    -1,
4508
     936,    -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,
4509
      -1,    -1,    -1,   288,    -1,   791,    -1,    -1,    -1,    -1,
4510
     295,   296,   798,   799,   800,    -1,    -1,    -1,   303,    -1,
4511
     806,    -1,    -1,    -1,    -1,    -1,   812,   813,    -1,   314,
4512
      -1,    -1,   818,   819,    -1,    -1,    -1,    -1,    -1,    -1,
4513
      -1,    -1,    -1,    -1,    -1,    -1,   832,    -1,    -1,    -1,
4514
     996,    -1,   998,    -1,    -1,  1001,    -1,    -1,   844,   845,
4515
      -1,    -1,    -1,    -1,   349,    -1,   852,    -1,    -1,   354,
4516
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   863,   864,    -1,
4517
      -1,    -1,    -1,    -1,    -1,   210,    -1,    -1,    -1,   374,
4518
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4519
      -1,    -1,    -1,    -1,   890,    -1,    -1,    -1,    -1,   895,
4520
     395,    -1,    -1,    -1,    -1,   400,   401,    -1,   403,    -1,
4521
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4522
      -1,    -1,   918,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4523
      -1,    -1,   928,   929,    -1,    -1,   932,    -1,    -1,     1,
4524
     936,     3,    -1,    -1,    -1,    -1,    -1,    -1,   443,   444,
4525
      12,    -1,    -1,   288,    -1,    -1,    -1,    -1,    -1,    -1,
4526
     295,   296,    -1,    -1,    -1,   460,    -1,    -1,   303,    -1,
4527
      -1,    -1,    -1,    -1,    -1,    -1,   471,    -1,    -1,   314,
4528
      -1,    -1,    -1,    -1,   479,    -1,    -1,    -1,    -1,    51,
4529
      -1,    -1,    -1,    -1,   489,    -1,    -1,    -1,    -1,    -1,
4530
     996,    -1,   998,    -1,    -1,  1001,    -1,    -1,    -1,    -1,
4531
      -1,    -1,    -1,    -1,   349,    -1,    -1,    -1,    -1,   354,
4532
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   522,    -1,    -1,
4533
      -1,    -1,    -1,    -1,    -1,    -1,   531,    -1,    -1,   374,
4534
      -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,
4535
     545,    -1,   547,    -1,    -1,    -1,    -1,   119,    -1,    -1,
4536
     395,    -1,   557,    -1,    -1,   400,   401,    -1,    -1,    -1,
4537
      -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,    77,
4538
      78,    79,    80,    81,    82,    83,    -1,    -1,    -1,    -1,
4539
      88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4540
      -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
4541
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   612,    -1,    -1,
4542
       1,    -1,     3,    -1,   122,   460,   124,   125,   126,   127,
4543
     128,   129,   130,   131,   132,   133,   471,    -1,    -1,    -1,
4544
      -1,    -1,    -1,    -1,   479,    -1,    -1,    -1,   210,    -1,
4545
      -1,    -1,    -1,    -1,   489,    -1,    -1,    -1,    -1,    -1,
4546
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4547
      51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    51,    52,
4548
      -1,    -1,    55,    -1,    -1,   680,    -1,   522,    -1,    -1,
4549
      -1,    -1,    -1,    -1,    -1,    -1,   531,    70,    71,    72,
4550
      73,    74,    75,    76,    77,    -1,    -1,    80,    81,    -1,
4551
     545,    -1,   547,    86,    87,    88,    89,    -1,    -1,    -1,
4552
      -1,    -1,   557,    -1,    -1,    -1,   288,   100,   101,   102,
4553
      -1,    -1,    -1,   295,   296,    -1,    -1,    -1,   119,    -1,
4554
      -1,   303,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4555
      -1,   124,   125,   126,   127,   128,   129,   130,   131,   132,
4556
     133,    -1,   135,   136,    -1,    -1,    -1,    -1,    -1,    -1,
4557
     143,   144,    -1,    -1,    -1,    -1,    -1,   612,    -1,    -1,
4558
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   349,    -1,    -1,
4559
      -1,    -1,   354,    -1,    -1,    -1,   791,    -1,    -1,    -1,
4560
      -1,    -1,    -1,   798,   799,   800,    -1,    -1,    -1,    -1,
4561
      -1,   806,   374,    -1,    -1,    -1,    -1,   812,   813,    -1,
4562
      -1,    -1,    -1,   818,   819,    -1,    -1,    -1,    -1,   210,
4563
      -1,    -1,    -1,   395,    -1,    -1,    -1,   832,   400,    -1,
4564
      -1,   403,    -1,    -1,    -1,   680,    -1,    -1,    -1,   844,
4565
     845,    -1,    -1,    -1,    -1,    -1,    -1,   852,    -1,    -1,
4566
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   863,   864,
4567
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4568
      -1,   443,   444,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4569
      -1,    -1,    -1,    -1,    -1,   890,    -1,    -1,   460,    -1,
4570
     895,    -1,    -1,    -1,    -1,    -1,    -1,   288,    -1,   471,
4571
      -1,    -1,    -1,    -1,   295,   296,    -1,   479,    -1,    -1,
4572
      -1,    -1,   303,   918,    -1,    -1,    -1,   489,    -1,    -1,
4573
      -1,    -1,    -1,   928,   929,    -1,    -1,   932,    -1,    -1,
4574
      -1,   936,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4575
      -1,    -1,    -1,    -1,    -1,    -1,   791,    -1,    -1,    -1,
4576
     522,    -1,    -1,   798,   799,    -1,    -1,    -1,   349,   531,
4577
      -1,    -1,    -1,   354,    -1,    -1,    -1,    -1,    -1,    -1,
4578
      -1,    -1,    -1,   818,   819,    -1,    -1,    -1,    -1,    -1,
4579
      -1,    -1,    -1,   374,    -1,   557,    -1,   832,    -1,    -1,
4580
      -1,   996,    -1,   998,    -1,    -1,  1001,    -1,    -1,   844,
4581
     845,    -1,    -1,    -1,   395,    -1,    -1,   852,    -1,   400,
4582
      -1,    -1,   403,    -1,    -1,    -1,    -1,    -1,   863,   864,
4583
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,
4584
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4585
      -1,    -1,    -1,    -1,    -1,   890,    -1,    -1,    -1,    -1,
4586
     895,    -1,   443,   444,    -1,    -1,    -1,    72,    73,    74,
4587
      75,    76,    77,    78,    79,    80,    81,    82,    83,   460,
4588
      -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
4589
     471,    -1,    -1,   928,   929,    -1,   101,   932,   479,    -1,
4590
      -1,   936,    -1,    -1,    -1,    -1,    -1,    -1,   489,    -1,
4591
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   122,   680,   124,
4592
     125,   126,   127,   128,   129,   130,   131,   132,   133,    -1,
4593
      72,    73,    74,    75,    76,    77,    -1,   142,    80,    81,
4594
      -1,   522,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,
4595
     531,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
4596
      -1,   996,    -1,   998,    -1,    -1,  1001,    -1,    -1,    -1,
4597
      -1,    -1,    -1,    -1,    -1,    -1,   557,    -1,    -1,    -1,
4598
      -1,    -1,   124,   125,   126,   127,   128,   129,   130,   131,
4599
     132,   133,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4600
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4601
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4602
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   791,
4603
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   799,   800,    -1,
4604
      -1,    -1,    -1,    -1,   806,    -1,    -1,    -1,    -1,    -1,
4605
     812,   813,    -1,    -1,     0,    -1,   818,   819,    -1,    -1,
4606
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    13,    14,    15,
4607
     832,    17,    18,    -1,    20,    -1,    -1,    -1,    -1,    -1,
4608
      26,    -1,   844,   845,    -1,    -1,    -1,    -1,    -1,    -1,
4609
     852,    37,    38,    -1,    40,    41,    42,    43,    44,   680,
4610
      -1,   863,   864,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4611
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4612
      -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,
4613
      76,    77,    78,    79,    80,    81,    82,    83,    -1,    -1,
4614
      -1,    -1,    88,    89,    90,    -1,    92,    93,    -1,    -1,
4615
      -1,    -1,    -1,    -1,    -1,   101,   918,    -1,    -1,   105,
4616
      -1,    -1,    -1,    -1,    -1,    -1,   928,   929,    -1,   115,
4617
     932,    -1,   118,   119,   936,   121,   122,    -1,   124,   125,
4618
     126,   127,   128,   129,   130,   131,   132,   133,    -1,    -1,
4619
      -1,    -1,   138,   139,   140,    -1,   142,    -1,    -1,   145,
4620
     146,   147,   148,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4621
     791,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   799,   800,
4622
      -1,    -1,    -1,    51,    52,   806,    -1,    55,    -1,    -1,
4623
      -1,   812,   813,    -1,   996,    -1,   998,   818,   819,  1001,
4624
      -1,    -1,    70,    71,    72,    73,    74,    75,    76,    77,
4625
      -1,   832,    80,    81,    -1,    -1,    -1,    -1,    86,    87,
4626
      88,    89,    -1,   844,   845,    -1,    -1,    -1,    -1,    -1,
4627
      -1,   852,   100,   101,   102,    -1,    -1,    -1,    -1,    -1,
4628
      -1,    -1,   863,   864,    -1,    -1,    -1,    -1,    -1,    -1,
4629
      -1,    -1,    -1,    -1,    -1,    -1,   124,   125,   126,   127,
4630
     128,   129,   130,   131,   132,   133,    -1,   135,   136,    -1,
4631
      -1,    -1,    -1,    -1,    -1,   143,   144,    -1,    -1,    -1,
4632
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4633
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   918,    -1,    -1,
4634
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   928,   929,    -1,
4635
      -1,    -1,    -1,    -1,    -1,   936,    -1,    -1,    -1,    -1,
4636
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4637
      -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,     1,    -1,
4638
       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
4639
      -1,    -1,    -1,    -1,    -1,    -1,    19,    -1,    21,    22,
4640
      23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
4641
      33,    34,    35,    36,    -1,   996,    39,   998,    -1,    -1,
4642
    1001,    -1,    45,    46,    47,    48,    49,    50,    51,    52,
4643
      53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
4644
      63,    -1,    -1,    66,    67,    -1,    69,    70,    71,    -1,
4645
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4646
      -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    91,    -1,
4647
      -1,    94,    95,    -1,    97,    98,    -1,   100,    -1,    -1,
4648
      -1,   104,    -1,   106,   107,   108,    -1,   110,   111,   112,
4649
       0,   114,   115,    -1,    -1,   118,   119,    -1,    -1,    -1,
4650
      -1,    -1,    -1,    13,    14,    15,    16,    17,    18,    -1,
4651
      20,   134,   135,   136,    -1,    -1,    -1,    27,    28,    29,
4652
      -1,    -1,    -1,   146,    -1,   148,    -1,    37,    38,    -1,
4653
      40,    41,    42,    43,    44,    -1,    -1,    -1,    -1,    -1,
4654
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,
4655
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4656
      -1,    -1,    72,    73,    74,    75,    76,    77,    78,    79,
4657
      80,    81,    82,    83,    -1,    -1,    -1,    -1,    88,    89,
4658
      90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    99,
4659
      -1,   101,    -1,    -1,    -1,   105,    -1,    -1,    -1,    -1,
4660
      -1,    -1,    -1,   113,    -1,   115,    -1,    -1,   118,   119,
4661
      -1,    -1,   122,   123,   124,   125,   126,   127,   128,   129,
4662
     130,   131,   132,   133,    -1,    -1,     0,    -1,    -1,   139,
4663
     140,   141,   142,    -1,    -1,   145,   146,   147,   148,    13,
4664
      14,    15,    16,    17,    18,    -1,    20,    -1,    -1,    -1,
4665
      -1,    -1,    -1,    27,    28,    -1,    -1,    -1,    -1,    -1,
4666
      -1,    -1,    -1,    37,    38,    -1,    40,    41,    42,    43,
4667
      44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4668
      -1,    -1,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,
4669
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
4670
      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
4671
      -1,    -1,    -1,    -1,    88,    89,    90,    -1,    92,    93,
4672
      -1,    -1,    -1,    -1,    -1,    99,    -1,   101,    -1,    -1,
4673
      -1,   105,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4674
      -1,   115,    -1,    -1,   118,   119,    -1,   121,   122,    -1,
4675
     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
4676
      -1,    -1,     0,    -1,    -1,   139,   140,   141,   142,    -1,
4677
      -1,   145,   146,   147,   148,    13,    14,    15,    16,    17,
4678
      18,    -1,    20,    -1,    -1,    -1,    -1,    -1,    26,    27,
4679
      28,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
4680
      38,    -1,    40,    41,    42,    43,    44,    -1,    -1,    -1,
4681
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4682
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4683
      -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,    77,
4684
      78,    79,    80,    81,    82,    83,    -1,    -1,    -1,    -1,
4685
      88,    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,
4686
      -1,    99,    -1,   101,    -1,    -1,    -1,   105,    -1,    -1,
4687
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   115,    -1,    -1,
4688
     118,   119,    -1,    -1,   122,    -1,   124,   125,   126,   127,
4689
     128,   129,   130,   131,   132,   133,    -1,    -1,     0,    -1,
4690
     138,   139,   140,   141,   142,    -1,   144,   145,   146,   147,
4691
     148,    13,    14,    15,    16,    17,    18,    -1,    20,    -1,
4692
      -1,    -1,    -1,    -1,    -1,    27,    28,    -1,    -1,    -1,
4693
      -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,    41,
4694
      42,    43,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4695
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4696
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4697
      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
4698
      82,    83,    -1,    -1,    -1,    -1,    88,    89,    90,    -1,
4699
      -1,    93,    -1,    -1,    -1,    -1,    -1,    99,    -1,   101,
4700
      -1,    -1,    -1,   105,    -1,    -1,    -1,    -1,    -1,    -1,
4701
      -1,    -1,    -1,   115,    -1,    -1,   118,   119,    -1,    -1,
4702
     122,    -1,   124,   125,   126,   127,   128,   129,   130,   131,
4703
     132,   133,    -1,    -1,     0,    -1,    -1,   139,   140,   141,
4704
     142,    -1,   144,   145,   146,   147,   148,    13,    14,    15,
4705
      -1,    17,    18,    -1,    20,    -1,    -1,    -1,    -1,    -1,
4706
      26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4707
      -1,    37,    38,    -1,    40,    41,    42,    43,    44,    -1,
4708
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4709
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4710
      -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,
4711
      76,    77,    78,    79,    80,    81,    82,    83,    -1,    -1,
4712
      -1,    -1,    88,    89,    90,    -1,    92,    93,    -1,    -1,
4713
      -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,   105,
4714
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   115,
4715
      -1,    -1,   118,   119,    -1,   121,   122,    -1,   124,   125,
4716
     126,   127,   128,   129,   130,   131,   132,   133,    -1,    -1,
4717
       0,    -1,   138,   139,   140,    -1,   142,    -1,    -1,   145,
4718
     146,   147,   148,    13,    14,    15,    -1,    17,    18,    -1,
4719
      20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4720
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
4721
      40,    41,    42,    43,    44,    -1,    -1,    -1,    -1,    -1,
4722
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4723
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4724
      -1,    -1,    72,    73,    74,    75,    76,    77,    78,    79,
4725
      80,    81,    82,    83,    -1,    -1,    -1,    -1,    88,    89,
4726
      90,    -1,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,
4727
      -1,   101,    -1,    -1,    -1,   105,    -1,    -1,    -1,    -1,
4728
      -1,    -1,    -1,    -1,    -1,   115,    -1,    -1,   118,   119,
4729
      -1,   121,   122,    -1,   124,   125,   126,   127,   128,   129,
4730
     130,   131,   132,   133,    -1,    -1,     0,    -1,    -1,   139,
4731
     140,    -1,   142,    -1,    -1,   145,   146,   147,   148,    13,
4732
      14,    15,    -1,    17,    18,    -1,    20,    -1,    -1,    -1,
4733
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4734
      -1,    -1,    -1,    37,    38,    -1,    40,    41,    42,    43,
4735
      44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4736
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4737
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
4738
      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
4739
      -1,    -1,    -1,    -1,    88,    89,    90,    -1,    92,    93,
4740
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,
4741
      -1,   105,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4742
      -1,   115,    -1,    -1,   118,   119,    -1,   121,   122,    -1,
4743
     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
4744
      -1,    -1,    -1,    -1,    -1,   139,   140,    -1,   142,    -1,
4745
      -1,   145,   146,   147,   148,     1,    -1,     3,     4,     5,
4746
       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
4747
      -1,    -1,    18,    19,    -1,    21,    22,    23,    24,    -1,
4748
      -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,    35,
4749
      36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    45,
4750
      -1,    47,    48,    49,    50,    51,    52,    53,    54,    55,
4751
      56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,
4752
      66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,
4753
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,
4754
      -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    94,    95,
4755
      -1,    97,    98,    -1,   100,    -1,    -1,    -1,   104,    -1,
4756
     106,   107,   108,    -1,   110,   111,   112,    -1,   114,   115,
4757
      -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    -1,    -1,
4758
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,   135,
4759
     136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4760
     146,     1,   148,     3,     4,     5,     6,     7,     8,     9,
4761
      10,    11,    12,    -1,    -1,    15,    -1,    17,    18,    19,
4762
      -1,    21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,
4763
      30,    31,    32,    33,    34,    35,    36,    -1,    -1,    39,
4764
      -1,    -1,    -1,    -1,    -1,    45,    -1,    47,    48,    49,
4765
      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
4766
      60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,
4767
      70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4768
      -1,    -1,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,
4769
      -1,    91,    -1,    -1,    94,    95,    -1,    97,    98,    -1,
4770
     100,    -1,    -1,    -1,   104,    -1,   106,   107,   108,    -1,
4771
     110,   111,   112,    -1,   114,   115,    -1,    -1,   118,   119,
4772
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4773
      -1,    -1,    -1,    -1,   134,   135,   136,    -1,    -1,    -1,
4774
      -1,    -1,    -1,    -1,    -1,    -1,   146,     1,   148,     3,
4775
       4,     5,     6,     7,     8,     9,    10,    11,    12,    -1,
4776
      -1,    15,    -1,    -1,    18,    19,    20,    21,    22,    23,
4777
      24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,
4778
      34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,
4779
      -1,    45,    -1,    47,    48,    49,    50,    51,    52,    53,
4780
      54,    55,    56,    -1,    58,    59,    60,    -1,    -1,    63,
4781
      -1,    -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,
4782
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4783
      84,    85,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,
4784
      94,    95,    -1,    97,    98,    -1,   100,    -1,    -1,    -1,
4785
     104,    -1,   106,   107,   108,    -1,   110,   111,   112,    -1,
4786
     114,   115,    -1,    -1,   118,   119,    -1,    -1,    -1,    -1,
4787
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4788
     134,   135,   136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4789
      -1,    -1,   146,     1,   148,     3,     4,     5,     6,     7,
4790
       8,     9,    10,    11,    12,    -1,    -1,    15,    -1,    -1,
4791
      18,    19,    -1,    21,    22,    23,    24,    -1,    -1,    -1,
4792
      -1,    -1,    30,    31,    32,    33,    34,    35,    36,    -1,
4793
      -1,    39,    -1,    -1,    -1,    -1,    -1,    45,    -1,    47,
4794
      48,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
4795
      58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,
4796
      -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,
4797
      -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    -1,    -1,
4798
      -1,    -1,    -1,    91,    -1,    -1,    94,    95,    -1,    97,
4799
      98,    -1,   100,    -1,    -1,    -1,   104,    -1,   106,   107,
4800
     108,    -1,   110,   111,   112,    -1,   114,   115,    -1,    -1,
4801
     118,   119,     1,    -1,     3,     4,     5,     6,     7,     8,
4802
       9,    10,    11,    12,    -1,    -1,   134,   135,   136,    -1,
4803
      19,    -1,    21,    22,    23,    24,    -1,    -1,   146,    -1,
4804
     148,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
4805
      39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,
4806
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    58,
4807
      59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,
4808
      69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4809
      -1,    -1,    -1,    -1,    -1,    84,    85,    -1,    -1,    -1,
4810
      -1,    -1,    91,    -1,    -1,    94,    95,    -1,    97,    98,
4811
      -1,   100,    -1,    -1,    -1,   104,    -1,   106,   107,   108,
4812
      -1,   110,   111,   112,    -1,   114,   115,    -1,    -1,   118,
4813
     119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4814
      -1,    -1,    -1,    -1,    -1,   134,   135,   136,    -1,    -1,
4815
     139,    -1,    -1,    -1,    -1,    -1,    -1,   146,     1,   148,
4816
       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
4817
      -1,    14,    15,    -1,    -1,    -1,    19,    -1,    21,    22,
4818
      23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
4819
      33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
4820
      -1,    -1,    45,    -1,    47,    48,    49,    50,    51,    52,
4821
      53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
4822
      63,    -1,    -1,    66,    67,    -1,    69,    70,    71,    -1,
4823
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4824
      -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    91,    -1,
4825
      -1,    94,    95,    -1,    97,    98,    -1,   100,    -1,    -1,
4826
      -1,   104,    -1,   106,   107,   108,    -1,   110,   111,   112,
4827
      -1,   114,   115,    -1,    -1,   118,   119,     1,    -1,     3,
4828
       4,     5,     6,     7,     8,     9,    10,    11,    12,    -1,
4829
      -1,   134,   135,   136,    -1,    19,    -1,    21,    22,    23,
4830
      24,    -1,    -1,   146,    -1,   148,    30,    31,    32,    33,
4831
      34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,
4832
      -1,    45,    -1,    47,    48,    49,    50,    51,    52,    53,
4833
      54,    55,    56,    -1,    58,    59,    60,    -1,    -1,    63,
4834
      -1,    -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,
4835
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4836
      84,    85,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,
4837
      94,    95,    -1,    97,    98,    -1,   100,    -1,    -1,    -1,
4838
     104,    -1,   106,   107,   108,    -1,   110,   111,   112,    -1,
4839
     114,   115,    -1,    -1,   118,   119,     1,    -1,     3,     4,
4840
       5,     6,     7,     8,     9,    10,    11,    12,    -1,    -1,
4841
     134,   135,   136,    -1,    19,    -1,    21,    22,    23,    24,
4842
      -1,   145,   146,    -1,   148,    30,    31,    32,    33,    34,
4843
      35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
4844
      45,    -1,    47,    48,    49,    50,    51,    52,    53,    54,
4845
      55,    56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,
4846
      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,
4847
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
4848
      85,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    94,
4849
      95,    -1,    97,    98,    -1,   100,    -1,    -1,    -1,   104,
4850
      -1,   106,   107,   108,    -1,   110,   111,   112,    -1,   114,
4851
     115,    -1,    -1,   118,   119,     1,    -1,     3,     4,     5,
4852
       6,     7,     8,     9,    10,    11,    12,    -1,    -1,   134,
4853
     135,   136,    -1,    19,    -1,    21,    22,    23,    24,    -1,
4854
     145,   146,    -1,   148,    30,    31,    32,    33,    34,    35,
4855
      36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    45,
4856
      -1,    47,    48,    49,    50,    51,    52,    53,    54,    55,
4857
      56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,
4858
      66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,
4859
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,
4860
      -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    94,    95,
4861
      -1,    97,    98,    -1,   100,    -1,    -1,    -1,   104,    -1,
4862
     106,   107,   108,    -1,   110,   111,   112,    -1,   114,   115,
4863
      -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    -1,    -1,
4864
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,   135,
4865
     136,    -1,    -1,   139,    -1,    -1,    -1,    -1,    -1,    -1,
4866
     146,     1,   148,     3,     4,     5,     6,     7,     8,     9,
4867
      10,    11,    12,    -1,    -1,    15,    -1,    -1,    -1,    19,
4868
      -1,    21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,
4869
      30,    31,    32,    33,    34,    35,    36,    -1,    -1,    39,
4870
      -1,    -1,    -1,    -1,    -1,    45,    -1,    47,    48,    49,
4871
      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
4872
      60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,
4873
      70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4874
      -1,    -1,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,
4875
      -1,    91,    -1,    -1,    94,    95,    -1,    97,    98,    -1,
4876
     100,    -1,    -1,    -1,   104,    -1,   106,   107,   108,    -1,
4877
     110,   111,   112,    -1,   114,   115,    -1,    -1,   118,   119,
4878
      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
4879
      11,    12,    -1,    -1,   134,   135,   136,    -1,    19,    -1,
4880
      21,    22,    23,    24,    -1,    -1,   146,    -1,   148,    30,
4881
      31,    32,    33,    34,    35,    36,    -1,    -1,    39,    -1,
4882
      -1,    -1,    -1,    -1,    45,    46,    47,    48,    49,    50,
4883
      51,    52,    53,    54,    55,    56,    -1,    58,    59,    60,
4884
      -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,    70,
4885
      71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4886
      -1,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,
4887
      91,    -1,    -1,    94,    95,    -1,    97,    98,    -1,   100,
4888
      -1,    -1,    -1,   104,    -1,   106,   107,   108,    -1,   110,
4889
     111,   112,    -1,   114,   115,    -1,    -1,   118,   119,    -1,
4890
      -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
4891
      12,    -1,    -1,   134,   135,   136,    -1,    19,    -1,    21,
4892
      22,    23,    24,    -1,    -1,   146,    -1,   148,    30,    31,
4893
      32,    33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,
4894
      -1,    -1,    -1,    45,    -1,    47,    48,    49,    50,    51,
4895
      52,    53,    54,    55,    56,    -1,    58,    59,    60,    -1,
4896
      -1,    63,    -1,    -1,    66,    67,    -1,    69,    70,    71,
4897
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4898
      -1,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    91,
4899
      -1,    -1,    94,    95,    -1,    97,    98,    -1,   100,    -1,
4900
      -1,    -1,   104,    -1,   106,   107,   108,    -1,   110,   111,
4901
     112,    -1,   114,   115,    -1,    -1,   118,   119,    -1,    -1,
4902
       3,     4,     5,     6,     7,     8,     9,    10,    11,    -1,
4903
      -1,    -1,   134,   135,   136,    -1,    19,    -1,    21,    22,
4904
      23,    24,    -1,    -1,   146,    -1,   148,    30,    31,    32,
4905
      33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
4906
      -1,    -1,    -1,    -1,    -1,    48,    49,    50,    51,    52,
4907
      53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
4908
      63,    -1,    -1,    66,    67,    -1,    69,    70,    71,    -1,
4909
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4910
      -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    91,    -1,
4911
      -1,    94,    95,    -1,    97,    98,    -1,    -1,    -1,    -1,
4912
      -1,   104,    -1,   106,   107,   108,    -1,   110,   111,   112,
4913
      -1,   114,   115,    -1,    -1,   118,   119,    -1,    -1,     3,
4914
       4,     5,     6,     7,     8,     9,    10,    11,    -1,    -1,
4915
      -1,   134,   135,   136,    -1,    19,    -1,    21,    22,    23,
4916
      24,    -1,    -1,   146,    -1,   148,    30,    31,    32,    33,
4917
      34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,
4918
      -1,    -1,    -1,    -1,    48,    49,    50,    51,    52,    53,
4919
      54,    55,    56,    -1,    58,    59,    60,    -1,    -1,    63,
4920
      -1,    -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,
4921
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4922
      84,    85,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,
4923
      94,    95,    -1,    97,    98,    -1,    -1,    -1,    -1,    -1,
4924
     104,    -1,   106,   107,   108,    -1,   110,   111,   112,    -1,
4925
     114,   115,    -1,    -1,   118,   119,    -1,    -1,     3,     4,
4926
       5,     6,     7,     8,     9,    10,    11,    -1,    -1,    -1,
4927
     134,   135,   136,    -1,    19,    -1,    21,    22,    23,    24,
4928
      -1,    -1,   146,    -1,   148,    30,    31,    32,    33,    34,
4929
      35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
4930
      -1,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
4931
      55,    56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,
4932
      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,
4933
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
4934
      85,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    94,
4935
      95,    -1,    97,    98,    -1,    -1,    -1,    -1,    -1,   104,
4936
      -1,   106,   107,   108,    -1,   110,   111,   112,    -1,   114,
4937
     115,    -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    -1,
4938
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,
4939
     135,   136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4940
      -1,    -1,    -1,   148,     3,     4,     5,     6,     7,     8,
4941
       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
4942
      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
4943
      -1,    30,    31,    32,    33,    34,    35,    36,    37,    38,
4944
      39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,
4945
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
4946
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4947
      69,    70,    71,    72,    73,    74,    75,    76,    77,    -1,
4948
      -1,    80,    81,    -1,    -1,    -1,    -1,    86,    87,    88,
4949
      89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4950
      -1,   100,   101,   102,    -1,    -1,    -1,    -1,    -1,    -1,
4951
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4952
      -1,    -1,    -1,    -1,    -1,   124,   125,   126,   127,   128,
4953
     129,   130,   131,   132,   133,    -1,   135,   136,    -1,    -1,
4954
      -1,    -1,    -1,    -1,   143,   144,     3,     4,     5,     6,
4955
       7,     8,     9,    10,    11,    -1,    -1,    -1,    -1,    -1,
4956
      -1,    -1,    19,    -1,    21,    22,    23,    24,    -1,    26,
4957
      -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
4958
      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,