Changeset fb08280


Ignore:
Timestamp:
Jun 8, 2016, 12:58:01 PM (8 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
9e5f409
Parents:
efbca69 (diff), ac78e25 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

Files:
14 edited

Legend:

Unmodified
Added
Removed
  • doc/working/resolver_design.md

    refbca69 rfb08280  
    8787element-wise; summation starts at `(0, 0, 0, 0)`.
    8888
    89 **TODO** Costs of T, T*, lvalue T, rvalue T conversions (if applicable)
    90 
    91 ### Lvalue Conversions ###
    92 **TODO** Finish me
    93 
    94 #### NOTES
    95 * C standard 6.3.2.1
    96 * pointer_like_generators.md
    97 
    98 ### Qualifier Conversions ###
    99 **TODO** Finish me
    100 
    101 #### NOTES
    102 C standard 6.3.2.3.2: We can add any qualifier to the pointed-to-type of a
    103 pointer.
    104 * Glen thinks this means that we should make the default assignment operator
    105   `?=?(T volatile restrict *this, T that)`, but I'm not sure I like the
    106   implications for the actual implementation of forcing `this` to be
    107   volatile
    108 * I want to consider whether this property should generalize to other
    109   parameterized types (e.g. `lvalue T`, `box(T)`)
    110 
    111 C standard 6.3.2.1.1: "modifiable lvalues" recursively exclude structs with
    112 const-qualified fields
    113 
    114 C standard 6.3.2.1.2: Using lvalues as rvalues implicitly strips qualifiers
    115 
    116 C standard 6.2.4.26:
    117 
    118 C standard 6.7.3: **TODO**
     89### Lvalue and Qualifier Conversions ###
     90C defines the notion of a _lvalue_, essentially an addressable object, as well
     91as a number of type _qualifiers_, `const`, `volatile`, and `restrict`.
     92As these type qualifiers are generally only meaningful to the type system as
     93applied to lvalues, the two concepts are closely related.
     94A const lvalue cannot be modified, the compiler cannot assume that a volatile
     95lvalue will not be concurrently modified by some other part of the system, and
     96a restrict lvalue must have pointer type, and the compiler may assume that no
     97other pointer in scope aliases that pointer (this is solely a performance
     98optimization, and may be ignored by implementers).
     99_Lvalue-to-rvalue conversion_, which takes an lvalue of type `T` and converts
     100it to an expression result of type `T` (commonly called an _rvalue_ of type
     101`T`) also strips all the qualifiers from the lvalue, as an expression result
     102is a value, not an addressable object that can have properties like
     103immutability.
     104Though lvalue-to-rvalue conversion strips the qualifiers from lvalues,
     105derived rvalue types such as pointer types may include qualifiers;
     106`const int *` is a distinct type from `int *`, though the latter is safely
     107convertable to the former.
     108In general, any number of qualifiers can be safely added to the
     109pointed-to-type of a pointer type, e.g. `int *` converts safely to
     110`const int *` and `volatile int *`, both of which convert safely to
     111`const volatile int *`.
     112
     113Since lvalues are precicely "addressable objects", in C, only lvalues can be
     114used as the operand of the `&` address-of operator.
     115Similarly, only modifiable lvalues may be used as the assigned-to
     116operand of the mutating operators: assignment, compound assignment
     117(e.g. `+=`), and increment and decrement; roughly speaking, lvalues without
     118the `const` qualifier are modifiable, but lvalues of incomplete types, array
     119types, and struct or union types with const members are also not modifiable.
     120Lvalues are produced by the following expressions: object identifiers
     121(function identifiers are not considered to be lvalues), the result of the `*`
     122dereference operator applied to an object pointer, the result of a member
     123expression `s.f` if the left argument `s` is an lvalue (note that the
     124preceding two rules imply that the result of indirect member expressions
     125`s->f` are always lvalues, by desugaring to `(*s).f`), and the result of the
     126indexing operator `a[i]` (similarly by its desugaring to `*((a)+(i))`).
     127Somewhat less obviously, parenthesized lvalue expressions, string literals,
     128and compound literals (e.g. `(struct foo){ 'x', 3.14, 42 }`) are also lvalues.
     129
     130All of the conversions described above are defined in standard C, but Cforall
     131requires further features from its type system.
     132In particular, to allow overloading of the `*?` and `?[?]` dereferencing and
     133indexing operators, Cforall requires a way to declare that the functions
     134defining these operators return lvalues, and since C functions never return
     135lvalues and for syntactic reasons we wish to distinguish functions which
     136return lvalues from functions which return pointers, this is of necessity an
     137extension to standard C.
     138In the current design, an `lvalue` qualifier can be added to function return
     139types (and only to function return types), the effect of which is to return a
     140pointer which is implicitly dereferenced by the caller.
     141C++ includes the more general concept of _references_, which are typically
     142implemented as implicitly dereferenced pointers as well.
     143Another use case which C++ references support is providing a way to pass
     144function parameters by reference (rather than by value) with a natural
     145syntax; Cforall in its current state has no such mechanism.
     146As an example, consider the following (currently typical) copy-constructor
     147signature and call:
     148
     149        void ?{}(T *lhs, T rhs);
     150       
     151        T x;
     152        T y = { x };
     153
     154Note that the right-hand argument is passed by value, and would in fact be
     155copied twice in the course of the constructor call `T y = { x };` (once into
     156the parameter by C's standard `memcpy` semantics, once again in the body of
     157the copy constructor, though it is possible that return value optimization
     158will elide the `memcpy`-style copy).
     159However, to pass by reference using the existing pointer syntax, the example
     160above would look like this:
     161
     162        void ?{}(T *lhs, const T *rhs);
     163       
     164        T x;
     165        T y = { &x };
     166
     167This example is not even as bad as it could be; assuming pass-by-reference is
     168the desired semantics for the `?+?` operator, that implies the following
     169design today:
     170
     171        T ?+?(const T *lhs, const T *rhs);
     172       
     173        T a, b;
     174        T c = &a + &b,
     175
     176In addition to `&a + &b` being unsightly and confusing syntax to add `a` and
     177`b`, it also introduces a possible ambiguity with pointer arithmetic on `T*`
     178which can only be resolved by return-type inference.
     179
     180Pass-by-reference and marking functions as returning lvalues instead of the
     181usual rvalues are actually closely related concepts, as obtaining a reference
     182to pass depends on the referenced object being addressable, i.e. an lvalue,
     183and lvalue return types are effectively return-by-reference.
     184Cforall should also unify the concepts, with a parameterized type for
     185"reference to `T`", which I will write `ref T`.
     186Syntax bikeshedding can be done later (there are some examples at the bottom
     187of this section), but `ref T` is sufficiently distinct from both the existing
     188`lvalue T` (which it subsumes) and the closely related C++ `T&` to allow
     189independent discussion of its semantics.
     190
     191Firstly, assignment to a function parameter as part of a function call and
     192local variable initialization have almost identical semantics, so should be
     193treated similarly for the reference type too; this implies we should be able
     194to declare local variables of reference type, as in the following:
     195
     196        int x = 42;
     197        ref int r = x; // r is now an alias for x
     198
     199Unlike in C++, we would like to have the capability to re-bind references
     200after initialization, as this allows the attractive syntax of references to
     201support some further useful code patterns, such as first initializing a
     202reference after its declaration.
     203Constant references to `T` (`const ref T`) should not be re-bindable.
     204
     205One option for re-binding references is to use a dedicated operator, as in the
     206code example below:
     207
     208        int i = 42, j = 7;
     209        ref int r = i; // bind r to i
     210        r = j;         // set i (== r) to 7
     211        r := j;        // rebind r to j using the new := rebind operator
     212        i = 42;        // reset i (!= r) to 42
     213        assert( r == 7 );
     214
     215The other syntactic option for reference re-bind would be to overload
     216assignment and use type inference on the left and right-hand sides to
     217determine whether the referred-to variable on the left should be reassigned to
     218the value on the right, or if the reference on the left should be aliased to
     219the reference on the right.
     220This could be disambiguated with casts, as in the following code example:
     221
     222        int i
     223        int j;
     224        ref int r = i;   // (0a)
     225        ref int s = i;   // (0b)
     226       
     227        i = j;           // (1)
     228        i = (int)s;      // (2)
     229        i = s;           // (3)
     230        // ---------------------
     231        r = s;           // (4)
     232        r = (ref int)j;  // (5)
     233        // ---------------------
     234        r = j;           // (6)
     235        r = (int)s;      // (7)
     236
     237By the expected aliasing syntax, (0a) and (0b) are initializing `r` and `s` as
     238aliases for `i`.
     239For C compatibility, (1) has to be assignment; in general, any assignment to a
     240non-reference type should be assignment, so (2) and (3) are as well.
     241By types, (4) and (5) should have the same semantics, and the semantics of (6)
     242and (7) should match as well.
     243This suggests that (4) and (5) are reference re-bind, and (6) and (7) are an
     244assignment to the referred variable; this makes the syntax to explicitly alias
     245a local variable rather ugly (and inconsistent with the initialization
     246syntax), as well as making it rather awkward to copy the value stored in one
     247reference-type variable into another reference type variable (which is likely
     248more painful in functions with by-reference parameters than with local
     249variables of reference type).
     250
     251Because of the aforementioned issues with overloading assignment as reference
     252rebind, in addition to the fact that reference rebind should not be a
     253user-overloadable operator (unlike assignment), I propose refererence rebind
     254should have its own dedicated operator.
     255
     256The semantics and restrictions of `ref T` are effectively the semantics of an
     257lvalue of type `T`, and by this analogy there should be a safe, qualifier
     258dropping conversion from `ref const volatile restrict T` (and every other
     259qualifier combination on the `T` in `ref T`) to `T`.
     260With this conversion, the resolver may type most expressions that C would
     261call "lvalue of type `T`" as `ref T`.
     262There's also an obvious argument that lvalues of a (possibly-qualified) type
     263`T` should be convertable to references of type `T`, where `T` is also
     264so-qualified (e.g. lvalue `int` to `ref int`, lvalue `const char` to
     265`ref const char`).
     266By similar arguments to pointer types, qualifiers should be addable to the
     267referred-to type of a reference (e.g. `ref int` to `ref const int`).
     268As a note, since pointer arithmetic is explictly not defined on `ref T`,
     269`restrict ref T` should be allowable and would have alias-analysis rules that
     270are actually comprehensible to mere mortals.
     271
     272Using pass-by-reference semantics for function calls should not put syntactic
     273constraints on how the function is called; particularly, temporary values
     274should be able to be passed by reference.
     275The mechanism for this pass-by-reference would be to store the value of the
     276temporary expression into a new unnamed temporary, and pass the reference of
     277that temporary to the function.
     278As an example, the following code should all compile and run:
     279
     280        void f(ref int x) { printf("%d\n", x++); }
     281       
     282        int i = 7, j = 11;
     283        const int answer = 42;
     284       
     285        f(i);      // (1)
     286        f(42);     // (2)
     287        f(i + j);  // (3)
     288        f(answer); // (4)
     289
     290The semantics of (1) are just like C++'s, "7" is printed, and `i` has the
     291value 8 afterward.
     292For (2), "42" is printed, and the increment of the unnamed temporary to 43 is
     293not visible to the caller; (3) behaves similarly, printing "19", but not
     294changing `i` or `j`.
     295(4) is a bit of an interesting case; we want to be able to support named
     296constants like `answer` that can be used anywhere the constant expression
     297they're replacing (like `42`) could go; in this sense, (4) and (2) should have
     298the same semantics.
     299However, we don't want the mutation to the `x` parameter to be visible in
     300`answer` afterward, because `answer` is a constant, and thus shouldn't change.
     301The solution to this is to allow chaining of the two `ref` conversions;
     302`answer` has the type `ref const int`, which can be converted to `int` by the
     303lvalue-to-rvalue conversion (which drops the qualifiers), then up to `ref int`
     304by the temporary-producing rvalue-to-lvalue conversion.
     305Thus, an unnamed temporary is inserted, initialized to `answer` (i.e. 42),
     306mutated by `f`, then discarded; "42" is printed, just as in case (2), and
     307`answer` still equals 42 after the call, because it was the temporary that was
     308mutated, not `answer`.
     309It may be somewhat surprising to C++ programmers that `f(i)` mutates `i` while
     310`f(answer)` does not mutate `answer` (though `f(answer)` would be illegal in
     311C++, leading to the dreaded "const hell"), but the behaviour of this rule can
     312be determined by examining local scope with the simple rule "non-`const`
     313references to `const` variables produce temporaries", which aligns with
     314programmer intuition that `const` variables cannot be mutated.
     315
     316To bikeshed syntax for `ref T`, there are three basic options: language
     317keywords (`lvalue T` is already in Cforall), compiler-supported "special"
     318generic types (e.g. `ref(T)`), or sigils (`T&` is familiar to C++
     319programmers).
     320Keyword or generic based approaches run the risk of name conflicts with
     321existing code, while any sigil used would have to be carefully chosen to not
     322create parsing conflicts.
     323
     324**TODO** Consider arguments for move semantics and see if there is a
     325compelling case for rvalue references.
    119326
    120327### Conversion Operator Costs ###
     
    624831perfectly legal and has the desired semantics.
    625832
     833We can assert that `T` can be used in a boolean context as follows:
     834
     835        `forall(otype T | { int ?!=?(T, _zero_t); })`
     836 
     837Since the C standard (6.5.16.1.1) specifically states that pointers can be
     838assigned into `_Bool` variables (and implies that other artithmetic types can
     839be assigned into `_Bool` variables), it seems natural to say that assignment
     840into a `_Bool` variable effectively constitutes a boolean context.
     841To allow this interpretation, I propose including the following function (or
     842its effective equivalent) in the prelude:
     843
     844        forall(otype T | { int ?!=?(T, _zero_t); })
     845        void ?{safe}( _Bool *this, T that ) { *this = that != 0; }
     846
     847Note that this conversion is not transitive; that is, for `t` a variable of
     848some "truthy" type `T`, `(_Bool)t;` would use this conversion (in the absence
     849of a lower-cost one), `(int)t;` would not use this conversion (and in fact
     850would not be legal in the absence of another valid way to convert a `T` to an
     851`int`), but `(int)(_Bool)t;` could legally use this conversion.
     852
    626853Similarly giving literal `1` the special type `_unit_t` allows for more
    627854concise and consistent specification of the increment and decrement operators,
     
    714941then take the non-deleted alternative, and of two equivalent-cost deleted
    715942interpretations with the same return type pick one arbitrarily rather than
    716 producing an ambiguous resolution.
     943producing an ambiguous resolution. This would also be useful for forbidding
     944pointer-to-floating-point explicit conversions (C11, 6.5.4.4).
     945**TODO** Cover default parameters, maybe named parameters (see "named
     946arguments" thread of 11 March 2016)
     947 
    717948
    718949### Sizeof, Alignof & Offsetof Expressions ###
     
    732963for each interpretation `J` of `y` with the same type as `J` costing the sum
    733964of the costs of `I` and `J`.
     965
     966### Index Expressions ###
     967**TODO** Consider adding polymorphic function in prelude for this, as per
     9686.5.2.1.2 in the C standard:
     969
     970        forall(otype T, otype I, otype R, otype E | { R ?+?(T, I); lvalue E *?(R); })
     971        lvalue E ?[?](T a, I i) { return *(a + i); }
     972
     973I think this isn't actually a good idea, because the cases for it are niche,
     974mostly odd tricks like `0[p]` as an alternate syntax for dereferencing a
     975pointer `p`, and adding it to the prelude would slow down resolution of
     976every index expression just a bit. Our existing prelude includes an indexing
     977operator `forall(otype T) lvalue T ?[?](ptrdiff_t, T*)`, plus qualified
     978variants, which should satisfy C source-compatibility without propegating this
     979silly desugaring further.
    734980
    735981#### Compatible Functions ####
  • src/Makefile.in

    refbca69 rfb08280  
    414414          esac; \
    415415        done; \
    416         echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
     416        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
    417417        $(am__cd) $(top_srcdir) && \
    418           $(AUTOMAKE) --gnu src/Makefile
     418          $(AUTOMAKE) --foreign src/Makefile
    419419.PRECIOUS: Makefile
    420420Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
  • src/Parser/lex.cc

    refbca69 rfb08280  
    382382        (yy_c_buf_p) = yy_cp;
    383383
    384 #define YY_NUM_RULES 180
    385 #define YY_END_OF_BUFFER 181
     384#define YY_NUM_RULES 181
     385#define YY_END_OF_BUFFER 182
    386386/* This struct is not used in this scanner,
    387387   but its presence is necessary. */
     
    391391        flex_int32_t yy_nxt;
    392392        };
    393 static yyconst flex_int16_t yy_accept[888] =
     393static yyconst flex_int16_t yy_accept[889] =
    394394    {   0,
    395395        0,    0,    0,    0,    0,    0,  115,  115,  118,  118,
    396       181,  179,    7,    9,    8,  138,  117,  102,  143,  146,
     396      182,  180,    7,    9,    8,  138,  117,  102,  143,  146,
    397397      114,  125,  126,  141,  139,  129,  140,  132,  142,  107,
    398       108,  109,  130,  131,  148,  150,  149,  151,  179,  102,
    399       123,  179,  124,  144,  102,  104,  102,  102,  102,  102,
     398      108,  109,  130,  131,  148,  150,  149,  151,  180,  102,
     399      123,  180,  124,  144,  102,  104,  102,  102,  102,  102,
    400400      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    401       102,  102,  127,  147,  128,  145,    7,  179,    4,    4,
    402       180,  105,  180,  106,  115,  116,  122,  118,  119,    7,
    403         9,    0,    8,  155,  174,  102,    0,  167,  137,  160,
     401      102,  102,  127,  147,  128,  145,    7,  180,    4,    4,
     402      181,  105,  181,  106,  115,  116,  122,  118,  119,    7,
     403        9,    0,    8,  155,  175,  102,    0,  167,  137,  160,
    404404      168,  165,  152,  163,  153,  164,  162,    0,  112,    3,
    405405
    406406        0,  166,  112,  110,    0,    0,  110,  110,    0,    0,
    407       110,  109,  109,  109,    0,  109,  135,  136,  134,  156,
    408       158,  154,  159,  157,    0,    0,    0,    0,    0,    0,
    409         0,    0,    0,    0,    0,    0,    0,    0,    0,  103,
    410       173,    0,  117,  114,  102,    0,    0,  170,    0,  102,
     407      110,  109,  109,  109,    0,  109,  174,  135,  136,  134,
     408      156,  158,  154,  159,  157,    0,    0,    0,    0,    0,
     409        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     410      103,  173,    0,  117,  114,  102,    0,    0,  170,    0,
    411411      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    412       102,  102,  102,  102,  102,  102,   38,  102,  102,  102,
    413       102,  102,  102,  102,  102,  102,  102,   56,  102,  102,
     412      102,  102,  102,  102,  102,  102,  102,   38,  102,  102,
     413      102,  102,  102,  102,  102,  102,  102,  102,   56,  102,
    414414      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    415       102,  102,  102,  102,  169,  161,    7,    0,    0,    0,
    416 
    417         2,    0,    5,  105,    0,    0,    0,  115,    0,  121,
    418       120,  120,    0,    0,    0,  118,    0,    0,    0,    0,
     415      102,  102,  102,  102,  102,  169,  161,    7,    0,    0,
     416
     417        0,    2,    0,    5,  105,    0,    0,    0,  115,    0,
     418      121,  120,  120,    0,    0,    0,  118,    0,    0,    0,
    419419        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    420         0,  133,  112,  112,    0,  112,  112,    0,    0,    6,
    421         0,  110,    0,    0,    0,  112,    0,  110,  110,  110,
    422       110,    0,  111,    0,    0,  109,  109,  109,  109,    0,
    423       171,  172,    0,  177,  175,    0,    0,    0,  103,    0,
    424         0,    0,    0,    0,    0,    0,    0,  102,   17,  102,
     420        0,    0,  133,  112,  112,    0,  112,  112,    0,    0,
     421        6,    0,  110,    0,    0,    0,  112,    0,  110,  110,
     422      110,  110,    0,  111,    0,    0,  109,  109,  109,  109,
     423        0,  171,  172,    0,  178,  176,    0,    0,    0,  103,
     424        0,    0,    0,    0,    0,    0,    0,    0,  102,   17,
    425425      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    426       102,  102,  102,  102,  102,  102,  102,   14,  102,  102,
     426      102,  102,  102,  102,  102,  102,  102,  102,   14,  102,
    427427
    428428      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    429       102,  102,  102,  102,  102,  102,   50,  102,  102,  102,
    430        63,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    431       102,  102,  102,  102,  102,   89,  102,  102,  102,  102,
    432       102,  102,  102,    0,    0,    0,    0,    0,    0,    0,
    433         0,  120,    0,    0,    0,    0,    0,  120,    0,    0,
    434       178,    0,    0,    0,    0,    0,    0,    0,  112,    0,
    435       112,    0,  112,    0,    0,  112,    0,  110,  110,    0,
    436         0,  111,  111,    0,  111,    0,  111,  109,  109,    0,
    437         0,    0,    0,    0,    0,    0,    0,    0,    0,  176,
    438 
     429      102,  102,  102,  102,  102,  102,  102,   50,  102,  102,
     430      102,   63,  102,  102,  102,  102,  102,  102,  102,  102,
     431      102,  102,  102,  102,  102,  102,   89,  102,  102,  102,
     432      102,  102,  102,  102,    0,    0,    0,    0,    0,    0,
     433        0,    0,  120,    0,    0,    0,    0,    0,  120,    0,
     434        0,  179,    0,    0,    0,    0,    0,    0,    0,  112,
     435        0,  112,    0,  112,    0,    0,  112,    0,  110,  110,
     436        0,    0,  111,  111,    0,  111,    0,  111,  109,  109,
     437        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     438
     439      177,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    439440      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     441      102,  102,  102,  102,   21,  102,   24,  102,   27,  102,
     442      102,  102,  102,  102,  102,  102,   41,  102,   43,  102,
     443      102,  102,  102,  102,  102,  102,   55,  102,   66,  102,
    440444      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    441       102,  102,  102,   21,  102,   24,  102,   27,  102,  102,
    442       102,  102,  102,  102,  102,   41,  102,   43,  102,  102,
    443       102,  102,  102,  102,  102,   55,  102,   66,  102,  102,
     445      102,  102,  102,  102,  102,   97,  102,  102,    0,    0,
     446        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     447        0,    0,  120,    0,    0,    0,    0,    0,  112,    0,
     448        0,    0,    0,    0,    0,  111,  111,    0,  113,    0,
     449
     450      111,  111,    0,    0,    0,    0,    0,    0,    0,    0,
     451        0,    0,    0,    0,    0,  102,  102,   22,  102,  102,
     452      102,  102,  102,  102,  102,   15,  102,  102,  102,  102,
    444453      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    445       102,  102,  102,  102,   97,  102,  102,    0,    0,    0,
     454       23,   25,  102,   32,  102,  102,  102,  102,   40,  102,
     455      102,  102,  102,   48,  102,  102,   53,  102,  102,   70,
     456      102,  102,  102,   76,  102,  102,  102,  102,  102,   86,
     457       88,  102,  102,   94,  102,  102,  101,    0,    0,    0,
    446458        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    447         0,  120,    0,    0,    0,    0,    0,  112,    0,    0,
    448         0,    0,    0,    0,  111,  111,    0,  113,    0,  111,
    449 
    450       111,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    451         0,    0,    0,    0,  102,  102,   22,  102,  102,  102,
    452       102,  102,  102,  102,   15,  102,  102,  102,  102,  102,
    453       102,  102,  102,  102,  102,  102,  102,  102,  102,   23,
    454        25,  102,   32,  102,  102,  102,  102,   40,  102,  102,
    455       102,  102,   48,  102,  102,   53,  102,  102,   70,  102,
    456       102,  102,   76,  102,  102,  102,  102,  102,   86,   88,
    457       102,  102,   94,  102,  102,  101,    0,    0,    0,    0,
     459        0,    0,    0,    0,    0,    0,  113,    0,    0,  111,
     460
     461      113,  113,  113,  113,    0,  111,    0,    0,    0,    0,
     462        0,    0,    0,    0,    0,    0,  102,    0,  102,  102,
     463      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     464      102,  102,  102,  102,   58,  102,  102,  102,  102,  102,
     465      102,  102,  102,   28,  102,  102,  102,   39,   42,   45,
     466      102,  102,   51,  102,   60,   67,  102,  102,   75,   77,
     467       80,   81,   83,   84,  102,  102,   91,  102,  102,    0,
     468        1,    0,    0,    0,    0,    0,    0,  105,    0,    0,
     469        0,  120,    0,    0,    0,    0,  113,    0,  113,  113,
     470        0,    0,    0,    0,    0,    0,    0,    0,    0,  102,
     471
     472      102,   18,  102,  102,  102,  102,  102,  102,  102,   16,
     473      102,  102,  102,   33,  102,  102,  102,  102,  102,  102,
     474      102,  102,  102,  102,  102,  102,   36,   37,  102,   47,
     475       52,  102,  102,  102,   90,  102,  102,    0,    0,    0,
    458476        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    459         0,    0,    0,    0,    0,  113,    0,    0,  111,  113,
    460 
    461       113,  113,  113,    0,  111,    0,    0,    0,    0,    0,
    462         0,    0,    0,    0,    0,  102,    0,  102,  102,  102,
    463       102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    464       102,  102,  102,   58,  102,  102,  102,  102,  102,  102,
    465       102,  102,   28,  102,  102,  102,   39,   42,   45,  102,
    466       102,   51,  102,   60,   67,  102,  102,   75,   77,   80,
    467        81,   83,   84,  102,  102,   91,  102,  102,    0,    1,
    468         0,    0,    0,    0,    0,    0,  105,    0,    0,    0,
    469       120,    0,    0,    0,    0,  113,    0,  113,  113,    0,
    470         0,    0,    0,    0,    0,    0,    0,    0,  102,  102,
    471 
    472        18,  102,  102,  102,  102,  102,  102,  102,   16,  102,
    473       102,  102,   33,  102,  102,  102,  102,  102,  102,  102,
    474       102,  102,  102,  102,  102,   36,   37,  102,   47,   52,
    475       102,  102,  102,   90,  102,  102,    0,    0,    0,    0,
    476         0,    0,    0,    0,    0,    0,    0,    0,    0,   10,
    477        11,   29,   54,  102,  102,  102,  102,  102,  102,  102,
    478       102,  102,  102,  102,   59,   61,   64,  102,  102,   78,
    479        92,  102,  102,   35,   46,   71,   72,  102,   95,   98,
    480         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    481         0,    0,  102,   68,  102,  102,   12,  102,  102,   30,
    482 
    483        34,  102,  102,  102,   65,  102,  102,  102,  102,  102,
    484       102,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    485         0,    0,    0,    0,   57,  102,  102,  102,  102,  102,
    486       102,  102,   49,   62,   73,   79,   93,   99,  102,  102,
    487         0,    0,    0,    0,    0,    0,    0,    0,  102,  102,
    488        13,   19,  102,  102,   31,  102,  102,  102,   26,   87,
    489         0,    0,  102,  102,  102,  102,  102,  102,   74,  100,
    490       102,   85,   20,  102,  102,   44,   82,  102,  102,  102,
    491       102,  102,  102,  102,   96,   69,    0
     477       10,   11,   29,   54,  102,  102,  102,  102,  102,  102,
     478      102,  102,  102,  102,  102,   59,   61,   64,  102,  102,
     479       78,   92,  102,  102,   35,   46,   71,   72,  102,   95,
     480       98,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     481        0,    0,    0,  102,   68,  102,  102,   12,  102,  102,
     482
     483       30,   34,  102,  102,  102,   65,  102,  102,  102,  102,
     484      102,  102,    0,    0,    0,    0,    0,    0,    0,    0,
     485        0,    0,    0,    0,    0,   57,  102,  102,  102,  102,
     486      102,  102,  102,   49,   62,   73,   79,   93,   99,  102,
     487      102,    0,    0,    0,    0,    0,    0,    0,    0,  102,
     488      102,   13,   19,  102,  102,   31,  102,  102,  102,   26,
     489       87,    0,    0,  102,  102,  102,  102,  102,  102,   74,
     490      100,  102,   85,   20,  102,  102,   44,   82,  102,  102,
     491      102,  102,  102,  102,  102,   96,   69,    0
    492492    } ;
    493493
     
    537537    } ;
    538538
    539 static yyconst flex_int16_t yy_base[1062] =
     539static yyconst flex_int16_t yy_base[1063] =
    540540    {   0,
    541         0,   84, 2272, 2269,   94,    0,  177,  178,  179,  180,
    542      2285, 2822,  191, 2822,  197,   55, 2822, 2231,   60,  173,
    543      2822, 2822, 2822,   56,  188, 2822,  191,  189,  204,  216,
    544       275,    0, 2249, 2822,  216, 2247,  152,  344,  155,  220,
    545      2822,  159, 2822,  217,  226, 2822,  185,  154,  212,  251,
    546       237,  270,  235,  257,  241,  205,  193,  305,  314,  333,
    547       238,  228, 2822,  225, 2822, 2242,  402,  390, 2822, 2253,
    548      2822, 2221,  235, 2822,    0, 2822,  426,    0, 2822,  417,
    549      2822,  439,  451, 2822,  498, 2219,  264, 2822, 2822, 2822,
    550      2822, 2822, 2235, 2822, 2232, 2822, 2822, 2244,  559, 2822,
    551 
    552      2261, 2822,  438,  444,  511,  534,  289,  253,  197,  380,
    553       305,    0,  319,  280,  198,  322, 2822, 2822, 2822, 2230,
    554      2822, 2822, 2822, 2227, 2224,  218,  255, 2239,  298,  350,
    555       368,  312,  440,  398,  405, 2220,  441, 2168,  446, 2196,
    556      2822,  335, 2822, 2822,  468, 2190, 2189, 2822, 2162,  439,
    557       282,  433,  372,  281,  437,  434,  428,  570,  444,  466,
    558       464,  469,  475,  321,  492,  438,  471,  445,  474,  512,
    559       489,  503,  496,  521,  276,  515,  516, 2189,  526,  510,
    560       519,  525,  543,  522,  560,  553,  523,  561,  551,  544,
    561       599,  582,  593,  584, 2822, 2822,  660,  651, 2236,  666,
    562 
    563      2822,  678, 2822, 2183,  607, 2179, 2178,    0,  693, 2822,
    564      2822,  684, 2176, 2156, 2154,    0, 2177,  578,  608,  617,
    565       654,  679,  650,  683,  684,  687, 2172,  690,  691, 2147,
    566      2146, 2822,    0,  683,  710,  686,  700, 2145, 2196, 2822,
    567       714,    0,  427,  746,  764,  786,  808,  621, 2822, 2152,
    568      2125,    0,  794, 2171,  795,  709, 2822, 2147, 2121,  832,
    569      2822, 2822, 2152, 2822, 2822,  711,  714, 2129, 2129,  717,
    570      2125, 2123, 2120,    0, 2117,    0, 2088,  694,  679,  712,
    571       709,  711,  698,  566,  726,  743,  771,  741,  790,  784,
    572       800,  795,  742,  744,  814,  816,  818, 2118,  819,  745,
    573 
    574       820,  821,  822,  823,  824,  746,  825,  748,  659,  831,
    575       826,  833,  838,  839,  848,  850,  851,  844,  834,  857,
    576      2116,  858,  859,  860,  862,  861,  864,  865,  867,  868,
    577       866,  871,  876,  872,  878, 2113,  880,  689,  881,  882,
    578       892,  896,  893,  953,  954, 2109, 2108, 2106,    0, 2103,
    579         0,  941,  945, 2102,    0, 2101,    0, 2099,    0, 2118,
    580      2822,  940,  941, 2094, 2088,    0, 2086,    0, 2822,  953,
    581       975,  964, 2822,  981,  997, 1021, 2084, 2822, 2822,  939,
    582       940, 1006,  982, 1041,  310, 1039, 1004, 2822, 2822, 2081,
    583      2079, 2077,    0, 2074,    0, 2071,    0, 2070,    0, 2822,
    584 
    585       886,  941,  960,  962,  977,  976,  980,  982, 1017, 1010,
    586      1002,  998, 1022, 1031, 1028, 1033, 1034, 1037, 1040, 1043,
    587      1038, 1041, 1053, 2072, 1055, 2070, 1045, 2067, 1056, 1061,
    588      1063, 1065, 1066, 1067, 1070, 2064, 1071, 2063, 1073, 1074,
    589      1075, 1078, 1080, 1081, 1085, 2062, 1087, 2060, 1084, 1089,
    590      1091, 1097, 1099, 1092, 1102, 1103, 1105, 1106, 1108,  905,
    591      1109, 1116, 1110, 1122, 2057, 1120, 1123, 1179, 2051,    0,
    592      2050,    0, 2049,    0, 2047,    0, 1166, 2044,    0, 2041,
    593         0, 2040, 2039, 2037,    0, 2034,    0, 1173, 2031, 1179,
    594      1137, 1195, 1181, 1178, 1176, 2822, 1219, 1231, 1253, 2042,
    595 
    596      2017, 2027, 2024,    0, 2021,    0, 2020,    0, 2019,    0,
    597      2017,    0, 2014,    0, 1141, 1172, 2014, 1180, 1155, 1196,
    598      1157, 1216, 1207, 1231, 1125, 1210, 1232, 1214, 1187, 1236,
    599      1235, 1237, 1238, 1272, 1249, 1252, 1250, 1253, 1254, 2013,
    600      1261, 1256, 2012, 1260, 1263, 1264, 1257, 2010, 1271, 1268,
    601      1269, 1273, 2007, 1275, 1282, 2006, 1283, 1284, 2005, 1276,
    602      1286, 1289, 2003, 1294, 1291, 1296, 1295, 1297, 1310, 2000,
    603      1305, 1308, 1999, 1307, 1300, 1998, 2046, 1960,    0, 1958,
    604         0, 1957,    0, 1954,    0, 1951,    0, 1950,    0, 1949,
    605         0, 1947,    0, 1355, 1361, 1389, 1372, 1944, 2822, 1378,
    606 
    607      1325, 1365, 1379, 1941, 2822, 1940,    0, 1939,    0, 1937,
    608         0, 1934,    0,    0,    0, 1936,    0, 1366, 1312, 1311,
    609      1341, 1323, 1368, 1369, 1374, 1356, 1383, 1372, 1388, 1390,
    610      1393, 1395, 1396, 1398, 1400, 1431, 1406, 1407, 1411, 1408,
    611      1413, 1414, 1935, 1409, 1416, 1419, 1933, 1930, 1929, 1422,
    612      1424, 1928, 1429, 1926, 1923, 1425, 1430, 1919, 1915, 1911,
    613      1895, 1894, 1893, 1436, 1433, 1891, 1439, 1440, 1938, 2822,
    614      1884,    0, 1883,    0,    0,    0, 1884,    0,    0,    0,
    615      2822,    0,    0,    0,    0, 1486, 1878, 2822, 2822, 1492,
    616      1877,    0, 1876,    0,    0,    0,    0, 1874, 1447, 1444,
    617 
    618      1874, 1449, 1471, 1479, 1450, 1480, 1482, 1469, 1873, 1486,
    619      1490, 1488, 1502, 1452, 1510, 1504, 1491, 1519, 1506, 1498,
    620      1508, 1512, 1513, 1514, 1515, 1872, 1870, 1517, 1867, 1866,
    621      1518, 1520, 1523, 1865, 1521, 1525,    0,    0,    0, 1860,
    622      1857, 1856, 1575,    0, 1855, 1853, 1850, 1849, 1848, 1849,
    623      1846, 1845, 1844, 1531, 1536, 1527, 1528, 1552, 1533, 1537,
    624      1539, 1555, 1557, 1569, 1842, 1560, 1839, 1561, 1559, 1568,
    625      1572, 1567, 1573, 1838, 1837, 1835, 1828, 1574, 1826, 1825,
    626      1819, 1818, 1817, 1815, 1798, 1789, 1788, 1785, 1778, 1775,
    627      1768, 1766, 1576, 1768, 1577, 1581, 1580, 1579, 1584, 1585,
    628 
    629      1747, 1586, 1615, 1590, 1746, 1591, 1592, 1602, 1600, 1594,
    630      1606, 1742, 1735, 1733, 1732, 1690, 1689, 1686, 1685, 1683,
    631      1682, 1678, 1677, 1674, 1676, 1607, 1611, 1614, 1612, 1608,
    632      1616, 1620, 1675, 1623, 1624, 1530, 1453, 1630, 1625, 1629,
    633      1438, 1354, 1319, 1318, 1267, 1212, 1210, 1208, 1631, 1636,
    634      1178, 1639, 1635, 1643, 1177, 1644, 1646, 1650, 1126,  964,
    635       937,  903, 1651, 1652, 1654, 1655, 1656, 1658,  788,  752,
    636      1660,  607,  487, 1662, 1663,  394,  357, 1664, 1666, 1668,
    637      1670, 1669, 1672, 1674,  233,  137, 2822, 1747, 1760, 1773,
    638      1783, 1793, 1806, 1816, 1829, 1842, 1855, 1863, 1873, 1880,
    639 
    640      1887, 1894, 1901, 1908, 1915, 1922, 1929, 1936, 1949, 1956,
    641      1960, 1968, 1971, 1978, 1985, 1992, 1995, 2002, 2008, 2021,
    642      2034, 2041, 2048, 2055, 2062, 2065, 2072, 2075, 2082, 2085,
    643      2092, 2095, 2102, 2105, 2112, 2115, 2122, 2125, 2132, 2140,
    644      2147, 2154, 2161, 2168, 2171, 2178, 2181, 2188, 2191, 2198,
    645      2204, 2217, 2224, 2231, 2234, 2241, 2244, 2251, 2254, 2261,
    646      2264, 2271, 2274, 2281, 2284, 2291, 2298, 2301, 2308, 2311,
    647      2318, 2325, 2332, 2335, 2342, 2345, 2352, 2355, 2362, 2365,
    648      2372, 2375, 2382, 2388, 2401, 2408, 2415, 2418, 2425, 2428,
    649      2435, 2438, 2445, 2448, 2455, 2458, 2465, 2468, 2475, 2478,
    650 
    651      2485, 2488, 2495, 2502, 2505, 2512, 2515, 2522, 2525, 2532,
    652      2535, 2538, 2544, 2551, 2560, 2567, 2574, 2577, 2584, 2587,
    653      2590, 2596, 2603, 2606, 2609, 2612, 2615, 2618, 2621, 2624,
    654      2631, 2634, 2641, 2644, 2647, 2650, 2653, 2663, 2670, 2673,
    655      2676, 2679, 2686, 2693, 2700, 2703, 2710, 2717, 2724, 2731,
    656      2738, 2745, 2752, 2759, 2766, 2773, 2780, 2787, 2794, 2801,
    657      2808
     541        0,   84, 2279, 2277,   94,    0,  177,  178,  179,  180,
     542     2291, 2817,  191, 2817,  197,   55, 2817, 2237,   60,  173,
     543     2817, 2817, 2817,   56,  188, 2817,  191,  189,  204,  216,
     544      275,    0,  152, 2817,  216, 2257,  175,  344,  197,  237,
     545     2817,  159, 2817,  220,  226, 2817,  181,  165,  212,  251,
     546      241,  270,  205,  244,  235,  174,  227,  305,  274,  341,
     547      220,  265, 2817,  227, 2817, 2253,  382,  405, 2817, 2262,
     548     2817, 2228,  211, 2817,    0, 2817,  432,    0, 2817,  398,
     549     2817,  411,  417, 2817,  504, 2227,  258, 2817, 2817, 2817,
     550     2817, 2817, 2245, 2817, 2243, 2817, 2817, 2253,  565, 2817,
     551
     552     2268, 2817,  424,  419,  504,  522,  296,  237,  265,  417,
     553      386,    0,  298,  285,  311,  403, 2817, 2817, 2817, 2817,
     554     2238, 2817, 2817, 2817, 2237, 2235,  301,  331, 2248,  347,
     555      442,  449,  359,  433,  427,  454, 2227,  465, 2176,  469,
     556     2206, 2817,  319, 2817, 2817,  501, 2201, 2198, 2817, 2169,
     557      425,  307,  467,  320,  337,  470,  431,  345,  509,  356,
     558      439,  410,  490,  481,  500,  498,  502,  504,  424,  505,
     559      541,  510,  465,  528,  542,  271,  520,  521, 2197,  544,
     560      548,  549,  550,  561,  558,  570,  579,  587,  569,  585,
     561      567,  601,  592,  593,  594, 2817, 2817,  665,  671, 2246,
     562
     563      677, 2817,  683, 2817, 2194,  565, 2188, 2185,    0,  674,
     564     2817, 2817,  689, 2184, 2183, 2181,    0, 2202,  616,  630,
     565      655,  698,  697,  659,  687,  688,  691, 2197,  694,  701,
     566     2174, 2173, 2817,    0,  693,  723,  691,  714, 2171, 2204,
     567     2817,  722,    0,  717,  768,  744,  808,  779,  606, 2817,
     568     2161, 2136,    0,  794, 2180,  786,  702, 2817, 2154, 2129,
     569      830, 2817, 2817, 2162, 2817, 2817,  708,  722, 2140, 2138,
     570      710, 2132, 2131, 2130,    0, 2128,    0, 2097,  721,  727,
     571      747,  748,  674,  591,  610,  723,  766,  793,  767,  770,
     572      769,  792,  810,  763,  775,  806,  812,  820, 2125,  822,
     573
     574      824,  825,  828,  830,  831,  832,  836,  837,  460,  843,
     575      846,  845,  844,  847,  848,  852,  859,  861,  858,  867,
     576      865, 2124,  868,  869,  870,  873,  871,  872,  874,  875,
     577      881,  876,  880,  882,  887,  888, 2123,  891,  940,  897,
     578      899,  563,  902,  906,  960,  961, 2118, 2115, 2112,    0,
     579     2111,    0,  952,  956, 2110,    0, 2108,    0, 2105,    0,
     580     2126, 2817,  793,  939, 2105, 2101,    0, 2098,    0, 2817,
     581      960,  986,  971, 2817,  977,  992, 1011, 2097, 2817, 2817,
     582      985,  994, 1024,  982, 1058,  922, 1043,  993, 2817, 2817,
     583     2096, 2094, 2091,    0, 2087,    0, 2083,    0, 2081,    0,
     584
     585     2817,  908,  953,  939,  991,  993,  998, 1003, 1000, 1026,
     586     1006, 1037, 1020, 1038, 1048, 1041, 1049,  970, 1054, 1018,
     587     1050, 1044, 1056, 1045, 2082, 1059, 2079, 1068, 2077, 1057,
     588     1052, 1070, 1072, 1079, 1077, 1081, 2075, 1082, 2072, 1084,
     589     1086, 1087, 1088, 1091, 1089, 1094, 2069, 1096, 2068, 1093,
     590     1098, 1099, 1101, 1105, 1100, 1114, 1111, 1115, 1112, 1117,
     591      686, 1118, 1126, 1130, 1127, 2067, 1131, 1132, 1183, 2062,
     592        0, 2059,    0, 2056,    0, 2055,    0, 1178, 2054,    0,
     593     2052,    0, 2049, 2046, 2045,    0, 2044,    0, 1184, 2042,
     594     1190, 1149, 1206, 1192, 1150, 1185, 2817, 1230, 1242, 1264,
     595
     596     2051, 2024, 2035, 2034,    0, 2032,    0, 2029,    0, 2026,
     597        0, 2025,    0, 2024,    0, 1166, 1206, 2025, 1207, 1190,
     598     1227, 1145, 1241, 1184, 1135,  134, 1198, 1243, 1223, 1225,
     599     1244, 1186, 1248, 1247, 1249, 1256, 1251, 1261, 1262, 1221,
     600     2022, 1269, 1266, 2019, 1264, 1267, 1268, 1270, 2018, 1276,
     601     1272, 1274, 1277, 2017, 1280, 1288, 2015, 1287, 1290, 2012,
     602     1284, 1291, 1294, 2009, 1188, 1297, 1298, 1300, 1301, 1308,
     603     2008, 1303, 1309, 2007, 1310, 1315, 2005, 2052, 1998,    0,
     604     1997,    0, 1995,    0, 1992,    0, 1991,    0, 1990,    0,
     605     1988,    0, 1955,    0, 1359, 1365, 1393, 1376, 1953, 2817,
     606
     607     1382, 1369, 1331, 1383, 1952, 2817, 1949,    0, 1946,    0,
     608     1945,    0, 1944,    0,    0,    0, 1945,    0, 1370, 1316,
     609     1317, 1345, 1325, 1372, 1373, 1378, 1377,  384, 1376, 1387,
     610     1390, 1392, 1399, 1397,  773, 1400, 1430, 1407, 1404, 1411,
     611     1410, 1412, 1418, 1942, 1413, 1415, 1423, 1939, 1938, 1937,
     612     1421, 1425, 1935, 1426, 1932, 1931, 1429, 1433, 1930, 1928,
     613     1925, 1924, 1923, 1921, 1435, 1314, 1918, 1439, 1431, 1964,
     614     2817, 1907,    0, 1903,    0,    0,    0, 1890,    0,    0,
     615        0, 2817,    0,    0,    0,    0, 1483, 1886, 2817, 2817,
     616     1489, 1885,    0, 1883,    0,    0,    0,    0, 1880, 1445,
     617
     618     1465, 1882, 1442, 1470, 1467, 1479,  968, 1447, 1476, 1881,
     619     1478, 1482, 1480, 1485, 1481, 1512, 1487, 1497, 1526, 1501,
     620     1503, 1505, 1507, 1508, 1509, 1510, 1879, 1876, 1511, 1875,
     621     1874, 1515, 1514, 1518, 1872, 1520, 1522,    0,    0,    0,
     622     1866, 1865, 1864, 1570,    0, 1862, 1859, 1858, 1857, 1855,
     623     1855, 1854, 1853, 1851, 1527, 1529, 1532, 1523, 1548, 1533,
     624     1549, 1524, 1551, 1552, 1553, 1848, 1557, 1847, 1559, 1561,
     625     1564, 1569, 1555, 1563, 1846, 1844, 1841, 1840, 1571, 1839,
     626     1837, 1831, 1830, 1829, 1827, 1820, 1818, 1817, 1814, 1813,
     627     1812, 1810, 1793, 1574, 1787, 1575, 1577, 1576, 1578, 1580,
     628
     629     1581, 1786, 1585, 1608, 1587, 1783, 1588, 1589, 1599, 1597,
     630     1591, 1593, 1773, 1770, 1763, 1761, 1760, 1739, 1738, 1737,
     631     1730, 1728, 1727, 1685, 1684, 1683, 1598, 1604, 1612, 1605,
     632     1613, 1617, 1616, 1682, 1681, 1618, 1677, 1676, 1622, 1623,
     633     1626, 1670, 1669, 1668, 1665, 1448, 1446, 1358, 1317, 1627,
     634     1624, 1318, 1638, 1630, 1634, 1224, 1642, 1643, 1644, 1137,
     635     1136, 1004,  733, 1628, 1649, 1650, 1651, 1652, 1654,  635,
     636      602, 1656,  436,  296, 1658, 1659,  263,  232, 1660, 1662,
     637     1663, 1665, 1666, 1667, 1670,  200,  166, 2817, 1742, 1755,
     638     1768, 1778, 1788, 1801, 1811, 1824, 1837, 1850, 1858, 1868,
     639
     640     1875, 1882, 1889, 1896, 1903, 1910, 1917, 1924, 1931, 1944,
     641     1951, 1955, 1963, 1966, 1973, 1980, 1987, 1990, 1997, 2003,
     642     2016, 2029, 2036, 2043, 2050, 2057, 2060, 2067, 2070, 2077,
     643     2080, 2087, 2090, 2097, 2100, 2107, 2110, 2117, 2120, 2127,
     644     2135, 2142, 2149, 2156, 2163, 2166, 2173, 2176, 2183, 2186,
     645     2193, 2199, 2212, 2219, 2226, 2229, 2236, 2239, 2246, 2249,
     646     2256, 2259, 2266, 2269, 2276, 2279, 2286, 2293, 2296, 2303,
     647     2306, 2313, 2320, 2327, 2330, 2337, 2340, 2347, 2350, 2357,
     648     2360, 2367, 2370, 2377, 2383, 2396, 2403, 2410, 2413, 2420,
     649     2423, 2430, 2433, 2440, 2443, 2450, 2453, 2460, 2463, 2470,
     650
     651     2473, 2480, 2483, 2490, 2497, 2500, 2507, 2510, 2517, 2520,
     652     2527, 2530, 2533, 2539, 2546, 2555, 2562, 2569, 2572, 2579,
     653     2582, 2585, 2591, 2598, 2601, 2604, 2607, 2610, 2613, 2616,
     654     2619, 2626, 2629, 2636, 2639, 2642, 2645, 2648, 2658, 2665,
     655     2668, 2671, 2674, 2681, 2688, 2695, 2698, 2705, 2712, 2719,
     656     2726, 2733, 2740, 2747, 2754, 2761, 2768, 2775, 2782, 2789,
     657     2796, 2803
    658658    } ;
    659659
    660 static yyconst flex_int16_t yy_def[1062] =
     660static yyconst flex_int16_t yy_def[1063] =
    661661    {   0,
    662       887,    1,  888,  888,  887,    5,  889,  889,  890,  890,
    663       887,  887,  887,  887,  887,  887,  887,  891,  887,  887,
    664       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    665       887,   31,  887,  887,  887,  887,  887,  887,  892,  891,
    666       887,  887,  887,  887,  891,  887,  891,  891,  891,  891,
    667       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    668       891,  891,  887,  887,  887,  887,  887,  893,  887,  887,
    669       887,  894,  887,  887,  895,  887,  887,  896,  887,  887,
    670       887,  887,  887,  887,  887,  891,  887,  887,  887,  887,
    671       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    672 
    673       897,  887,   99,   30,  887,  887,  887,  887,  898,   30,
    674       887,   31,  887,  887,   31,  887,  887,  887,  887,  887,
    675       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    676       887,  887,  887,  887,  887,  887,  887,  887,  887,  899,
    677       887,  887,  887,  887,  891,  900,  901,  887,  887,  891,
    678       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    679       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    680       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    681       891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
    682       891,  891,  891,  891,  887,  887,  887,  893,  893,  893,
    683 
    684       887,  893,  887,  894,  887,  902,  903,  895,  887,  887,
    685       887,  887,  904,  905,  906,  896,  887,  887,  887,  887,
    686       887,  887,  887,  887,  887,  887,  887,  887,  887,  907,
    687       908,  887,   99,  887,  887,  887,  887,   99,  909,  887,
    688       887,  104,  104,  887,  887,  887,  887,  887,  887,  887,
    689       887,  910,  911,  912,  887,  887,  887,  887,  887,  887,
    690       887,  887,  887,  887,  887,  887,  887,  887,  899,  887,
    691       913,  914,  915,  916,  917,  918,  887,  919,  919,  919,
    692       919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
    693       919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
    694 
    695       919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
    696       919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
    697       919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
    698       919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
    699       919,  919,  919,  920,  921,  922,  923,  924,  925,  926,
    700       927,  887,  887,  928,  929,  930,  931,  932,  933,  887,
    701       887,  887,  887,  887,  934,  935,  936,  937,  887,  887,
    702       887,  887,  887,  887,  887,  371,  376,  887,  887,  938,
    703       939,  940,  887,  887,  887,  940,  887,  887,  887,  941,
    704       942,  943,  944,  945,  946,  947,  948,  949,  950,  887,
    705 
    706       951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
    707       951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
    708       951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
    709       951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
    710       951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
    711       951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
    712       951,  951,  951,  951,  951,  951,  951,  952,  953,  954,
    713       955,  956,  957,  958,  959,  960,  887,  961,  962,  963,
    714       964,  965,  965,  966,  967,  968,  969,  887,  488,  887,
    715       970,  887,  970,  887,  887,  887,  887,  887,  887,  887,
    716 
    717       887,  971,  972,  973,  974,  975,  976,  977,  978,  979,
    718       980,  981,  982,  983,  984,  984,  984,  984,  984,  984,
    719       984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
    720       984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
    721       984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
    722       984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
    723       984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
    724       984,  984,  984,  984,  984,  984,  985,  986,  987,  988,
     662      888,    1,  889,  889,  888,    5,  890,  890,  891,  891,
     663      888,  888,  888,  888,  888,  888,  888,  892,  888,  888,
     664      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     665      888,   31,  888,  888,  888,  888,  888,  888,  893,  892,
     666      888,  888,  888,  888,  892,  888,  892,  892,  892,  892,
     667      892,  892,  892,  892,  892,  892,  892,  892,  892,  892,
     668      892,  892,  888,  888,  888,  888,  888,  894,  888,  888,
     669      888,  895,  888,  888,  896,  888,  888,  897,  888,  888,
     670      888,  888,  888,  888,  888,  892,  888,  888,  888,  888,
     671      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     672
     673      898,  888,   99,   30,  888,  888,  888,  888,  899,   30,
     674      888,   31,  888,  888,   31,  888,  888,  888,  888,  888,
     675      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     676      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     677      900,  888,  888,  888,  888,  892,  901,  902,  888,  888,
     678      892,  892,  892,  892,  892,  892,  892,  892,  892,  892,
     679      892,  892,  892,  892,  892,  892,  892,  892,  892,  892,
     680      892,  892,  892,  892,  892,  892,  892,  892,  892,  892,
     681      892,  892,  892,  892,  892,  892,  892,  892,  892,  892,
     682      892,  892,  892,  892,  892,  888,  888,  888,  894,  894,
     683
     684      894,  888,  894,  888,  895,  888,  903,  904,  896,  888,
     685      888,  888,  888,  905,  906,  907,  897,  888,  888,  888,
     686      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     687      908,  909,  888,   99,  888,  888,  888,  888,   99,  910,
     688      888,  888,  104,  104,  888,  888,  888,  888,  888,  888,
     689      888,  888,  911,  912,  913,  888,  888,  888,  888,  888,
     690      888,  888,  888,  888,  888,  888,  888,  888,  888,  900,
     691      888,  914,  915,  916,  917,  918,  919,  888,  920,  920,
     692      920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
     693      920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
     694
     695      920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
     696      920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
     697      920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
     698      920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
     699      920,  920,  920,  920,  921,  922,  923,  924,  925,  926,
     700      927,  928,  888,  888,  929,  930,  931,  932,  933,  934,
     701      888,  888,  888,  888,  888,  935,  936,  937,  938,  888,
     702      888,  888,  888,  888,  888,  888,  372,  377,  888,  888,
     703      939,  940,  941,  888,  888,  888,  941,  888,  888,  888,
     704      942,  943,  944,  945,  946,  947,  948,  949,  950,  951,
     705
     706      888,  952,  952,  952,  952,  952,  952,  952,  952,  952,
     707      952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
     708      952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
     709      952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
     710      952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
     711      952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
     712      952,  952,  952,  952,  952,  952,  952,  952,  953,  954,
     713      955,  956,  957,  958,  959,  960,  961,  888,  962,  963,
     714      964,  965,  966,  966,  967,  968,  969,  970,  888,  489,
     715      888,  971,  888,  971,  888,  888,  888,  888,  888,  888,
     716
     717      888,  888,  972,  973,  974,  975,  976,  977,  978,  979,
     718      980,  981,  982,  983,  984,  985,  985,  985,  985,  985,
     719      985,  985,  985,  985,  985,  985,  985,  985,  985,  985,
     720      985,  985,  985,  985,  985,  985,  985,  985,  985,  985,
     721      985,  985,  985,  985,  985,  985,  985,  985,  985,  985,
     722      985,  985,  985,  985,  985,  985,  985,  985,  985,  985,
     723      985,  985,  985,  985,  985,  985,  985,  985,  985,  985,
     724      985,  985,  985,  985,  985,  985,  985,  986,  987,  988,
    725725      989,  990,  991,  992,  993,  994,  995,  996,  997,  998,
    726       999, 1000, 1001,  887,  887,  887,  887, 1002,  887,  596,
    727 
    728       887,  887,  887,  600,  887, 1003, 1004, 1005, 1006, 1007,
    729      1008, 1009, 1010, 1011, 1012, 1013, 1014, 1013, 1013, 1013,
    730      1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
    731      1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
    732      1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
    733      1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
    734      1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1015,  887,
    735      1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
    736       887, 1026, 1027, 1028, 1029,  887,  686,  887,  887,  887,
    737      1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1038,
    738 
    739      1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
    740      1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
    741      1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
    742      1038, 1038, 1038, 1038, 1038, 1038, 1039, 1040, 1041, 1042,
    743      1043, 1044,  887, 1045, 1030, 1032, 1046, 1047, 1037, 1038,
    744      1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
    745      1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
    746      1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
    747      1048, 1049, 1042, 1050, 1043, 1051, 1044, 1052, 1053, 1046,
    748      1054, 1047, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
    749 
    750      1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
    751      1038, 1055, 1048, 1056, 1049, 1057, 1050, 1058, 1051, 1059,
    752      1052, 1060, 1053, 1054, 1038, 1038, 1038, 1038, 1038, 1038,
    753      1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
    754      1061, 1055, 1056, 1057, 1058, 1032, 1059, 1060, 1038, 1038,
    755      1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
    756      1061, 1032, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
    757      1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
    758      1038, 1038, 1038, 1038, 1038, 1038,    0,  887,  887,  887,
    759       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    760 
    761       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    762       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    763       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    764       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    765       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    766       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    767       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    768       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    769       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    770       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    771 
    772       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    773       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    774       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    775       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    776       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    777       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    778       887
     726      999, 1000, 1001, 1002,  888,  888,  888,  888, 1003,  888,
     727
     728      597,  888,  888,  888,  601,  888, 1004, 1005, 1006, 1007,
     729     1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1014, 1014,
     730     1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014,
     731     1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014,
     732     1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014,
     733     1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014,
     734     1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1016,
     735      888, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
     736     1026,  888, 1027, 1028, 1029, 1030,  888,  687,  888,  888,
     737      888, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039,
     738
     739     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     740     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     741     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     742     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1040, 1041, 1042,
     743     1043, 1044, 1045,  888, 1046, 1031, 1033, 1047, 1048, 1038,
     744     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     745     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     746     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     747     1039, 1049, 1050, 1043, 1051, 1044, 1052, 1045, 1053, 1054,
     748     1047, 1055, 1048, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     749
     750     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     751     1039, 1039, 1056, 1049, 1057, 1050, 1058, 1051, 1059, 1052,
     752     1060, 1053, 1061, 1054, 1055, 1039, 1039, 1039, 1039, 1039,
     753     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     754     1039, 1062, 1056, 1057, 1058, 1059, 1033, 1060, 1061, 1039,
     755     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     756     1039, 1062, 1033, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     757     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     758     1039, 1039, 1039, 1039, 1039, 1039, 1039,    0,  888,  888,
     759      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     760
     761      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     762      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     763      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     764      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     765      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     766      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     767      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     768      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     769      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     770      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     771
     772      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     773      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     774      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     775      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     776      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     777      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     778      888,  888
    779779    } ;
    780780
    781 static yyconst flex_int16_t yy_nxt[2908] =
     781static yyconst flex_int16_t yy_nxt[2903] =
    782782    {   0,
    783783       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
     
    800800       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
    801801       72,   72,   72,   72,   72,   71,   71,   71,   71,   76,
    802        76,   79,   79,  123,  124,   90,  141,   79,   79,   87,
     802       76,   79,   79,  117,  118,   90,   87,   79,   79,  628,
    803803       76,   76,   80,   81,   82,   82,   82,   80,   82,   81,
    804804
    805        83,   83,   83,   82,   91,   93,   87,  142,  146,   98,
    806        95,   99,   99,   99,   99,   99,   99,  252,  887,   94,
    807       100,   85,   96,   97,   85,  101,  161,  118,  143,   77,
    808        77,   77,   77,  144,  147,  102,  103,   87,  104,  104,
    809       104,  104,  105,  105,  119,   87,  120,  121,  148,  263,
    810       149,  264,  254,  260,  183,  106,  195,   87,  159,  107,
    811       160,  150,  151,  152,   87,  108,  109,  153,  154,  162,
    812       155,  110,   87,  156,  157,  145,  163,  106,   87,  182,
    813        87,  158,  164,  111,  206,   87,  263,   87,  264,   87,
    814        87,  108,  194,   87,  109,  103,  250,  112,  112,  112,
    815 
    816       112,  112,  112,   87,  169,  177,  170,  196,  193,   87,
    817       207,  180,  165,  230,  106,  171,  166,  181,  113,  178,
    818       251,  167,   87,  258,  114,  168,  179,  172,   87,  263,
    819       115,  264,  248,   87,   87,  173,  106,  174,  249,  231,
    820       175,  143,  116,  263,  176,  264,  144,  259,  317,  283,
    821       114,  125,  280,  500,  249,  126,  127,   87,  128,  191,
    822       129,  130,  256,  131,  249,  132,   87,  265,  257,  184,
    823       185,  257,  248,   87,  133,  134,  135,  501,  188,  186,
    824       249,  263,  187,  264,  271,   87,  189,  265,  145,  256,
    825       305,  200,  201,  190,  257,  136,  200,  257,  137,  263,
    826 
    827       887,  264,  192,  197,   81,   82,   82,   82,  197,   87,
    828       272,  198,  202,  202,  202,  202,  202,  202,   80,   81,
    829        82,   82,   82,   80,   87,  138,  139,  209,  210,  263,
    830       887,  264,  209,  282,  211,  255,  263,  267,  264,  211,
    831        82,   81,   82,   82,   82,   82,   87,  887,  212,  212,
    832       212,  212,   82,   81,   83,   83,   83,   82,  887,  211,
    833        99,   99,   99,   99,   99,   99,  242,  242,  242,  242,
    834       266,  263,  263,  264,  264,  213,  143,  263,  211,  264,
    835        87,  144,  375,  211,  211,   87,   87,  211,  211,   87,
    836        87,   87,  286,  241,  887,  211,   87,   87,  211,  243,
    837 
    838       211,  214,  211,  281,  215,  217,  278,  284,  285,  218,
    839       219,  307,  298,  279,  220,  221,   87,  222,   87,  223,
    840        87,   87,  887,   87,  309,  300,   87,   87,  224,  225,
    841       226,  103,  303,  105,  105,  105,  105,  105,  105,   87,
    842       299,   87,  301,  302,   87,  304,  308,  310,   87,  227,
    843       106,  245,  228,  245,  306,   87,  246,  246,  246,  246,
    844       246,  246,   87,  313,   87,  315,  244,   87,   87,  311,
    845       314,   87,  106,   87,   87,   87,  323,   87,   87,  322,
    846       229,  233,  233,  233,  233,  233,  233,  312,  333,  247,
    847       319,  316,  328,  320,  318,   87,   87,  234,  235,  236,
    848 
    849       321,  237,  236,   87,  324,   87,  325,  143,  335,  360,
    850       331,  361,   87,   87,  238,  337,  326,  327,   87,  236,
    851       235,  236,   87,  329,  237,  332,  236,  287,  288,  289,
    852       336,  290,  291,  334,   87,  292,   87,  293,  407,  360,
    853       330,  361,  294,  295,  296,   87,  297,  339,  360,  343,
    854       361,   87,  200,  201,  338,  340,  346,  200,  341,   87,
    855       342,  197,   81,   82,   82,   82,  197,  200,  201,  198,
    856       378,  361,  200,  202,  202,  202,  202,  202,  202,  344,
    857       201,  360,  347,  361,  344,  360,  345,  361,  202,  202,
    858       202,  202,  202,  202,  209,  210,  378,  143,  361,  209,
    859 
    860       202,  202,  202,  202,  202,  202,  352,  352,  352,  352,
    861       360,   87,  361,  362,  360,  360,  361,  361,  360,  363,
    862       361,  360,  360,  361,  361,  369,  369,  370,  369,  370,
    863       435,   87,  371,  371,  371,  371,  371,  371,  373,  353,
    864       373,   87,  263,  373,  264,  263,   87,  264,  369,  402,
    865        87,  369,  234,  235,  236,  406,  237,  236,  388,  401,
    866       373,   87,  373,   87,   87,  372,  390,  373,  105,  105,
    867       105,  105,  105,  105,  236,  235,  236,  404,   87,  237,
    868       405,  236,  403,  408,  388,  106,  246,  246,  246,  246,
    869       246,  246,  391,   87,   87,   87,   87,   87,   87,  419,
    870 
    871        87,  255,  425,  432,   87,  420,  434,  106,  376,  376,
    872       376,  376,  376,  376,  381,  409,  413,  105,  105,  105,
    873       105,  105,  105,   87,  234,  245,  236,  245,  237,  236,
    874       246,  246,  246,  246,  246,  246,   87,  383,  410,  384,
    875        87,  377,   87,  385,  411,  412,  236,   87,  236,  386,
    876       255,  237,   87,  236,  112,  112,  112,  112,  112,  112,
    877       414,  387,  415,  417,  418,  384,   87,  416,   87,  385,
    878        87,   87,   87,   87,   87,   87,   87,   87,   87,  421,
    879       427,  426,  433,   87,  437,   87,   87,  260,  423,  424,
    880        87,   87,  436,  429,  428,  422,   87,  430,  431,  439,
    881 
    882        87,  438,   87,   87,  446,  441,  440,  442,  443,   87,
    883        87,   87,   87,   87,   87,  445,   87,   87,   87,   87,
    884        87,  448,  447,   87,   87,  444,  449,  451,   87,  456,
    885        87,  450,   87,   87,   87,  452,  455,  454,   87,  453,
    886       457,  462,  460,  461,   87,   87,  458,  464,   87,  515,
    887       459,  463,  465,  466,  344,  201,  201,   87,  887,  344,
    888       467,  345,  199,  211,  211,  211,  211,  352,  352,  352,
    889       352,  360,  360,  361,  361,  371,  371,  371,  371,  371,
    890       371,  370,  569,  370,  492,  492,  371,  371,  371,  371,
    891       371,  371,  887,   87,  493,  494,  477,  488,  488,  488,
    892 
    893       488,  488,  488,  233,  233,  233,  233,  233,  233,  516,
    894       492,  492,   87,  234,   87,  236,   87,  237,  236,  242,
    895       242,  242,  242,  105,  105,  495,  381,  517,   87,   87,
    896       489,  496,   87,  518,   87,  236,  374,  236,  519,  520,
    897       237,  521,  236,  376,  376,  376,  376,  376,  376,  383,
    898        87,  384,  375,  496,   87,  385,  522,  496,  497,  887,
    899       497,  386,   87,  498,  498,  498,  498,  498,  498,   87,
    900       525,  495,  526,  387,   87,  524,  377,  384,  523,  496,
    901        87,  385,  383,   87,  384,   87,   87,  527,  385,   87,
    902        87,  532,   87,   87,  502,   87,  499,   87,  535,  528,
    903 
    904       529,  537,  530,  531,  533,   87,  387,   87,   87,  541,
    905       384,  534,  538,   87,  385,   87,  536,   87,   87,   87,
    906       539,  540,   87,   87,  546,   87,   87,   87,  544,  542,
    907        87,  548,   87,   87,  547,  543,   87,   87,  549,   87,
    908       545,   87,  552,   87,   87,  550,  556,  554,  551,   87,
    909       559,   87,  553,  555,   87,   87,  557,   87,   87,  558,
    910        87,   87,   87,  564,  560,  567,  563,  568,   87,  561,
    911       566,  562,   87,  565,   87,   87,  571,   87,   87,  573,
    912       627,  201,  492,  570,  576,  574,  572,  577,  211,  211,
    913       211,  211,  493,   87,  575,  488,  488,  488,  488,  488,
    914 
    915       488,  376,  376,  376,  376,  376,  376,   87,  492,   87,
    916       618,  234,  595,  236,  595,  237,  236,  596,  596,  596,
    917       596,  596,  596,  492,   87,  599,  492,  621,  489,   87,
    918        87,  623,   87,  236,  490,  236,  598,  619,  237,   87,
    919       236,  498,  498,  498,  498,  498,  498,  620,   87,  492,
    920       597,  599,  492,  600,  600,  600,  600,  600,  600,   87,
    921       631,  622,   87,  887,  625,  887,   87,  862,   87,  601,
    922       497,  602,  497,  603,  602,  498,  498,  498,  498,  498,
    923       498,  624,  628,   87,   87,  630,  604,   87,   87,   87,
    924        87,  602,  633,  602,  626,  636,  603,  632,  602,  629,
    925 
    926       634,   87,   87,  635,   87,   87,   87,  642,   87,   87,
    927       637,  641,   87,   87,  640,   87,   87,  643,  647,  639,
    928        87,   87,  887,   87,   87,   87,  638,   87,   87,  644,
    929       645,  646,  648,  650,   87,   87,   87,  649,   87,  653,
    930       651,   87,  652,   87,  654,  655,   87,   87,   87,   87,
    931       656,  657,   87,  660,  659,  661,  664,   87,  658,   87,
    932        87,  663,   87,   87,   87,  668,  665,  688,  688,  662,
    933       666,  701,  702,  887,  887,   87,  667,  488,  488,  488,
    934       488,  488,  488,  596,  596,  596,  596,  596,  596,  595,
    935       688,  595,  704,   87,  596,  596,  596,  596,  596,  596,
    936 
    937       600,  600,  600,  600,  600,  600,  703,  688,   87,  887,
    938       594,  686,  686,  686,  686,  686,  686,  689,   87,  689,
    939        87,   87,  689,  699,   87,  708,   87,  601,  706,  602,
    940       688,  603,  602,  604,  707,   87,  700,  710,  709,  689,
    941        87,  689,   87,  705,  687,   87,  689,   87,   87,  602,
    942        87,  602,   87,  716,  603,  718,  602,  712,   87,   87,
    943        87,   87,  711,   87,  714,   87,   87,  713,   87,  717,
    944       715,   87,  721,  719,   87,  724,   87,   87,  722,  720,
    945       727,   87,   87,   87,  725,   87,  731,  723,   87,  732,
    946       726,   87,   87,  861,  728,  734,   87,  733,  730,   87,
    947 
    948       735,   87,   87,  729,   87,   87,  751,  736,  686,  686,
    949       686,  686,  686,  686,  600,  600,  600,  600,  600,  600,
    950       750,   87,  755,   87,  601,  763,  602,  752,  603,  602,
    951       753,   87,   87,  764,   87,  756,  754,  757,   87,  758,
    952        87,  687,   87,   87,  759,  767,  602,  690,  602,  761,
    953        87,  603,  766,  602,   87,  760,   87,  762,   87,  765,
    954        87,  768,   87,  769,   87,   87,   87,   87,  770,   87,
    955        87,   87,   87,   87,  771,   87,  774,   87,  772,   87,
    956        87,  779,   87,   87,  795,   87,  780,  773,   87,   87,
    957       776,   87,  775,  803,  777,  796,  778,  686,  686,  686,
    958 
    959       686,  686,  686,  793,   87,  794,  799,   87,  798,   87,
    960       801,   87,   87,   87,  797,  804,  805,  800,  806,   87,
    961        87,   87,  802,  807,   87,   87,   87,  808,   87,   87,
    962       743,   87,   87,   87,  809,  828,   87,   87,   87,  830,
    963       831,  833,   87,   87,   87,  834,   87,  836,  810,  811,
    964       826,  827,   87,  829,   87,  825,  832,  837,   87,   87,
    965        87,  838,  839,   87,   87,  835,   87,   87,   87,  851,
    966       850,  855,   87,  852,  840,   87,   87,   87,  853,  857,
    967       849,   87,   87,   87,  854,  858,  859,   87,   87,  856,
    968       860,   87,  863,  864,  865,   87,   87,  866,   87,  868,
    969 
    970       867,  869,   87,   87,   87,  870,   87,   87,   87,  873,
    971        87,  875,   87,  876,   87,   87,   87,  874,   87,  872,
    972        87,   87,   87,  871,   87,  880,   87,   87,   87,  887,
    973       879,  881,  887,  848,  877,  878,  886,  887,  847,  884,
    974       887,  845,  882,  883,  887,  844,  885,   69,   69,   69,
    975        69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
    976        75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
    977        75,   75,   75,   78,   78,   78,   78,   78,   78,   78,
    978        78,   78,   78,   78,   78,   78,   86,  887,  843,   86,
    979       887,   86,   86,   86,   86,   86,  140,  842,   87,   87,
    980 
    981       140,  140,  140,  140,  140,  140,  199,  199,  199,  199,
    982       199,  199,  199,  199,  199,  199,  199,  199,  199,  204,
    983        87,  887,  204,  824,  204,  204,  204,  204,  204,  208,
    984       887,  208,  208,  823,  208,  208,  208,  208,  208,  208,
    985       821,  208,  216,  887,  819,  216,  216,  216,  216,  216,
    986       216,  216,  216,  887,  216,  239,  239,  239,  239,  239,
    987       239,  239,  239,  239,  239,  239,  239,  239,  253,  253,
    988       817,  253,  887,  815,  813,  253,  269,   87,   87,  269,
    989        87,  269,  269,  269,  269,  269,  273,   87,  273,   87,
    990        87,   87,  273,  275,   87,  275,   87,   87,   87,  275,
    991 
    992       348,   87,  348,  887,  792,  790,  348,  350,  887,  350,
    993       887,  787,  785,  350,  354,  783,  354,   87,   87,   87,
    994       354,  356,   87,  356,   87,   87,   87,  356,  358,  749,
    995       358,  746,  745,  743,  358,  365,  205,  365,  739,  738,
    996       670,  365,  367,   87,  367,   87,   87,   87,  367,  239,
    997       239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
    998       239,  239,  380,   87,  380,  382,  382,   87,  382,  382,
    999       382,   87,  382,  253,  253,   87,  253,  392,   87,  392,
    1000        87,   87,   87,  392,  394,   87,  394,   87,   87,  697,
    1001       394,  396,  696,  396,  694,  692,  690,  396,  273,  598,
    1002 
    1003       273,  398,  685,  398,  684,  682,  680,  398,  275,  678,
    1004       275,   86,  676,  674,   86,  672,   86,   86,   86,   86,
    1005        86,  199,  199,  199,  199,  199,  199,  199,  199,  199,
    1006       199,  199,  199,  199,  468,  468,  468,  468,  468,  468,
    1007       468,  468,  468,  468,  468,  468,  468,  469,  670,  469,
    1008        87,   87,   87,  469,  471,   87,  471,   87,   87,   87,
    1009       471,  473,   87,  473,   87,   87,   87,  473,  348,  617,
    1010       348,  475,  615,  475,  613,  611,  609,  475,  350,  607,
    1011       350,  478,  502,  478,  605,  605,  594,  478,  354,  593,
    1012       354,  480,  591,  480,  483,  483,  589,  480,  356,  587,
    1013 
    1014       356,  482,  585,  482,  583,  581,  579,  482,  358,   87,
    1015       358,  484,   87,  484,   87,   87,   87,  484,  365,   87,
    1016       365,  486,   87,  486,   87,  514,  512,  486,  367,  510,
    1017       367,  491,  508,  491,  506,  491,  504,  491,  380,  490,
    1018       380,  487,  380,  485,  380,  382,  382,  361,  382,  382,
    1019       382,  361,  382,  503,  483,  503,  481,  479,  476,  503,
    1020       505,  474,  505,  472,  470,   87,  505,  507,   87,  507,
    1021        87,  400,  399,  507,  392,  397,  392,  509,  395,  509,
    1022       393,  270,  265,  509,  394,  264,  394,  511,  389,  511,
    1023       389,  252,  379,  511,  396,  379,  396,  513,  240,  513,
    1024 
    1025       374,  368,  366,  513,  398,  364,  398,   86,  360,  359,
    1026        86,  357,   86,   86,   86,   86,   86,  468,  468,  468,
    1027       468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
    1028       578,  355,  578,  351,  349,  205,  578,  469,  201,  469,
    1029       580,   87,  580,  277,  276,  274,  580,  471,  270,  471,
    1030       582,  265,  582,  268,  265,  263,  582,  473,  262,  473,
    1031       584,  261,  584,  240,  232,   85,  584,  475,   85,  475,
    1032       586,   87,  586,  205,  203,   85,  586,  478,  122,  478,
    1033       588,  117,  588,   87,  887,   70,  588,  480,   70,  480,
    1034       482,  887,  482,  887,  887,  887,  482,  590,  887,  590,
    1035 
    1036       887,  887,  887,  590,  484,  887,  484,  592,  887,  592,
    1037       887,  887,  887,  592,  486,  887,  486,  491,  887,  491,
    1038       887,  491,  887,  491,  382,  887,  382,  887,  887,  887,
    1039       382,  606,  887,  606,  887,  887,  887,  606,  503,  887,
    1040       503,  608,  887,  608,  887,  887,  887,  608,  505,  887,
    1041       505,  610,  887,  610,  887,  887,  887,  610,  507,  887,
    1042       507,  612,  887,  612,  887,  887,  887,  612,  509,  887,
    1043       509,  614,  887,  614,  887,  887,  887,  614,  511,  887,
    1044       511,  616,  887,  616,  887,  887,  887,  616,  513,  887,
    1045       513,   86,  887,  887,   86,  887,   86,   86,   86,   86,
    1046 
    1047        86,  669,  669,  669,  669,  669,  669,  669,  669,  669,
    1048       669,  669,  669,  669,  671,  887,  671,  887,  887,  887,
    1049       671,  578,  887,  578,  673,  887,  673,  887,  887,  887,
    1050       673,  580,  887,  580,  675,  887,  675,  887,  887,  887,
    1051       675,  582,  887,  582,  677,  887,  677,  887,  887,  887,
    1052       677,  584,  887,  584,  679,  887,  679,  887,  887,  887,
    1053       679,  586,  887,  586,  681,  887,  681,  887,  887,  887,
    1054       681,  588,  887,  588,  683,  887,  683,  887,  887,  887,
    1055       683,  590,  887,  590,   86,  887,   86,  887,  887,  887,
    1056        86,  592,  887,  592,  491,  887,  491,  887,  887,  887,
    1057 
    1058       491,  691,  887,  691,  887,  887,  887,  691,  606,  887,
    1059       606,  693,  887,  693,  887,  887,  887,  693,  608,  887,
    1060       608,  695,  887,  695,  887,  887,  887,  695,  610,  887,
    1061       610,  140,  887,  140,  887,  887,  887,  140,  612,  887,
    1062       612,  698,  887,  698,  614,  887,  614,   86,  887,  887,
    1063        86,  887,   86,   86,   86,   86,   86,  616,  887,  616,
    1064       669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
    1065       669,  669,  669,  737,  887,  737,  887,  887,  887,  737,
    1066       671,  887,  671,  204,  887,  204,  887,  887,  887,  204,
    1067       673,  887,  673,  740,  887,  740,  675,  887,  675,  204,
    1068 
    1069       887,  887,  204,  887,  204,  204,  204,  204,  204,  677,
    1070       887,  677,  741,  887,  741,  679,  887,  679,  681,  887,
    1071       681,  742,  887,  742,  683,  887,  683,   86,  887,   86,
    1072       744,  887,  744,  887,  887,  887,  744,  691,  887,  691,
    1073       269,  887,  269,  887,  887,  887,  269,  693,  887,  693,
    1074       747,  887,  747,  695,  887,  695,  140,  887,  140,  748,
    1075       887,  748,  887,  887,  887,  748,   86,  887,  887,   86,
    1076       887,   86,   86,   86,   86,   86,  781,  887,  781,  737,
    1077       887,  737,  204,  887,  204,  782,  887,  782,  887,  887,
    1078       887,  782,  784,  887,  784,  887,  887,  887,  784,  786,
    1079 
    1080       887,  786,  887,  887,  887,  786,  788,  887,  788,  789,
    1081       887,  789,  887,  887,  887,  789,  791,  887,  791,  887,
    1082       887,  887,  791,  812,  887,  812,  887,  887,  887,  812,
    1083       814,  887,  814,  887,  887,  887,  814,  816,  887,  816,
    1084       887,  887,  887,  816,  818,  887,  818,  887,  887,  887,
    1085       818,  820,  887,  820,  887,  887,  887,  820,  822,  887,
    1086       822,  887,  887,  887,  822,  616,  887,  616,  887,  887,
    1087       887,  616,  841,  887,  841,  887,  887,  887,  841,  677,
    1088       887,  677,  887,  887,  887,  677,  681,  887,  681,  887,
    1089       887,  887,  681,   86,  887,   86,  887,  887,  887,   86,
    1090 
    1091       846,  887,  846,  887,  887,  887,  846,  140,  887,  140,
    1092       887,  887,  887,  140,  204,  887,  204,  887,  887,  887,
    1093       204,   11,  887,  887,  887,  887,  887,  887,  887,  887,
    1094       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    1095       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    1096       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    1097       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    1098       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    1099       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    1100       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    1101 
    1102       887,  887,  887,  887,  887,  887,  887
     805       83,   83,   83,   82,   91,   93,  124,  125,  147,   98,
     806       95,   99,   99,   99,   99,   99,   99,   87,   87,   94,
     807      100,   85,   96,   97,   85,  101,   87,  119,  142,   77,
     808       77,   77,   77,   87,  148,  102,  103,  162,  104,  104,
     809      104,  104,  105,  105,  120,  144,  121,  122,  183,  143,
     810      145,  149,   87,  150,  160,  106,  161,   87,  196,  107,
     811      207,  151,  152,  153,   87,  108,  109,  154,  155,  163,
     812      156,  110,   87,  157,  158,  178,  164,  106,   87,   87,
     813      251,  159,  165,  111,   87,  253,  208,   87,  184,   87,
     814      194,  108,  146,   87,  109,  103,   87,  112,  112,  112,
     815
     816      112,  112,  112,   87,  252,  181,  179,  231,  170,  197,
     817      171,  182,  166,  180,  106,   87,  167,   87,  113,  172,
     818      255,  168,   87,   87,  114,  169,   87,  173,  259,  195,
     819      115,  888,  264,  232,  265,  174,  106,  175,  189,  249,
     820      176,  257,  116,  318,  177,  250,  190,  258,   87,  144,
     821      114,  126,  260,  191,  145,  127,  128,   87,  129,   87,
     822      130,  131,  264,  132,  265,  133,  261,  192,  272,  185,
     823      186,  250,   87,  258,  134,  135,  136,  281,  264,  187,
     824      265,  283,  188,  198,   81,   82,   82,   82,  198,   87,
     825      264,  199,  265,   87,  273,  137,  146,   87,  138,   80,
     826
     827       81,   82,   82,   82,   80,  284,  201,  202,   87,  287,
     828      193,  201,   82,   81,   82,   82,   82,   82,   82,   81,
     829       83,   83,   83,   82,  299,  139,  140,  203,  203,  203,
     830      203,  203,  203,  210,  211,  250,   87,  888,  210,  710,
     831      212,  243,  243,  243,  243,  212,   99,   99,   99,   99,
     832       99,   99,  258,  249,  213,  213,  213,  213,  264,  266,
     833      265,  250,   87,  267,  264,  212,  265,  888,  266,  888,
     834      257,  301,  256,  264,  244,  265,   87,   87,  258,  242,
     835      264,  214,  265,   87,  212,  264,  268,  265,   87,  212,
     836      212,   87,  279,  212,  212,  888,  264,  888,  265,  280,
     837
     838      264,  212,  265,  310,  212,  286,  212,  215,  212,  144,
     839      216,  218,   87,  300,  145,  219,  220,   87,  435,   87,
     840      221,  222,   87,  223,  103,  224,  105,  105,  105,  105,
     841      105,  105,  315,   87,  225,  226,  227,  282,  304,  246,
     842      285,  246,   87,  106,  247,  247,  247,  247,  247,  247,
     843       87,  305,   87,   87,   87,  228,   87,   87,  229,  245,
     844      307,   87,   87,  302,  303,  106,  288,  289,  290,  306,
     845      291,  292,   87,   87,  293,  308,  294,  248,  311,  309,
     846       87,  295,  296,  297,  314,  298,  230,  234,  234,  234,
     847      234,  234,  234,   87,   87,  320,   87,  316,  312,  319,
     848
     849       87,   87,   87,  235,  236,  237,  324,  238,  237,  144,
     850       87,  321,  317,   87,  347,   87,  313,  323,  322,   87,
     851      239,   87,   87,  466,  326,  237,  236,  237,  329,  325,
     852      238,   87,  237,  330,  327,  328,  332,   87,  338,   87,
     853      348,  335,  336,   87,   87,   87,   87,  361,  407,  362,
     854      331,  333,  334,   87,   87,  379,  339,  340,  342,  344,
     855      343,  361,   87,  362,  337,  341,  198,   81,   82,   82,
     856       82,  198,  201,  202,  199,  210,  211,  201,  201,  202,
     857      210,  379,  408,  201,  345,  202,  361,   87,  362,  345,
     858      361,  346,  362,  203,  203,  203,  203,  203,  203,  203,
     859
     860      203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
     861      203,  353,  353,  353,  353,  362,  362,  363,  361,  361,
     862      362,  362,  361,  364,  362,  361,   87,  362,  361,  361,
     863      362,  362,  361,  370,  362,  370,  370,  888,   87,  264,
     864      371,  265,  371,  406,  354,  372,  372,  372,  372,  372,
     865      372,  389,  374,  264,  374,  265,  370,  374,  370,  391,
     866      235,  236,  237,  570,  238,  237,  247,  247,  247,  247,
     867      247,  247,  376,   87,  374,   87,  374,  389,  373,   87,
     868      409,  374,  237,  236,  237,  392,  402,  238,  888,  237,
     869      105,  105,  105,  105,  105,  105,  246,  403,  246,   87,
     870
     871       87,  247,  247,  247,  247,  247,  247,  106,  105,  105,
     872      105,  105,  105,  105,  382,   87,  405,  404,   87,   87,
     873      420,   87,   87,  256,  361,   87,  362,   87,  717,  106,
     874      377,  377,  377,  377,  377,  377,  421,  384,  410,  385,
     875      415,  256,  414,  386,   87,   87,  235,  416,  237,  387,
     876      238,  237,  112,  112,  112,  112,  112,  112,   87,  417,
     877      411,  388,   87,  378,   87,  385,  412,  413,  237,  386,
     878      237,  422,   87,  238,   87,  237,   87,   87,  418,  419,
     879       87,  426,   87,   87,   87,  261,  427,  428,   87,   87,
     880      424,  423,  425,  433,  434,   87,   87,   87,   87,   87,
     881
     882       87,  430,  429,  438,   87,  431,  432,  437,  440,  442,
     883       87,   87,  439,   87,  436,  441,  443,   87,  444,   87,
     884       87,   87,   87,   87,   87,   87,   87,   87,   87,  446,
     885      448,  449,   87,   87,   87,  445,  450,  447,  452,   87,
     886       87,  451,  457,   87,  456,  453,  455,  454,  144,   87,
     887      458,   87,  463,  462,   87,  459,  460,  461,   87,  467,
     888       87,  345,  202,  202,  465,  501,  345,  464,  346,  200,
     889      361,  516,  362,  468,  212,  212,  212,  212,  353,  353,
     890      353,  353,  372,  372,  372,  372,  372,  372,  371,  502,
     891      371,   87,   87,  372,  372,  372,  372,  372,  372,  234,
     892
     893      234,  234,  234,  234,  234,   87,  518,  478,  489,  489,
     894      489,  489,  489,  489,  243,  243,  243,  243,  105,  105,
     895       87,  517,   87,  757,  235,  496,  237,  533,  238,  237,
     896      493,  497,  375,  377,  377,  377,  377,  377,  377,  493,
     897      494,  490,  497,   87,  382,   87,  237,  376,  237,  495,
     898       87,  238,   87,  237,  520,   87,  493,  497,   87,  888,
     899      496,  521,  519,  888,  522,  493,  378,  384,  497,  385,
     900       87,  525,   87,  386,  523,  498,  536,  498,   87,  387,
     901      499,  499,  499,  499,  499,  499,  384,  524,  385,   87,
     902       87,  388,  386,   87,  527,  385,   87,   87,  503,  386,
     903
     904       87,   87,   87,  528,   87,  526,   87,  538,   87,   87,
     905      388,   87,  540,  500,  385,  531,  529,  530,  386,  532,
     906       87,  534,   87,  537,   87,  541,  544,  539,  535,   87,
     907      543,   87,  542,   87,   87,  545,   87,  547,   87,   87,
     908       87,   87,  549,   87,  548,   87,   87,  546,   87,  550,
     909       87,   87,   87,   87,  553,  557,  551,   87,  555,  560,
     910      552,  556,  554,   87,   87,  558,   87,   87,  559,   87,
     911       87,  568,  561,  562,  564,  565,  569,  563,   87,   87,
     912      567,  566,   87,   87,   87,  202,  572,   87,   87,   87,
     913      575,  578,  571,  577,  493,  493,  573,   87,  627,  574,
     914
     915      212,  212,  212,  212,  494,  576,  489,  489,  489,  489,
     916      489,  489,  377,  377,  377,  377,  377,  377,   87,  624,
     917      493,  493,  235,  596,  237,  596,  238,  237,  597,  597,
     918      597,  597,  597,  597,  600,  619,   87,  493,   87,  490,
     919       87,  626,   87,  634,  237,  491,  237,  599,  660,  238,
     920       87,  237,  499,  499,  499,  499,  499,  499,   87,   87,
     921      600,  598,  622,  493,  601,  601,  601,  601,  601,  601,
     922      629,  620,  637,   87,  621,   87,   87,   87,  642,   87,
     923      602,  498,  603,  498,  604,  603,  499,  499,  499,  499,
     924      499,  499,  623,   87,  631,   87,   87,  605,  632,   87,
     925
     926       87,   87,  603,   87,  603,  633,  625,  604,   87,  603,
     927      630,  635,  636,   87,   87,  643,   87,  638,   87,   87,
     928       87,   87,   87,  641,   87,  639,   87,  644,   87,   87,
     929      640,  648,   87,  645,  646,  647,   87,  649,  651,   87,
     930       87,  650,   87,   87,  652,  654,   87,  653,  655,   87,
     931       87,  656,   87,   87,  665,   87,  658,  662,  657,  661,
     932       87,   87,   87,  659,  666,  664,   87,   87,   87,   87,
     933       87,  667,  888,  689,  663,  702,  735,   87,  703,  668,
     934      669,  489,  489,  489,  489,  489,  489,  597,  597,  597,
     935      597,  597,  597,  596,  705,  596,  689,   87,  597,  597,
     936
     937      597,  597,  597,  597,  601,  601,  601,  601,  601,  601,
     938      704,  689,  689,  888,  595,  687,  687,  687,  687,  687,
     939      687,  690,   87,  690,   87,   87,  690,  700,   87,   87,
     940       87,  602,  707,  603,  689,  604,  603,  605,  708,   87,
     941      701,  711,   87,  690,   87,  690,  709,  706,  688,   87,
     942      690,   87,   87,  603,  719,  603,   87,  713,  604,   87,
     943      603,  712,   87,   87,   87,   87,  714,   87,  715,  718,
     944       87,  716,  722,   87,  720,   87,  721,   87,   87,  725,
     945      723,   87,   87,   87,  728,   87,  724,   87,  726,  727,
     946      732,   87,  733,  729,   87,  731,  734,   87,  737,   87,
     947
     948      736,  863,  758,  888,  730,  687,  687,  687,  687,  687,
     949      687,  601,  601,  601,  601,  601,  601,   87,  751,   87,
     950      753,  602,   87,  603,  755,  604,  603,  752,   87,  754,
     951       87,   87,   87,   87,   87,  765,  760,   87,  688,   87,
     952      763,  762,  766,  603,  691,  603,  759,  761,  604,   87,
     953      603,  756,  768,   87,  764,   87,  769,   87,  767,   87,
     954       87,   87,   87,   87,   87,  771,   87,   87,  770,  772,
     955       87,  775,   87,  773,   87,   87,   87,  804,   87,   87,
     956      780,   87,  774,  781,   87,   87,  776,  777,  778,  796,
     957      797,  779,  687,  687,  687,  687,  687,  687,  795,  794,
     958
     959       87,   87,  801,   87,   87,   87,  802,   87,  799,   87,
     960      798,   87,  805,   87,  806,   87,   87,  803,  800,  808,
     961      807,   87,  810,   87,  809,  744,   87,   87,   87,   87,
     962       87,  829,   87,   87,  834,  831,  832,   87,  811,   87,
     963       87,   87,  835,   87,  837,   87,  812,  828,  827,   87,
     964       87,   87,  830,  826,  838,  833,   87,   87,  839,  840,
     965       87,  841,  836,  851,   87,   87,  853,  852,   87,   87,
     966       87,  850,  856,  858,   87,   87,   87,  859,   87,   87,
     967       87,  865,   87,  854,  860,  857,   87,  861,  864,  855,
     968       87,  868,  867,  866,   87,   87,   87,  869,  870,  871,
     969
     970      872,   87,   87,   87,   87,  874,   87,  876,   87,  877,
     971       87,   87,   87,  875,   87,   87,  873,   87,   87,   87,
     972      888,  881,   87,  888,  888,  862,  880,  882,   87,   87,
     973      878,  879,  887,   87,   87,   87,  885,  883,  884,  888,
     974      888,  886,   69,   69,   69,   69,   69,   69,   69,   69,
     975       69,   69,   69,   69,   69,   75,   75,   75,   75,   75,
     976       75,   75,   75,   75,   75,   75,   75,   75,   78,   78,
     977       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
     978       78,   86,  849,  888,   86,  848,   86,   86,   86,   86,
     979       86,  141,  888,  846,  888,  141,  141,  141,  141,  141,
     980
     981      141,  200,  200,  200,  200,  200,  200,  200,  200,  200,
     982      200,  200,  200,  200,  205,  845,  888,  205,  844,  205,
     983      205,  205,  205,  205,  209,  888,  209,  209,  843,  209,
     984      209,  209,  209,  209,  209,   87,  209,  217,   87,   87,
     985      217,  217,  217,  217,  217,  217,  217,  217,  888,  217,
     986      240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
     987      240,  240,  240,  254,  254,  825,  254,  888,  824,  822,
     988      254,  270,  888,  820,  270,  888,  270,  270,  270,  270,
     989      270,  274,  818,  274,  888,  816,  814,  274,  276,   87,
     990      276,   87,   87,   87,  276,  349,   87,  349,   87,   87,
     991
     992       87,  349,  351,   87,  351,   87,   87,   87,  351,  355,
     993      888,  355,  793,  791,  888,  355,  357,  888,  357,  788,
     994      786,  784,  357,  359,   87,  359,   87,   87,   87,  359,
     995      366,   87,  366,   87,   87,  750,  366,  368,  747,  368,
     996      746,  744,  206,  368,  240,  240,  240,  240,  240,  240,
     997      240,  240,  240,  240,  240,  240,  240,  381,  740,  381,
     998      383,  383,  739,  383,  383,  383,  671,  383,  254,  254,
     999       87,  254,  393,   87,  393,   87,   87,   87,  393,  395,
     1000       87,  395,   87,   87,   87,  395,  397,   87,  397,   87,
     1001       87,   87,  397,  274,   87,  274,  399,   87,  399,  698,
     1002
     1003      697,  695,  399,  276,  693,  276,   86,  691,  599,   86,
     1004      686,   86,   86,   86,   86,   86,  200,  200,  200,  200,
     1005      200,  200,  200,  200,  200,  200,  200,  200,  200,  469,
     1006      469,  469,  469,  469,  469,  469,  469,  469,  469,  469,
     1007      469,  469,  470,  685,  470,  683,  681,  679,  470,  472,
     1008      677,  472,  675,  673,  671,  472,  474,   87,  474,   87,
     1009       87,   87,  474,  349,   87,  349,  476,   87,  476,   87,
     1010       87,   87,  476,  351,   87,  351,  479,   87,  479,  618,
     1011      616,  614,  479,  355,  612,  355,  481,  610,  481,  608,
     1012      503,  606,  481,  357,  606,  357,  483,  595,  483,  594,
     1013
     1014      592,  484,  483,  359,  484,  359,  485,  590,  485,  588,
     1015      586,  584,  485,  366,  582,  366,  487,  580,  487,   87,
     1016       87,   87,  487,  368,   87,  368,  492,   87,  492,   87,
     1017      492,   87,  492,  381,   87,  381,  515,  381,  513,  381,
     1018      383,  383,  511,  383,  383,  383,  509,  383,  504,  507,
     1019      504,  505,  491,  488,  504,  506,  486,  506,  362,  362,
     1020      484,  506,  508,  482,  508,  480,  477,  475,  508,  393,
     1021      473,  393,  510,  471,  510,   87,   87,   87,  510,  395,
     1022      401,  395,  512,  400,  512,  398,  396,  394,  512,  397,
     1023      271,  397,  514,  266,  514,  265,  390,  390,  514,  399,
     1024
     1025      253,  399,   86,  380,  380,   86,  241,   86,   86,   86,
     1026       86,   86,  469,  469,  469,  469,  469,  469,  469,  469,
     1027      469,  469,  469,  469,  469,  579,  375,  579,  369,  367,
     1028      365,  579,  470,  361,  470,  581,  360,  581,  358,  356,
     1029      352,  581,  472,  350,  472,  583,  206,  583,  202,   87,
     1030      278,  583,  474,  277,  474,  585,  275,  585,  271,  266,
     1031      269,  585,  476,  266,  476,  587,  264,  587,  263,  262,
     1032      241,  587,  479,  233,  479,  589,   85,  589,   85,   87,
     1033      206,  589,  481,  204,  481,  483,   85,  483,  123,   87,
     1034      888,  483,  591,   70,  591,   70,  888,  888,  591,  485,
     1035
     1036      888,  485,  593,  888,  593,  888,  888,  888,  593,  487,
     1037      888,  487,  492,  888,  492,  888,  492,  888,  492,  383,
     1038      888,  383,  888,  888,  888,  383,  607,  888,  607,  888,
     1039      888,  888,  607,  504,  888,  504,  609,  888,  609,  888,
     1040      888,  888,  609,  506,  888,  506,  611,  888,  611,  888,
     1041      888,  888,  611,  508,  888,  508,  613,  888,  613,  888,
     1042      888,  888,  613,  510,  888,  510,  615,  888,  615,  888,
     1043      888,  888,  615,  512,  888,  512,  617,  888,  617,  888,
     1044      888,  888,  617,  514,  888,  514,   86,  888,  888,   86,
     1045      888,   86,   86,   86,   86,   86,  670,  670,  670,  670,
     1046
     1047      670,  670,  670,  670,  670,  670,  670,  670,  670,  672,
     1048      888,  672,  888,  888,  888,  672,  579,  888,  579,  674,
     1049      888,  674,  888,  888,  888,  674,  581,  888,  581,  676,
     1050      888,  676,  888,  888,  888,  676,  583,  888,  583,  678,
     1051      888,  678,  888,  888,  888,  678,  585,  888,  585,  680,
     1052      888,  680,  888,  888,  888,  680,  587,  888,  587,  682,
     1053      888,  682,  888,  888,  888,  682,  589,  888,  589,  684,
     1054      888,  684,  888,  888,  888,  684,  591,  888,  591,   86,
     1055      888,   86,  888,  888,  888,   86,  593,  888,  593,  492,
     1056      888,  492,  888,  888,  888,  492,  692,  888,  692,  888,
     1057
     1058      888,  888,  692,  607,  888,  607,  694,  888,  694,  888,
     1059      888,  888,  694,  609,  888,  609,  696,  888,  696,  888,
     1060      888,  888,  696,  611,  888,  611,  141,  888,  141,  888,
     1061      888,  888,  141,  613,  888,  613,  699,  888,  699,  615,
     1062      888,  615,   86,  888,  888,   86,  888,   86,   86,   86,
     1063       86,   86,  617,  888,  617,  670,  670,  670,  670,  670,
     1064      670,  670,  670,  670,  670,  670,  670,  670,  738,  888,
     1065      738,  888,  888,  888,  738,  672,  888,  672,  205,  888,
     1066      205,  888,  888,  888,  205,  674,  888,  674,  741,  888,
     1067      741,  676,  888,  676,  205,  888,  888,  205,  888,  205,
     1068
     1069      205,  205,  205,  205,  678,  888,  678,  742,  888,  742,
     1070      680,  888,  680,  682,  888,  682,  743,  888,  743,  684,
     1071      888,  684,   86,  888,   86,  745,  888,  745,  888,  888,
     1072      888,  745,  692,  888,  692,  270,  888,  270,  888,  888,
     1073      888,  270,  694,  888,  694,  748,  888,  748,  696,  888,
     1074      696,  141,  888,  141,  749,  888,  749,  888,  888,  888,
     1075      749,   86,  888,  888,   86,  888,   86,   86,   86,   86,
     1076       86,  782,  888,  782,  738,  888,  738,  205,  888,  205,
     1077      783,  888,  783,  888,  888,  888,  783,  785,  888,  785,
     1078      888,  888,  888,  785,  787,  888,  787,  888,  888,  888,
     1079
     1080      787,  789,  888,  789,  790,  888,  790,  888,  888,  888,
     1081      790,  792,  888,  792,  888,  888,  888,  792,  813,  888,
     1082      813,  888,  888,  888,  813,  815,  888,  815,  888,  888,
     1083      888,  815,  817,  888,  817,  888,  888,  888,  817,  819,
     1084      888,  819,  888,  888,  888,  819,  821,  888,  821,  888,
     1085      888,  888,  821,  823,  888,  823,  888,  888,  888,  823,
     1086      617,  888,  617,  888,  888,  888,  617,  842,  888,  842,
     1087      888,  888,  888,  842,  678,  888,  678,  888,  888,  888,
     1088      678,  682,  888,  682,  888,  888,  888,  682,   86,  888,
     1089       86,  888,  888,  888,   86,  847,  888,  847,  888,  888,
     1090
     1091      888,  847,  141,  888,  141,  888,  888,  888,  141,  205,
     1092      888,  205,  888,  888,  888,  205,   11,  888,  888,  888,
     1093      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1094      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1095      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1096      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1097      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1098      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1099      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1100      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1101
     1102      888,  888
    11031103    } ;
    11041104
    1105 static yyconst flex_int16_t yy_chk[2908] =
     1105static yyconst flex_int16_t yy_chk[2903] =
    11061106    {   0,
    11071107        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    11241124        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    11251125        5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
    1126         8,    9,   10,   37,   37,   20,   39,    9,   10,  886,
     1126        8,    9,   10,   33,   33,   20,  526,    9,   10,  526,
    11271127        7,    8,   13,   13,   13,   13,   13,   13,   15,   15,
    11281128
    1129        15,   15,   15,   15,   20,   25,   48,   39,   42,   28,
    1130        27,   28,   28,   28,   28,   28,   28,  109,  115,   25,
    1131        29,   25,   27,   27,   27,   29,   48,   35,   40,    7,
    1132         8,    9,   10,   40,   42,   29,   30,   47,   30,   30,
    1133        30,   30,   30,   30,   35,   57,   35,   35,   44,  126,
    1134        44,  126,  109,  115,   57,   30,   64,   56,   47,   30,
    1135        47,   45,   45,   45,   49,   30,   30,   45,   45,   49,
    1136        45,   30,   40,   45,   45,   40,   49,   30,   45,   56,
    1137        62,   45,   49,   30,   73,  885,  127,   53,  127,   51,
    1138        61,   30,   62,   55,   30,   31,  108,   31,   31,   31,
    1139 
    1140        31,   31,   31,   50,   51,   53,   51,   64,   61,   54,
    1141        73,   55,   50,   87,   31,   51,   50,   55,   31,   54,
    1142       108,   50,   52,  114,   31,   50,   54,   52,  175,  129,
    1143        31,  129,  107,  154,  151,   52,   31,   52,  107,   87,
    1144        52,   60,   31,  132,   52,  132,   60,  114,  175,  154,
    1145        31,   38,  151,  385,  111,   38,   38,   58,   38,   60,
    1146        38,   38,  113,   38,  107,   38,   59,  130,  113,   58,
    1147        58,  116,  111,  164,   38,   38,   38,  385,   59,   58,
    1148       111,  130,   58,  130,  142,   60,   59,  131,   60,  116,
    1149       164,   68,   68,   59,  113,   38,   68,  116,   38,  131,
    1150 
    1151       110,  131,   60,   67,   67,   67,   67,   67,   67,  877,
    1152       142,   67,   68,   68,   68,   68,   68,   68,   80,   80,
    1153        80,   80,   80,   80,  153,   38,   38,   77,   77,  134,
    1154       110,  134,   77,  153,   77,  110,  135,  135,  135,   77,
    1155        82,   82,   82,   82,   82,   82,  876,  243,   77,   77,
    1156        77,   77,   83,   83,   83,   83,   83,   83,  110,   77,
    1157       103,  103,  103,  103,  103,  103,  104,  104,  104,  104,
    1158       133,  133,  137,  133,  137,   77,  145,  139,   77,  139,
    1159       157,  145,  243,   77,   77,  152,  156,   77,   77,  155,
    1160       166,  150,  157,  103,  104,   77,  159,  168,   77,  104,
    1161 
    1162        77,   77,   77,  152,   77,   85,  150,  155,  156,   85,
    1163        85,  166,  159,  150,   85,   85,  161,   85,  160,   85,
    1164       145,  162,  104,  167,  168,  161,  169,  163,   85,   85,
    1165        85,  105,  163,  105,  105,  105,  105,  105,  105,  873,
    1166       160,  171,  162,  162,  165,  163,  167,  169,  173,   85,
    1167       105,  106,   85,  106,  165,  172,  106,  106,  106,  106,
    1168       106,  106,  180,  171,  170,  173,  105,  176,  177,  170,
    1169       172,  181,  105,  174,  184,  187,  181,  182,  179,  180,
    1170        85,   99,   99,   99,   99,   99,   99,  170,  187,  106,
    1171       177,  174,  184,  179,  176,  183,  190,   99,   99,   99,
    1172 
    1173       179,   99,   99,  189,  182,  186,  183,  191,  189,  218,
    1174       186,  218,  185,  188,   99,  190,  183,  183,  284,   99,
    1175        99,   99,  158,  185,   99,  186,   99,  158,  158,  158,
    1176       189,  158,  158,  188,  192,  158,  194,  158,  284,  219,
    1177       185,  219,  158,  158,  158,  193,  158,  192,  220,  194,
    1178       220,  191,  198,  198,  191,  192,  205,  198,  193,  872,
    1179       193,  197,  197,  197,  197,  197,  197,  200,  200,  197,
    1180       248,  221,  200,  198,  198,  198,  198,  198,  198,  202,
    1181       202,  223,  205,  223,  202,  221,  202,  221,  200,  200,
    1182       200,  200,  200,  200,  209,  209,  248,  338,  222,  209,
    1183 
    1184       202,  202,  202,  202,  202,  202,  212,  212,  212,  212,
    1185       222,  309,  222,  224,  224,  225,  224,  225,  226,  226,
    1186       226,  228,  229,  228,  229,  234,  234,  235,  236,  235,
    1187       309,  279,  235,  235,  235,  235,  235,  235,  237,  212,
    1188       237,  338,  266,  237,  266,  267,  278,  267,  234,  279,
    1189       283,  236,  241,  241,  241,  283,  241,  241,  256,  278,
    1190       237,  281,  237,  282,  280,  235,  270,  237,  244,  244,
    1191       244,  244,  244,  244,  241,  241,  241,  281,  285,  241,
    1192       282,  241,  280,  285,  256,  244,  245,  245,  245,  245,
    1193       245,  245,  270,  288,  293,  286,  294,  300,  306,  293,
    1194 
    1195       308,  244,  300,  306,  870,  294,  308,  244,  246,  246,
    1196       246,  246,  246,  246,  253,  286,  288,  255,  255,  255,
    1197       255,  255,  255,  287,  246,  247,  246,  247,  246,  246,
    1198       247,  247,  247,  247,  247,  247,  290,  253,  287,  253,
    1199       869,  246,  289,  253,  287,  287,  246,  292,  246,  253,
    1200       255,  246,  291,  246,  260,  260,  260,  260,  260,  260,
    1201       289,  253,  290,  292,  292,  253,  295,  291,  296,  253,
    1202       297,  299,  301,  302,  303,  304,  305,  307,  311,  295,
    1203       302,  301,  307,  310,  311,  312,  319,  260,  297,  299,
    1204       313,  314,  310,  304,  303,  296,  318,  305,  305,  313,
    1205 
    1206       315,  312,  316,  317,  319,  315,  314,  316,  317,  320,
    1207       322,  323,  324,  326,  325,  318,  327,  328,  331,  329,
    1208       330,  322,  320,  332,  334,  317,  323,  325,  333,  330,
    1209       335,  324,  337,  339,  340,  326,  329,  328,  401,  327,
    1210       331,  337,  334,  335,  341,  343,  332,  340,  342,  401,
    1211       333,  339,  341,  342,  344,  344,  345,  460,  862,  344,
    1212       343,  344,  345,  352,  352,  352,  352,  353,  353,  353,
    1213       353,  362,  363,  362,  363,  370,  370,  370,  370,  370,
    1214       370,  372,  460,  372,  380,  381,  372,  372,  372,  372,
    1215       372,  372,  861,  402,  380,  381,  352,  371,  371,  371,
    1216 
    1217       371,  371,  371,  374,  374,  374,  374,  374,  374,  402,
    1218       380,  381,  403,  371,  404,  371,  860,  371,  371,  375,
    1219       375,  375,  375,  375,  375,  383,  382,  403,  406,  405,
    1220       371,  383,  407,  404,  408,  371,  374,  371,  405,  406,
    1221       371,  407,  371,  376,  376,  376,  376,  376,  376,  382,
    1222       412,  382,  375,  387,  411,  382,  408,  383,  384,  386,
    1223       384,  382,  410,  384,  384,  384,  384,  384,  384,  409,
    1224       411,  387,  412,  382,  413,  410,  376,  382,  409,  387,
    1225       415,  382,  386,  414,  386,  416,  417,  413,  386,  418,
    1226       421,  417,  419,  422,  386,  420,  384,  427,  419,  414,
    1227 
    1228       414,  421,  415,  416,  418,  423,  386,  425,  429,  427,
    1229       386,  418,  422,  430,  386,  431,  420,  432,  433,  434,
    1230       423,  425,  435,  437,  433,  439,  440,  441,  431,  429,
    1231       442,  435,  443,  444,  434,  430,  449,  445,  437,  447,
    1232       432,  450,  441,  451,  454,  439,  445,  443,  440,  452,
    1233       450,  453,  442,  444,  455,  456,  447,  457,  458,  449,
    1234       459,  461,  463,  455,  451,  458,  454,  459,  462,  452,
    1235       457,  453,  466,  456,  464,  467,  462,  525,  859,  463,
    1236       525,  468,  491,  461,  467,  464,  462,  468,  477,  477,
    1237       477,  477,  491,  515,  466,  488,  488,  488,  488,  488,
    1238 
    1239       488,  490,  490,  490,  490,  490,  490,  519,  491,  521,
    1240       515,  488,  492,  488,  492,  488,  488,  492,  492,  492,
    1241       492,  492,  492,  494,  516,  495,  493,  519,  488,  855,
    1242       851,  521,  518,  488,  490,  488,  493,  516,  488,  529,
    1243       488,  497,  497,  497,  497,  497,  497,  518,  520,  494,
    1244       492,  495,  493,  498,  498,  498,  498,  498,  498,  523,
    1245       529,  520,  526,  848,  523,  847,  528,  846,  522,  498,
    1246       499,  498,  499,  498,  498,  499,  499,  499,  499,  499,
    1247       499,  522,  526,  524,  527,  528,  498,  531,  530,  532,
    1248       533,  498,  531,  498,  524,  534,  498,  530,  498,  527,
    1249 
    1250       532,  535,  537,  533,  536,  538,  539,  541,  542,  547,
    1251       535,  539,  544,  541,  538,  545,  546,  542,  547,  537,
    1252       550,  551,  845,  549,  534,  552,  536,  554,  560,  544,
    1253       545,  546,  549,  551,  555,  557,  558,  550,  561,  555,
    1254       552,  562,  554,  565,  557,  558,  564,  567,  566,  568,
    1255       560,  561,  575,  565,  564,  566,  569,  571,  562,  574,
    1256       572,  568,  569,  620,  619,  575,  571,  601,  601,  567,
    1257       572,  619,  620,  844,  843,  622,  574,  594,  594,  594,
    1258       594,  594,  594,  595,  595,  595,  595,  595,  595,  597,
    1259       601,  597,  622,  621,  597,  597,  597,  597,  597,  597,
    1260 
    1261       600,  600,  600,  600,  600,  600,  621,  602,  626,  842,
    1262       594,  596,  596,  596,  596,  596,  596,  603,  618,  603,
    1263       623,  624,  603,  618,  628,  626,  625,  596,  624,  596,
    1264       602,  596,  596,  600,  625,  627,  618,  628,  627,  603,
    1265       629,  603,  630,  623,  596,  631,  603,  632,  633,  596,
    1266       634,  596,  635,  634,  596,  636,  596,  630,  637,  638,
    1267       640,  644,  629,  639,  632,  641,  642,  631,  645,  635,
    1268       633,  646,  639,  637,  650,  642,  651,  656,  640,  638,
    1269       646,  653,  657,  636,  644,  665,  656,  641,  664,  657,
    1270       645,  667,  668,  841,  650,  665,  700,  664,  653,  699,
    1271 
    1272       667,  702,  705,  651,  714,  837,  700,  668,  686,  686,
    1273       686,  686,  686,  686,  690,  690,  690,  690,  690,  690,
    1274       699,  708,  705,  703,  686,  714,  686,  702,  686,  686,
    1275       703,  704,  706,  715,  707,  706,  704,  707,  710,  708,
    1276       712,  686,  711,  717,  710,  718,  686,  690,  686,  712,
    1277       720,  686,  717,  686,  713,  711,  716,  713,  719,  716,
    1278       721,  719,  715,  720,  722,  723,  724,  725,  721,  728,
    1279       731,  718,  732,  735,  722,  733,  725,  736,  723,  756,
    1280       757,  735,  836,  754,  756,  759,  736,  724,  755,  760,
    1281       731,  761,  728,  764,  732,  757,  733,  743,  743,  743,
    1282 
    1283       743,  743,  743,  754,  758,  755,  760,  762,  759,  763,
    1284       762,  769,  766,  768,  758,  766,  768,  761,  769,  772,
    1285       770,  764,  763,  770,  771,  773,  778,  771,  793,  795,
    1286       743,  798,  797,  796,  772,  797,  799,  800,  802,  799,
    1287       800,  803,  804,  806,  807,  804,  810,  807,  773,  778,
    1288       795,  796,  809,  798,  808,  793,  802,  808,  811,  826,
    1289       830,  809,  810,  827,  829,  806,  828,  803,  831,  828,
    1290       827,  831,  832,  829,  811,  834,  835,  839,  830,  835,
    1291       826,  840,  838,  849,  830,  838,  839,  853,  850,  832,
    1292       840,  852,  849,  850,  852,  854,  856,  853,  857,  856,
    1293 
    1294       854,  857,  858,  863,  864,  858,  865,  866,  867,  865,
    1295       868,  867,  871,  868,  874,  875,  878,  866,  879,  864,
    1296       880,  882,  881,  863,  883,  878,  884,  833,  825,  824,
    1297       875,  879,  823,  822,  871,  874,  884,  821,  820,  882,
    1298       819,  818,  880,  881,  817,  816,  883,  888,  888,  888,
     1129       15,   15,   15,   15,   20,   25,   37,   37,   42,   28,
     1130       27,   28,   28,   28,   28,   28,   28,   48,  887,   25,
     1131       29,   25,   27,   27,   27,   29,   56,   35,   39,    7,
     1132        8,    9,   10,   47,   42,   29,   30,   48,   30,   30,
     1133       30,   30,   30,   30,   35,   40,   35,   35,   56,   39,
     1134       40,   44,  886,   44,   47,   30,   47,   53,   64,   30,
     1135       73,   45,   45,   45,   49,   30,   30,   45,   45,   49,
     1136       45,   30,   61,   45,   45,   53,   49,   30,   45,   57,
     1137      108,   45,   49,   30,  878,  109,   73,   55,   57,   40,
     1138       61,   30,   40,   51,   30,   31,   54,   31,   31,   31,
     1139
     1140       31,   31,   31,   50,  108,   55,   54,   87,   51,   64,
     1141       51,   55,   50,   54,   31,  877,   50,   62,   31,   51,
     1142      109,   50,   52,  176,   31,   50,   59,   52,  114,   62,
     1143       31,  115,  127,   87,  127,   52,   31,   52,   59,  107,
     1144       52,  113,   31,  176,   52,  107,   59,  113,  874,   60,
     1145       31,   38,  114,   59,   60,   38,   38,   58,   38,  152,
     1146       38,   38,  128,   38,  128,   38,  115,   60,  143,   58,
     1147       58,  107,  154,  113,   38,   38,   38,  152,  130,   58,
     1148      130,  154,   58,   67,   67,   67,   67,   67,   67,  155,
     1149      133,   67,  133,   60,  143,   38,   60,  158,   38,   80,
     1150
     1151       80,   80,   80,   80,   80,  155,   68,   68,  160,  158,
     1152       60,   68,   82,   82,   82,   82,   82,   82,   83,   83,
     1153       83,   83,   83,   83,  160,   38,   38,   68,   68,   68,
     1154       68,   68,   68,   77,   77,  111,  628,  110,   77,  628,
     1155       77,  104,  104,  104,  104,   77,  103,  103,  103,  103,
     1156      103,  103,  116,  111,   77,   77,   77,   77,  135,  131,
     1157      135,  111,  162,  134,  134,   77,  134,  110,  132,  104,
     1158      116,  162,  110,  131,  104,  131,  169,  151,  116,  103,
     1159      132,   77,  132,  157,   77,  136,  136,  136,  873,   77,
     1160       77,  161,  151,   77,   77,  110,  138,  104,  138,  151,
     1161
     1162      140,   77,  140,  169,   77,  157,   77,   77,   77,  146,
     1163       77,   85,  309,  161,  146,   85,   85,  173,  309,  153,
     1164       85,   85,  156,   85,  105,   85,  105,  105,  105,  105,
     1165      105,  105,  173,  164,   85,   85,   85,  153,  164,  106,
     1166      156,  106,  163,  105,  106,  106,  106,  106,  106,  106,
     1167      166,  164,  165,  146,  167,   85,  168,  170,   85,  105,
     1168      166,  159,  172,  163,  163,  105,  159,  159,  159,  165,
     1169      159,  159,  177,  178,  159,  167,  159,  106,  170,  168,
     1170      174,  159,  159,  159,  172,  159,   85,   99,   99,   99,
     1171       99,   99,   99,  171,  175,  178,  180,  174,  171,  177,
     1172
     1173      181,  182,  183,   99,   99,   99,  182,   99,   99,  192,
     1174      185,  180,  175,  184,  206,  342,  171,  181,  180,  191,
     1175       99,  189,  186,  342,  184,   99,   99,   99,  185,  183,
     1176       99,  187,   99,  186,  184,  184,  187,  190,  191,  188,
     1177      206,  189,  190,  284,  193,  194,  195,  219,  284,  219,
     1178      186,  187,  188,  192,  871,  249,  192,  193,  194,  195,
     1179      194,  220,  285,  220,  190,  193,  198,  198,  198,  198,
     1180      198,  198,  199,  199,  198,  210,  210,  199,  201,  201,
     1181      210,  249,  285,  201,  203,  203,  221,  870,  221,  203,
     1182      224,  203,  224,  199,  199,  199,  199,  199,  199,  201,
     1183
     1184      201,  201,  201,  201,  201,  203,  203,  203,  203,  203,
     1185      203,  213,  213,  213,  213,  222,  223,  225,  225,  226,
     1186      225,  226,  227,  227,  227,  229,  283,  229,  223,  222,
     1187      223,  222,  230,  237,  230,  235,  235,  244,  461,  267,
     1188      236,  267,  236,  283,  213,  236,  236,  236,  236,  236,
     1189      236,  257,  238,  268,  238,  268,  237,  238,  235,  271,
     1190      242,  242,  242,  461,  242,  242,  246,  246,  246,  246,
     1191      246,  246,  244,  279,  238,  286,  238,  257,  236,  280,
     1192      286,  238,  242,  242,  242,  271,  279,  242,  863,  242,
     1193      245,  245,  245,  245,  245,  245,  248,  280,  248,  281,
     1194
     1195      282,  248,  248,  248,  248,  248,  248,  245,  256,  256,
     1196      256,  256,  256,  256,  254,  294,  282,  281,  287,  289,
     1197      294,  291,  290,  245,  363,  635,  363,  295,  635,  245,
     1198      247,  247,  247,  247,  247,  247,  295,  254,  287,  254,
     1199      290,  256,  289,  254,  292,  288,  247,  291,  247,  254,
     1200      247,  247,  261,  261,  261,  261,  261,  261,  296,  292,
     1201      288,  254,  293,  247,  297,  254,  288,  288,  247,  254,
     1202      247,  296,  298,  247,  300,  247,  301,  302,  293,  293,
     1203      303,  301,  304,  305,  306,  261,  302,  303,  307,  308,
     1204      298,  297,  300,  307,  308,  310,  313,  312,  311,  314,
     1205
     1206      315,  305,  304,  312,  316,  306,  306,  311,  314,  316,
     1207      319,  317,  313,  318,  310,  315,  317,  321,  318,  320,
     1208      323,  324,  325,  327,  328,  326,  329,  330,  332,  319,
     1209      321,  323,  333,  331,  334,  318,  324,  320,  326,  335,
     1210      336,  325,  331,  338,  330,  327,  329,  328,  339,  340,
     1211      332,  341,  338,  336,  343,  333,  334,  335,  344,  343,
     1212      402,  345,  345,  346,  341,  386,  345,  340,  345,  346,
     1213      364,  402,  364,  344,  353,  353,  353,  353,  354,  354,
     1214      354,  354,  371,  371,  371,  371,  371,  371,  373,  386,
     1215      373,  404,  339,  373,  373,  373,  373,  373,  373,  375,
     1216
     1217      375,  375,  375,  375,  375,  403,  404,  353,  372,  372,
     1218      372,  372,  372,  372,  376,  376,  376,  376,  376,  376,
     1219      707,  403,  418,  707,  372,  384,  372,  418,  372,  372,
     1220      381,  384,  375,  377,  377,  377,  377,  377,  377,  382,
     1221      381,  372,  388,  405,  383,  406,  372,  376,  372,  382,
     1222      407,  372,  409,  372,  406,  408,  381,  384,  411,  862,
     1223      388,  407,  405,  387,  408,  382,  377,  383,  388,  383,
     1224      420,  411,  413,  383,  409,  385,  420,  385,  410,  383,
     1225      385,  385,  385,  385,  385,  385,  387,  410,  387,  412,
     1226      414,  383,  387,  416,  413,  383,  422,  424,  387,  383,
     1227
     1228      415,  417,  421,  414,  431,  412,  419,  422,  423,  430,
     1229      387,  426,  424,  385,  387,  416,  415,  415,  387,  417,
     1230      428,  419,  432,  421,  433,  426,  431,  423,  419,  435,
     1231      430,  434,  428,  436,  438,  432,  440,  434,  441,  442,
     1232      443,  445,  436,  444,  435,  450,  446,  433,  448,  438,
     1233      451,  452,  455,  453,  442,  446,  440,  454,  444,  451,
     1234      441,  445,  443,  457,  459,  448,  456,  458,  450,  460,
     1235      462,  459,  452,  453,  455,  456,  460,  454,  463,  465,
     1236      458,  457,  464,  467,  468,  469,  463,  525,  861,  860,
     1237      465,  469,  462,  468,  492,  495,  463,  522,  525,  464,
     1238
     1239      478,  478,  478,  478,  492,  467,  489,  489,  489,  489,
     1240      489,  489,  491,  491,  491,  491,  491,  491,  516,  522,
     1241      492,  495,  489,  493,  489,  493,  489,  489,  493,  493,
     1242      493,  493,  493,  493,  496,  516,  524,  494,  532,  489,
     1243      565,  524,  520,  532,  489,  491,  489,  494,  565,  489,
     1244      527,  489,  498,  498,  498,  498,  498,  498,  517,  519,
     1245      496,  493,  520,  494,  499,  499,  499,  499,  499,  499,
     1246      527,  517,  535,  540,  519,  529,  856,  530,  540,  521,
     1247      499,  500,  499,  500,  499,  499,  500,  500,  500,  500,
     1248      500,  500,  521,  523,  529,  528,  531,  499,  530,  534,
     1249
     1250      533,  535,  499,  537,  499,  531,  523,  499,  536,  499,
     1251      528,  533,  534,  538,  539,  542,  545,  536,  543,  546,
     1252      547,  542,  548,  539,  551,  537,  552,  543,  550,  553,
     1253      538,  548,  555,  545,  546,  547,  561,  550,  552,  558,
     1254      556,  551,  559,  562,  553,  556,  563,  555,  558,  566,
     1255      567,  559,  568,  569,  570,  572,  562,  567,  561,  566,
     1256      570,  573,  575,  563,  572,  569,  666,  576,  620,  621,
     1257      852,  573,  849,  603,  568,  620,  666,  623,  621,  575,
     1258      576,  595,  595,  595,  595,  595,  595,  596,  596,  596,
     1259      596,  596,  596,  598,  623,  598,  603,  622,  598,  598,
     1260
     1261      598,  598,  598,  598,  601,  601,  601,  601,  601,  601,
     1262      622,  602,  602,  848,  595,  597,  597,  597,  597,  597,
     1263      597,  604,  619,  604,  624,  625,  604,  619,  629,  627,
     1264      626,  597,  625,  597,  602,  597,  597,  601,  626,  630,
     1265      619,  629,  631,  604,  632,  604,  627,  624,  597,  634,
     1266      604,  633,  636,  597,  637,  597,  639,  631,  597,  638,
     1267      597,  630,  641,  640,  642,  645,  632,  646,  633,  636,
     1268      643,  634,  640,  651,  638,  647,  639,  652,  654,  643,
     1269      641,  657,  637,  669,  647,  658,  642,  665,  645,  646,
     1270      657,  668,  658,  651,  703,  654,  665,  700,  669,  708,
     1271
     1272      668,  847,  708,  846,  652,  687,  687,  687,  687,  687,
     1273      687,  691,  691,  691,  691,  691,  691,  701,  700,  705,
     1274      703,  687,  704,  687,  705,  687,  687,  701,  709,  704,
     1275      711,  706,  713,  715,  712,  716,  711,  714,  687,  717,
     1276      714,  713,  717,  687,  691,  687,  709,  712,  687,  718,
     1277      687,  706,  719,  720,  715,  721,  720,  722,  718,  723,
     1278      724,  725,  726,  729,  716,  722,  733,  732,  721,  723,
     1279      734,  726,  736,  724,  737,  758,  762,  765,  719,  755,
     1280      736,  756,  725,  737,  757,  760,  729,  732,  733,  757,
     1281      758,  734,  744,  744,  744,  744,  744,  744,  756,  755,
     1282
     1283      759,  761,  762,  763,  764,  765,  763,  773,  760,  767,
     1284      759,  769,  767,  770,  769,  774,  771,  764,  761,  771,
     1285      770,  772,  773,  779,  772,  744,  794,  796,  798,  797,
     1286      799,  798,  800,  801,  804,  800,  801,  803,  774,  805,
     1287      807,  808,  805,  811,  808,  812,  779,  797,  796,  810,
     1288      827,  809,  799,  794,  809,  803,  828,  830,  810,  811,
     1289      804,  812,  807,  828,  829,  831,  830,  829,  833,  832,
     1290      836,  827,  832,  836,  839,  840,  851,  839,  841,  850,
     1291      864,  851,  854,  831,  840,  833,  855,  841,  850,  831,
     1292      853,  855,  854,  853,  857,  858,  859,  857,  858,  859,
     1293
     1294      864,  865,  866,  867,  868,  866,  869,  868,  872,  869,
     1295      875,  876,  879,  867,  880,  881,  865,  882,  883,  884,
     1296      845,  879,  885,  844,  843,  842,  876,  880,  838,  837,
     1297      872,  875,  885,  835,  834,  826,  883,  881,  882,  825,
     1298      824,  884,  889,  889,  889,  889,  889,  889,  889,  889,
     1299      889,  889,  889,  889,  889,  890,  890,  890,  890,  890,
     1300      890,  890,  890,  890,  890,  890,  890,  890,  891,  891,
     1301      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     1302      891,  892,  823,  822,  892,  821,  892,  892,  892,  892,
     1303      892,  893,  820,  819,  818,  893,  893,  893,  893,  893,
     1304
     1305      893,  894,  894,  894,  894,  894,  894,  894,  894,  894,
     1306      894,  894,  894,  894,  895,  817,  816,  895,  815,  895,
     1307      895,  895,  895,  895,  896,  814,  896,  896,  813,  896,
     1308      896,  896,  896,  896,  896,  806,  896,  897,  802,  795,
     1309      897,  897,  897,  897,  897,  897,  897,  897,  793,  897,
     1310      898,  898,  898,  898,  898,  898,  898,  898,  898,  898,
     1311      898,  898,  898,  899,  899,  792,  899,  791,  790,  789,
     1312      899,  900,  788,  787,  900,  786,  900,  900,  900,  900,
     1313      900,  901,  785,  901,  784,  783,  782,  901,  902,  781,
     1314      902,  780,  778,  777,  902,  903,  776,  903,  775,  768,
     1315
     1316      766,  903,  904,  754,  904,  753,  752,  751,  904,  905,
     1317      750,  905,  749,  748,  747,  905,  906,  746,  906,  743,
     1318      742,  741,  906,  907,  735,  907,  731,  730,  728,  907,
     1319      908,  727,  908,  710,  702,  699,  908,  909,  694,  909,
     1320      692,  688,  678,  909,  910,  910,  910,  910,  910,  910,
     1321      910,  910,  910,  910,  910,  910,  910,  911,  674,  911,
     1322      912,  912,  672,  912,  912,  912,  670,  912,  913,  913,
     1323      667,  913,  914,  664,  914,  663,  662,  661,  914,  915,
     1324      660,  915,  659,  656,  655,  915,  916,  653,  916,  650,
     1325      649,  648,  916,  917,  644,  917,  918,  617,  918,  613,
     1326
     1327      611,  609,  918,  919,  607,  919,  920,  605,  599,  920,
     1328      593,  920,  920,  920,  920,  920,  921,  921,  921,  921,
     1329      921,  921,  921,  921,  921,  921,  921,  921,  921,  922,
     1330      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
     1331      922,  922,  923,  591,  923,  589,  587,  585,  923,  924,
     1332      583,  924,  581,  579,  578,  924,  925,  577,  925,  574,
     1333      571,  564,  925,  926,  560,  926,  927,  557,  927,  554,
     1334      549,  544,  927,  928,  541,  928,  929,  518,  929,  514,
     1335      512,  510,  929,  930,  508,  930,  931,  506,  931,  504,
     1336      503,  502,  931,  932,  501,  932,  933,  490,  933,  487,
     1337
     1338      485,  484,  933,  934,  483,  934,  935,  481,  935,  479,
     1339      476,  474,  935,  936,  472,  936,  937,  470,  937,  466,
     1340      449,  447,  937,  938,  439,  938,  939,  437,  939,  429,
     1341      939,  427,  939,  940,  425,  940,  399,  940,  397,  940,
     1342      941,  941,  395,  941,  941,  941,  393,  941,  942,  392,
     1343      942,  391,  378,  368,  942,  943,  366,  943,  365,  361,
     1344      359,  943,  944,  357,  944,  355,  351,  349,  944,  945,
     1345      348,  945,  946,  347,  946,  337,  322,  299,  946,  947,
     1346      278,  947,  948,  276,  948,  274,  273,  272,  948,  949,
     1347      270,  949,  950,  269,  950,  264,  260,  259,  950,  951,
     1348
     1349      255,  951,  952,  252,  251,  952,  240,  952,  952,  952,
     1350      952,  952,  953,  953,  953,  953,  953,  953,  953,  953,
     1351      953,  953,  953,  953,  953,  954,  239,  954,  232,  231,
     1352      228,  954,  955,  218,  955,  956,  216,  956,  215,  214,
     1353      208,  956,  957,  207,  957,  958,  205,  958,  200,  179,
     1354      150,  958,  959,  148,  959,  960,  147,  960,  141,  139,
     1355      137,  960,  961,  129,  961,  962,  126,  962,  125,  121,
     1356      101,  962,  963,   98,  963,  964,   95,  964,   93,   86,
     1357       72,  964,  965,   70,  965,  966,   66,  966,   36,   18,
     1358       11,  966,  967,    4,  967,    3,    0,    0,  967,  968,
     1359
     1360        0,  968,  969,    0,  969,    0,    0,    0,  969,  970,
     1361        0,  970,  971,    0,  971,    0,  971,    0,  971,  972,
     1362        0,  972,    0,    0,    0,  972,  973,    0,  973,    0,
     1363        0,    0,  973,  974,    0,  974,  975,    0,  975,    0,
     1364        0,    0,  975,  976,    0,  976,  977,    0,  977,    0,
     1365        0,    0,  977,  978,    0,  978,  979,    0,  979,    0,
     1366        0,    0,  979,  980,    0,  980,  981,    0,  981,    0,
     1367        0,    0,  981,  982,    0,  982,  983,    0,  983,    0,
     1368        0,    0,  983,  984,    0,  984,  985,    0,    0,  985,
     1369        0,  985,  985,  985,  985,  985,  986,  986,  986,  986,
     1370
     1371      986,  986,  986,  986,  986,  986,  986,  986,  986,  987,
     1372        0,  987,    0,    0,    0,  987,  988,    0,  988,  989,
     1373        0,  989,    0,    0,    0,  989,  990,    0,  990,  991,
     1374        0,  991,    0,    0,    0,  991,  992,    0,  992,  993,
     1375        0,  993,    0,    0,    0,  993,  994,    0,  994,  995,
     1376        0,  995,    0,    0,    0,  995,  996,    0,  996,  997,
     1377        0,  997,    0,    0,    0,  997,  998,    0,  998,  999,
     1378        0,  999,    0,    0,    0,  999, 1000,    0, 1000, 1001,
     1379        0, 1001,    0,    0,    0, 1001, 1002,    0, 1002, 1003,
     1380        0, 1003,    0,    0,    0, 1003, 1004,    0, 1004,    0,
     1381
     1382        0,    0, 1004, 1005,    0, 1005, 1006,    0, 1006,    0,
     1383        0,    0, 1006, 1007,    0, 1007, 1008,    0, 1008,    0,
     1384        0,    0, 1008, 1009,    0, 1009, 1010,    0, 1010,    0,
     1385        0,    0, 1010, 1011,    0, 1011, 1012,    0, 1012, 1013,
     1386        0, 1013, 1014,    0,    0, 1014,    0, 1014, 1014, 1014,
     1387     1014, 1014, 1015,    0, 1015, 1016, 1016, 1016, 1016, 1016,
     1388     1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1017,    0,
     1389     1017,    0,    0,    0, 1017, 1018,    0, 1018, 1019,    0,
     1390     1019,    0,    0,    0, 1019, 1020,    0, 1020, 1021,    0,
     1391     1021, 1022,    0, 1022, 1023,    0,    0, 1023,    0, 1023,
     1392
     1393     1023, 1023, 1023, 1023, 1024,    0, 1024, 1025,    0, 1025,
     1394     1026,    0, 1026, 1027,    0, 1027, 1028,    0, 1028, 1029,
     1395        0, 1029, 1030,    0, 1030, 1031,    0, 1031,    0,    0,
     1396        0, 1031, 1032,    0, 1032, 1033,    0, 1033,    0,    0,
     1397        0, 1033, 1034,    0, 1034, 1035,    0, 1035, 1036,    0,
     1398     1036, 1037,    0, 1037, 1038,    0, 1038,    0,    0,    0,
     1399     1038, 1039,    0,    0, 1039,    0, 1039, 1039, 1039, 1039,
     1400     1039, 1040,    0, 1040, 1041,    0, 1041, 1042,    0, 1042,
     1401     1043,    0, 1043,    0,    0,    0, 1043, 1044,    0, 1044,
     1402        0,    0,    0, 1044, 1045,    0, 1045,    0,    0,    0,
     1403
     1404     1045, 1046,    0, 1046, 1047,    0, 1047,    0,    0,    0,
     1405     1047, 1048,    0, 1048,    0,    0,    0, 1048, 1049,    0,
     1406     1049,    0,    0,    0, 1049, 1050,    0, 1050,    0,    0,
     1407        0, 1050, 1051,    0, 1051,    0,    0,    0, 1051, 1052,
     1408        0, 1052,    0,    0,    0, 1052, 1053,    0, 1053,    0,
     1409        0,    0, 1053, 1054,    0, 1054,    0,    0,    0, 1054,
     1410     1055,    0, 1055,    0,    0,    0, 1055, 1056,    0, 1056,
     1411        0,    0,    0, 1056, 1057,    0, 1057,    0,    0,    0,
     1412     1057, 1058,    0, 1058,    0,    0,    0, 1058, 1059,    0,
     1413     1059,    0,    0,    0, 1059, 1060,    0, 1060,    0,    0,
     1414
     1415        0, 1060, 1061,    0, 1061,    0,    0,    0, 1061, 1062,
     1416        0, 1062,    0,    0,    0, 1062,  888,  888,  888,  888,
    12991417      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1300       889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
    1301       889,  889,  889,  890,  890,  890,  890,  890,  890,  890,
    1302       890,  890,  890,  890,  890,  890,  891,  815,  814,  891,
    1303       813,  891,  891,  891,  891,  891,  892,  812,  805,  801,
    1304 
    1305       892,  892,  892,  892,  892,  892,  893,  893,  893,  893,
    1306       893,  893,  893,  893,  893,  893,  893,  893,  893,  894,
    1307       794,  792,  894,  791,  894,  894,  894,  894,  894,  895,
    1308       790,  895,  895,  789,  895,  895,  895,  895,  895,  895,
    1309       788,  895,  896,  787,  786,  896,  896,  896,  896,  896,
    1310       896,  896,  896,  785,  896,  897,  897,  897,  897,  897,
    1311       897,  897,  897,  897,  897,  897,  897,  897,  898,  898,
    1312       784,  898,  783,  782,  781,  898,  899,  780,  779,  899,
    1313       777,  899,  899,  899,  899,  899,  900,  776,  900,  775,
    1314       774,  767,  900,  901,  765,  901,  753,  752,  751,  901,
    1315 
    1316       902,  750,  902,  749,  748,  747,  902,  903,  746,  903,
    1317       745,  742,  741,  903,  904,  740,  904,  734,  730,  729,
    1318       904,  905,  727,  905,  726,  709,  701,  905,  906,  698,
    1319       906,  693,  691,  687,  906,  907,  677,  907,  673,  671,
    1320       669,  907,  908,  666,  908,  663,  662,  661,  908,  909,
    1321       909,  909,  909,  909,  909,  909,  909,  909,  909,  909,
    1322       909,  909,  910,  660,  910,  911,  911,  659,  911,  911,
    1323       911,  658,  911,  912,  912,  655,  912,  913,  654,  913,
    1324       652,  649,  648,  913,  914,  647,  914,  643,  616,  612,
    1325       914,  915,  610,  915,  608,  606,  604,  915,  916,  598,
    1326 
    1327       916,  917,  592,  917,  590,  588,  586,  917,  918,  584,
    1328       918,  919,  582,  580,  919,  578,  919,  919,  919,  919,
    1329       919,  920,  920,  920,  920,  920,  920,  920,  920,  920,
    1330       920,  920,  920,  920,  921,  921,  921,  921,  921,  921,
    1331       921,  921,  921,  921,  921,  921,  921,  922,  577,  922,
    1332       576,  573,  570,  922,  923,  563,  923,  559,  556,  553,
    1333       923,  924,  548,  924,  543,  540,  517,  924,  925,  513,
    1334       925,  926,  511,  926,  509,  507,  505,  926,  927,  503,
    1335       927,  928,  502,  928,  501,  500,  489,  928,  929,  486,
    1336       929,  930,  484,  930,  483,  482,  480,  930,  931,  478,
    1337 
    1338       931,  932,  475,  932,  473,  471,  469,  932,  933,  465,
    1339       933,  934,  448,  934,  446,  438,  436,  934,  935,  428,
    1340       935,  936,  426,  936,  424,  398,  396,  936,  937,  394,
    1341       937,  938,  392,  938,  391,  938,  390,  938,  939,  377,
    1342       939,  367,  939,  365,  939,  940,  940,  364,  940,  940,
    1343       940,  360,  940,  941,  358,  941,  356,  354,  350,  941,
    1344       942,  348,  942,  347,  346,  336,  942,  943,  321,  943,
    1345       298,  277,  275,  943,  944,  273,  944,  945,  272,  945,
    1346       271,  269,  268,  945,  946,  263,  946,  947,  259,  947,
    1347       258,  254,  251,  947,  948,  250,  948,  949,  239,  949,
    1348 
    1349       238,  231,  230,  949,  950,  227,  950,  951,  217,  215,
    1350       951,  214,  951,  951,  951,  951,  951,  952,  952,  952,
    1351       952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
    1352       953,  213,  953,  207,  206,  204,  953,  954,  199,  954,
    1353       955,  178,  955,  149,  147,  146,  955,  956,  140,  956,
    1354       957,  138,  957,  136,  128,  125,  957,  958,  124,  958,
    1355       959,  120,  959,  101,   98,   95,  959,  960,   93,  960,
    1356       961,   86,  961,   72,   70,   66,  961,  962,   36,  962,
    1357       963,   33,  963,   18,   11,    4,  963,  964,    3,  964,
    1358       965,    0,  965,    0,    0,    0,  965,  966,    0,  966,
    1359 
    1360         0,    0,    0,  966,  967,    0,  967,  968,    0,  968,
    1361         0,    0,    0,  968,  969,    0,  969,  970,    0,  970,
    1362         0,  970,    0,  970,  971,    0,  971,    0,    0,    0,
    1363       971,  972,    0,  972,    0,    0,    0,  972,  973,    0,
    1364       973,  974,    0,  974,    0,    0,    0,  974,  975,    0,
    1365       975,  976,    0,  976,    0,    0,    0,  976,  977,    0,
    1366       977,  978,    0,  978,    0,    0,    0,  978,  979,    0,
    1367       979,  980,    0,  980,    0,    0,    0,  980,  981,    0,
    1368       981,  982,    0,  982,    0,    0,    0,  982,  983,    0,
    1369       983,  984,    0,    0,  984,    0,  984,  984,  984,  984,
    1370 
    1371       984,  985,  985,  985,  985,  985,  985,  985,  985,  985,
    1372       985,  985,  985,  985,  986,    0,  986,    0,    0,    0,
    1373       986,  987,    0,  987,  988,    0,  988,    0,    0,    0,
    1374       988,  989,    0,  989,  990,    0,  990,    0,    0,    0,
    1375       990,  991,    0,  991,  992,    0,  992,    0,    0,    0,
    1376       992,  993,    0,  993,  994,    0,  994,    0,    0,    0,
    1377       994,  995,    0,  995,  996,    0,  996,    0,    0,    0,
    1378       996,  997,    0,  997,  998,    0,  998,    0,    0,    0,
    1379       998,  999,    0,  999, 1000,    0, 1000,    0,    0,    0,
    1380      1000, 1001,    0, 1001, 1002,    0, 1002,    0,    0,    0,
    1381 
    1382      1002, 1003,    0, 1003,    0,    0,    0, 1003, 1004,    0,
    1383      1004, 1005,    0, 1005,    0,    0,    0, 1005, 1006,    0,
    1384      1006, 1007,    0, 1007,    0,    0,    0, 1007, 1008,    0,
    1385      1008, 1009,    0, 1009,    0,    0,    0, 1009, 1010,    0,
    1386      1010, 1011,    0, 1011, 1012,    0, 1012, 1013,    0,    0,
    1387      1013,    0, 1013, 1013, 1013, 1013, 1013, 1014,    0, 1014,
    1388      1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
    1389      1015, 1015, 1015, 1016,    0, 1016,    0,    0,    0, 1016,
    1390      1017,    0, 1017, 1018,    0, 1018,    0,    0,    0, 1018,
    1391      1019,    0, 1019, 1020,    0, 1020, 1021,    0, 1021, 1022,
    1392 
    1393         0,    0, 1022,    0, 1022, 1022, 1022, 1022, 1022, 1023,
    1394         0, 1023, 1024,    0, 1024, 1025,    0, 1025, 1026,    0,
    1395      1026, 1027,    0, 1027, 1028,    0, 1028, 1029,    0, 1029,
    1396      1030,    0, 1030,    0,    0,    0, 1030, 1031,    0, 1031,
    1397      1032,    0, 1032,    0,    0,    0, 1032, 1033,    0, 1033,
    1398      1034,    0, 1034, 1035,    0, 1035, 1036,    0, 1036, 1037,
    1399         0, 1037,    0,    0,    0, 1037, 1038,    0,    0, 1038,
    1400         0, 1038, 1038, 1038, 1038, 1038, 1039,    0, 1039, 1040,
    1401         0, 1040, 1041,    0, 1041, 1042,    0, 1042,    0,    0,
    1402         0, 1042, 1043,    0, 1043,    0,    0,    0, 1043, 1044,
    1403 
    1404         0, 1044,    0,    0,    0, 1044, 1045,    0, 1045, 1046,
    1405         0, 1046,    0,    0,    0, 1046, 1047,    0, 1047,    0,
    1406         0,    0, 1047, 1048,    0, 1048,    0,    0,    0, 1048,
    1407      1049,    0, 1049,    0,    0,    0, 1049, 1050,    0, 1050,
    1408         0,    0,    0, 1050, 1051,    0, 1051,    0,    0,    0,
    1409      1051, 1052,    0, 1052,    0,    0,    0, 1052, 1053,    0,
    1410      1053,    0,    0,    0, 1053, 1054,    0, 1054,    0,    0,
    1411         0, 1054, 1055,    0, 1055,    0,    0,    0, 1055, 1056,
    1412         0, 1056,    0,    0,    0, 1056, 1057,    0, 1057,    0,
    1413         0,    0, 1057, 1058,    0, 1058,    0,    0,    0, 1058,
    1414 
    1415      1059,    0, 1059,    0,    0,    0, 1059, 1060,    0, 1060,
    1416         0,    0,    0, 1060, 1061,    0, 1061,    0,    0,    0,
    1417      1061,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    1418       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    1419       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    1420       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    1421       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    1422       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    1423       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    1424       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
    1425 
    1426       887,  887,  887,  887,  887,  887,  887
     1418      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1419      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1420      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1421      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1422      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1423      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1424      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1425
     1426      888,  888
    14271427    } ;
    14281428
    14291429/* Table of booleans, true if rule could match eol. */
    1430 static yyconst flex_int32_t yy_rule_can_match_eol[181] =
     1430static yyconst flex_int32_t yy_rule_can_match_eol[182] =
    14311431    {   0,
    143214321, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     
    14391439    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14401440    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1441     0,     };
     1441    0, 0,     };
    14421442
    14431443static yy_state_type yy_last_accepting_state;
     
    14671467 * Created On       : Sat Sep 22 08:58:10 2001
    14681468 * Last Modified By : Peter A. Buhr
    1469  * Last Modified On : Mon Mar 21 23:33:46 2016
    1470  * Update Count     : 450
     1469 * Last Modified On : Mon Jun  6 18:08:27 2016
     1470 * Update Count     : 451
    14711471 */
    14721472#line 20 "lex.ll"
     
    17771777                                {
    17781778                                yy_current_state = (int) yy_def[yy_current_state];
    1779                                 if ( yy_current_state >= 888 )
     1779                                if ( yy_current_state >= 889 )
    17801780                                        yy_c = yy_meta[(unsigned int) yy_c];
    17811781                                }
     
    17831783                        ++yy_cp;
    17841784                        }
    1785                 while ( yy_base[yy_current_state] != 2822 );
     1785                while ( yy_base[yy_current_state] != 2817 );
    17861786
    17871787yy_find_action:
     
    27252725{ NAMEDOP_RETURN(ATassign); }
    27262726        YY_BREAK
     2727case 174:
     2728YY_RULE_SETUP
     2729#line 364 "lex.ll"
     2730{ NAMEDOP_RETURN(REFassign); }
     2731        YY_BREAK
    27272732/* CFA, operator identifier */
    2728 case 174:
    2729 YY_RULE_SETUP
    2730 #line 366 "lex.ll"
     2733case 175:
     2734YY_RULE_SETUP
     2735#line 367 "lex.ll"
    27312736{ IDENTIFIER_RETURN(); }                                // unary
    2732         YY_BREAK
    2733 case 175:
    2734 YY_RULE_SETUP
    2735 #line 367 "lex.ll"
    2736 { IDENTIFIER_RETURN(); }
    27372737        YY_BREAK
    27382738case 176:
     
    27442744YY_RULE_SETUP
    27452745#line 369 "lex.ll"
     2746{ IDENTIFIER_RETURN(); }
     2747        YY_BREAK
     2748case 178:
     2749YY_RULE_SETUP
     2750#line 370 "lex.ll"
    27462751{ IDENTIFIER_RETURN(); }                // binary
    27472752        YY_BREAK
     
    27722777          an argument list.
    27732778        */
    2774 case 178:
    2775 YY_RULE_SETUP
    2776 #line 396 "lex.ll"
     2779case 179:
     2780YY_RULE_SETUP
     2781#line 397 "lex.ll"
    27772782{
    27782783        // 1 or 2 character unary operator ?
     
    27872792        YY_BREAK
    27882793/* unknown characters */
    2789 case 179:
    2790 YY_RULE_SETUP
    2791 #line 408 "lex.ll"
     2794case 180:
     2795YY_RULE_SETUP
     2796#line 409 "lex.ll"
    27922797{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    27932798        YY_BREAK
    2794 case 180:
    2795 YY_RULE_SETUP
    2796 #line 410 "lex.ll"
     2799case 181:
     2800YY_RULE_SETUP
     2801#line 411 "lex.ll"
    27972802ECHO;
    27982803        YY_BREAK
    2799 #line 2800 "Parser/lex.cc"
     2804#line 2805 "Parser/lex.cc"
    28002805case YY_STATE_EOF(INITIAL):
    28012806case YY_STATE_EOF(COMMENT):
     
    30943099                        {
    30953100                        yy_current_state = (int) yy_def[yy_current_state];
    3096                         if ( yy_current_state >= 888 )
     3101                        if ( yy_current_state >= 889 )
    30973102                                yy_c = yy_meta[(unsigned int) yy_c];
    30983103                        }
     
    31223127                {
    31233128                yy_current_state = (int) yy_def[yy_current_state];
    3124                 if ( yy_current_state >= 888 )
     3129                if ( yy_current_state >= 889 )
    31253130                        yy_c = yy_meta[(unsigned int) yy_c];
    31263131                }
    31273132        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    3128         yy_is_jam = (yy_current_state == 887);
     3133        yy_is_jam = (yy_current_state == 888);
    31293134
    31303135        return yy_is_jam ? 0 : yy_current_state;
     
    37723777#define YYTABLES_NAME "yytables"
    37733778
    3774 #line 410 "lex.ll"
     3779#line 411 "lex.ll"
    37753780
    37763781
  • src/Parser/lex.ll

    refbca69 rfb08280  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Mon Mar 21 23:33:46 2016
    13  * Update Count     : 450
     12 * Last Modified On : Mon Jun  6 18:08:27 2016
     13 * Update Count     : 451
    1414 */
    1515
     
    362362
    363363"@="                    { NAMEDOP_RETURN(ATassign); }
     364":="                    { NAMEDOP_RETURN(REFassign); }
    364365
    365366                                /* CFA, operator identifier */
  • src/Parser/parser.cc

    refbca69 rfb08280  
    223223     ORassign = 361,
    224224     ATassign = 362,
    225      THEN = 363
     225     REFassign = 363,
     226     THEN = 364
    226227   };
    227228#endif
     
    332333#define ORassign 361
    333334#define ATassign 362
    334 #define THEN 363
     335#define REFassign 363
     336#define THEN 364
    335337
    336338
     
    359361
    360362/* Line 293 of yacc.c  */
    361 #line 362 "Parser/parser.cc"
     363#line 364 "Parser/parser.cc"
    362364} YYSTYPE;
    363365# define YYSTYPE_IS_TRIVIAL 1
     
    371373
    372374/* Line 343 of yacc.c  */
    373 #line 374 "Parser/parser.cc"
     375#line 376 "Parser/parser.cc"
    374376
    375377#ifdef short
     
    588590
    589591/* YYFINAL -- State number of the termination state.  */
    590 #define YYFINAL  249
     592#define YYFINAL  251
    591593/* YYLAST -- Last index in YYTABLE.  */
    592 #define YYLAST   11449
     594#define YYLAST   11311
    593595
    594596/* YYNTOKENS -- Number of terminals.  */
    595 #define YYNTOKENS  133
     597#define YYNTOKENS  134
    596598/* YYNNTS -- Number of nonterminals.  */
    597 #define YYNNTS  240
     599#define YYNNTS  241
    598600/* YYNRULES -- Number of rules.  */
    599 #define YYNRULES  754
     601#define YYNRULES  756
    600602/* YYNRULES -- Number of states.  */
    601 #define YYNSTATES  1581
     603#define YYNSTATES  1583
    602604
    603605/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
    604606#define YYUNDEFTOK  2
    605 #define YYMAXUTOK   363
     607#define YYMAXUTOK   364
    606608
    607609#define YYTRANSLATE(YYX)                                                \
     
    614616       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    615617       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    616        2,     2,     2,   118,     2,     2,     2,   125,   120,     2,
    617      109,   110,   119,   121,   116,   122,   113,   124,     2,     2,
    618        2,     2,     2,     2,     2,     2,     2,     2,   117,   132,
    619      126,   131,   127,   130,     2,     2,     2,     2,     2,     2,
     618       2,     2,     2,   123,     2,     2,     2,   126,   120,     2,
     619     110,   111,   119,   121,   117,   122,   114,   125,     2,     2,
     620       2,     2,     2,     2,     2,     2,     2,     2,   118,   133,
     621     127,   132,   128,   131,     2,     2,     2,     2,     2,     2,
    620622       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    621623       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    622        2,   111,     2,   112,   128,     2,     2,     2,     2,     2,
     624       2,   112,     2,   113,   129,     2,     2,     2,     2,     2,
    623625       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    624626       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    625        2,     2,     2,   114,   129,   115,   123,     2,     2,     2,
     627       2,     2,     2,   115,   130,   116,   124,     2,     2,     2,
    626628       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    627629       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     
    647649      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
    648650      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
    649      105,   106,   107,   108
     651     105,   106,   107,   108,   109
    650652};
    651653
     
    660662      87,    90,    98,   103,   105,   109,   110,   112,   116,   124,
    661663     134,   136,   140,   142,   146,   154,   158,   166,   168,   170,
    662      172,   175,   178,   181,   184,   187,   190,   193,   198,   205,
    663      207,   212,   217,   220,   225,   228,   230,   232,   234,   236,
    664      238,   243,   248,   250,   254,   258,   262,   264,   268,   272,
    665      274,   278,   282,   284,   288,   292,   296,   300,   302,   306,
    666      310,   312,   316,   318,   322,   324,   328,   330,   334,   336,
    667      340,   342,   348,   353,   359,   361,   363,   367,   371,   374,
    668      375,   377,   380,   386,   393,   401,   403,   407,   409,   411,
    669      413,   415,   417,   419,   421,   423,   425,   427,   429,   433,
    670      434,   436,   438,   440,   442,   444,   446,   448,   450,   452,
    671      459,   464,   467,   475,   477,   481,   483,   486,   488,   491,
    672      493,   496,   499,   505,   513,   519,   529,   535,   545,   547,
    673      551,   553,   555,   559,   563,   566,   568,   571,   574,   575,
    674      577,   580,   584,   585,   587,   590,   594,   598,   603,   604,
    675      606,   608,   611,   617,   625,   632,   639,   644,   648,   653,
    676      656,   660,   663,   667,   671,   675,   679,   685,   689,   693,
    677      698,   700,   706,   713,   719,   726,   736,   747,   757,   768,
    678      771,   773,   776,   779,   782,   784,   791,   800,   811,   824,
    679      839,   840,   842,   843,   845,   847,   851,   856,   864,   865,
    680      867,   871,   873,   877,   879,   881,   883,   887,   889,   891,
    681      893,   897,   898,   900,   904,   909,   911,   915,   917,   919,
    682      923,   927,   931,   935,   939,   942,   946,   953,   957,   961,
    683      966,   968,   971,   974,   978,   984,   993,  1001,  1009,  1015,
    684     1025,  1028,  1031,  1037,  1041,  1047,  1052,  1056,  1061,  1066,
    685     1074,  1078,  1082,  1086,  1090,  1095,  1102,  1104,  1106,  1108,
    686     1110,  1112,  1114,  1116,  1118,  1119,  1121,  1123,  1126,  1128,
    687     1130,  1132,  1134,  1136,  1138,  1140,  1141,  1147,  1149,  1152,
    688     1156,  1158,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,
    689     1177,  1179,  1181,  1183,  1185,  1187,  1189,  1191,  1193,  1195,
    690     1197,  1199,  1201,  1203,  1205,  1207,  1210,  1213,  1217,  1221,
    691     1223,  1227,  1229,  1232,  1235,  1238,  1243,  1248,  1253,  1258,
    692     1260,  1263,  1266,  1270,  1272,  1275,  1278,  1280,  1283,  1286,
    693     1290,  1292,  1295,  1298,  1300,  1302,  1307,  1310,  1311,  1318,
    694     1326,  1329,  1332,  1335,  1337,  1340,  1343,  1347,  1350,  1354,
    695     1356,  1359,  1363,  1366,  1369,  1374,  1375,  1377,  1380,  1383,
    696     1385,  1386,  1388,  1391,  1394,  1400,  1403,  1404,  1412,  1415,
    697     1420,  1421,  1424,  1425,  1427,  1429,  1431,  1437,  1443,  1449,
    698     1451,  1457,  1463,  1473,  1475,  1481,  1482,  1484,  1486,  1492,
    699     1494,  1496,  1502,  1508,  1510,  1514,  1518,  1523,  1525,  1527,
    700     1529,  1531,  1534,  1536,  1540,  1544,  1546,  1549,  1551,  1555,
    701     1557,  1559,  1561,  1563,  1565,  1567,  1569,  1571,  1573,  1575,
    702     1577,  1580,  1582,  1584,  1586,  1589,  1590,  1593,  1596,  1598,
    703     1603,  1604,  1606,  1609,  1613,  1618,  1621,  1624,  1626,  1629,
    704     1631,  1634,  1640,  1646,  1654,  1661,  1663,  1666,  1669,  1673,
    705     1675,  1678,  1681,  1686,  1689,  1694,  1695,  1700,  1703,  1705,
    706     1707,  1709,  1710,  1713,  1719,  1725,  1739,  1741,  1743,  1747,
    707     1751,  1754,  1758,  1762,  1765,  1770,  1772,  1779,  1789,  1790,
    708     1802,  1804,  1808,  1812,  1816,  1818,  1820,  1826,  1829,  1835,
    709     1836,  1838,  1840,  1844,  1845,  1847,  1849,  1851,  1853,  1854,
    710     1861,  1864,  1866,  1869,  1874,  1877,  1881,  1885,  1889,  1894,
    711     1900,  1906,  1912,  1919,  1921,  1923,  1925,  1929,  1930,  1936,
    712     1937,  1939,  1941,  1944,  1951,  1953,  1957,  1958,  1960,  1965,
    713     1967,  1969,  1971,  1973,  1976,  1978,  1981,  1984,  1986,  1990,
    714     1993,  1997,  2001,  2004,  2009,  2014,  2018,  2027,  2031,  2034,
    715     2036,  2039,  2046,  2055,  2059,  2062,  2066,  2070,  2075,  2080,
    716     2084,  2086,  2088,  2090,  2095,  2102,  2106,  2109,  2113,  2117,
    717     2122,  2127,  2131,  2134,  2136,  2139,  2142,  2144,  2148,  2151,
    718     2155,  2159,  2162,  2167,  2172,  2176,  2183,  2192,  2196,  2199,
    719     2201,  2204,  2207,  2210,  2214,  2218,  2221,  2226,  2231,  2235,
    720     2242,  2251,  2255,  2258,  2260,  2263,  2266,  2268,  2270,  2273,
    721     2277,  2281,  2284,  2289,  2296,  2305,  2307,  2310,  2313,  2315,
    722     2318,  2321,  2325,  2329,  2331,  2336,  2341,  2345,  2351,  2360,
    723     2364,  2367,  2371,  2373,  2379,  2385,  2392,  2399,  2401,  2404,
    724     2407,  2409,  2412,  2415,  2419,  2423,  2425,  2430,  2435,  2439,
    725     2445,  2454,  2458,  2460,  2463,  2465,  2468,  2475,  2481,  2488,
    726     2496,  2504,  2506,  2509,  2512,  2514,  2517,  2520,  2524,  2528,
    727     2530,  2535,  2540,  2544,  2553,  2557,  2559,  2561,  2564,  2566,
    728     2568,  2571,  2575,  2578,  2582,  2585,  2589,  2593,  2596,  2601,
    729     2605,  2608,  2612,  2615,  2620,  2624,  2627,  2634,  2641,  2648,
    730     2656,  2658,  2661,  2663,  2665,  2667,  2670,  2674,  2677,  2681,
    731     2684,  2688,  2692,  2697,  2700,  2704,  2709,  2712,  2718,  2724,
    732     2731,  2738,  2739,  2741,  2742
     664     172,   175,   178,   181,   184,   187,   190,   195,   202,   204,
     665     209,   214,   217,   222,   225,   227,   229,   231,   233,   235,
     666     237,   239,   244,   249,   251,   255,   259,   263,   265,   269,
     667     273,   275,   279,   283,   285,   289,   293,   297,   301,   303,
     668     307,   311,   313,   317,   319,   323,   325,   329,   331,   335,
     669     337,   341,   343,   349,   354,   360,   362,   364,   368,   372,
     670     376,   379,   380,   382,   385,   391,   398,   406,   408,   412,
     671     414,   416,   418,   420,   422,   424,   426,   428,   430,   432,
     672     434,   438,   439,   441,   443,   445,   447,   449,   451,   453,
     673     455,   457,   464,   469,   472,   480,   482,   486,   488,   491,
     674     493,   496,   498,   501,   504,   510,   518,   524,   534,   540,
     675     550,   552,   556,   558,   560,   564,   568,   571,   573,   576,
     676     579,   580,   582,   585,   589,   590,   592,   595,   599,   603,
     677     608,   609,   611,   613,   616,   622,   630,   637,   644,   649,
     678     653,   658,   661,   665,   668,   672,   676,   680,   684,   690,
     679     694,   698,   703,   705,   711,   718,   724,   731,   741,   752,
     680     762,   773,   776,   778,   781,   784,   787,   789,   796,   805,
     681     816,   829,   844,   845,   847,   848,   850,   852,   856,   861,
     682     869,   870,   872,   876,   878,   882,   884,   886,   888,   892,
     683     894,   896,   898,   902,   903,   905,   909,   914,   916,   920,
     684     922,   924,   928,   932,   936,   940,   944,   947,   951,   958,
     685     962,   966,   971,   973,   976,   979,   983,   989,   998,  1006,
     686    1014,  1020,  1030,  1033,  1036,  1042,  1046,  1052,  1057,  1061,
     687    1066,  1071,  1079,  1083,  1087,  1091,  1095,  1100,  1107,  1109,
     688    1111,  1113,  1115,  1117,  1119,  1121,  1123,  1124,  1126,  1128,
     689    1131,  1133,  1135,  1137,  1139,  1141,  1143,  1145,  1146,  1152,
     690    1154,  1157,  1161,  1163,  1166,  1168,  1170,  1172,  1174,  1176,
     691    1178,  1180,  1182,  1184,  1186,  1188,  1190,  1192,  1194,  1196,
     692    1198,  1200,  1202,  1204,  1206,  1208,  1210,  1212,  1215,  1218,
     693    1222,  1226,  1228,  1232,  1234,  1237,  1240,  1243,  1248,  1253,
     694    1258,  1263,  1265,  1268,  1271,  1275,  1277,  1280,  1283,  1285,
     695    1288,  1291,  1295,  1297,  1300,  1303,  1305,  1307,  1312,  1315,
     696    1316,  1323,  1331,  1334,  1337,  1340,  1342,  1345,  1348,  1352,
     697    1355,  1359,  1361,  1364,  1368,  1371,  1374,  1379,  1380,  1382,
     698    1385,  1388,  1390,  1391,  1393,  1396,  1399,  1405,  1408,  1409,
     699    1417,  1420,  1425,  1426,  1429,  1430,  1432,  1434,  1436,  1442,
     700    1448,  1454,  1456,  1462,  1468,  1478,  1480,  1486,  1487,  1489,
     701    1491,  1497,  1499,  1501,  1507,  1513,  1515,  1519,  1523,  1528,
     702    1530,  1532,  1534,  1536,  1539,  1541,  1545,  1549,  1551,  1554,
     703    1556,  1560,  1562,  1564,  1566,  1568,  1570,  1572,  1574,  1576,
     704    1578,  1580,  1582,  1585,  1587,  1589,  1591,  1594,  1595,  1598,
     705    1601,  1603,  1608,  1609,  1611,  1614,  1618,  1623,  1626,  1629,
     706    1631,  1634,  1636,  1639,  1645,  1651,  1659,  1666,  1668,  1671,
     707    1674,  1678,  1680,  1683,  1686,  1691,  1694,  1699,  1700,  1705,
     708    1708,  1710,  1712,  1714,  1715,  1718,  1724,  1730,  1744,  1746,
     709    1748,  1752,  1756,  1759,  1763,  1767,  1770,  1775,  1777,  1784,
     710    1794,  1795,  1807,  1809,  1813,  1817,  1821,  1823,  1825,  1831,
     711    1834,  1840,  1841,  1843,  1845,  1849,  1850,  1852,  1854,  1856,
     712    1858,  1859,  1866,  1869,  1871,  1874,  1879,  1882,  1886,  1890,
     713    1894,  1899,  1905,  1911,  1917,  1924,  1926,  1928,  1930,  1934,
     714    1935,  1941,  1942,  1944,  1946,  1949,  1956,  1958,  1962,  1963,
     715    1965,  1970,  1972,  1974,  1976,  1978,  1981,  1983,  1986,  1989,
     716    1991,  1995,  1998,  2002,  2006,  2009,  2014,  2019,  2023,  2032,
     717    2036,  2039,  2041,  2044,  2051,  2060,  2064,  2067,  2071,  2075,
     718    2080,  2085,  2089,  2091,  2093,  2095,  2100,  2107,  2111,  2114,
     719    2118,  2122,  2127,  2132,  2136,  2139,  2141,  2144,  2147,  2149,
     720    2153,  2156,  2160,  2164,  2167,  2172,  2177,  2181,  2188,  2197,
     721    2201,  2204,  2206,  2209,  2212,  2215,  2219,  2223,  2226,  2231,
     722    2236,  2240,  2247,  2256,  2260,  2263,  2265,  2268,  2271,  2273,
     723    2275,  2278,  2282,  2286,  2289,  2294,  2301,  2310,  2312,  2315,
     724    2318,  2320,  2323,  2326,  2330,  2334,  2336,  2341,  2346,  2350,
     725    2356,  2365,  2369,  2372,  2376,  2378,  2384,  2390,  2397,  2404,
     726    2406,  2409,  2412,  2414,  2417,  2420,  2424,  2428,  2430,  2435,
     727    2440,  2444,  2450,  2459,  2463,  2465,  2468,  2470,  2473,  2480,
     728    2486,  2493,  2501,  2509,  2511,  2514,  2517,  2519,  2522,  2525,
     729    2529,  2533,  2535,  2540,  2545,  2549,  2558,  2562,  2564,  2566,
     730    2569,  2571,  2573,  2576,  2580,  2583,  2587,  2590,  2594,  2598,
     731    2601,  2606,  2610,  2613,  2617,  2620,  2625,  2629,  2632,  2639,
     732    2646,  2653,  2661,  2663,  2666,  2668,  2670,  2672,  2675,  2679,
     733    2682,  2686,  2689,  2693,  2697,  2702,  2705,  2709,  2714,  2717,
     734    2723,  2729,  2736,  2743,  2744,  2746,  2747
    733735};
    734736
     
    736738static const yytype_int16 yyrhs[] =
    737739{
    738      301,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
    739       -1,    72,    -1,    76,    -1,   140,    -1,    72,    -1,    76,
    740       -1,    72,    -1,   140,    -1,    83,    -1,    84,    -1,    82,
    741       -1,   141,    82,    -1,    72,    -1,   140,    -1,   109,   168,
    742      110,    -1,   109,   172,   110,    -1,   142,    -1,   143,   111,
    743      134,   163,   135,   112,    -1,   143,   109,   144,   110,    -1,
    744      143,   113,   139,    -1,   143,   113,   111,   134,   146,   135,
    745      112,    -1,   143,    85,   139,    -1,   143,    85,   111,   134,
    746      146,   135,   112,    -1,   143,    86,    -1,   143,    87,    -1,
    747      109,   274,   110,   114,   278,   371,   115,    -1,   143,   114,
    748      144,   115,    -1,   145,    -1,   144,   116,   145,    -1,    -1,
    749      163,    -1,   139,   117,   163,    -1,   111,   134,   163,   135,
    750      112,   117,   163,    -1,   111,   134,   163,   116,   166,   135,
    751      112,   117,   163,    -1,   147,    -1,   146,   116,   147,    -1,
    752      139,    -1,   139,   113,   147,    -1,   139,   113,   111,   134,
    753      146,   135,   112,    -1,   139,    85,   147,    -1,   139,    85,
    754      111,   134,   146,   135,   112,    -1,   143,    -1,   136,    -1,
    755      141,    -1,    86,   148,    -1,    87,   148,    -1,    40,   150,
    756       -1,   149,   150,    -1,   118,   150,    -1,   119,   150,    -1,
    757       37,   148,    -1,    37,   109,   274,   110,    -1,    38,   109,
    758      274,   116,   139,   110,    -1,    76,    -1,    76,   109,   275,
    759      110,    -1,    76,   109,   145,   110,    -1,    66,   148,    -1,
    760       66,   109,   274,   110,    -1,    94,   139,    -1,   120,    -1,
    761      121,    -1,   122,    -1,   123,    -1,   148,    -1,   109,   274,
    762      110,   150,    -1,   109,   274,   110,   165,    -1,   150,    -1,
    763      151,   119,   150,    -1,   151,   124,   150,    -1,   151,   125,
    764      150,    -1,   151,    -1,   152,   121,   151,    -1,   152,   122,
    765      151,    -1,   152,    -1,   153,    88,   152,    -1,   153,    89,
    766      152,    -1,   153,    -1,   154,   126,   153,    -1,   154,   127,
    767      153,    -1,   154,    90,   153,    -1,   154,    91,   153,    -1,
    768      154,    -1,   155,    92,   154,    -1,   155,    93,   154,    -1,
    769      155,    -1,   156,   120,   155,    -1,   156,    -1,   157,   128,
    770      156,    -1,   157,    -1,   158,   129,   157,    -1,   158,    -1,
    771      159,    94,   158,    -1,   159,    -1,   160,    95,   159,    -1,
    772      160,    -1,   160,   130,   168,   117,   161,    -1,   160,   130,
    773      117,   161,    -1,   160,   130,   168,   117,   165,    -1,   161,
    774       -1,   161,    -1,   148,   131,   163,    -1,   148,   167,   163,
    775       -1,   165,   372,    -1,    -1,   163,    -1,   111,   112,    -1,
    776      111,   134,   163,   135,   112,    -1,   111,   134,   116,   166,
    777      135,   112,    -1,   111,   134,   163,   116,   166,   135,   112,
    778       -1,   164,    -1,   166,   116,   164,    -1,    97,    -1,    98,
    779       -1,    99,    -1,   100,    -1,   101,    -1,   102,    -1,   103,
    780       -1,   104,    -1,   105,    -1,   106,    -1,   163,    -1,   168,
    781      116,   163,    -1,    -1,   168,    -1,   171,    -1,   172,    -1,
    782      176,    -1,   177,    -1,   189,    -1,   191,    -1,   192,    -1,
    783      197,    -1,   128,   143,   114,   144,   115,   132,    -1,   139,
    784      117,   311,   170,    -1,   114,   115,    -1,   114,   134,   134,
    785      208,   173,   135,   115,    -1,   174,    -1,   173,   134,   174,
    786       -1,   211,    -1,    40,   211,    -1,   307,    -1,   170,   135,
    787       -1,   170,    -1,   175,   170,    -1,   169,   132,    -1,    41,
    788      109,   168,   110,   170,    -1,    41,   109,   168,   110,   170,
    789       42,   170,    -1,    43,   109,   168,   110,   182,    -1,    43,
    790      109,   168,   110,   114,   134,   204,   183,   115,    -1,    53,
    791      109,   168,   110,   182,    -1,    53,   109,   168,   110,   114,
    792      134,   204,   185,   115,    -1,   162,    -1,   162,    96,   162,
    793       -1,   309,    -1,   178,    -1,   179,   116,   178,    -1,    44,
    794      179,   117,    -1,    45,   117,    -1,   180,    -1,   181,   180,
    795       -1,   181,   170,    -1,    -1,   184,    -1,   181,   175,    -1,
    796      184,   181,   175,    -1,    -1,   186,    -1,   181,   188,    -1,
    797      181,   175,   187,    -1,   186,   181,   188,    -1,   186,   181,
    798      175,   187,    -1,    -1,   188,    -1,    56,    -1,    56,   132,
    799       -1,    47,   109,   168,   110,   170,    -1,    46,   170,    47,
    800      109,   168,   110,   132,    -1,    48,   109,   134,   190,   110,
    801      170,    -1,   169,   135,   132,   169,   132,   169,    -1,   211,
    802      169,   132,   169,    -1,    51,   139,   132,    -1,    51,   119,
    803      168,   132,    -1,    50,   132,    -1,    50,   139,   132,    -1,
    804       49,   132,    -1,    49,   139,   132,    -1,    52,   169,   132,
    805       -1,    61,   164,   132,    -1,    62,   164,   132,    -1,    62,
    806      164,    63,   163,   132,    -1,    57,   172,   193,    -1,    57,
    807      172,   195,    -1,    57,   172,   193,   195,    -1,   194,    -1,
    808       58,   109,    96,   110,   172,    -1,   194,    58,   109,    96,
    809      110,   172,    -1,    59,   109,    96,   110,   172,    -1,   194,
    810       59,   109,    96,   110,   172,    -1,    58,   109,   134,   134,
    811      196,   135,   110,   172,   135,    -1,   194,    58,   109,   134,
    812      134,   196,   135,   110,   172,   135,    -1,    59,   109,   134,
    813      134,   196,   135,   110,   172,   135,    -1,   194,    59,   109,
    814      134,   134,   196,   135,   110,   172,   135,    -1,    60,   172,
    815       -1,   224,    -1,   224,   308,    -1,   224,   356,    -1,   365,
    816      139,    -1,   365,    -1,    64,   198,   109,   141,   110,   132,
    817       -1,    64,   198,   109,   141,   117,   199,   110,   132,    -1,
    818       64,   198,   109,   141,   117,   199,   117,   199,   110,   132,
    819       -1,    64,   198,   109,   141,   117,   199,   117,   199,   117,
    820      202,   110,   132,    -1,    64,   198,    51,   109,   141,   117,
    821      117,   199,   117,   202,   117,   203,   110,   132,    -1,    -1,
    822       11,    -1,    -1,   200,    -1,   201,    -1,   200,   116,   201,
    823       -1,   141,   109,   162,   110,    -1,   111,   162,   112,   141,
    824      109,   162,   110,    -1,    -1,   141,    -1,   202,   116,   141,
    825       -1,   139,    -1,   203,   116,   139,    -1,   135,    -1,   205,
    826       -1,   211,    -1,   205,   134,   211,    -1,   135,    -1,   207,
    827       -1,   221,    -1,   207,   134,   221,    -1,    -1,   209,    -1,
    828       29,   210,   132,    -1,   209,    29,   210,   132,    -1,   273,
    829       -1,   210,   116,   273,    -1,   212,    -1,   221,    -1,   213,
    830      135,   132,    -1,   218,   135,   132,    -1,   215,   135,   132,
    831       -1,   292,   135,   132,    -1,   295,   135,   132,    -1,   214,
    832      276,    -1,   230,   214,   276,    -1,   213,   135,   116,   134,
    833      271,   276,    -1,   366,   271,   310,    -1,   369,   271,   310,
    834       -1,   226,   369,   271,   310,    -1,   216,    -1,   226,   216,
    835       -1,   230,   216,    -1,   230,   226,   216,    -1,   215,   135,
    836      116,   134,   271,    -1,   111,   112,   271,   109,   134,   259,
    837      135,   110,    -1,   369,   271,   109,   134,   259,   135,   110,
    838       -1,   217,   271,   109,   134,   259,   135,   110,    -1,   111,
    839      134,   261,   135,   112,    -1,   111,   134,   261,   135,   116,
    840      134,   262,   135,   112,    -1,     3,   214,    -1,     3,   216,
    841       -1,   218,   135,   116,   134,   139,    -1,     3,   224,   308,
    842       -1,   219,   135,   116,   134,   308,    -1,   226,     3,   224,
    843      308,    -1,   224,     3,   308,    -1,   224,     3,   226,   308,
    844       -1,     3,   139,   131,   163,    -1,   220,   135,   116,   134,
    845      139,   131,   163,    -1,   222,   135,   132,    -1,   219,   135,
    846      132,    -1,   220,   135,   132,    -1,   239,   135,   132,    -1,
    847      223,   308,   310,   276,    -1,   222,   116,   311,   308,   310,
    848      276,    -1,   235,    -1,   239,    -1,   241,    -1,   282,    -1,
    849      236,    -1,   240,    -1,   242,    -1,   283,    -1,    -1,   226,
    850       -1,   227,    -1,   226,   227,    -1,   228,    -1,   313,    -1,
    851       10,    -1,    12,    -1,    11,    -1,    14,    -1,    67,    -1,
    852       -1,    13,   109,   229,   285,   110,    -1,   231,    -1,   226,
    853      231,    -1,   230,   226,   231,    -1,   232,    -1,   231,   232,
    854       -1,   233,    -1,     5,    -1,     7,    -1,     4,    -1,     6,
    855       -1,     8,    -1,     9,    -1,    69,    -1,    71,    -1,    16,
    856       -1,    21,    -1,    20,    -1,    18,    -1,    19,    -1,    17,
    857       -1,    22,    -1,    23,    -1,    15,    -1,    25,    -1,    26,
    858       -1,    27,    -1,    24,    -1,   236,    -1,   230,   236,    -1,
    859      235,   232,    -1,   235,   232,   226,    -1,   235,   232,   236,
    860       -1,   237,    -1,   225,   238,   225,    -1,   234,    -1,   226,
    861      234,    -1,   237,   227,    -1,   237,   234,    -1,    28,   109,
    862      275,   110,    -1,    28,   109,   168,   110,    -1,    78,   109,
    863      275,   110,    -1,    78,   109,   168,   110,    -1,   240,    -1,
    864      230,   240,    -1,   239,   232,    -1,   239,   232,   226,    -1,
    865      243,    -1,   226,   243,    -1,   240,   227,    -1,   242,    -1,
    866      230,   242,    -1,   241,   232,    -1,   241,   232,   226,    -1,
    867       74,    -1,   226,    74,    -1,   242,   227,    -1,   244,    -1,
    868      255,    -1,   246,   114,   247,   115,    -1,   246,   273,    -1,
    869       -1,   246,   273,   245,   114,   247,   115,    -1,   246,   109,
    870      291,   110,   114,   247,   115,    -1,   246,   284,    -1,    31,
    871      311,    -1,    32,   311,    -1,   248,    -1,   247,   248,    -1,
    872      249,   132,    -1,    40,   249,   132,    -1,   250,   132,    -1,
    873       40,   250,   132,    -1,   365,    -1,   365,   273,    -1,   249,
    874      116,   273,    -1,   249,   116,    -1,   224,   251,    -1,   250,
    875      116,   311,   251,    -1,    -1,   253,    -1,   317,   252,    -1,
    876      330,   252,    -1,   356,    -1,    -1,   253,    -1,   117,   162,
    877       -1,    30,   311,    -1,   254,   114,   257,   371,   115,    -1,
    878      254,   273,    -1,    -1,   254,   273,   256,   114,   257,   371,
    879      115,    -1,   273,   258,    -1,   257,   116,   273,   258,    -1,
    880       -1,   131,   162,    -1,    -1,   260,    -1,   262,    -1,   261,
    881       -1,   261,   135,   116,   134,   262,    -1,   262,   135,   116,
    882      134,    96,    -1,   261,   135,   116,   134,    96,    -1,   266,
    883       -1,   262,   135,   116,   134,   266,    -1,   261,   135,   116,
    884      134,   266,    -1,   261,   135,   116,   134,   262,   135,   116,
    885      134,   266,    -1,   267,    -1,   262,   135,   116,   134,   267,
    886       -1,    -1,   264,    -1,   265,    -1,   265,   135,   116,   134,
    887       96,    -1,   269,    -1,   268,    -1,   265,   135,   116,   134,
    888      269,    -1,   265,   135,   116,   134,   268,    -1,   268,    -1,
    889      361,   271,   372,    -1,   369,   271,   372,    -1,   226,   369,
    890      271,   372,    -1,   216,    -1,   269,    -1,   361,    -1,   369,
    891       -1,   226,   369,    -1,   370,    -1,   223,   335,   372,    -1,
    892      223,   339,   372,    -1,   223,    -1,   223,   350,    -1,   139,
    893       -1,   270,   116,   139,    -1,   137,    -1,    74,    -1,    75,
    894       -1,   138,    -1,    74,    -1,    75,    -1,   139,    -1,    74,
    895       -1,    75,    -1,   365,    -1,   224,    -1,   224,   356,    -1,
    896      365,    -1,   370,    -1,   224,    -1,   224,   344,    -1,    -1,
    897      131,   277,    -1,   107,   277,    -1,   163,    -1,   114,   278,
    898      371,   115,    -1,    -1,   277,    -1,   279,   277,    -1,   278,
    899      116,   277,    -1,   278,   116,   279,   277,    -1,   280,   117,
    900       -1,   273,   117,    -1,   281,    -1,   280,   281,    -1,    80,
    901       -1,   113,   273,    -1,   111,   134,   163,   135,   112,    -1,
    902      111,   134,   309,   135,   112,    -1,   111,   134,   162,    96,
    903      162,   135,   112,    -1,   113,   111,   134,   146,   135,   112,
    904       -1,   283,    -1,   230,   283,    -1,   282,   232,    -1,   282,
    905      232,   226,    -1,   284,    -1,   226,   284,    -1,   283,   227,
    906       -1,    75,   109,   291,   110,    -1,   286,   372,    -1,   285,
    907      116,   286,   372,    -1,    -1,   288,   273,   287,   289,    -1,
    908      224,   335,    -1,    33,    -1,    35,    -1,    34,    -1,    -1,
    909      289,   290,    -1,   129,   273,   109,   291,   110,    -1,   129,
    910      114,   134,   297,   115,    -1,   129,   109,   134,   285,   135,
    911      110,   114,   134,   297,   115,   109,   291,   110,    -1,   275,
    912       -1,   163,    -1,   291,   116,   275,    -1,   291,   116,   163,
    913       -1,    33,   293,    -1,   231,    33,   293,    -1,   292,   116,
    914      293,    -1,   294,   289,    -1,   294,   289,   131,   275,    -1,
    915      273,    -1,   272,   109,   134,   285,   135,   110,    -1,    36,
    916      273,   109,   134,   285,   135,   110,   114,   115,    -1,    -1,
    917       36,   273,   109,   134,   285,   135,   110,   114,   296,   297,
    918      115,    -1,   298,    -1,   297,   134,   298,    -1,   299,   135,
    919      132,    -1,   300,   135,   132,    -1,   214,    -1,   216,    -1,
    920      299,   135,   116,   134,   271,    -1,   224,   308,    -1,   300,
    921      135,   116,   134,   308,    -1,    -1,   302,    -1,   304,    -1,
    922      302,   134,   304,    -1,    -1,   302,    -1,   211,    -1,   306,
    923       -1,   197,    -1,    -1,     5,    82,   305,   114,   303,   115,
    924       -1,    40,   304,    -1,   307,    -1,   322,   172,    -1,   326,
    925      134,   206,   172,    -1,   215,   172,    -1,   223,   322,   172,
    926       -1,   226,   322,   172,    -1,   230,   322,   172,    -1,   230,
    927      226,   322,   172,    -1,   223,   326,   134,   206,   172,    -1,
    928      226,   326,   134,   206,   172,    -1,   230,   326,   134,   206,
    929      172,    -1,   230,   226,   326,   134,   206,   172,    -1,   317,
    930       -1,   322,    -1,   330,    -1,   162,   123,   162,    -1,    -1,
    931       64,   109,   141,   110,   311,    -1,    -1,   312,    -1,   313,
    932       -1,   312,   313,    -1,    39,   109,   109,   314,   110,   110,
    933       -1,   315,    -1,   314,   116,   315,    -1,    -1,   316,    -1,
    934      316,   109,   169,   110,    -1,   271,    -1,   233,    -1,   234,
    935       -1,   227,    -1,   318,   311,    -1,   319,    -1,   320,   311,
    936       -1,   321,   311,    -1,   137,    -1,   109,   318,   110,    -1,
    937      119,   317,    -1,   119,   226,   317,    -1,   109,   319,   110,
    938       -1,   318,   348,    -1,   109,   319,   110,   348,    -1,   109,
    939      320,   110,   349,    -1,   109,   320,   110,    -1,   109,   319,
    940      110,   109,   134,   263,   135,   110,    -1,   109,   321,   110,
    941       -1,   323,   311,    -1,   324,    -1,   325,   311,    -1,   318,
    942      109,   134,   263,   135,   110,    -1,   109,   324,   110,   109,
    943      134,   263,   135,   110,    -1,   109,   323,   110,    -1,   119,
    944      322,    -1,   119,   226,   322,    -1,   109,   324,   110,    -1,
    945      109,   324,   110,   348,    -1,   109,   325,   110,   349,    -1,
    946      109,   325,   110,    -1,   327,    -1,   328,    -1,   329,    -1,
    947      318,   109,   270,   110,    -1,   109,   328,   110,   109,   270,
    948      110,    -1,   109,   327,   110,    -1,   119,   326,    -1,   119,
    949      226,   326,    -1,   109,   328,   110,    -1,   109,   328,   110,
    950      348,    -1,   109,   329,   110,   349,    -1,   109,   329,   110,
    951       -1,   331,   311,    -1,   332,    -1,   333,   311,    -1,   334,
    952      311,    -1,   340,    -1,   109,   331,   110,    -1,   119,   330,
    953       -1,   119,   226,   330,    -1,   109,   332,   110,    -1,   331,
    954      348,    -1,   109,   332,   110,   348,    -1,   109,   333,   110,
    955      349,    -1,   109,   333,   110,    -1,   331,   109,   134,   263,
    956      135,   110,    -1,   109,   332,   110,   109,   134,   263,   135,
    957      110,    -1,   109,   334,   110,    -1,   318,   311,    -1,   336,
    958       -1,   337,   311,    -1,   338,   311,    -1,   119,   335,    -1,
    959      119,   226,   335,    -1,   109,   336,   110,    -1,   318,   354,
    960       -1,   109,   336,   110,   348,    -1,   109,   337,   110,   349,
    961       -1,   109,   337,   110,    -1,   318,   109,   134,   263,   135,
    962      110,    -1,   109,   336,   110,   109,   134,   263,   135,   110,
    963       -1,   109,   338,   110,    -1,   340,   311,    -1,   341,    -1,
    964      342,   311,    -1,   343,   311,    -1,    74,    -1,    75,    -1,
    965      119,   339,    -1,   119,   226,   339,    -1,   109,   341,   110,
    966       -1,   340,   354,    -1,   109,   341,   110,   354,    -1,   340,
    967      109,   134,   263,   135,   110,    -1,   109,   341,   110,   109,
    968      134,   263,   135,   110,    -1,   345,    -1,   346,   311,    -1,
    969      347,   311,    -1,   119,    -1,   119,   226,    -1,   119,   344,
    970       -1,   119,   226,   344,    -1,   109,   345,   110,    -1,   348,
    971       -1,   109,   345,   110,   348,    -1,   109,   346,   110,   349,
    972       -1,   109,   346,   110,    -1,   109,   134,   263,   135,   110,
    973       -1,   109,   345,   110,   109,   134,   263,   135,   110,    -1,
    974      109,   347,   110,    -1,   111,   112,    -1,   111,   112,   349,
    975       -1,   349,    -1,   111,   134,   163,   135,   112,    -1,   111,
    976      134,   119,   135,   112,    -1,   349,   111,   134,   163,   135,
    977      112,    -1,   349,   111,   134,   119,   135,   112,    -1,   351,
    978       -1,   352,   311,    -1,   353,   311,    -1,   119,    -1,   119,
    979      226,    -1,   119,   350,    -1,   119,   226,   350,    -1,   109,
    980      351,   110,    -1,   354,    -1,   109,   351,   110,   354,    -1,
    981      109,   352,   110,   349,    -1,   109,   352,   110,    -1,   109,
    982      134,   263,   135,   110,    -1,   109,   351,   110,   109,   134,
    983      263,   135,   110,    -1,   109,   353,   110,    -1,   355,    -1,
    984      355,   349,    -1,   349,    -1,   111,   112,    -1,   111,   134,
    985      226,   119,   135,   112,    -1,   111,   134,   226,   135,   112,
    986       -1,   111,   134,   226,   163,   135,   112,    -1,   111,   134,
    987        7,   225,   163,   135,   112,    -1,   111,   134,   226,     7,
    988      163,   135,   112,    -1,   357,    -1,   358,   311,    -1,   359,
    989      311,    -1,   119,    -1,   119,   226,    -1,   119,   356,    -1,
    990      119,   226,   356,    -1,   109,   357,   110,    -1,   348,    -1,
    991      109,   357,   110,   348,    -1,   109,   358,   110,   349,    -1,
    992      109,   358,   110,    -1,   109,   357,   110,   109,   134,   263,
    993      135,   110,    -1,   109,   359,   110,    -1,   361,    -1,   369,
    994       -1,   226,   369,    -1,   362,    -1,   363,    -1,   119,   224,
    995       -1,   226,   119,   224,    -1,   119,   370,    -1,   226,   119,
    996      370,    -1,   119,   360,    -1,   226,   119,   360,    -1,   111,
    997      112,   224,    -1,   364,   224,    -1,   111,   112,   349,   224,
    998       -1,   364,   349,   224,    -1,   349,   224,    -1,   111,   112,
    999      362,    -1,   364,   362,    -1,   111,   112,   349,   362,    -1,
    1000      364,   349,   362,    -1,   349,   362,    -1,   111,   134,   226,
    1001      119,   135,   112,    -1,   111,   134,   226,   163,   135,   112,
    1002       -1,   111,   134,   230,   163,   135,   112,    -1,   111,   134,
    1003      230,   226,   163,   135,   112,    -1,   369,    -1,   226,   369,
    1004       -1,   366,    -1,   367,    -1,   368,    -1,   119,   224,    -1,
    1005      226,   119,   224,    -1,   119,   370,    -1,   226,   119,   370,
    1006       -1,   119,   365,    -1,   226,   119,   365,    -1,   111,   112,
    1007      224,    -1,   111,   112,   349,   224,    -1,   349,   224,    -1,
    1008      111,   112,   367,    -1,   111,   112,   349,   367,    -1,   349,
    1009      367,    -1,   111,   134,   262,   135,   112,    -1,   111,   112,
    1010      109,   259,   110,    -1,   369,   109,   134,   259,   135,   110,
    1011       -1,   217,   109,   134,   259,   135,   110,    -1,    -1,   116,
    1012       -1,    -1,   131,   163,    -1
     740     303,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
     741      -1,    72,    -1,    76,    -1,   141,    -1,    72,    -1,    76,
     742      -1,    72,    -1,   141,    -1,    83,    -1,    84,    -1,    82,
     743      -1,   142,    82,    -1,    72,    -1,   141,    -1,   110,   170,
     744     111,    -1,   110,   174,   111,    -1,   143,    -1,   144,   112,
     745     135,   165,   136,   113,    -1,   144,   110,   145,   111,    -1,
     746     144,   114,   140,    -1,   144,   114,   112,   135,   147,   136,
     747     113,    -1,   144,    85,   140,    -1,   144,    85,   112,   135,
     748     147,   136,   113,    -1,   144,    86,    -1,   144,    87,    -1,
     749     110,   276,   111,   115,   280,   373,   116,    -1,   144,   115,
     750     145,   116,    -1,   146,    -1,   145,   117,   146,    -1,    -1,
     751     165,    -1,   140,   118,   165,    -1,   112,   135,   165,   136,
     752     113,   118,   165,    -1,   112,   135,   165,   117,   168,   136,
     753     113,   118,   165,    -1,   148,    -1,   147,   117,   148,    -1,
     754     140,    -1,   140,   114,   148,    -1,   140,   114,   112,   135,
     755     147,   136,   113,    -1,   140,    85,   148,    -1,   140,    85,
     756     112,   135,   147,   136,   113,    -1,   144,    -1,   137,    -1,
     757     142,    -1,    40,   152,    -1,   150,   152,    -1,   151,   152,
     758      -1,    86,   149,    -1,    87,   149,    -1,    37,   149,    -1,
     759      37,   110,   276,   111,    -1,    38,   110,   276,   117,   140,
     760     111,    -1,    76,    -1,    76,   110,   277,   111,    -1,    76,
     761     110,   146,   111,    -1,    66,   149,    -1,    66,   110,   276,
     762     111,    -1,    94,   140,    -1,   119,    -1,   120,    -1,   121,
     763      -1,   122,    -1,   123,    -1,   124,    -1,   149,    -1,   110,
     764     276,   111,   152,    -1,   110,   276,   111,   167,    -1,   152,
     765      -1,   153,   119,   152,    -1,   153,   125,   152,    -1,   153,
     766     126,   152,    -1,   153,    -1,   154,   121,   153,    -1,   154,
     767     122,   153,    -1,   154,    -1,   155,    88,   154,    -1,   155,
     768      89,   154,    -1,   155,    -1,   156,   127,   155,    -1,   156,
     769     128,   155,    -1,   156,    90,   155,    -1,   156,    91,   155,
     770      -1,   156,    -1,   157,    92,   156,    -1,   157,    93,   156,
     771      -1,   157,    -1,   158,   120,   157,    -1,   158,    -1,   159,
     772     129,   158,    -1,   159,    -1,   160,   130,   159,    -1,   160,
     773      -1,   161,    94,   160,    -1,   161,    -1,   162,    95,   161,
     774      -1,   162,    -1,   162,   131,   170,   118,   163,    -1,   162,
     775     131,   118,   163,    -1,   162,   131,   170,   118,   167,    -1,
     776     163,    -1,   163,    -1,   149,   132,   165,    -1,   149,   108,
     777     165,    -1,   149,   169,   165,    -1,   167,   374,    -1,    -1,
     778     165,    -1,   112,   113,    -1,   112,   135,   165,   136,   113,
     779      -1,   112,   135,   117,   168,   136,   113,    -1,   112,   135,
     780     165,   117,   168,   136,   113,    -1,   166,    -1,   168,   117,
     781     166,    -1,    97,    -1,    98,    -1,    99,    -1,   100,    -1,
     782     101,    -1,   102,    -1,   103,    -1,   104,    -1,   105,    -1,
     783     106,    -1,   165,    -1,   170,   117,   165,    -1,    -1,   170,
     784      -1,   173,    -1,   174,    -1,   178,    -1,   179,    -1,   191,
     785      -1,   193,    -1,   194,    -1,   199,    -1,   129,   144,   115,
     786     145,   116,   133,    -1,   140,   118,   313,   172,    -1,   115,
     787     116,    -1,   115,   135,   135,   210,   175,   136,   116,    -1,
     788     176,    -1,   175,   135,   176,    -1,   213,    -1,    40,   213,
     789      -1,   309,    -1,   172,   136,    -1,   172,    -1,   177,   172,
     790      -1,   171,   133,    -1,    41,   110,   170,   111,   172,    -1,
     791      41,   110,   170,   111,   172,    42,   172,    -1,    43,   110,
     792     170,   111,   184,    -1,    43,   110,   170,   111,   115,   135,
     793     206,   185,   116,    -1,    53,   110,   170,   111,   184,    -1,
     794      53,   110,   170,   111,   115,   135,   206,   187,   116,    -1,
     795     164,    -1,   164,    96,   164,    -1,   311,    -1,   180,    -1,
     796     181,   117,   180,    -1,    44,   181,   118,    -1,    45,   118,
     797      -1,   182,    -1,   183,   182,    -1,   183,   172,    -1,    -1,
     798     186,    -1,   183,   177,    -1,   186,   183,   177,    -1,    -1,
     799     188,    -1,   183,   190,    -1,   183,   177,   189,    -1,   188,
     800     183,   190,    -1,   188,   183,   177,   189,    -1,    -1,   190,
     801      -1,    56,    -1,    56,   133,    -1,    47,   110,   170,   111,
     802     172,    -1,    46,   172,    47,   110,   170,   111,   133,    -1,
     803      48,   110,   135,   192,   111,   172,    -1,   171,   136,   133,
     804     171,   133,   171,    -1,   213,   171,   133,   171,    -1,    51,
     805     140,   133,    -1,    51,   119,   170,   133,    -1,    50,   133,
     806      -1,    50,   140,   133,    -1,    49,   133,    -1,    49,   140,
     807     133,    -1,    52,   171,   133,    -1,    61,   166,   133,    -1,
     808      62,   166,   133,    -1,    62,   166,    63,   165,   133,    -1,
     809      57,   174,   195,    -1,    57,   174,   197,    -1,    57,   174,
     810     195,   197,    -1,   196,    -1,    58,   110,    96,   111,   174,
     811      -1,   196,    58,   110,    96,   111,   174,    -1,    59,   110,
     812      96,   111,   174,    -1,   196,    59,   110,    96,   111,   174,
     813      -1,    58,   110,   135,   135,   198,   136,   111,   174,   136,
     814      -1,   196,    58,   110,   135,   135,   198,   136,   111,   174,
     815     136,    -1,    59,   110,   135,   135,   198,   136,   111,   174,
     816     136,    -1,   196,    59,   110,   135,   135,   198,   136,   111,
     817     174,   136,    -1,    60,   174,    -1,   226,    -1,   226,   310,
     818      -1,   226,   358,    -1,   367,   140,    -1,   367,    -1,    64,
     819     200,   110,   142,   111,   133,    -1,    64,   200,   110,   142,
     820     118,   201,   111,   133,    -1,    64,   200,   110,   142,   118,
     821     201,   118,   201,   111,   133,    -1,    64,   200,   110,   142,
     822     118,   201,   118,   201,   118,   204,   111,   133,    -1,    64,
     823     200,    51,   110,   142,   118,   118,   201,   118,   204,   118,
     824     205,   111,   133,    -1,    -1,    11,    -1,    -1,   202,    -1,
     825     203,    -1,   202,   117,   203,    -1,   142,   110,   164,   111,
     826      -1,   112,   164,   113,   142,   110,   164,   111,    -1,    -1,
     827     142,    -1,   204,   117,   142,    -1,   140,    -1,   205,   117,
     828     140,    -1,   136,    -1,   207,    -1,   213,    -1,   207,   135,
     829     213,    -1,   136,    -1,   209,    -1,   223,    -1,   209,   135,
     830     223,    -1,    -1,   211,    -1,    29,   212,   133,    -1,   211,
     831      29,   212,   133,    -1,   275,    -1,   212,   117,   275,    -1,
     832     214,    -1,   223,    -1,   215,   136,   133,    -1,   220,   136,
     833     133,    -1,   217,   136,   133,    -1,   294,   136,   133,    -1,
     834     297,   136,   133,    -1,   216,   278,    -1,   232,   216,   278,
     835      -1,   215,   136,   117,   135,   273,   278,    -1,   368,   273,
     836     312,    -1,   371,   273,   312,    -1,   228,   371,   273,   312,
     837      -1,   218,    -1,   228,   218,    -1,   232,   218,    -1,   232,
     838     228,   218,    -1,   217,   136,   117,   135,   273,    -1,   112,
     839     113,   273,   110,   135,   261,   136,   111,    -1,   371,   273,
     840     110,   135,   261,   136,   111,    -1,   219,   273,   110,   135,
     841     261,   136,   111,    -1,   112,   135,   263,   136,   113,    -1,
     842     112,   135,   263,   136,   117,   135,   264,   136,   113,    -1,
     843       3,   216,    -1,     3,   218,    -1,   220,   136,   117,   135,
     844     140,    -1,     3,   226,   310,    -1,   221,   136,   117,   135,
     845     310,    -1,   228,     3,   226,   310,    -1,   226,     3,   310,
     846      -1,   226,     3,   228,   310,    -1,     3,   140,   132,   165,
     847      -1,   222,   136,   117,   135,   140,   132,   165,    -1,   224,
     848     136,   133,    -1,   221,   136,   133,    -1,   222,   136,   133,
     849      -1,   241,   136,   133,    -1,   225,   310,   312,   278,    -1,
     850     224,   117,   313,   310,   312,   278,    -1,   237,    -1,   241,
     851      -1,   243,    -1,   284,    -1,   238,    -1,   242,    -1,   244,
     852      -1,   285,    -1,    -1,   228,    -1,   229,    -1,   228,   229,
     853      -1,   230,    -1,   315,    -1,    10,    -1,    12,    -1,    11,
     854      -1,    14,    -1,    67,    -1,    -1,    13,   110,   231,   287,
     855     111,    -1,   233,    -1,   228,   233,    -1,   232,   228,   233,
     856      -1,   234,    -1,   233,   234,    -1,   235,    -1,     5,    -1,
     857       7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,    -1,
     858      69,    -1,    71,    -1,    16,    -1,    21,    -1,    20,    -1,
     859      18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,    -1,
     860      15,    -1,    25,    -1,    26,    -1,    27,    -1,    24,    -1,
     861     238,    -1,   232,   238,    -1,   237,   234,    -1,   237,   234,
     862     228,    -1,   237,   234,   238,    -1,   239,    -1,   227,   240,
     863     227,    -1,   236,    -1,   228,   236,    -1,   239,   229,    -1,
     864     239,   236,    -1,    28,   110,   277,   111,    -1,    28,   110,
     865     170,   111,    -1,    78,   110,   277,   111,    -1,    78,   110,
     866     170,   111,    -1,   242,    -1,   232,   242,    -1,   241,   234,
     867      -1,   241,   234,   228,    -1,   245,    -1,   228,   245,    -1,
     868     242,   229,    -1,   244,    -1,   232,   244,    -1,   243,   234,
     869      -1,   243,   234,   228,    -1,    74,    -1,   228,    74,    -1,
     870     244,   229,    -1,   246,    -1,   257,    -1,   248,   115,   249,
     871     116,    -1,   248,   275,    -1,    -1,   248,   275,   247,   115,
     872     249,   116,    -1,   248,   110,   293,   111,   115,   249,   116,
     873      -1,   248,   286,    -1,    31,   313,    -1,    32,   313,    -1,
     874     250,    -1,   249,   250,    -1,   251,   133,    -1,    40,   251,
     875     133,    -1,   252,   133,    -1,    40,   252,   133,    -1,   367,
     876      -1,   367,   275,    -1,   251,   117,   275,    -1,   251,   117,
     877      -1,   226,   253,    -1,   252,   117,   313,   253,    -1,    -1,
     878     255,    -1,   319,   254,    -1,   332,   254,    -1,   358,    -1,
     879      -1,   255,    -1,   118,   164,    -1,    30,   313,    -1,   256,
     880     115,   259,   373,   116,    -1,   256,   275,    -1,    -1,   256,
     881     275,   258,   115,   259,   373,   116,    -1,   275,   260,    -1,
     882     259,   117,   275,   260,    -1,    -1,   132,   164,    -1,    -1,
     883     262,    -1,   264,    -1,   263,    -1,   263,   136,   117,   135,
     884     264,    -1,   264,   136,   117,   135,    96,    -1,   263,   136,
     885     117,   135,    96,    -1,   268,    -1,   264,   136,   117,   135,
     886     268,    -1,   263,   136,   117,   135,   268,    -1,   263,   136,
     887     117,   135,   264,   136,   117,   135,   268,    -1,   269,    -1,
     888     264,   136,   117,   135,   269,    -1,    -1,   266,    -1,   267,
     889      -1,   267,   136,   117,   135,    96,    -1,   271,    -1,   270,
     890      -1,   267,   136,   117,   135,   271,    -1,   267,   136,   117,
     891     135,   270,    -1,   270,    -1,   363,   273,   374,    -1,   371,
     892     273,   374,    -1,   228,   371,   273,   374,    -1,   218,    -1,
     893     271,    -1,   363,    -1,   371,    -1,   228,   371,    -1,   372,
     894      -1,   225,   337,   374,    -1,   225,   341,   374,    -1,   225,
     895      -1,   225,   352,    -1,   140,    -1,   272,   117,   140,    -1,
     896     138,    -1,    74,    -1,    75,    -1,   139,    -1,    74,    -1,
     897      75,    -1,   140,    -1,    74,    -1,    75,    -1,   367,    -1,
     898     226,    -1,   226,   358,    -1,   367,    -1,   372,    -1,   226,
     899      -1,   226,   346,    -1,    -1,   132,   279,    -1,   107,   279,
     900      -1,   165,    -1,   115,   280,   373,   116,    -1,    -1,   279,
     901      -1,   281,   279,    -1,   280,   117,   279,    -1,   280,   117,
     902     281,   279,    -1,   282,   118,    -1,   275,   118,    -1,   283,
     903      -1,   282,   283,    -1,    80,    -1,   114,   275,    -1,   112,
     904     135,   165,   136,   113,    -1,   112,   135,   311,   136,   113,
     905      -1,   112,   135,   164,    96,   164,   136,   113,    -1,   114,
     906     112,   135,   147,   136,   113,    -1,   285,    -1,   232,   285,
     907      -1,   284,   234,    -1,   284,   234,   228,    -1,   286,    -1,
     908     228,   286,    -1,   285,   229,    -1,    75,   110,   293,   111,
     909      -1,   288,   374,    -1,   287,   117,   288,   374,    -1,    -1,
     910     290,   275,   289,   291,    -1,   226,   337,    -1,    33,    -1,
     911      35,    -1,    34,    -1,    -1,   291,   292,    -1,   130,   275,
     912     110,   293,   111,    -1,   130,   115,   135,   299,   116,    -1,
     913     130,   110,   135,   287,   136,   111,   115,   135,   299,   116,
     914     110,   293,   111,    -1,   277,    -1,   165,    -1,   293,   117,
     915     277,    -1,   293,   117,   165,    -1,    33,   295,    -1,   233,
     916      33,   295,    -1,   294,   117,   295,    -1,   296,   291,    -1,
     917     296,   291,   132,   277,    -1,   275,    -1,   274,   110,   135,
     918     287,   136,   111,    -1,    36,   275,   110,   135,   287,   136,
     919     111,   115,   116,    -1,    -1,    36,   275,   110,   135,   287,
     920     136,   111,   115,   298,   299,   116,    -1,   300,    -1,   299,
     921     135,   300,    -1,   301,   136,   133,    -1,   302,   136,   133,
     922      -1,   216,    -1,   218,    -1,   301,   136,   117,   135,   273,
     923      -1,   226,   310,    -1,   302,   136,   117,   135,   310,    -1,
     924      -1,   304,    -1,   306,    -1,   304,   135,   306,    -1,    -1,
     925     304,    -1,   213,    -1,   308,    -1,   199,    -1,    -1,     5,
     926      82,   307,   115,   305,   116,    -1,    40,   306,    -1,   309,
     927      -1,   324,   174,    -1,   328,   135,   208,   174,    -1,   217,
     928     174,    -1,   225,   324,   174,    -1,   228,   324,   174,    -1,
     929     232,   324,   174,    -1,   232,   228,   324,   174,    -1,   225,
     930     328,   135,   208,   174,    -1,   228,   328,   135,   208,   174,
     931      -1,   232,   328,   135,   208,   174,    -1,   232,   228,   328,
     932     135,   208,   174,    -1,   319,    -1,   324,    -1,   332,    -1,
     933     164,   124,   164,    -1,    -1,    64,   110,   142,   111,   313,
     934      -1,    -1,   314,    -1,   315,    -1,   314,   315,    -1,    39,
     935     110,   110,   316,   111,   111,    -1,   317,    -1,   316,   117,
     936     317,    -1,    -1,   318,    -1,   318,   110,   171,   111,    -1,
     937     273,    -1,   235,    -1,   236,    -1,   229,    -1,   320,   313,
     938      -1,   321,    -1,   322,   313,    -1,   323,   313,    -1,   138,
     939      -1,   110,   320,   111,    -1,   150,   319,    -1,   150,   228,
     940     319,    -1,   110,   321,   111,    -1,   320,   350,    -1,   110,
     941     321,   111,   350,    -1,   110,   322,   111,   351,    -1,   110,
     942     322,   111,    -1,   110,   321,   111,   110,   135,   265,   136,
     943     111,    -1,   110,   323,   111,    -1,   325,   313,    -1,   326,
     944      -1,   327,   313,    -1,   320,   110,   135,   265,   136,   111,
     945      -1,   110,   326,   111,   110,   135,   265,   136,   111,    -1,
     946     110,   325,   111,    -1,   150,   324,    -1,   150,   228,   324,
     947      -1,   110,   326,   111,    -1,   110,   326,   111,   350,    -1,
     948     110,   327,   111,   351,    -1,   110,   327,   111,    -1,   329,
     949      -1,   330,    -1,   331,    -1,   320,   110,   272,   111,    -1,
     950     110,   330,   111,   110,   272,   111,    -1,   110,   329,   111,
     951      -1,   150,   328,    -1,   150,   228,   328,    -1,   110,   330,
     952     111,    -1,   110,   330,   111,   350,    -1,   110,   331,   111,
     953     351,    -1,   110,   331,   111,    -1,   333,   313,    -1,   334,
     954      -1,   335,   313,    -1,   336,   313,    -1,   342,    -1,   110,
     955     333,   111,    -1,   150,   332,    -1,   150,   228,   332,    -1,
     956     110,   334,   111,    -1,   333,   350,    -1,   110,   334,   111,
     957     350,    -1,   110,   335,   111,   351,    -1,   110,   335,   111,
     958      -1,   333,   110,   135,   265,   136,   111,    -1,   110,   334,
     959     111,   110,   135,   265,   136,   111,    -1,   110,   336,   111,
     960      -1,   320,   313,    -1,   338,    -1,   339,   313,    -1,   340,
     961     313,    -1,   150,   337,    -1,   150,   228,   337,    -1,   110,
     962     338,   111,    -1,   320,   356,    -1,   110,   338,   111,   350,
     963      -1,   110,   339,   111,   351,    -1,   110,   339,   111,    -1,
     964     320,   110,   135,   265,   136,   111,    -1,   110,   338,   111,
     965     110,   135,   265,   136,   111,    -1,   110,   340,   111,    -1,
     966     342,   313,    -1,   343,    -1,   344,   313,    -1,   345,   313,
     967      -1,    74,    -1,    75,    -1,   150,   341,    -1,   150,   228,
     968     341,    -1,   110,   343,   111,    -1,   342,   356,    -1,   110,
     969     343,   111,   356,    -1,   342,   110,   135,   265,   136,   111,
     970      -1,   110,   343,   111,   110,   135,   265,   136,   111,    -1,
     971     347,    -1,   348,   313,    -1,   349,   313,    -1,   150,    -1,
     972     150,   228,    -1,   150,   346,    -1,   150,   228,   346,    -1,
     973     110,   347,   111,    -1,   350,    -1,   110,   347,   111,   350,
     974      -1,   110,   348,   111,   351,    -1,   110,   348,   111,    -1,
     975     110,   135,   265,   136,   111,    -1,   110,   347,   111,   110,
     976     135,   265,   136,   111,    -1,   110,   349,   111,    -1,   112,
     977     113,    -1,   112,   113,   351,    -1,   351,    -1,   112,   135,
     978     165,   136,   113,    -1,   112,   135,   119,   136,   113,    -1,
     979     351,   112,   135,   165,   136,   113,    -1,   351,   112,   135,
     980     119,   136,   113,    -1,   353,    -1,   354,   313,    -1,   355,
     981     313,    -1,   150,    -1,   150,   228,    -1,   150,   352,    -1,
     982     150,   228,   352,    -1,   110,   353,   111,    -1,   356,    -1,
     983     110,   353,   111,   356,    -1,   110,   354,   111,   351,    -1,
     984     110,   354,   111,    -1,   110,   135,   265,   136,   111,    -1,
     985     110,   353,   111,   110,   135,   265,   136,   111,    -1,   110,
     986     355,   111,    -1,   357,    -1,   357,   351,    -1,   351,    -1,
     987     112,   113,    -1,   112,   135,   228,   119,   136,   113,    -1,
     988     112,   135,   228,   136,   113,    -1,   112,   135,   228,   165,
     989     136,   113,    -1,   112,   135,     7,   227,   165,   136,   113,
     990      -1,   112,   135,   228,     7,   165,   136,   113,    -1,   359,
     991      -1,   360,   313,    -1,   361,   313,    -1,   150,    -1,   150,
     992     228,    -1,   150,   358,    -1,   150,   228,   358,    -1,   110,
     993     359,   111,    -1,   350,    -1,   110,   359,   111,   350,    -1,
     994     110,   360,   111,   351,    -1,   110,   360,   111,    -1,   110,
     995     359,   111,   110,   135,   265,   136,   111,    -1,   110,   361,
     996     111,    -1,   363,    -1,   371,    -1,   228,   371,    -1,   364,
     997      -1,   365,    -1,   150,   226,    -1,   228,   150,   226,    -1,
     998     150,   372,    -1,   228,   150,   372,    -1,   150,   362,    -1,
     999     228,   150,   362,    -1,   112,   113,   226,    -1,   366,   226,
     1000      -1,   112,   113,   351,   226,    -1,   366,   351,   226,    -1,
     1001     351,   226,    -1,   112,   113,   364,    -1,   366,   364,    -1,
     1002     112,   113,   351,   364,    -1,   366,   351,   364,    -1,   351,
     1003     364,    -1,   112,   135,   228,   119,   136,   113,    -1,   112,
     1004     135,   228,   165,   136,   113,    -1,   112,   135,   232,   165,
     1005     136,   113,    -1,   112,   135,   232,   228,   165,   136,   113,
     1006      -1,   371,    -1,   228,   371,    -1,   368,    -1,   369,    -1,
     1007     370,    -1,   150,   226,    -1,   228,   150,   226,    -1,   150,
     1008     372,    -1,   228,   150,   372,    -1,   150,   367,    -1,   228,
     1009     150,   367,    -1,   112,   113,   226,    -1,   112,   113,   351,
     1010     226,    -1,   351,   226,    -1,   112,   113,   369,    -1,   112,
     1011     113,   351,   369,    -1,   351,   369,    -1,   112,   135,   264,
     1012     136,   113,    -1,   112,   113,   110,   261,   111,    -1,   371,
     1013     110,   135,   261,   136,   111,    -1,   219,   110,   135,   261,
     1014     136,   111,    -1,    -1,   117,    -1,    -1,   132,   165,    -1
    10131015};
    10141016
     
    10211023     371,   373,   375,   383,   384,   390,   391,   392,   397,   399,
    10221024     404,   405,   409,   413,   415,   417,   419,   424,   427,   429,
    1023      431,   433,   435,   437,   439,   441,   447,   449,   451,   453,
    1024      455,   457,   459,   461,   463,   468,   469,   470,   471,   475,
    1025      476,   478,   483,   484,   486,   488,   493,   494,   496,   501,
    1026      502,   504,   509,   510,   512,   514,   516,   521,   522,   524,
    1027      529,   530,   535,   536,   541,   542,   547,   548,   553,   554,
    1028      559,   560,   562,   564,   569,   574,   575,   577,   579,   585,
    1029      586,   592,   594,   596,   598,   603,   604,   609,   610,   611,
    1030      612,   613,   614,   615,   616,   617,   618,   622,   623,   629,
    1031      630,   636,   637,   638,   639,   640,   641,   642,   643,   644,
    1032      653,   660,   662,   672,   673,   678,   680,   682,   684,   688,
    1033      689,   694,   699,   702,   704,   706,   711,   713,   721,   722,
    1034      724,   728,   729,   734,   735,   740,   741,   745,   750,   751,
    1035      755,   757,   763,   764,   768,   770,   772,   774,   780,   781,
    1036      785,   786,   790,   792,   794,   799,   801,   806,   808,   812,
    1037      815,   819,   822,   826,   828,   832,   834,   841,   843,   845,
    1038      854,   856,   858,   860,   862,   867,   869,   871,   873,   878,
    1039      891,   892,   897,   899,   904,   908,   910,   912,   914,   916,
    1040      922,   923,   929,   930,   934,   935,   940,   942,   948,   949,
    1041      951,   956,   958,   965,   967,   971,   972,   977,   979,   983,
    1042      984,   988,   990,   994,   995,   999,  1000,  1004,  1005,  1020,
    1043     1021,  1022,  1023,  1024,  1028,  1033,  1040,  1050,  1055,  1060,
    1044     1068,  1073,  1078,  1083,  1088,  1096,  1118,  1123,  1130,  1132,
    1045     1139,  1144,  1149,  1160,  1165,  1170,  1175,  1180,  1189,  1194,
    1046     1202,  1203,  1204,  1205,  1211,  1216,  1224,  1225,  1226,  1227,
    1047     1231,  1232,  1233,  1234,  1239,  1240,  1249,  1250,  1255,  1256,
    1048     1261,  1263,  1265,  1267,  1269,  1272,  1271,  1283,  1284,  1286,
    1049     1296,  1297,  1302,  1306,  1308,  1310,  1312,  1314,  1316,  1318,
    1050     1320,  1325,  1327,  1329,  1331,  1333,  1335,  1337,  1339,  1341,
    1051     1343,  1345,  1347,  1349,  1355,  1356,  1358,  1360,  1362,  1367,
    1052     1368,  1374,  1375,  1377,  1379,  1384,  1386,  1388,  1390,  1395,
    1053     1396,  1398,  1400,  1405,  1406,  1408,  1413,  1414,  1416,  1418,
    1054     1423,  1425,  1427,  1432,  1433,  1437,  1439,  1445,  1444,  1448,
    1055     1450,  1455,  1457,  1462,  1464,  1469,  1470,  1472,  1473,  1478,
    1056     1479,  1481,  1483,  1488,  1490,  1496,  1497,  1499,  1502,  1505,
    1057     1510,  1511,  1516,  1521,  1525,  1527,  1533,  1532,  1539,  1541,
    1058     1547,  1548,  1556,  1557,  1561,  1562,  1563,  1565,  1567,  1574,
    1059     1575,  1577,  1579,  1584,  1585,  1591,  1592,  1596,  1597,  1602,
    1060     1603,  1604,  1606,  1614,  1615,  1617,  1620,  1622,  1626,  1627,
    1061     1628,  1630,  1632,  1636,  1641,  1649,  1650,  1659,  1661,  1666,
    1062     1667,  1668,  1672,  1673,  1674,  1678,  1679,  1680,  1684,  1685,
    1063     1686,  1691,  1692,  1693,  1694,  1700,  1701,  1703,  1708,  1709,
    1064     1714,  1715,  1716,  1717,  1718,  1733,  1734,  1739,  1740,  1748,
    1065     1750,  1752,  1755,  1757,  1759,  1782,  1783,  1785,  1787,  1792,
    1066     1793,  1795,  1800,  1805,  1806,  1812,  1811,  1815,  1819,  1821,
    1067     1823,  1829,  1830,  1835,  1840,  1842,  1847,  1849,  1850,  1852,
    1068     1857,  1859,  1861,  1866,  1868,  1873,  1878,  1886,  1892,  1891,
    1069     1905,  1906,  1911,  1912,  1916,  1921,  1926,  1934,  1939,  1950,
    1070     1951,  1962,  1963,  1969,  1970,  1974,  1975,  1976,  1979,  1978,
    1071     1989,  1994,  1999,  2005,  2014,  2020,  2026,  2032,  2038,  2046,
    1072     2052,  2060,  2066,  2075,  2076,  2077,  2081,  2085,  2087,  2092,
    1073     2093,  2097,  2098,  2103,  2109,  2110,  2113,  2115,  2116,  2120,
    1074     2121,  2122,  2123,  2157,  2159,  2160,  2162,  2167,  2172,  2177,
    1075     2179,  2181,  2186,  2188,  2190,  2192,  2197,  2199,  2209,  2211,
    1076     2212,  2217,  2219,  2221,  2226,  2228,  2230,  2235,  2237,  2239,
    1077     2248,  2249,  2250,  2254,  2256,  2258,  2263,  2265,  2267,  2272,
    1078     2274,  2276,  2291,  2293,  2294,  2296,  2301,  2302,  2307,  2309,
    1079     2311,  2316,  2318,  2320,  2322,  2327,  2329,  2331,  2341,  2343,
    1080     2344,  2346,  2351,  2353,  2355,  2360,  2362,  2364,  2366,  2371,
    1081     2373,  2375,  2406,  2408,  2409,  2411,  2416,  2421,  2429,  2431,
    1082     2433,  2438,  2440,  2445,  2447,  2461,  2462,  2464,  2469,  2471,
    1083     2473,  2475,  2477,  2482,  2483,  2485,  2487,  2492,  2494,  2496,
    1084     2502,  2504,  2506,  2510,  2512,  2514,  2516,  2530,  2531,  2533,
    1085     2538,  2540,  2542,  2544,  2546,  2551,  2552,  2554,  2556,  2561,
    1086     2563,  2565,  2571,  2572,  2574,  2583,  2586,  2588,  2591,  2593,
    1087     2595,  2608,  2609,  2611,  2616,  2618,  2620,  2622,  2624,  2629,
    1088     2630,  2632,  2634,  2639,  2641,  2649,  2650,  2651,  2656,  2657,
    1089     2661,  2663,  2665,  2667,  2669,  2671,  2678,  2680,  2682,  2684,
    1090     2686,  2688,  2690,  2692,  2694,  2696,  2701,  2703,  2705,  2710,
    1091     2736,  2737,  2739,  2743,  2744,  2748,  2750,  2752,  2754,  2756,
    1092     2758,  2765,  2767,  2769,  2771,  2773,  2775,  2780,  2785,  2787,
    1093     2789,  2807,  2809,  2814,  2815
     1025     431,   433,   438,   440,   442,   444,   446,   448,   450,   452,
     1026     454,   456,   458,   460,   465,   466,   470,   471,   472,   473,
     1027     477,   478,   480,   485,   486,   488,   490,   495,   496,   498,
     1028     503,   504,   506,   511,   512,   514,   516,   518,   523,   524,
     1029     526,   531,   532,   537,   538,   543,   544,   549,   550,   555,
     1030     556,   561,   562,   564,   566,   571,   576,   577,   579,   581,
     1031     583,   589,   590,   596,   598,   600,   602,   607,   608,   613,
     1032     614,   615,   616,   617,   618,   619,   620,   621,   622,   626,
     1033     627,   633,   634,   640,   641,   642,   643,   644,   645,   646,
     1034     647,   648,   657,   664,   666,   676,   677,   682,   684,   686,
     1035     688,   692,   693,   698,   703,   706,   708,   710,   715,   717,
     1036     725,   726,   728,   732,   733,   738,   739,   744,   745,   749,
     1037     754,   755,   759,   761,   767,   768,   772,   774,   776,   778,
     1038     784,   785,   789,   790,   794,   796,   798,   803,   805,   810,
     1039     812,   816,   819,   823,   826,   830,   832,   836,   838,   845,
     1040     847,   849,   858,   860,   862,   864,   866,   871,   873,   875,
     1041     877,   882,   895,   896,   901,   903,   908,   912,   914,   916,
     1042     918,   920,   926,   927,   933,   934,   938,   939,   944,   946,
     1043     952,   953,   955,   960,   962,   969,   971,   975,   976,   981,
     1044     983,   987,   988,   992,   994,   998,   999,  1003,  1004,  1008,
     1045    1009,  1024,  1025,  1026,  1027,  1028,  1032,  1037,  1044,  1054,
     1046    1059,  1064,  1072,  1077,  1082,  1087,  1092,  1100,  1122,  1127,
     1047    1134,  1136,  1143,  1148,  1153,  1164,  1169,  1174,  1179,  1184,
     1048    1193,  1198,  1206,  1207,  1208,  1209,  1215,  1220,  1228,  1229,
     1049    1230,  1231,  1235,  1236,  1237,  1238,  1243,  1244,  1253,  1254,
     1050    1259,  1260,  1265,  1267,  1269,  1271,  1273,  1276,  1275,  1287,
     1051    1288,  1290,  1300,  1301,  1306,  1310,  1312,  1314,  1316,  1318,
     1052    1320,  1322,  1324,  1329,  1331,  1333,  1335,  1337,  1339,  1341,
     1053    1343,  1345,  1347,  1349,  1351,  1353,  1359,  1360,  1362,  1364,
     1054    1366,  1371,  1372,  1378,  1379,  1381,  1383,  1388,  1390,  1392,
     1055    1394,  1399,  1400,  1402,  1404,  1409,  1410,  1412,  1417,  1418,
     1056    1420,  1422,  1427,  1429,  1431,  1436,  1437,  1441,  1443,  1449,
     1057    1448,  1452,  1454,  1459,  1461,  1466,  1468,  1473,  1474,  1476,
     1058    1477,  1482,  1483,  1485,  1487,  1492,  1494,  1500,  1501,  1503,
     1059    1506,  1509,  1514,  1515,  1520,  1525,  1529,  1531,  1537,  1536,
     1060    1543,  1545,  1551,  1552,  1560,  1561,  1565,  1566,  1567,  1569,
     1061    1571,  1578,  1579,  1581,  1583,  1588,  1589,  1595,  1596,  1600,
     1062    1601,  1606,  1607,  1608,  1610,  1618,  1619,  1621,  1624,  1626,
     1063    1630,  1631,  1632,  1634,  1636,  1640,  1645,  1653,  1654,  1663,
     1064    1665,  1670,  1671,  1672,  1676,  1677,  1678,  1682,  1683,  1684,
     1065    1688,  1689,  1690,  1695,  1696,  1697,  1698,  1704,  1705,  1707,
     1066    1712,  1713,  1718,  1719,  1720,  1721,  1722,  1737,  1738,  1743,
     1067    1744,  1752,  1754,  1756,  1759,  1761,  1763,  1786,  1787,  1789,
     1068    1791,  1796,  1797,  1799,  1804,  1809,  1810,  1816,  1815,  1819,
     1069    1823,  1825,  1827,  1833,  1834,  1839,  1844,  1846,  1851,  1853,
     1070    1854,  1856,  1861,  1863,  1865,  1870,  1872,  1877,  1882,  1890,
     1071    1896,  1895,  1909,  1910,  1915,  1916,  1920,  1925,  1930,  1938,
     1072    1943,  1954,  1955,  1966,  1967,  1973,  1974,  1978,  1979,  1980,
     1073    1983,  1982,  1993,  1998,  2003,  2009,  2018,  2024,  2030,  2036,
     1074    2042,  2050,  2056,  2064,  2070,  2079,  2080,  2081,  2085,  2089,
     1075    2091,  2096,  2097,  2101,  2102,  2107,  2113,  2114,  2117,  2119,
     1076    2120,  2124,  2125,  2126,  2127,  2161,  2163,  2164,  2166,  2171,
     1077    2176,  2181,  2183,  2185,  2190,  2192,  2194,  2196,  2201,  2203,
     1078    2213,  2215,  2216,  2221,  2223,  2225,  2230,  2232,  2234,  2239,
     1079    2241,  2243,  2252,  2253,  2254,  2258,  2260,  2262,  2267,  2269,
     1080    2271,  2276,  2278,  2280,  2295,  2297,  2298,  2300,  2305,  2306,
     1081    2311,  2313,  2315,  2320,  2322,  2324,  2326,  2331,  2333,  2335,
     1082    2345,  2347,  2348,  2350,  2355,  2357,  2359,  2364,  2366,  2368,
     1083    2370,  2375,  2377,  2379,  2410,  2412,  2413,  2415,  2420,  2425,
     1084    2433,  2435,  2437,  2442,  2444,  2449,  2451,  2465,  2466,  2468,
     1085    2473,  2475,  2477,  2479,  2481,  2486,  2487,  2489,  2491,  2496,
     1086    2498,  2500,  2506,  2508,  2510,  2514,  2516,  2518,  2520,  2534,
     1087    2535,  2537,  2542,  2544,  2546,  2548,  2550,  2555,  2556,  2558,
     1088    2560,  2565,  2567,  2569,  2575,  2576,  2578,  2587,  2590,  2592,
     1089    2595,  2597,  2599,  2612,  2613,  2615,  2620,  2622,  2624,  2626,
     1090    2628,  2633,  2634,  2636,  2638,  2643,  2645,  2653,  2654,  2655,
     1091    2660,  2661,  2665,  2667,  2669,  2671,  2673,  2675,  2682,  2684,
     1092    2686,  2688,  2690,  2692,  2694,  2696,  2698,  2700,  2705,  2707,
     1093    2709,  2714,  2740,  2741,  2743,  2747,  2748,  2752,  2754,  2756,
     1094    2758,  2760,  2762,  2769,  2771,  2773,  2775,  2777,  2779,  2784,
     1095    2789,  2791,  2793,  2811,  2813,  2818,  2819
    10941096};
    10951097#endif
     
    11161118  "GE", "EQ", "NE", "ANDAND", "OROR", "ELLIPSIS", "MULTassign",
    11171119  "DIVassign", "MODassign", "PLUSassign", "MINUSassign", "LSassign",
    1118   "RSassign", "ANDassign", "ERassign", "ORassign", "ATassign", "THEN",
    1119   "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'!'",
    1120   "'*'", "'&'", "'+'", "'-'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'",
    1121   "'|'", "'?'", "'='", "';'", "$accept", "push", "pop", "constant",
     1120  "RSassign", "ANDassign", "ERassign", "ORassign", "ATassign", "REFassign",
     1121  "THEN", "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "':'",
     1122  "'*'", "'&'", "'+'", "'-'", "'!'", "'~'", "'/'", "'%'", "'<'", "'>'",
     1123  "'^'", "'|'", "'?'", "'='", "';'", "$accept", "push", "pop", "constant",
    11221124  "identifier", "no_01_identifier", "no_attr_identifier", "zero_one",
    11231125  "string_literal_list", "primary_expression", "postfix_expression",
    11241126  "argument_expression_list", "argument_expression", "field_list", "field",
    1125   "unary_expression", "unary_operator", "cast_expression",
    1126   "multiplicative_expression", "additive_expression", "shift_expression",
    1127   "relational_expression", "equality_expression", "AND_expression",
    1128   "exclusive_OR_expression", "inclusive_OR_expression",
     1127  "unary_expression", "ptrref_operator", "unary_operator",
     1128  "cast_expression", "multiplicative_expression", "additive_expression",
     1129  "shift_expression", "relational_expression", "equality_expression",
     1130  "AND_expression", "exclusive_OR_expression", "inclusive_OR_expression",
    11291131  "logical_AND_expression", "logical_OR_expression",
    11301132  "conditional_expression", "constant_expression", "assignment_expression",
     
    12231225     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
    12241226     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
    1225      355,   356,   357,   358,   359,   360,   361,   362,   363,    40,
    1226       41,    91,    93,    46,   123,   125,    44,    58,    33,    42,
    1227       38,    43,    45,   126,    47,    37,    60,    62,    94,   124,
    1228       63,    61,    59
     1227     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     1228      40,    41,    91,    93,    46,   123,   125,    44,    58,    42,
     1229      38,    43,    45,    33,   126,    47,    37,    60,    62,    94,
     1230     124,    63,    61,    59
    12291231};
    12301232# endif
     
    12331235static const yytype_uint16 yyr1[] =
    12341236{
    1235        0,   133,   134,   135,   136,   136,   136,   137,   137,   137,
    1236      138,   138,   139,   139,   140,   140,   141,   141,   142,   142,
    1237      142,   142,   143,   143,   143,   143,   143,   143,   143,   143,
    1238      143,   143,   143,   144,   144,   145,   145,   145,   145,   145,
    1239      146,   146,   147,   147,   147,   147,   147,   148,   148,   148,
    1240      148,   148,   148,   148,   148,   148,   148,   148,   148,   148,
    1241      148,   148,   148,   148,   148,   149,   149,   149,   149,   150,
    1242      150,   150,   151,   151,   151,   151,   152,   152,   152,   153,
    1243      153,   153,   154,   154,   154,   154,   154,   155,   155,   155,
    1244      156,   156,   157,   157,   158,   158,   159,   159,   160,   160,
    1245      161,   161,   161,   161,   162,   163,   163,   163,   163,   164,
    1246      164,   165,   165,   165,   165,   166,   166,   167,   167,   167,
    1247      167,   167,   167,   167,   167,   167,   167,   168,   168,   169,
    1248      169,   170,   170,   170,   170,   170,   170,   170,   170,   170,
    1249      171,   172,   172,   173,   173,   174,   174,   174,   174,   175,
    1250      175,   176,   177,   177,   177,   177,   177,   177,   178,   178,
    1251      178,   179,   179,   180,   180,   181,   181,   182,   183,   183,
    1252      184,   184,   185,   185,   186,   186,   186,   186,   187,   187,
    1253      188,   188,   189,   189,   189,   190,   190,   191,   191,   191,
    1254      191,   191,   191,   191,   191,   191,   191,   192,   192,   192,
    1255      193,   193,   193,   193,   193,   194,   194,   194,   194,   195,
    1256      196,   196,   196,   196,   196,   197,   197,   197,   197,   197,
    1257      198,   198,   199,   199,   200,   200,   201,   201,   202,   202,
    1258      202,   203,   203,   204,   204,   205,   205,   206,   206,   207,
    1259      207,   208,   208,   209,   209,   210,   210,   211,   211,   212,
    1260      212,   212,   212,   212,   213,   213,   213,   214,   214,   214,
    1261      215,   215,   215,   215,   215,   216,   216,   216,   217,   217,
    1262      218,   218,   218,   219,   219,   219,   219,   219,   220,   220,
    1263      221,   221,   221,   221,   222,   222,   223,   223,   223,   223,
    1264      224,   224,   224,   224,   225,   225,   226,   226,   227,   227,
    1265      228,   228,   228,   228,   228,   229,   228,   230,   230,   230,
    1266      231,   231,   232,   233,   233,   233,   233,   233,   233,   233,
    1267      233,   234,   234,   234,   234,   234,   234,   234,   234,   234,
    1268      234,   234,   234,   234,   235,   235,   235,   235,   235,   236,
    1269      236,   237,   237,   237,   237,   238,   238,   238,   238,   239,
    1270      239,   239,   239,   240,   240,   240,   241,   241,   241,   241,
    1271      242,   242,   242,   243,   243,   244,   244,   245,   244,   244,
    1272      244,   246,   246,   247,   247,   248,   248,   248,   248,   249,
    1273      249,   249,   249,   250,   250,   251,   251,   251,   251,   251,
    1274      252,   252,   253,   254,   255,   255,   256,   255,   257,   257,
    1275      258,   258,   259,   259,   260,   260,   260,   260,   260,   261,
    1276      261,   261,   261,   262,   262,   263,   263,   264,   264,   265,
    1277      265,   265,   265,   266,   266,   266,   266,   266,   267,   267,
    1278      267,   267,   267,   268,   268,   269,   269,   270,   270,   271,
    1279      271,   271,   272,   272,   272,   273,   273,   273,   274,   274,
    1280      274,   275,   275,   275,   275,   276,   276,   276,   277,   277,
    1281      278,   278,   278,   278,   278,   279,   279,   280,   280,   281,
    1282      281,   281,   281,   281,   281,   282,   282,   282,   282,   283,
    1283      283,   283,   284,   285,   285,   287,   286,   286,   288,   288,
    1284      288,   289,   289,   290,   290,   290,   291,   291,   291,   291,
    1285      292,   292,   292,   293,   293,   294,   294,   295,   296,   295,
    1286      297,   297,   298,   298,   299,   299,   299,   300,   300,   301,
    1287      301,   302,   302,   303,   303,   304,   304,   304,   305,   304,
    1288      304,   306,   306,   306,   307,   307,   307,   307,   307,   307,
    1289      307,   307,   307,   308,   308,   308,   309,   310,   310,   311,
    1290      311,   312,   312,   313,   314,   314,   315,   315,   315,   316,
    1291      316,   316,   316,   317,   317,   317,   317,   318,   318,   319,
    1292      319,   319,   320,   320,   320,   320,   321,   321,   322,   322,
    1293      322,   323,   323,   323,   324,   324,   324,   325,   325,   325,
    1294      326,   326,   326,   327,   327,   327,   328,   328,   328,   329,
    1295      329,   329,   330,   330,   330,   330,   331,   331,   332,   332,
    1296      332,   333,   333,   333,   333,   334,   334,   334,   335,   335,
    1297      335,   335,   336,   336,   336,   337,   337,   337,   337,   338,
    1298      338,   338,   339,   339,   339,   339,   340,   340,   341,   341,
    1299      341,   342,   342,   343,   343,   344,   344,   344,   345,   345,
    1300      345,   345,   345,   346,   346,   346,   346,   347,   347,   347,
    1301      348,   348,   348,   349,   349,   349,   349,   350,   350,   350,
    1302      351,   351,   351,   351,   351,   352,   352,   352,   352,   353,
    1303      353,   353,   354,   354,   354,   355,   355,   355,   355,   355,
    1304      355,   356,   356,   356,   357,   357,   357,   357,   357,   358,
    1305      358,   358,   358,   359,   359,   360,   360,   360,   361,   361,
    1306      362,   362,   362,   362,   362,   362,   363,   363,   363,   363,
    1307      363,   363,   363,   363,   363,   363,   364,   364,   364,   364,
    1308      365,   365,   365,   366,   366,   367,   367,   367,   367,   367,
    1309      367,   368,   368,   368,   368,   368,   368,   369,   370,   370,
    1310      370,   371,   371,   372,   372
     1237       0,   134,   135,   136,   137,   137,   137,   138,   138,   138,
     1238     139,   139,   140,   140,   141,   141,   142,   142,   143,   143,
     1239     143,   143,   144,   144,   144,   144,   144,   144,   144,   144,
     1240     144,   144,   144,   145,   145,   146,   146,   146,   146,   146,
     1241     147,   147,   148,   148,   148,   148,   148,   149,   149,   149,
     1242     149,   149,   149,   149,   149,   149,   149,   149,   149,   149,
     1243     149,   149,   149,   149,   150,   150,   151,   151,   151,   151,
     1244     152,   152,   152,   153,   153,   153,   153,   154,   154,   154,
     1245     155,   155,   155,   156,   156,   156,   156,   156,   157,   157,
     1246     157,   158,   158,   159,   159,   160,   160,   161,   161,   162,
     1247     162,   163,   163,   163,   163,   164,   165,   165,   165,   165,
     1248     165,   166,   166,   167,   167,   167,   167,   168,   168,   169,
     1249     169,   169,   169,   169,   169,   169,   169,   169,   169,   170,
     1250     170,   171,   171,   172,   172,   172,   172,   172,   172,   172,
     1251     172,   172,   173,   174,   174,   175,   175,   176,   176,   176,
     1252     176,   177,   177,   178,   179,   179,   179,   179,   179,   179,
     1253     180,   180,   180,   181,   181,   182,   182,   183,   183,   184,
     1254     185,   185,   186,   186,   187,   187,   188,   188,   188,   188,
     1255     189,   189,   190,   190,   191,   191,   191,   192,   192,   193,
     1256     193,   193,   193,   193,   193,   193,   193,   193,   193,   194,
     1257     194,   194,   195,   195,   195,   195,   195,   196,   196,   196,
     1258     196,   197,   198,   198,   198,   198,   198,   199,   199,   199,
     1259     199,   199,   200,   200,   201,   201,   202,   202,   203,   203,
     1260     204,   204,   204,   205,   205,   206,   206,   207,   207,   208,
     1261     208,   209,   209,   210,   210,   211,   211,   212,   212,   213,
     1262     213,   214,   214,   214,   214,   214,   215,   215,   215,   216,
     1263     216,   216,   217,   217,   217,   217,   217,   218,   218,   218,
     1264     219,   219,   220,   220,   220,   221,   221,   221,   221,   221,
     1265     222,   222,   223,   223,   223,   223,   224,   224,   225,   225,
     1266     225,   225,   226,   226,   226,   226,   227,   227,   228,   228,
     1267     229,   229,   230,   230,   230,   230,   230,   231,   230,   232,
     1268     232,   232,   233,   233,   234,   235,   235,   235,   235,   235,
     1269     235,   235,   235,   236,   236,   236,   236,   236,   236,   236,
     1270     236,   236,   236,   236,   236,   236,   237,   237,   237,   237,
     1271     237,   238,   238,   239,   239,   239,   239,   240,   240,   240,
     1272     240,   241,   241,   241,   241,   242,   242,   242,   243,   243,
     1273     243,   243,   244,   244,   244,   245,   245,   246,   246,   247,
     1274     246,   246,   246,   248,   248,   249,   249,   250,   250,   250,
     1275     250,   251,   251,   251,   251,   252,   252,   253,   253,   253,
     1276     253,   253,   254,   254,   255,   256,   257,   257,   258,   257,
     1277     259,   259,   260,   260,   261,   261,   262,   262,   262,   262,
     1278     262,   263,   263,   263,   263,   264,   264,   265,   265,   266,
     1279     266,   267,   267,   267,   267,   268,   268,   268,   268,   268,
     1280     269,   269,   269,   269,   269,   270,   270,   271,   271,   272,
     1281     272,   273,   273,   273,   274,   274,   274,   275,   275,   275,
     1282     276,   276,   276,   277,   277,   277,   277,   278,   278,   278,
     1283     279,   279,   280,   280,   280,   280,   280,   281,   281,   282,
     1284     282,   283,   283,   283,   283,   283,   283,   284,   284,   284,
     1285     284,   285,   285,   285,   286,   287,   287,   289,   288,   288,
     1286     290,   290,   290,   291,   291,   292,   292,   292,   293,   293,
     1287     293,   293,   294,   294,   294,   295,   295,   296,   296,   297,
     1288     298,   297,   299,   299,   300,   300,   301,   301,   301,   302,
     1289     302,   303,   303,   304,   304,   305,   305,   306,   306,   306,
     1290     307,   306,   306,   308,   308,   308,   309,   309,   309,   309,
     1291     309,   309,   309,   309,   309,   310,   310,   310,   311,   312,
     1292     312,   313,   313,   314,   314,   315,   316,   316,   317,   317,
     1293     317,   318,   318,   318,   318,   319,   319,   319,   319,   320,
     1294     320,   321,   321,   321,   322,   322,   322,   322,   323,   323,
     1295     324,   324,   324,   325,   325,   325,   326,   326,   326,   327,
     1296     327,   327,   328,   328,   328,   329,   329,   329,   330,   330,
     1297     330,   331,   331,   331,   332,   332,   332,   332,   333,   333,
     1298     334,   334,   334,   335,   335,   335,   335,   336,   336,   336,
     1299     337,   337,   337,   337,   338,   338,   338,   339,   339,   339,
     1300     339,   340,   340,   340,   341,   341,   341,   341,   342,   342,
     1301     343,   343,   343,   344,   344,   345,   345,   346,   346,   346,
     1302     347,   347,   347,   347,   347,   348,   348,   348,   348,   349,
     1303     349,   349,   350,   350,   350,   351,   351,   351,   351,   352,
     1304     352,   352,   353,   353,   353,   353,   353,   354,   354,   354,
     1305     354,   355,   355,   355,   356,   356,   356,   357,   357,   357,
     1306     357,   357,   357,   358,   358,   358,   359,   359,   359,   359,
     1307     359,   360,   360,   360,   360,   361,   361,   362,   362,   362,
     1308     363,   363,   364,   364,   364,   364,   364,   364,   365,   365,
     1309     365,   365,   365,   365,   365,   365,   365,   365,   366,   366,
     1310     366,   366,   367,   367,   367,   368,   368,   369,   369,   369,
     1311     369,   369,   369,   370,   370,   370,   370,   370,   370,   371,
     1312     372,   372,   372,   373,   373,   374,   374
    13111313};
    13121314
     
    13191321       2,     7,     4,     1,     3,     0,     1,     3,     7,     9,
    13201322       1,     3,     1,     3,     7,     3,     7,     1,     1,     1,
    1321        2,     2,     2,     2,     2,     2,     2,     4,     6,     1,
    1322        4,     4,     2,     4,     2,     1,     1,     1,     1,     1,
    1323        4,     4,     1,     3,     3,     3,     1,     3,     3,     1,
    1324        3,     3,     1,     3,     3,     3,     3,     1,     3,     3,
    1325        1,     3,     1,     3,     1,     3,     1,     3,     1,     3,
    1326        1,     5,     4,     5,     1,     1,     3,     3,     2,     0,
    1327        1,     2,     5,     6,     7,     1,     3,     1,     1,     1,
    1328        1,     1,     1,     1,     1,     1,     1,     1,     3,     0,
    1329        1,     1,     1,     1,     1,     1,     1,     1,     1,     6,
    1330        4,     2,     7,     1,     3,     1,     2,     1,     2,     1,
    1331        2,     2,     5,     7,     5,     9,     5,     9,     1,     3,
    1332        1,     1,     3,     3,     2,     1,     2,     2,     0,     1,
    1333        2,     3,     0,     1,     2,     3,     3,     4,     0,     1,
    1334        1,     2,     5,     7,     6,     6,     4,     3,     4,     2,
    1335        3,     2,     3,     3,     3,     3,     5,     3,     3,     4,
    1336        1,     5,     6,     5,     6,     9,    10,     9,    10,     2,
    1337        1,     2,     2,     2,     1,     6,     8,    10,    12,    14,
    1338        0,     1,     0,     1,     1,     3,     4,     7,     0,     1,
    1339        3,     1,     3,     1,     1,     1,     3,     1,     1,     1,
    1340        3,     0,     1,     3,     4,     1,     3,     1,     1,     3,
    1341        3,     3,     3,     3,     2,     3,     6,     3,     3,     4,
    1342        1,     2,     2,     3,     5,     8,     7,     7,     5,     9,
    1343        2,     2,     5,     3,     5,     4,     3,     4,     4,     7,
    1344        3,     3,     3,     3,     4,     6,     1,     1,     1,     1,
    1345        1,     1,     1,     1,     0,     1,     1,     2,     1,     1,
    1346        1,     1,     1,     1,     1,     0,     5,     1,     2,     3,
    1347        1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
     1323       2,     2,     2,     2,     2,     2,     4,     6,     1,     4,
     1324       4,     2,     4,     2,     1,     1,     1,     1,     1,     1,
     1325       1,     4,     4,     1,     3,     3,     3,     1,     3,     3,
     1326       1,     3,     3,     1,     3,     3,     3,     3,     1,     3,
     1327       3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
     1328       3,     1,     5,     4,     5,     1,     1,     3,     3,     3,
     1329       2,     0,     1,     2,     5,     6,     7,     1,     3,     1,
    13481330       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1349        1,     1,     1,     1,     1,     2,     2,     3,     3,     1,
    1350        3,     1,     2,     2,     2,     4,     4,     4,     4,     1,
    1351        2,     2,     3,     1,     2,     2,     1,     2,     2,     3,
    1352        1,     2,     2,     1,     1,     4,     2,     0,     6,     7,
    1353        2,     2,     2,     1,     2,     2,     3,     2,     3,     1,
    1354        2,     3,     2,     2,     4,     0,     1,     2,     2,     1,
    1355        0,     1,     2,     2,     5,     2,     0,     7,     2,     4,
    1356        0,     2,     0,     1,     1,     1,     5,     5,     5,     1,
    1357        5,     5,     9,     1,     5,     0,     1,     1,     5,     1,
    1358        1,     5,     5,     1,     3,     3,     4,     1,     1,     1,
    1359        1,     2,     1,     3,     3,     1,     2,     1,     3,     1,
     1331       3,     0,     1,     1,     1,     1,     1,     1,     1,     1,
     1332       1,     6,     4,     2,     7,     1,     3,     1,     2,     1,
     1333       2,     1,     2,     2,     5,     7,     5,     9,     5,     9,
     1334       1,     3,     1,     1,     3,     3,     2,     1,     2,     2,
     1335       0,     1,     2,     3,     0,     1,     2,     3,     3,     4,
     1336       0,     1,     1,     2,     5,     7,     6,     6,     4,     3,
     1337       4,     2,     3,     2,     3,     3,     3,     3,     5,     3,
     1338       3,     4,     1,     5,     6,     5,     6,     9,    10,     9,
     1339      10,     2,     1,     2,     2,     2,     1,     6,     8,    10,
     1340      12,    14,     0,     1,     0,     1,     1,     3,     4,     7,
     1341       0,     1,     3,     1,     3,     1,     1,     1,     3,     1,
     1342       1,     1,     3,     0,     1,     3,     4,     1,     3,     1,
     1343       1,     3,     3,     3,     3,     3,     2,     3,     6,     3,
     1344       3,     4,     1,     2,     2,     3,     5,     8,     7,     7,
     1345       5,     9,     2,     2,     5,     3,     5,     4,     3,     4,
     1346       4,     7,     3,     3,     3,     3,     4,     6,     1,     1,
     1347       1,     1,     1,     1,     1,     1,     0,     1,     1,     2,
     1348       1,     1,     1,     1,     1,     1,     1,     0,     5,     1,
     1349       2,     3,     1,     2,     1,     1,     1,     1,     1,     1,
    13601350       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1361        2,     1,     1,     1,     2,     0,     2,     2,     1,     4,
    1362        0,     1,     2,     3,     4,     2,     2,     1,     2,     1,
    1363        2,     5,     5,     7,     6,     1,     2,     2,     3,     1,
    1364        2,     2,     4,     2,     4,     0,     4,     2,     1,     1,
    1365        1,     0,     2,     5,     5,    13,     1,     1,     3,     3,
    1366        2,     3,     3,     2,     4,     1,     6,     9,     0,    11,
    1367        1,     3,     3,     3,     1,     1,     5,     2,     5,     0,
    1368        1,     1,     3,     0,     1,     1,     1,     1,     0,     6,
    1369        2,     1,     2,     4,     2,     3,     3,     3,     4,     5,
    1370        5,     5,     6,     1,     1,     1,     3,     0,     5,     0,
    1371        1,     1,     2,     6,     1,     3,     0,     1,     4,     1,
    1372        1,     1,     1,     2,     1,     2,     2,     1,     3,     2,
    1373        3,     3,     2,     4,     4,     3,     8,     3,     2,     1,
    1374        2,     6,     8,     3,     2,     3,     3,     4,     4,     3,
    1375        1,     1,     1,     4,     6,     3,     2,     3,     3,     4,
    1376        4,     3,     2,     1,     2,     2,     1,     3,     2,     3,
    1377        3,     2,     4,     4,     3,     6,     8,     3,     2,     1,
    1378        2,     2,     2,     3,     3,     2,     4,     4,     3,     6,
    1379        8,     3,     2,     1,     2,     2,     1,     1,     2,     3,
    1380        3,     2,     4,     6,     8,     1,     2,     2,     1,     2,
    1381        2,     3,     3,     1,     4,     4,     3,     5,     8,     3,
    1382        2,     3,     1,     5,     5,     6,     6,     1,     2,     2,
     1351       1,     1,     1,     1,     1,     1,     1,     2,     2,     3,
     1352       3,     1,     3,     1,     2,     2,     2,     4,     4,     4,
     1353       4,     1,     2,     2,     3,     1,     2,     2,     1,     2,
     1354       2,     3,     1,     2,     2,     1,     1,     4,     2,     0,
     1355       6,     7,     2,     2,     2,     1,     2,     2,     3,     2,
     1356       3,     1,     2,     3,     2,     2,     4,     0,     1,     2,
     1357       2,     1,     0,     1,     2,     2,     5,     2,     0,     7,
     1358       2,     4,     0,     2,     0,     1,     1,     1,     5,     5,
     1359       5,     1,     5,     5,     9,     1,     5,     0,     1,     1,
     1360       5,     1,     1,     5,     5,     1,     3,     3,     4,     1,
     1361       1,     1,     1,     2,     1,     3,     3,     1,     2,     1,
     1362       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1363       1,     1,     2,     1,     1,     1,     2,     0,     2,     2,
     1364       1,     4,     0,     1,     2,     3,     4,     2,     2,     1,
     1365       2,     1,     2,     5,     5,     7,     6,     1,     2,     2,
     1366       3,     1,     2,     2,     4,     2,     4,     0,     4,     2,
     1367       1,     1,     1,     0,     2,     5,     5,    13,     1,     1,
     1368       3,     3,     2,     3,     3,     2,     4,     1,     6,     9,
     1369       0,    11,     1,     3,     3,     3,     1,     1,     5,     2,
     1370       5,     0,     1,     1,     3,     0,     1,     1,     1,     1,
     1371       0,     6,     2,     1,     2,     4,     2,     3,     3,     3,
     1372       4,     5,     5,     5,     6,     1,     1,     1,     3,     0,
     1373       5,     0,     1,     1,     2,     6,     1,     3,     0,     1,
     1374       4,     1,     1,     1,     1,     2,     1,     2,     2,     1,
     1375       3,     2,     3,     3,     2,     4,     4,     3,     8,     3,
     1376       2,     1,     2,     6,     8,     3,     2,     3,     3,     4,
     1377       4,     3,     1,     1,     1,     4,     6,     3,     2,     3,
     1378       3,     4,     4,     3,     2,     1,     2,     2,     1,     3,
     1379       2,     3,     3,     2,     4,     4,     3,     6,     8,     3,
     1380       2,     1,     2,     2,     2,     3,     3,     2,     4,     4,
     1381       3,     6,     8,     3,     2,     1,     2,     2,     1,     1,
     1382       2,     3,     3,     2,     4,     6,     8,     1,     2,     2,
    13831383       1,     2,     2,     3,     3,     1,     4,     4,     3,     5,
    1384        8,     3,     1,     2,     1,     2,     6,     5,     6,     7,
    1385        7,     1,     2,     2,     1,     2,     2,     3,     3,     1,
    1386        4,     4,     3,     8,     3,     1,     1,     2,     1,     1,
    1387        2,     3,     2,     3,     2,     3,     3,     2,     4,     3,
    1388        2,     3,     2,     4,     3,     2,     6,     6,     6,     7,
    1389        1,     2,     1,     1,     1,     2,     3,     2,     3,     2,
    1390        3,     3,     4,     2,     3,     4,     2,     5,     5,     6,
    1391        6,     0,     1,     0,     2
     1384       8,     3,     2,     3,     1,     5,     5,     6,     6,     1,
     1385       2,     2,     1,     2,     2,     3,     3,     1,     4,     4,
     1386       3,     5,     8,     3,     1,     2,     1,     2,     6,     5,
     1387       6,     7,     7,     1,     2,     2,     1,     2,     2,     3,
     1388       3,     1,     4,     4,     3,     8,     3,     1,     1,     2,
     1389       1,     1,     2,     3,     2,     3,     2,     3,     3,     2,
     1390       4,     3,     2,     3,     2,     4,     3,     2,     6,     6,
     1391       6,     7,     1,     2,     1,     1,     1,     2,     3,     2,
     1392       3,     2,     3,     3,     4,     2,     3,     4,     2,     5,
     1393       5,     6,     6,     0,     1,     0,     2
    13921394};
    13931395
     
    13971399static const yytype_uint16 yydefact[] =
    13981400{
    1399      294,   294,   315,   313,   316,   314,   317,   318,   300,   302,
    1400      301,     0,   303,   329,   321,   326,   324,   325,   323,   322,
    1401      327,   328,   333,   330,   331,   332,   549,   549,   549,     0,
    1402        0,     0,   294,   220,   304,   319,   320,     7,   360,     0,
    1403        8,    14,    15,     0,     2,   294,   567,     9,   527,   525,
    1404      247,     3,   455,     3,   260,     0,     3,     3,     3,   248,
    1405        3,     0,     0,     0,   295,   296,   298,   294,   307,   310,
    1406      312,   341,   286,   334,   339,   287,   349,   288,   356,   353,
    1407      363,     0,     0,   364,   289,   475,   479,     3,     3,     0,
    1408        2,   521,   526,   531,   299,     0,     0,   549,   579,   549,
    1409        2,   590,   591,   592,   294,     0,   733,   734,     0,    12,
    1410      294,     0,    13,   270,   271,     0,   295,   290,   291,   292,
    1411      293,   528,   305,   393,   550,   551,   371,   372,    12,   446,
    1412      447,    11,   442,   445,     0,   505,   500,   491,   446,   447,
    1413        0,     0,   530,   221,     0,   294,     0,     0,     0,     0,
    1414        0,     0,     0,     0,   294,   294,     2,     0,   735,   295,
    1415      584,   596,   739,   732,   730,   737,     0,     0,     0,   254,
    1416        2,     0,   534,   440,   441,   439,     0,     0,     0,     0,
    1417      549,     0,   636,   637,     0,     0,   547,   543,   549,   564,
    1418      549,   549,   544,     2,   545,   549,   603,   549,   549,   606,
    1419        0,     0,     0,   294,   294,   313,   361,     2,   294,   261,
    1420      297,   308,   342,   354,   480,     0,     2,     0,   455,   262,
    1421      295,   335,   350,   357,   476,     0,     2,     0,   311,   336,
    1422      343,   344,     0,   351,   355,   358,   362,   447,   294,   294,
    1423      366,   370,     0,   395,   477,   481,     0,     0,     0,     1,
    1424      294,     2,   532,   578,   580,   294,     2,   743,   295,   746,
    1425      547,   547,   295,     0,     0,     0,   273,   549,   544,     2,
    1426      294,     0,     0,   294,   552,     2,   503,     2,   556,     0,
    1427        0,     0,     0,     0,     0,    18,    59,     4,     5,     6,
    1428       16,     0,     0,     0,   294,     2,     0,   294,    65,    66,
    1429       67,    68,    48,    19,    49,    22,    47,    69,     0,    72,
    1430       76,    79,    82,    87,    90,    92,    94,    96,    98,   100,
    1431      105,   497,   753,   453,   496,     0,   451,   452,     0,   568,
    1432      583,   586,   589,   595,   598,   601,   360,     0,     2,   741,
    1433        0,   294,   744,     2,   294,     3,   427,     0,   435,   295,
    1434      294,   307,   334,   287,   349,   356,     3,     3,   409,   413,
    1435      423,   428,   475,   294,   429,   708,   709,   294,   430,   432,
    1436      294,     2,   585,   597,   731,     2,     2,   249,     2,   460,
    1437        0,   458,   457,   456,   141,     2,     2,   251,     2,     2,
    1438      250,     2,   281,     2,   282,     0,   280,     0,     0,     0,
    1439        0,     0,     0,     0,     0,     0,   569,   608,     0,   455,
    1440        2,   563,   572,   662,   565,   566,   535,   294,     2,   602,
    1441      611,   604,   605,     0,   276,   294,   294,   340,   295,     0,
    1442      295,     0,   294,   736,   740,   738,   536,   294,   547,   255,
    1443      263,   309,     0,     2,   537,   294,   501,   337,   338,   283,
    1444      352,   359,     0,   294,     2,   385,   294,   373,     0,     0,
    1445      379,   730,     0,   751,   400,     0,   478,   502,   252,   253,
    1446      522,   294,   437,     0,   294,   237,     0,     2,   239,     0,
    1447      295,     0,   257,     2,   258,   278,     0,     0,     2,   294,
    1448      547,   294,   488,   490,   489,     0,     0,   753,     0,   294,
    1449        0,   294,   492,   294,   562,   560,   561,   559,     0,   554,
    1450      557,     0,     0,   294,    56,   294,    69,    52,   294,    62,
    1451      294,   294,    50,    51,    64,     2,   127,     0,     0,   449,
    1452        0,   448,   111,   294,    54,    55,    17,     0,    29,    30,
    1453       35,     2,     0,    35,   117,   118,   119,   120,   121,   122,
    1454      123,   124,   125,   126,     0,     0,    53,     0,     0,     0,
     1401     296,   296,   317,   315,   318,   316,   319,   320,   302,   304,
     1402     303,     0,   305,   331,   323,   328,   326,   327,   325,   324,
     1403     329,   330,   335,   332,   333,   334,   551,   551,   551,     0,
     1404       0,     0,   296,   222,   306,   321,   322,     7,   362,     0,
     1405       8,    14,    15,     0,     2,    64,    65,   569,     9,   296,
     1406     529,   527,   249,     3,   457,     3,   262,     0,     3,     3,
     1407       3,   250,     3,     0,     0,     0,   297,   298,   300,   296,
     1408     309,   312,   314,   343,   288,   336,   341,   289,   351,   290,
     1409     358,   355,   365,     0,     0,   366,   291,   477,   481,     3,
     1410       3,     0,     2,   523,   528,   533,   301,     0,     0,   551,
     1411     581,   551,     2,   592,   593,   594,   296,     0,   735,   736,
     1412       0,    12,     0,    13,   296,   272,   273,     0,   297,   292,
     1413     293,   294,   295,   530,   307,   395,   552,   553,   373,   374,
     1414      12,   448,   449,    11,   444,   447,     0,   507,   502,   493,
     1415     448,   449,     0,     0,   532,   223,     0,   296,     0,     0,
     1416       0,     0,     0,     0,     0,     0,   296,   296,     2,     0,
     1417     737,   297,   586,   598,   741,   734,   732,   739,     0,     0,
     1418       0,   256,     2,     0,   536,   442,   443,   441,     0,     0,
     1419       0,     0,   551,     0,   638,   639,     0,     0,   549,   545,
     1420     551,   566,   551,   551,   546,     2,   547,   551,   605,   551,
     1421     551,   608,     0,     0,     0,   296,   296,   315,   363,     2,
     1422     296,   263,   299,   310,   344,   356,   482,     0,     2,     0,
     1423     457,   264,   297,   337,   352,   359,   478,     0,     2,     0,
     1424     313,   338,   345,   346,     0,   353,   357,   360,   364,   449,
     1425     296,   296,   368,   372,     0,   397,   479,   483,     0,     0,
     1426       0,     1,   296,     2,   534,   580,   582,   296,     2,   745,
     1427     297,   748,   549,   549,     0,   297,     0,     0,   275,   551,
     1428     546,     2,   296,     0,     0,   296,   554,     2,   505,     2,
     1429     558,     0,     0,     0,     0,     0,     0,    18,    58,     4,
     1430       5,     6,    16,     0,     0,     0,   296,     2,    66,    67,
     1431      68,    69,    48,    19,    49,    22,    47,    70,   296,     0,
     1432      73,    77,    80,    83,    88,    91,    93,    95,    97,    99,
     1433     101,   106,   499,   755,   455,   498,     0,   453,   454,     0,
     1434     570,   585,   588,   591,   597,   600,   603,   362,     0,     2,
     1435     743,     0,   296,   746,     2,    64,   296,     3,   429,     0,
     1436     437,   297,   296,   309,   336,   289,   351,   358,     3,     3,
     1437     411,   415,   425,   430,   477,   296,   431,   710,   711,   296,
     1438     432,   434,   296,     2,   587,   599,   733,     2,     2,   251,
     1439       2,   462,     0,   460,   459,   458,   143,     2,     2,   253,
     1440       2,     2,   252,     2,   283,     2,   284,     0,   282,     0,
     1441       0,     0,     0,     0,     0,     0,     0,     0,   571,   610,
     1442       0,   457,     2,   565,   574,   664,   567,   568,   537,   296,
     1443       2,   604,   613,   606,   607,     0,   278,   296,   296,   342,
     1444     297,     0,   297,     0,   296,   738,   742,   740,   538,   296,
     1445     549,   257,   265,   311,     0,     2,   539,   296,   503,   339,
     1446     340,   285,   354,   361,     0,   296,     2,   387,   296,   375,
     1447       0,     0,   381,   732,     0,   753,   402,     0,   480,   504,
     1448     254,   255,   524,   296,   439,     0,   296,   239,     0,     2,
     1449     241,     0,   297,     0,   259,     2,   260,   280,     0,     0,
     1450       2,   296,   549,   296,   490,   492,   491,     0,     0,   755,
     1451       0,   296,     0,   296,   494,   296,   564,   562,   563,   561,
     1452       0,   556,   559,     0,     0,   296,    55,   296,    70,    50,
     1453     296,    61,   296,   296,    53,    54,    63,     2,   129,     0,
     1454       0,   451,     0,   450,   113,   296,    17,     0,    29,    30,
     1455      35,     2,     0,    35,   119,   120,   121,   122,   123,   124,
     1456     125,   126,   127,   128,     0,     0,     0,    51,    52,     0,
    14551457       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1456        0,     0,     0,     0,     0,     0,     0,   108,     2,   648,
    1457      454,   645,   549,   549,   653,   482,   294,     2,   587,   588,
    1458        0,   599,   600,     0,     2,   742,   745,   111,   294,     2,
    1459      294,     0,   710,   295,   714,   705,   706,   712,     0,     2,
    1460        2,   670,   549,   753,   619,   549,   549,   753,   549,   633,
    1461      549,   549,   684,   436,   667,   549,   549,   675,   682,   294,
    1462      431,   295,     0,     0,   294,   720,   295,   725,   753,   717,
    1463      294,   722,   753,   294,   294,   294,     0,   111,     0,    18,
    1464        5,     2,     0,    19,     0,   461,   751,     0,     0,   467,
    1465      241,     0,   294,     0,     0,     0,   547,   571,   575,   577,
    1466      607,   610,   614,   617,   570,   609,     0,   284,   660,     0,
    1467      294,   277,     0,     0,     0,     0,   275,     2,     0,   259,
    1468      538,   294,     0,     0,     0,     0,   294,   294,     0,     0,
    1469      694,   383,   386,   390,   549,   390,   699,   389,   691,   549,
    1470      549,   365,   374,   382,   375,   549,   377,   380,   294,   752,
    1471        0,     0,   398,     0,   295,     3,   416,     3,   420,   419,
    1472      593,     0,   533,   294,     3,     3,   294,   435,   295,     3,
    1473      429,   430,     2,     0,     0,     0,   487,   306,   294,   483,
    1474      485,     3,     2,     2,     0,   504,     3,     0,   556,   129,
    1475        0,     0,   222,     0,     0,     0,     2,     0,     0,    36,
    1476        0,     0,   111,   294,    20,     0,    21,     0,   694,   450,
    1477        0,   109,     3,     2,    27,     2,     0,    33,     0,     2,
    1478       25,     0,   106,   107,    73,    74,    75,    77,    78,    80,
    1479       81,    85,    86,    83,    84,    88,    89,    91,    93,    95,
    1480       97,    99,     0,     0,   754,   294,     0,     0,     0,   649,
    1481      650,   646,   647,   499,   498,   294,     0,     3,   294,   716,
    1482      294,   721,   295,   294,   294,   294,   664,   707,   663,     2,
    1483      294,     0,     0,     0,     0,     0,     0,     0,     0,   685,
    1484        0,   671,   622,   638,   672,     2,   618,   625,   433,   620,
    1485      621,   434,     2,   632,   641,   634,   635,   668,   669,   683,
    1486      711,   715,   713,   753,   268,     2,   747,     2,   424,   719,
    1487      724,   425,     0,   403,     3,     3,     3,     3,   455,     3,
    1488        0,     2,   470,   466,   752,     0,   462,   469,     2,   465,
    1489      468,     0,   294,   242,   264,     3,   272,   274,     0,   455,
    1490        2,   573,   574,     2,   612,   613,     0,   661,   539,     3,
    1491      346,   345,   348,   347,   294,   540,     0,   541,   294,   376,
    1492      378,     2,     0,     0,     0,     0,   104,   392,   695,   696,
    1493      387,   391,   388,   692,   693,   381,   385,   294,   400,   394,
    1494      401,   751,     0,     0,   438,   240,     0,     0,     3,     2,
    1495      670,   431,     0,   529,     0,   753,   491,     0,   294,   294,
    1496      294,     0,   553,   555,   130,     0,     0,   215,     0,     0,
    1497        0,   223,   224,    57,     0,    63,   294,     0,    61,    60,
    1498        0,   128,   695,   460,    70,    71,   110,   115,     3,   109,
    1499        0,     0,     0,    24,    35,     3,     0,    32,   102,     0,
    1500        3,   652,   656,   659,   651,     3,   594,     3,   718,   723,
    1501        2,   294,     3,     3,   295,     0,     3,   624,   628,   631,
    1502      640,   674,   678,   681,   294,     3,   623,   639,   673,   294,
    1503      294,   426,   294,   294,   748,     0,     0,     0,     0,   256,
    1504        0,   104,     0,     3,     3,     0,   463,     0,   459,     0,
    1505        0,   245,   294,     0,     0,   129,     0,     0,     0,     0,
    1506        0,   129,     0,     0,   109,   109,     2,     0,     0,     0,
    1507        3,   131,   132,     2,   143,   133,   134,   135,   136,   137,
    1508      138,   145,   147,     0,     0,     0,   285,   294,   294,   549,
    1509        0,   542,   294,   111,   698,   702,   704,   697,   384,   368,
    1510      399,     0,   581,     2,   666,   665,     0,   671,     2,   484,
    1511      486,   506,     3,   514,   515,     0,     2,   510,     3,     3,
    1512        0,     0,   558,   222,     0,     0,     0,   222,     0,     0,
    1513        3,    37,   751,   109,     0,     3,   663,    42,     3,    40,
    1514        3,    34,     0,     3,   101,   103,     0,     2,   654,   655,
    1515        0,     0,   294,     0,     0,     0,     3,   640,     0,     2,
    1516      626,   627,     2,   642,     2,   676,   677,     0,     0,     3,
    1517        0,     3,     3,     3,     3,   411,   410,   414,     2,     2,
    1518      750,   749,   112,     0,     0,     0,     0,     3,   464,     3,
    1519        0,   243,   146,     3,   295,   294,     0,     0,     0,     0,
    1520        2,   191,     0,   189,     0,     0,     0,     0,     0,     0,
    1521        0,     0,   111,     0,   549,   151,   148,   294,     0,     0,
    1522      267,   279,     3,     3,   548,   615,   369,     2,   700,   701,
    1523      397,   294,   266,   294,     0,   517,   494,   294,     0,     0,
    1524      493,   508,     0,     0,     0,   216,     0,   225,    58,   109,
    1525        0,     0,   116,   113,     0,     0,     0,     0,     0,     0,
    1526       23,     0,   657,   294,   582,   265,   726,   727,   728,     0,
    1527      679,   294,   294,   294,     3,     3,     0,   687,     0,     0,
    1528        0,     0,   294,   294,     3,   546,   471,   472,     0,     0,
    1529      246,   295,     0,     0,     0,     0,   294,   192,   190,     0,
    1530      187,   193,     0,     0,     0,     0,   197,   200,   198,   194,
    1531        0,   195,    35,   129,   144,   142,   244,     0,     0,   294,
    1532      418,   422,   421,     0,   511,     2,   512,     2,   513,   507,
    1533      294,   228,     0,   226,     0,   228,     3,   663,    31,   114,
    1534        2,    45,     2,    43,    41,    28,   112,    26,     3,   729,
    1535        3,     3,     3,     0,     0,   686,   688,   629,   643,   269,
    1536        2,   408,     3,   407,     0,   474,   471,   129,     0,     0,
    1537      129,     3,     0,   129,   188,     0,     2,     2,   209,   199,
    1538        0,     0,     0,     0,   140,   576,   616,     3,     2,     0,
    1539        0,     2,   229,     0,     0,   217,     0,     0,     0,     0,
    1540        0,     0,     0,     0,     0,   689,   690,   294,     0,   473,
    1541      152,     0,     0,     2,   165,   129,   154,     0,   182,     0,
    1542      129,     0,     2,   156,     0,     2,     0,     2,     2,     2,
    1543      196,    32,     0,   294,   516,   518,   509,     0,     0,     0,
    1544        0,   114,    38,     3,     3,   658,   630,   644,   680,   412,
    1545      129,   158,   161,     0,   160,   164,     3,   167,   166,     0,
    1546      129,   184,   129,     3,     0,   294,     0,   294,     0,     2,
    1547        0,     2,   139,   703,     2,   230,   231,     0,   227,   218,
    1548        0,     0,     0,   153,     0,     0,   163,   233,   168,     2,
    1549      235,   183,     0,   186,   172,   201,     3,   210,   214,   203,
    1550        3,     0,   294,     0,   294,     0,     0,     0,    39,    46,
    1551       44,   159,   162,   129,     0,   169,   294,   129,   129,     0,
    1552      173,     0,     0,   694,   211,   212,   213,     0,   202,     3,
    1553      204,     3,   294,   219,   232,   149,   170,   155,   129,   236,
    1554      185,   180,   178,   174,   157,   129,     0,   695,     0,     0,
    1555        0,     0,   150,   171,   181,   175,   179,   178,   176,     3,
    1556        3,     0,     0,   495,   177,   205,   207,     3,     3,   206,
    1557      208
     1458       0,     0,     0,     0,     0,     0,     0,     0,     0,   110,
     1459       2,   650,   456,   647,   551,   551,   655,   484,   296,     2,
     1460     589,   590,     0,   601,   602,     0,     2,   744,   747,   113,
     1461     296,     0,     2,   712,   297,   716,   707,   708,   714,     0,
     1462       2,     2,   672,   551,   755,   621,   551,   551,   755,   551,
     1463     635,   551,   551,   686,   438,   669,   551,   551,   677,   684,
     1464     296,   433,   297,     0,     0,   296,   722,   297,   727,   755,
     1465     719,   296,   724,   755,   296,   296,   296,     0,   113,     0,
     1466      18,     5,     2,     0,    19,     0,   463,   753,     0,     0,
     1467     469,   243,     0,   296,     0,     0,     0,   549,   573,   577,
     1468     579,   609,   612,   616,   619,   572,   611,     0,   286,   662,
     1469       0,   296,   279,     0,     0,     0,     0,   277,     2,     0,
     1470     261,   540,   296,     0,     0,     0,     0,   296,   296,     0,
     1471       0,   696,   385,   388,   392,   551,   392,   701,   391,   693,
     1472     551,   551,   367,   376,   384,   377,   551,   379,   382,   296,
     1473     754,     0,     0,   400,     0,   297,     3,   418,     3,   422,
     1474     421,   595,     0,   535,   296,    64,     3,   296,   437,   297,
     1475       3,   431,   432,     2,     0,     0,     0,   489,   308,   296,
     1476     485,   487,     3,     2,     2,     0,   506,     3,     0,   558,
     1477     131,     0,     0,   224,     0,     0,     0,     2,     0,     0,
     1478      36,     0,     0,   113,   296,    20,     0,    21,     0,   696,
     1479     452,     0,   111,     3,     2,    27,     2,     0,    33,     0,
     1480       2,    25,     0,   108,   107,   109,    74,    75,    76,    78,
     1481      79,    81,    82,    86,    87,    84,    85,    89,    90,    92,
     1482      94,    96,    98,   100,     0,     0,   756,   296,     0,     0,
     1483       0,   651,   652,   648,   649,   501,   500,   296,     0,   296,
     1484     718,   296,   723,   297,   296,   666,   296,   296,   709,   665,
     1485       2,   296,     0,     0,     0,     0,     0,     0,     0,     0,
     1486     687,     0,   673,   624,   640,   674,     2,   620,   627,   435,
     1487     622,   623,   436,     2,   634,   643,   636,   637,   670,   671,
     1488     685,   713,   717,   715,   755,   270,     2,   749,     2,   426,
     1489     721,   726,   427,     0,   405,     3,     3,     3,     3,   457,
     1490       3,     0,     2,   472,   468,   754,     0,   464,   471,     2,
     1491     467,   470,     0,   296,   244,   266,     3,   274,   276,     0,
     1492     457,     2,   575,   576,     2,   614,   615,     0,   663,   541,
     1493       3,   348,   347,   350,   349,   296,   542,     0,   543,   296,
     1494     378,   380,     2,     0,     0,     0,     0,   105,   394,   697,
     1495     698,   389,   393,   390,   694,   695,   383,   387,   296,   402,
     1496     396,   403,   753,     0,     0,   440,   242,     0,     0,     3,
     1497       2,   672,   433,     0,   531,     0,   755,   493,     0,   296,
     1498     296,   296,     0,   555,   557,   132,     0,     0,   217,     0,
     1499       0,     0,   225,   226,    56,     0,    62,   296,     0,    60,
     1500      59,     0,   130,   697,   462,    71,    72,   112,   117,     3,
     1501     111,     0,     0,     0,    24,    35,     3,     0,    32,   103,
     1502       0,     3,   654,   658,   661,   653,     3,   596,     3,   720,
     1503     725,     2,    64,   296,     3,     3,   297,     0,     3,   626,
     1504     630,   633,   642,   676,   680,   683,   296,     3,   625,   641,
     1505     675,   296,   296,   428,   296,   296,   750,     0,     0,     0,
     1506       0,   258,     0,   105,     0,     3,     3,     0,   465,     0,
     1507     461,     0,     0,   247,   296,     0,     0,   131,     0,     0,
     1508       0,     0,     0,   131,     0,     0,   111,   111,     2,     0,
     1509       0,     0,     3,   133,   134,     2,   145,   135,   136,   137,
     1510     138,   139,   140,   147,   149,     0,     0,     0,   287,   296,
     1511     296,   551,     0,   544,   296,   113,   700,   704,   706,   699,
     1512     386,   370,   401,     0,   583,     2,   668,   667,     0,   673,
     1513       2,   486,   488,   508,     3,   516,   517,     0,     2,   512,
     1514       3,     3,     0,     0,   560,   224,     0,     0,     0,   224,
     1515       0,     0,     3,    37,   753,   111,     0,     3,   665,    42,
     1516       3,    40,     3,    34,     0,     3,   102,   104,     0,     2,
     1517     656,   657,     0,     0,   296,     0,     0,     0,     3,   642,
     1518       0,     2,   628,   629,     2,   644,     2,   678,   679,     0,
     1519       0,    64,     0,     3,     3,     3,     3,   413,   412,   416,
     1520       2,     2,   752,   751,   114,     0,     0,     0,     0,     3,
     1521     466,     3,     0,   245,   148,     3,   297,   296,     0,     0,
     1522       0,     0,     2,   193,     0,   191,     0,     0,     0,     0,
     1523       0,     0,     0,     0,   113,     0,   551,   153,   150,   296,
     1524       0,     0,   269,   281,     3,     3,   550,   617,   371,     2,
     1525     702,   703,   399,   296,   268,   296,     0,   519,   496,   296,
     1526       0,     0,   495,   510,     0,     0,     0,   218,     0,   227,
     1527      57,   111,     0,     0,   118,   115,     0,     0,     0,     0,
     1528       0,     0,    23,     0,   659,   296,   584,   267,   728,   729,
     1529     730,     0,   681,   296,   296,   296,     3,     3,     0,   689,
     1530       0,     0,     0,     0,   296,   296,     3,   548,   473,   474,
     1531       0,     0,   248,   297,     0,     0,     0,     0,   296,   194,
     1532     192,     0,   189,   195,     0,     0,     0,     0,   199,   202,
     1533     200,   196,     0,   197,    35,   131,   146,   144,   246,     0,
     1534       0,   296,   420,   424,   423,     0,   513,     2,   514,     2,
     1535     515,   509,   296,   230,     0,   228,     0,   230,     3,   665,
     1536      31,   116,     2,    45,     2,    43,    41,    28,   114,    26,
     1537       3,   731,     3,     3,     3,     0,     0,   688,   690,   631,
     1538     645,   271,     2,   410,     3,   409,     0,   476,   473,   131,
     1539       0,     0,   131,     3,     0,   131,   190,     0,     2,     2,
     1540     211,   201,     0,     0,     0,     0,   142,   578,   618,     3,
     1541       2,     0,     0,     2,   231,     0,     0,   219,     0,     0,
     1542       0,     0,     0,     0,     0,     0,     0,   691,   692,   296,
     1543       0,   475,   154,     0,     0,     2,   167,   131,   156,     0,
     1544     184,     0,   131,     0,     2,   158,     0,     2,     0,     2,
     1545       2,     2,   198,    32,     0,   296,   518,   520,   511,     0,
     1546       0,     0,     0,   116,    38,     3,     3,   660,   632,   646,
     1547     682,   414,   131,   160,   163,     0,   162,   166,     3,   169,
     1548     168,     0,   131,   186,   131,     3,     0,   296,     0,   296,
     1549       0,     2,     0,     2,   141,   705,     2,   232,   233,     0,
     1550     229,   220,     0,     0,     0,   155,     0,     0,   165,   235,
     1551     170,     2,   237,   185,     0,   188,   174,   203,     3,   212,
     1552     216,   205,     3,     0,   296,     0,   296,     0,     0,     0,
     1553      39,    46,    44,   161,   164,   131,     0,   171,   296,   131,
     1554     131,     0,   175,     0,     0,   696,   213,   214,   215,     0,
     1555     204,     3,   206,     3,   296,   221,   234,   151,   172,   157,
     1556     131,   238,   187,   182,   180,   176,   159,   131,     0,   697,
     1557       0,     0,     0,     0,   152,   173,   183,   177,   181,   180,
     1558     178,     3,     3,     0,     0,   497,   179,   207,   209,     3,
     1559       3,   208,   210
    15581560};
    15591561
     
    15611563static const yytype_int16 yydefgoto[] =
    15621564{
    1563       -1,   840,   475,   302,    46,   132,   133,   303,   304,   305,
    1564      306,   786,   787,  1148,  1149,   307,   308,   309,   310,   311,
    1565      312,   313,   314,   315,   316,   317,   318,   319,   320,  1052,
    1566      526,   997,   322,   998,   555,   974,  1079,  1545,  1081,  1082,
    1567     1083,  1084,  1546,  1085,  1086,  1462,  1463,  1424,  1425,  1426,
    1568     1524,  1525,  1529,  1530,  1565,  1566,  1087,  1382,  1088,  1089,
    1569     1316,  1317,  1318,  1506,  1090,   144,   980,   981,   982,  1403,
    1570     1487,  1498,  1499,   476,   477,   902,   903,  1060,    49,    50,
    1571       51,    52,    53,   346,   157,    56,    57,    58,    59,    60,
    1572      348,    62,    63,   262,    65,    66,   273,   350,   351,    69,
    1573       70,    71,    72,   117,    74,   203,   353,   118,    77,   119,
    1574       79,    80,   462,    81,   456,   457,   458,   459,   701,   940,
    1575      702,    82,    83,   465,   463,   722,   882,   883,   356,   357,
    1576      725,   726,   727,   358,   359,   360,   361,   473,   340,   134,
    1577      135,   530,   324,   169,   655,   656,   657,   658,   659,    84,
    1578      120,    86,   496,   497,   966,   498,   276,   502,   325,    87,
    1579      136,   137,    88,  1340,  1126,  1127,  1128,  1129,    89,    90,
    1580      743,    91,   272,    92,    93,   186,  1054,   689,   411,   124,
    1581       94,   508,   509,   510,   187,   267,   189,   190,   191,   268,
    1582       97,    98,    99,   100,   101,   102,   103,   194,   195,   196,
    1583      197,   198,   852,   614,   615,   616,   617,   199,   619,   620,
    1584      621,   580,   581,   582,   583,   706,   104,   623,   624,   625,
    1585      626,   627,   628,   939,   708,   709,   710,   604,   364,   365,
    1586      366,   367,   326,   163,   106,   107,   108,   369,   720,   577
     1565      -1,   841,   477,   302,    47,   134,   135,   303,   304,   305,
     1566     306,   787,   788,  1150,  1151,   307,   382,   309,   310,   311,
     1567     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
     1568    1054,   528,   998,   323,   999,   556,   975,  1081,  1547,  1083,
     1569    1084,  1085,  1086,  1548,  1087,  1088,  1464,  1465,  1426,  1427,
     1570    1428,  1526,  1527,  1531,  1532,  1567,  1568,  1089,  1384,  1090,
     1571    1091,  1318,  1319,  1320,  1508,  1092,   146,   981,   982,   983,
     1572    1405,  1489,  1500,  1501,   478,   479,   903,   904,  1062,    51,
     1573      52,    53,    54,    55,   348,   159,    58,    59,    60,    61,
     1574      62,   350,    64,    65,   265,    67,    68,   275,   352,   353,
     1575      71,    72,    73,    74,   119,    76,   205,   355,   120,    79,
     1576     121,    81,    82,   464,    83,   458,   459,   460,   461,   702,
     1577     941,   703,    84,    85,   467,   465,   723,   883,   884,   358,
     1578     359,   726,   727,   728,   360,   361,   362,   363,   475,   341,
     1579     136,   137,   532,   325,   171,   656,   657,   658,   659,   660,
     1580      86,   122,    88,   498,   499,   967,   500,   278,   504,   326,
     1581      89,   138,   139,    90,  1342,  1128,  1129,  1130,  1131,    91,
     1582      92,   744,    93,   274,    94,    95,   188,  1056,   690,   413,
     1583     126,    96,   510,   511,   512,   189,   269,   191,   192,   193,
     1584     270,    99,   100,   101,   102,   103,   104,   105,   196,   197,
     1585     198,   199,   200,   853,   615,   616,   617,   618,   201,   620,
     1586     621,   622,   582,   583,   584,   585,   707,   106,   624,   625,
     1587     626,   627,   628,   629,   940,   709,   710,   711,   605,   366,
     1588     367,   368,   369,   327,   165,   108,   109,   110,   371,   721,
     1589     579
    15871590};
    15881591
    15891592/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15901593   STATE-NUM.  */
    1591 #define YYPACT_NINF -1332
     1594#define YYPACT_NINF -1415
    15921595static const yytype_int16 yypact[] =
    15931596{
    1594     3506,  8076, -1332,    12, -1332, -1332, -1332, -1332, -1332, -1332,
    1595    -1332,    61, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332,
    1596    -1332, -1332, -1332, -1332, -1332, -1332,   102,   102,   102,  1011,
    1597     1062,    86,  5961,   228, -1332, -1332, -1332, -1332, -1332,   138,
    1598    -1332, -1332, -1332,   684,   144,  9470, -1332, -1332, -1332, -1332,
    1599    -1332, -1332,   190,   182, -1332,  1658, -1332, -1332, -1332, -1332,
    1600      201,  1834,   303,    32,  4928, -1332, -1332,  9508,  1650, -1332,
    1601    -1332, -1332,   615,   401,  4443,   184,   589,   615,  1225, -1332,
    1602    -1332,   848,   938, -1332,   615,  1259, -1332,   301, -1332,   486,
    1603      503, -1332, -1332, -1332, -1332,   316,   182,   102, -1332,   102,
    1604    -1332, -1332, -1332, -1332,  9240,  1658, -1332, -1332,  1658, -1332,
    1605     9354,   391, -1332, -1332, -1332,  1948,  9876, -1332,   810,   810,
    1606      810, -1332, -1332, -1332,   102, -1332, -1332, -1332,   426,   447,
    1607<