Changes in / [7756647:ac9ca967]


Ignore:
Files:
11 deleted
20 edited

Legend:

Unmodified
Added
Removed
  • doc/aaron_comp_II/comp_II.tex

    r7756647 rac9ca967  
    400400
    401401\section{Expression Resolution}
    402 \subsection{Analysis}
    403402The expression resolution problem is determining an optimal match between some combination of argument interpretations and the parameter list of some overloaded instance of a function; the argument interpretations are produced by recursive invocations of expression resolution, where the base case is zero-argument functions (which are, for purposes of this discussion, semantically equivalent to named variables or constant literal expressions).
    404403Assuming that the matching between a function's parameter list and a combination of argument interpretations can be done in $\bigO{p^k}$ time, where $p$ is the number of parameters and $k$ is some positive number, if there are $\bigO{i}$ valid interpretations for each subexpression, there will be $\bigO{i}$ candidate functions and $\bigO{i^p}$ possible argument combinations for each expression, so for a single recursive call expression resolution takes $\bigO{i^{p+1} \cdot p^k}$ time if it must compare all combinations, or $\bigO{i(p+1) \cdot p^k}$ time if argument-parameter matches can be chosen independently of each other.
     
    410409The number of valid interpretations of any subexpression, $i$, is bounded by the number of types in the system, which is possibly infinite, though practical resolution algorithms for \CFA must be able to place some finite bound on $i$, possibly at the expense of type-system completeness.
    411410
    412 \subsection{Expression Costs}
    413 The expression resolution problem involves minimization of a cost function; loosely defined, this cost function is the number of implicit conversions in the top-level expression interpretation.
    414 With more specificity, the \emph{cost} of a particular expression interpretation is a lexicographically-ordered tuple, where each element of the tuple corresponds to a particular kind of conversion.
    415 In \CFA today, cost is a three-tuple including the number of unsafe conversions, the number of polymorphic parameter bindings, and the number of safe conversions.
    416 These counts include conversions used in subexpression interpretations, as well as those necessary to satisfy the type assertions of any polymorphic functions included in the interpretation.
    417 
    418 \begin{lstlisting}
    419 void f(char, long);  // $f_1$ - cost (2, 0, 1)
    420 forall(otype T) void f(T, long); // $f_2$ - cost (0, 1, 1)
    421 void f(long, long); // $f_{3a}$ - cost (0, 0, 2)
    422 void f(int, float); // $f_{3b}$ - cost (0, 0, 2)
    423 void f(int, long);  // $f_4$ - cost (0, 0, 1)
    424 
    425 f(7, 11);
    426 \end{lstlisting}
    427 
    428 In the example above, the expression resolves to $f_4$.
    429 $f_1$ has an unsafe conversion (from ©int© to ©char©), and is thus the highest cost, followed by $f_2$, which has a polymorphic binding (from ©int© to ©T©).
    430 Neither $f_{3a}$, $f_{3b}$, or $f_4$ match exactly with the type of the call expression (©void (*)(int, int)©), each involving safe conversions, but in this case $f_4$ is cheaper than $f_{3a}$, because it converts fewer arguments, and is also cheaper than $f_{3b}$, because ©long© is a closer match for ©int© than ©float© is.
    431 If the declaration of $f_4$ was missing, the expression would be ambiguous, because the two single-step ©int©-to-©long© conversions in $f_{3a}$ cost the same as the one double-step ©int©-to-©float© conversion in $f_{3b}$.
    432 
    433 In the course of this project I may modify the cost tuple,\footnote{I have considered adding an element to distinguish between cast expressions used as conversions and those used as type ascriptions, and another element to differentiate interpretations based on closer qualifier matches. The existing costing of polymorphic functions could also be made more precice than a bare count of parameter bindings.} but the essential nature of the cost calculation should remain the same.
    434 
    435 \subsection{Objectives}
    436411The research goal of this project is to develop a performant expression resolver for \CFA; this analysis suggests three primary areas of investigation to accomplish that end.
    437412The first area of investigation is efficient argument-parameter matching; Bilson~\cite{Bilson03} mentions significant optimization opportunities available in the current literature to improve on the existing CFA compiler.
  • src/Common/SemanticError.h

    r7756647 rac9ca967  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Sep 24 15:13:42 2016
    13 // Update Count     : 5
     12// Last Modified On : Mon Jun  8 14:38:53 2015
     13// Update Count     : 4
    1414//
    1515
     
    4646}
    4747
     48
    4849#endif // SEMANTICERROR_H
    4950
  • src/Common/module.mk

    r7756647 rac9ca967  
    1111## Created On       : Mon Jun  1 17:49:17 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Tue Sep 27 11:06:38 2016
    14 ## Update Count     : 4
     13## Last Modified On : Thu Aug 18 13:29:04 2016
     14## Update Count     : 2
    1515###############################################################################
    1616
    1717SRC += Common/SemanticError.cc \
    1818       Common/UniqueName.cc \
    19        Common/DebugMalloc.cc \
    2019       Common/Assert.cc
  • src/Common/utility.h

    r7756647 rac9ca967  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Sep 23 11:46:47 2016
    13 // Update Count     : 28
     12// Last Modified On : Wed Jun  8 17:33:59 2016
     13// Update Count     : 22
    1414//
    1515
     
    2525#include <sstream>
    2626#include <string>
    27 #include <cassert>
    2827
    2928template< typename T >
     
    102101                } // if
    103102        } // for
     103}
     104
     105static inline std::string assign_strptr( const std::string *str ) {
     106        if ( str == 0 ) {
     107                return "";
     108        } else {
     109                std::string tmp;
     110                tmp = *str;
     111                delete str;
     112                return tmp;
     113        } // if
    104114}
    105115
     
    131141
    132142template < typename T >
    133 void toString_single( std::ostream & os, const T & value ) {
     143void toString_single ( std::ostream & os, const T & value ) {
    134144        os << value;
    135145}
    136146
    137147template < typename T, typename... Params >
    138 void toString_single( std::ostream & os, const T & value, const Params & ... params ) {
     148void toString_single ( std::ostream & os, const T & value, const Params & ... params ) {
    139149        os << value;
    140150        toString_single( os, params ... );
     
    142152
    143153template < typename ... Params >
    144 std::string toString( const Params & ... params ) {
     154std::string toString ( const Params & ... params ) {
    145155        std::ostringstream os;
    146156        toString_single( os, params... );
  • src/Makefile.am

    r7756647 rac9ca967  
    1111## Created On       : Sun May 31 08:51:46 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Sat Sep 24 15:03:52 2016
    14 ## Update Count     : 73
     13## Last Modified On : Sat Aug 20 11:13:12 2016
     14## Update Count     : 71
    1515###############################################################################
    1616
     
    4040cfa_cpplib_PROGRAMS = driver/cfa-cpp
    4141driver_cfa_cpp_SOURCES = ${SRC}
    42 driver_cfa_cpp_LDADD = ${LEXLIB} -ldl                   # yywrap
     42driver_cfa_cpp_LDADD = ${LEXLIB}                        # yywrap
    4343driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -rdynamic -I${abs_top_srcdir}/src/include
    4444
  • src/Makefile.in

    r7756647 rac9ca967  
    9898        Common/driver_cfa_cpp-SemanticError.$(OBJEXT) \
    9999        Common/driver_cfa_cpp-UniqueName.$(OBJEXT) \
    100         Common/driver_cfa_cpp-DebugMalloc.$(OBJEXT) \
    101100        Common/driver_cfa_cpp-Assert.$(OBJEXT) \
    102101        ControlStruct/driver_cfa_cpp-LabelGenerator.$(OBJEXT) \
     
    359358        CodeGen/CodeGenerator.cc CodeGen/GenType.cc \
    360359        CodeGen/FixNames.cc CodeGen/OperatorTable.cc \
    361         Common/SemanticError.cc Common/UniqueName.cc \
    362         Common/DebugMalloc.cc Common/Assert.cc \
     360        Common/SemanticError.cc Common/UniqueName.cc Common/Assert.cc \
    363361        ControlStruct/LabelGenerator.cc ControlStruct/LabelFixer.cc \
    364362        ControlStruct/MLEMutator.cc ControlStruct/Mutate.cc \
     
    414412cfa_cpplibdir = ${libdir}
    415413driver_cfa_cpp_SOURCES = ${SRC}
    416 driver_cfa_cpp_LDADD = ${LEXLIB} -ldl                   # yywrap
     414driver_cfa_cpp_LDADD = ${LEXLIB}                        # yywrap
    417415driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -rdynamic -I${abs_top_srcdir}/src/include
    418416all: $(BUILT_SOURCES)
     
    514512        Common/$(DEPDIR)/$(am__dirstamp)
    515513Common/driver_cfa_cpp-UniqueName.$(OBJEXT): Common/$(am__dirstamp) \
    516         Common/$(DEPDIR)/$(am__dirstamp)
    517 Common/driver_cfa_cpp-DebugMalloc.$(OBJEXT): Common/$(am__dirstamp) \
    518514        Common/$(DEPDIR)/$(am__dirstamp)
    519515Common/driver_cfa_cpp-Assert.$(OBJEXT): Common/$(am__dirstamp) \
     
    788784        -rm -f CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT)
    789785        -rm -f Common/driver_cfa_cpp-Assert.$(OBJEXT)
    790         -rm -f Common/driver_cfa_cpp-DebugMalloc.$(OBJEXT)
    791786        -rm -f Common/driver_cfa_cpp-SemanticError.$(OBJEXT)
    792787        -rm -f Common/driver_cfa_cpp-UniqueName.$(OBJEXT)
     
    894889@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po@am__quote@
    895890@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po@am__quote@
    896 @AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Po@am__quote@
    897891@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po@am__quote@
    898892@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po@am__quote@
     
    11311125@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-UniqueName.obj `if test -f 'Common/UniqueName.cc'; then $(CYGPATH_W) 'Common/UniqueName.cc'; else $(CYGPATH_W) '$(srcdir)/Common/UniqueName.cc'; fi`
    11321126
    1133 Common/driver_cfa_cpp-DebugMalloc.o: Common/DebugMalloc.cc
    1134 @am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-DebugMalloc.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Tpo -c -o Common/driver_cfa_cpp-DebugMalloc.o `test -f 'Common/DebugMalloc.cc' || echo '$(srcdir)/'`Common/DebugMalloc.cc
    1135 @am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Tpo Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Po
    1136 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Common/DebugMalloc.cc' object='Common/driver_cfa_cpp-DebugMalloc.o' libtool=no @AMDEPBACKSLASH@
    1137 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1138 @am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-DebugMalloc.o `test -f 'Common/DebugMalloc.cc' || echo '$(srcdir)/'`Common/DebugMalloc.cc
    1139 
    1140 Common/driver_cfa_cpp-DebugMalloc.obj: Common/DebugMalloc.cc
    1141 @am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-DebugMalloc.obj -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Tpo -c -o Common/driver_cfa_cpp-DebugMalloc.obj `if test -f 'Common/DebugMalloc.cc'; then $(CYGPATH_W) 'Common/DebugMalloc.cc'; else $(CYGPATH_W) '$(srcdir)/Common/DebugMalloc.cc'; fi`
    1142 @am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Tpo Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Po
    1143 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Common/DebugMalloc.cc' object='Common/driver_cfa_cpp-DebugMalloc.obj' libtool=no @AMDEPBACKSLASH@
    1144 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1145 @am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-DebugMalloc.obj `if test -f 'Common/DebugMalloc.cc'; then $(CYGPATH_W) 'Common/DebugMalloc.cc'; else $(CYGPATH_W) '$(srcdir)/Common/DebugMalloc.cc'; fi`
    1146 
    11471127Common/driver_cfa_cpp-Assert.o: Common/Assert.cc
    11481128@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-Assert.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo -c -o Common/driver_cfa_cpp-Assert.o `test -f 'Common/Assert.cc' || echo '$(srcdir)/'`Common/Assert.cc
  • src/Parser/DeclarationNode.cc

    r7756647 rac9ca967  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Oct  3 18:03:08 2016
    13 // Update Count     : 651
     12// Last Modified On : Wed Sep 14 23:13:28 2016
     13// Update Count     : 502
    1414//
    1515
     
    3131
    3232// These must remain in the same order as the corresponding DeclarationNode enumerations.
    33 const char * DeclarationNode::storageName[] = { "extern", "static", "auto", "register", "inline", "fortran", "_Noreturn", "_Thread_local", "NoStorageClass" };
    34 const char * DeclarationNode::qualifierName[] = { "const", "restrict", "volatile", "lvalue", "_Atomic", "NoQualifier" };
    35 const char * DeclarationNode::basicTypeName[] = { "void", "_Bool", "char", "int", "float", "double", "long double", "NoBasicType" };
    36 const char * DeclarationNode::complexTypeName[] = { "_Complex", "_Imaginary", "NoComplexType" };
    37 const char * DeclarationNode::signednessName[] = { "signed", "unsigned", "NoSignedness" };
    38 const char * DeclarationNode::lengthName[] = { "short", "long", "long long", "NoLength" };
    39 const char * DeclarationNode::aggregateName[] = { "struct", "union", "context" };
    40 const char * DeclarationNode::typeClassName[] = { "otype", "dtype", "ftype" };
    41 const char * DeclarationNode::builtinTypeName[] = { "__builtin_va_list" };
     33const char *DeclarationNode::storageName[] = { "extern", "static", "auto", "register", "inline", "fortran", "_Noreturn", "_Thread_local", "NoStorageClass" };
     34const char *DeclarationNode::qualifierName[] = { "const", "restrict", "volatile", "lvalue", "_Atomic", "NoQualifier" };
     35const char *DeclarationNode::basicTypeName[] = { "void", "_Bool", "char", "int", "float", "double", "long double", "NoBasicType" };
     36const char *DeclarationNode::complexTypeName[] = { "_Complex", "_Imaginary", "NoComplexType" };
     37const char *DeclarationNode::signednessName[] = { "signed", "unsigned", "NoSignedness" };
     38const char *DeclarationNode::lengthName[] = { "short", "long", "long long", "NoLength" };
     39const char *DeclarationNode::aggregateName[] = { "struct", "union", "context" };
     40const char *DeclarationNode::typeClassName[] = { "otype", "dtype", "ftype" };
     41const char *DeclarationNode::builtinTypeName[] = { "__builtin_va_list" };
    4242
    4343UniqueName DeclarationNode::anonymous( "__anonymous" );
     
    4646
    4747DeclarationNode::DeclarationNode() :
    48                 type( nullptr ),
     48                type( 0 ),
    4949                storageClass( NoStorageClass ),
    5050                isInline( false ),
    5151                isNoreturn( false ),
    52                 bitfieldWidth( nullptr ),
    53                 initializer( nullptr ),
     52                bitfieldWidth( 0 ),
     53                initializer( 0 ),
    5454                hasEllipsis( false ),
    5555                linkage( ::linkage ),
    5656                extension( false ) {
    57 
    58 //      variable.name = nullptr;
    59         variable.tyClass = NoTypeClass;
     57        variable.tyClass = DeclarationNode::Otype;
    6058        variable.assertions = nullptr;
    6159
    62 //      attr.name = nullptr;
    6360        attr.expr = nullptr;
    6461        attr.type = nullptr;
     
    6663
    6764DeclarationNode::~DeclarationNode() {
    68 //      delete attr.name;
    6965        delete attr.expr;
    7066        delete attr.type;
    71 
    72 //      delete variable.name;
    73         delete variable.assertions;
    74 
    7567        delete type;
    7668        delete bitfieldWidth;
     
    7870}
    7971
    80 DeclarationNode * DeclarationNode::clone() const {
    81         DeclarationNode * newnode = new DeclarationNode;
     72DeclarationNode *DeclarationNode::clone() const {
     73        DeclarationNode *newnode = new DeclarationNode;
    8274        newnode->type = maybeClone( type );
    83         newnode->name = name ? new string( *name ) : nullptr;
     75        newnode->name = name;
    8476        newnode->storageClass = storageClass;
    8577        newnode->isInline = isInline;
     
    9183        newnode->linkage = linkage;
    9284
    93 //      newnode->variable.name = variable.name ? new string( *variable.name ) : nullptr;
     85        newnode->variable.assertions = maybeClone( variable.assertions );
     86        newnode->variable.name = variable.name;
    9487        newnode->variable.tyClass = variable.tyClass;
    95         newnode->variable.assertions = maybeClone( variable.assertions );
    96 
    97 //      newnode->attr.name = attr.name ? new string( *attr.name ) : nullptr;
     88
    9889        newnode->attr.expr = maybeClone( attr.expr );
    9990        newnode->attr.type = maybeClone( attr.type );
     
    10798void DeclarationNode::print( std::ostream &os, int indent ) const {
    10899        os << string( indent, ' ' );
    109         if ( name ) {
    110                 os << *name << ": ";
     100        if ( name == "" ) {
     101                os << "unnamed: ";
    111102        } else {
    112                 os << "unnamed: ";
     103                os << name << ": ";
    113104        } // if
    114105
    115106        if ( linkage != LinkageSpec::Cforall ) {
    116                 os << LinkageSpec::linkageName( linkage ) << " ";
     107                os << LinkageSpec::toString( linkage ) << " ";
    117108        } // if
    118109
     
    131122        } // if
    132123
    133         if ( initializer ) {
     124        if ( initializer != 0 ) {
    134125                os << endl << string( indent + 2, ' ' ) << "with initializer ";
    135126                initializer->printOneLine( os );
     
    148139}
    149140
    150 DeclarationNode * DeclarationNode::newFunction( string * name, DeclarationNode * ret, DeclarationNode * param, StatementNode * body, bool newStyle ) {
    151         DeclarationNode * newnode = new DeclarationNode;
    152         newnode->name = name;
     141DeclarationNode *DeclarationNode::newFunction( std::string *name, DeclarationNode *ret, DeclarationNode *param, StatementNode *body, bool newStyle ) {
     142        DeclarationNode *newnode = new DeclarationNode;
     143        newnode->name = assign_strptr( name );
     144
    153145        newnode->type = new TypeData( TypeData::Function );
    154146        newnode->type->function.params = param;
    155147        newnode->type->function.newStyle = newStyle;
    156148        newnode->type->function.body = body;
    157         // ignore unnamed routine declarations: void p( int (*)(int) );
    158         if ( newnode->name ) {
    159                 typedefTable.addToEnclosingScope( *newnode->name, TypedefTable::ID );
    160         } // if
     149        typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID );
    161150
    162151        if ( body ) {
     
    166155        if ( ret ) {
    167156                newnode->type->base = ret->type;
    168                 ret->type = nullptr;
     157                ret->type = 0;
    169158                delete ret;
    170159        } // if
     
    174163
    175164DeclarationNode * DeclarationNode::newQualifier( Qualifier q ) {
    176         DeclarationNode * newnode = new DeclarationNode;
     165        DeclarationNode *newnode = new DeclarationNode;
    177166        newnode->type = new TypeData();
    178167        newnode->type->qualifiers[ q ] = 1;
     
    180169} // DeclarationNode::newQualifier
    181170
    182 DeclarationNode * DeclarationNode::newForall( DeclarationNode * forall ) {
    183         DeclarationNode * newnode = new DeclarationNode;
     171DeclarationNode * DeclarationNode::newForall( DeclarationNode *forall ) {
     172        DeclarationNode *newnode = new DeclarationNode;
    184173        newnode->type = new TypeData( TypeData::Unknown );
    185174        newnode->type->forall = forall;
     
    188177
    189178DeclarationNode * DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) {
    190         DeclarationNode * newnode = new DeclarationNode;
     179        DeclarationNode *newnode = new DeclarationNode;
     180        //switch (sc) {
     181        //      case Inline: newnode->isInline = true; break;
     182        //      case Noreturn: newnode->isNoreturn = true; break;
     183        //      default: newnode->storageClass = sc; break;
     184        //}
    191185        newnode->storageClass = sc;
    192186        return newnode;
     
    194188
    195189DeclarationNode * DeclarationNode::newBasicType( BasicType bt ) {
    196         DeclarationNode * newnode = new DeclarationNode;
     190        DeclarationNode *newnode = new DeclarationNode;
    197191        newnode->type = new TypeData( TypeData::Basic );
    198192        newnode->type->basictype = bt;
     
    201195
    202196DeclarationNode * DeclarationNode::newComplexType( ComplexType ct ) {
    203         DeclarationNode * newnode = new DeclarationNode;
     197        DeclarationNode *newnode = new DeclarationNode;
    204198        newnode->type = new TypeData( TypeData::Basic );
    205199        newnode->type->complextype = ct;
     
    208202
    209203DeclarationNode * DeclarationNode::newSignedNess( Signedness sn ) {
    210         DeclarationNode * newnode = new DeclarationNode;
     204        DeclarationNode *newnode = new DeclarationNode;
    211205        newnode->type = new TypeData( TypeData::Basic );
    212206        newnode->type->signedness = sn;
     
    215209
    216210DeclarationNode * DeclarationNode::newLength( Length lnth ) {
    217         DeclarationNode * newnode = new DeclarationNode;
     211        DeclarationNode *newnode = new DeclarationNode;
    218212        newnode->type = new TypeData( TypeData::Basic );
    219213        newnode->type->length = lnth;
     
    221215} // DeclarationNode::newLength
    222216
    223 DeclarationNode * DeclarationNode::newFromTypedef( string * name ) {
    224         DeclarationNode * newnode = new DeclarationNode;
     217DeclarationNode * DeclarationNode::newFromTypedef( std::string *name ) {
     218        DeclarationNode *newnode = new DeclarationNode;
    225219        newnode->type = new TypeData( TypeData::SymbolicInst );
    226         newnode->type->symbolic.name = name;
     220        newnode->type->symbolic.name = assign_strptr( name );
    227221        newnode->type->symbolic.isTypedef = true;
    228         newnode->type->symbolic.params = nullptr;
     222        newnode->type->symbolic.params = 0;
    229223        return newnode;
    230224} // DeclarationNode::newFromTypedef
    231225
    232 DeclarationNode * DeclarationNode::newAggregate( Aggregate kind, const string * name, ExpressionNode * actuals, DeclarationNode * fields, bool body ) {
    233         DeclarationNode * newnode = new DeclarationNode;
     226DeclarationNode * DeclarationNode::newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields, bool body ) {
     227        DeclarationNode *newnode = new DeclarationNode;
    234228        newnode->type = new TypeData( TypeData::Aggregate );
    235229        newnode->type->aggregate.kind = kind;
    236         if ( name ) {
    237                 newnode->type->aggregate.name = name;
    238         } else {                                                                                        // anonymous aggregate ?
    239                 newnode->type->aggregate.name = new string( anonymous.newName() );
     230        newnode->type->aggregate.name = assign_strptr( name );
     231        if ( newnode->type->aggregate.name == "" ) {            // anonymous aggregate ?
     232                newnode->type->aggregate.name = anonymous.newName();
    240233        } // if
    241234        newnode->type->aggregate.actuals = actuals;
     
    245238} // DeclarationNode::newAggregate
    246239
    247 DeclarationNode * DeclarationNode::newEnum( string * name, DeclarationNode * constants ) {
    248         DeclarationNode * newnode = new DeclarationNode;
     240DeclarationNode *DeclarationNode::newEnum( std::string *name, DeclarationNode *constants ) {
     241        DeclarationNode *newnode = new DeclarationNode;
     242        newnode->name = assign_strptr( name );
    249243        newnode->type = new TypeData( TypeData::Enum );
    250         if ( name ) {
    251                 newnode->type->enumeration.name = name;
    252         } else {                                                                                        // anonymous aggregate ?
    253                 newnode->type->enumeration.name = new string( anonymous.newName() );
     244        newnode->type->enumeration.name = newnode->name;
     245        if ( newnode->type->enumeration.name == "" ) {          // anonymous enumeration ?
     246                newnode->type->enumeration.name = DeclarationNode::anonymous.newName();
    254247        } // if
    255248        newnode->type->enumeration.constants = constants;
     
    257250} // DeclarationNode::newEnum
    258251
    259 DeclarationNode * DeclarationNode::newEnumConstant( string * name, ExpressionNode * constant ) {
    260         DeclarationNode * newnode = new DeclarationNode;
    261         newnode->name = name;
     252DeclarationNode *DeclarationNode::newEnumConstant( std::string *name, ExpressionNode *constant ) {
     253        DeclarationNode *newnode = new DeclarationNode;
     254        newnode->name = assign_strptr( name );
    262255        newnode->enumeratorValue.reset( constant );
    263         typedefTable.addToEnclosingScope( *newnode->name, TypedefTable::ID );
     256        typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID );
    264257        return newnode;
    265258} // DeclarationNode::newEnumConstant
    266259
    267 DeclarationNode * DeclarationNode::newName( string * name ) {
    268         DeclarationNode * newnode = new DeclarationNode;
    269         newnode->name = name;
     260DeclarationNode *DeclarationNode::newName( std::string *name ) {
     261        DeclarationNode *newnode = new DeclarationNode;
     262        newnode->name = assign_strptr( name );
    270263        return newnode;
    271264} // DeclarationNode::newName
    272265
    273 DeclarationNode * DeclarationNode::newFromTypeGen( string * name, ExpressionNode * params ) {
    274         DeclarationNode * newnode = new DeclarationNode;
     266DeclarationNode *DeclarationNode::newFromTypeGen( std::string *name, ExpressionNode *params ) {
     267        DeclarationNode *newnode = new DeclarationNode;
    275268        newnode->type = new TypeData( TypeData::SymbolicInst );
    276         newnode->type->symbolic.name = name;
     269        newnode->type->symbolic.name = assign_strptr( name );
    277270        newnode->type->symbolic.isTypedef = false;
    278271        newnode->type->symbolic.actuals = params;
     
    280273} // DeclarationNode::newFromTypeGen
    281274
    282 DeclarationNode * DeclarationNode::newTypeParam( TypeClass tc, string * name ) {
    283         DeclarationNode * newnode = new DeclarationNode;
    284         newnode->type = nullptr;
    285         assert( ! newnode->name );
    286 //      newnode->variable.name = name;
    287         newnode->name = name;
     275DeclarationNode *DeclarationNode::newTypeParam( TypeClass tc, std::string *name ) {
     276        DeclarationNode *newnode = new DeclarationNode;
     277        newnode->name = assign_strptr( name );
     278        newnode->type = new TypeData( TypeData::Variable );
    288279        newnode->variable.tyClass = tc;
    289         newnode->variable.assertions = nullptr;
     280        newnode->variable.name = newnode->name;
    290281        return newnode;
    291282} // DeclarationNode::newTypeParam
    292283
    293 DeclarationNode * DeclarationNode::newTrait( const string * name, DeclarationNode * params, DeclarationNode * asserts ) {
    294         DeclarationNode * newnode = new DeclarationNode;
     284DeclarationNode *DeclarationNode::newTrait( std::string *name, DeclarationNode *params, DeclarationNode *asserts ) {
     285        DeclarationNode *newnode = new DeclarationNode;
    295286        newnode->type = new TypeData( TypeData::Aggregate );
    296         newnode->type->aggregate.name = name;
    297287        newnode->type->aggregate.kind = Trait;
    298288        newnode->type->aggregate.params = params;
    299289        newnode->type->aggregate.fields = asserts;
     290        newnode->type->aggregate.name = assign_strptr( name );
    300291        return newnode;
    301292} // DeclarationNode::newTrait
    302293
    303 DeclarationNode * DeclarationNode::newTraitUse( const string * name, ExpressionNode * params ) {
    304         DeclarationNode * newnode = new DeclarationNode;
     294DeclarationNode *DeclarationNode::newTraitUse( std::string *name, ExpressionNode *params ) {
     295        DeclarationNode *newnode = new DeclarationNode;
    305296        newnode->type = new TypeData( TypeData::AggregateInst );
    306297        newnode->type->aggInst.aggregate = new TypeData( TypeData::Aggregate );
    307298        newnode->type->aggInst.aggregate->aggregate.kind = Trait;
    308         newnode->type->aggInst.aggregate->aggregate.name = name;
     299        newnode->type->aggInst.aggregate->aggregate.name = assign_strptr( name );
    309300        newnode->type->aggInst.params = params;
    310301        return newnode;
    311302} // DeclarationNode::newTraitUse
    312303
    313 DeclarationNode * DeclarationNode::newTypeDecl( string * name, DeclarationNode * typeParams ) {
    314         DeclarationNode * newnode = new DeclarationNode;
     304DeclarationNode *DeclarationNode::newTypeDecl( std::string *name, DeclarationNode *typeParams ) {
     305        DeclarationNode *newnode = new DeclarationNode;
     306        newnode->name = assign_strptr( name );
    315307        newnode->type = new TypeData( TypeData::Symbolic );
    316308        newnode->type->symbolic.isTypedef = false;
    317309        newnode->type->symbolic.params = typeParams;
    318         newnode->type->symbolic.name = name;
     310        newnode->type->symbolic.name = newnode->name;
    319311        return newnode;
    320312} // DeclarationNode::newTypeDecl
    321313
    322 DeclarationNode * DeclarationNode::newPointer( DeclarationNode * qualifiers ) {
    323         DeclarationNode * newnode = new DeclarationNode;
     314DeclarationNode *DeclarationNode::newPointer( DeclarationNode *qualifiers ) {
     315        DeclarationNode *newnode = new DeclarationNode;
    324316        newnode->type = new TypeData( TypeData::Pointer );
    325317        return newnode->addQualifiers( qualifiers );
    326318} // DeclarationNode::newPointer
    327319
    328 DeclarationNode * DeclarationNode::newArray( ExpressionNode * size, DeclarationNode * qualifiers, bool isStatic ) {
    329         DeclarationNode * newnode = new DeclarationNode;
     320DeclarationNode *DeclarationNode::newArray( ExpressionNode *size, DeclarationNode *qualifiers, bool isStatic ) {
     321        DeclarationNode *newnode = new DeclarationNode;
    330322        newnode->type = new TypeData( TypeData::Array );
    331323        newnode->type->array.dimension = size;
    332324        newnode->type->array.isStatic = isStatic;
    333         if ( newnode->type->array.dimension == nullptr || newnode->type->array.dimension->isExpressionType<ConstantExpr * >() ) {
     325        if ( newnode->type->array.dimension == 0 || newnode->type->array.dimension->isExpressionType<ConstantExpr *>() ) {
    334326                newnode->type->array.isVarLen = false;
    335327        } else {
     
    339331} // DeclarationNode::newArray
    340332
    341 DeclarationNode * DeclarationNode::newVarArray( DeclarationNode * qualifiers ) {
    342         DeclarationNode * newnode = new DeclarationNode;
     333DeclarationNode *DeclarationNode::newVarArray( DeclarationNode *qualifiers ) {
     334        DeclarationNode *newnode = new DeclarationNode;
    343335        newnode->type = new TypeData( TypeData::Array );
    344         newnode->type->array.dimension = nullptr;
     336        newnode->type->array.dimension = 0;
    345337        newnode->type->array.isStatic = false;
    346338        newnode->type->array.isVarLen = true;
     
    348340}
    349341
    350 DeclarationNode * DeclarationNode::newBitfield( ExpressionNode * size ) {
    351         DeclarationNode * newnode = new DeclarationNode;
     342DeclarationNode *DeclarationNode::newBitfield( ExpressionNode *size ) {
     343        DeclarationNode *newnode = new DeclarationNode;
    352344        newnode->bitfieldWidth = size;
    353345        return newnode;
    354346}
    355347
    356 DeclarationNode * DeclarationNode::newTuple( DeclarationNode * members ) {
    357         DeclarationNode * newnode = new DeclarationNode;
     348DeclarationNode *DeclarationNode::newTuple( DeclarationNode *members ) {
     349        DeclarationNode *newnode = new DeclarationNode;
    358350        newnode->type = new TypeData( TypeData::Tuple );
    359351        newnode->type->tuple = members;
     
    361353}
    362354
    363 DeclarationNode * DeclarationNode::newTypeof( ExpressionNode * expr ) {
    364         DeclarationNode * newnode = new DeclarationNode;
     355DeclarationNode *DeclarationNode::newTypeof( ExpressionNode *expr ) {
     356        DeclarationNode *newnode = new DeclarationNode;
    365357        newnode->type = new TypeData( TypeData::Typeof );
    366358        newnode->type->typeexpr = expr;
     
    369361
    370362DeclarationNode * DeclarationNode::newBuiltinType( BuiltinType bt ) {
    371         DeclarationNode * newnode = new DeclarationNode;
     363        DeclarationNode *newnode = new DeclarationNode;
    372364        newnode->type = new TypeData( TypeData::Builtin );
    373365        newnode->builtin = bt;
     
    375367} // DeclarationNode::newBuiltinType
    376368
    377 DeclarationNode * DeclarationNode::newAttr( string * name, ExpressionNode * expr ) {
    378         DeclarationNode * newnode = new DeclarationNode;
    379         newnode->type = nullptr;
    380 //      newnode->attr.name = name;
    381         newnode->name = name;
     369DeclarationNode *DeclarationNode::newAttr( std::string *name, ExpressionNode *expr ) {
     370        DeclarationNode *newnode = new DeclarationNode;
     371        newnode->type = new TypeData( TypeData::Attr );
     372        newnode->attr.name = assign_strptr( name );
    382373        newnode->attr.expr = expr;
    383374        return newnode;
    384375}
    385376
    386 DeclarationNode * DeclarationNode::newAttr( string * name, DeclarationNode * type ) {
    387         DeclarationNode * newnode = new DeclarationNode;
    388         newnode->type = nullptr;
    389 //      newnode->attr.name = name;
    390         newnode->name = name;
     377DeclarationNode *DeclarationNode::newAttr( std::string *name, DeclarationNode *type ) {
     378        DeclarationNode *newnode = new DeclarationNode;
     379        newnode->type = new TypeData( TypeData::Attr );
     380        newnode->attr.name = assign_strptr( name );
    391381        newnode->attr.type = type;
    392382        return newnode;
     
    399389} // appendError
    400390
    401 void DeclarationNode::checkQualifiers( const TypeData * src, const TypeData * dst ) {
     391void DeclarationNode::checkQualifiers( const TypeData *src, const TypeData *dst ) {
    402392        TypeData::Qualifiers qsrc = src->qualifiers, qdst = dst->qualifiers; // optimization
    403393
     
    411401} // DeclarationNode::checkQualifiers
    412402
    413 void DeclarationNode::checkStorageClasses( DeclarationNode * q ) {
     403void DeclarationNode::checkStorageClasses( DeclarationNode *q ) {
    414404        if ( storageClass != NoStorageClass && q->storageClass != NoStorageClass ) {
    415405                if ( storageClass == q->storageClass ) {                // duplicate qualifier
     
    423413} // DeclarationNode::copyStorageClasses
    424414
    425 DeclarationNode * DeclarationNode::copyStorageClasses( DeclarationNode * q ) {
     415DeclarationNode *DeclarationNode::copyStorageClasses( DeclarationNode *q ) {
    426416        isInline = isInline || q->isInline;
    427417        isNoreturn = isNoreturn || q->isNoreturn;
     
    434424} // DeclarationNode::copyStorageClasses
    435425
    436 static void addQualifiersToType( TypeData *&src, TypeData * dst ) {
     426static void addQualifiersToType( TypeData *&src, TypeData *dst ) {
    437427        if ( src->forall && dst->kind == TypeData::Function ) {
    438428                if ( dst->forall ) {
     
    441431                        dst->forall = src->forall;
    442432                } // if
    443                 src->forall = nullptr;
     433                src->forall = 0;
    444434        } // if
    445435        if ( dst->base ) {
     
    447437        } else if ( dst->kind == TypeData::Function ) {
    448438                dst->base = src;
    449                 src = nullptr;
     439                src = 0;
    450440        } else {
    451441                dst->qualifiers |= src->qualifiers;
     
    453443} // addQualifiersToType
    454444
    455 DeclarationNode * DeclarationNode::addQualifiers( DeclarationNode * q ) {
    456         if ( ! q ) { delete q; return this; }
     445DeclarationNode *DeclarationNode::addQualifiers( DeclarationNode *q ) {
     446        if ( ! q ) return this;
    457447
    458448        checkStorageClasses( q );
    459449        copyStorageClasses( q );
    460450
    461         if ( ! q->type ) {
    462                 delete q;
    463                 return this;
    464         } // if
     451        if ( ! q->type ) { delete q; return this; }
    465452
    466453        if ( ! type ) {
    467                 type = q->type;                                                                 // reuse this structure
    468                 q->type = nullptr;
    469                 delete q;
     454//              type = new TypeData;
     455                type = q->type;
    470456                return this;
    471457        } // if
     
    481467                                type->aggregate.params = q->type->forall;
    482468                                // change implicit typedef from TYPEDEFname to TYPEGENname
    483                                 typedefTable.changeKind( *type->aggregate.name, TypedefTable::TG );
     469                                typedefTable.changeKind( type->aggregate.name, TypedefTable::TG );
    484470                        } else {
    485471                                type->forall = q->type->forall;
    486472                        } // if
    487473                } // if
    488                 q->type->forall = nullptr;
     474                q->type->forall = 0;
    489475        } // if
    490476        delete q;
     
    499485                        dst->forall = src->forall;
    500486                } // if
    501                 src->forall = nullptr;
     487                src->forall = 0;
    502488        } // if
    503489        if ( dst->base ) {
     
    508494                        src->qualifiers |= dst->qualifiers;
    509495                        dst = src;
    510                         src = nullptr;
     496                        src = 0;
    511497                        break;
    512498                  case TypeData::Basic:
     
    518504                                        dst->basictype = src->basictype;
    519505                                } else if ( src->basictype != DeclarationNode::NoBasicType )
    520                                         throw SemanticError( string( "conflicting type specifier " ) + DeclarationNode::basicTypeName[ src->basictype ] + " in type: ", src );
     506                                        throw SemanticError( std::string( "conflicting type specifier " ) + DeclarationNode::basicTypeName[ src->basictype ] + " in type: ", src );
    521507
    522508                                if ( dst->complextype == DeclarationNode::NoComplexType ) {
    523509                                        dst->complextype = src->complextype;
    524510                                } else if ( src->complextype != DeclarationNode::NoComplexType )
    525                                         throw SemanticError( string( "conflicting type specifier " ) + DeclarationNode::complexTypeName[ src->complextype ] + " in type: ", src );
     511                                        throw SemanticError( std::string( "conflicting type specifier " ) + DeclarationNode::complexTypeName[ src->complextype ] + " in type: ", src );
    526512
    527513                                if ( dst->signedness == DeclarationNode::NoSignedness ) {
    528514                                        dst->signedness = src->signedness;
    529515                                } else if ( src->signedness != DeclarationNode::NoSignedness )
    530                                         throw SemanticError( string( "conflicting type specifier " ) + DeclarationNode::signednessName[ src->signedness ] + " in type: ", src );
     516                                        throw SemanticError( std::string( "conflicting type specifier " ) + DeclarationNode::signednessName[ src->signedness ] + " in type: ", src );
    531517
    532518                                if ( dst->length == DeclarationNode::NoLength ) {
     
    535521                                        dst->length = DeclarationNode::LongLong;
    536522                                } else if ( src->length != DeclarationNode::NoLength )
    537                                         throw SemanticError( string( "conflicting type specifier " ) + DeclarationNode::lengthName[ src->length ] + " in type: ", src );
     523                                        throw SemanticError( std::string( "conflicting type specifier " ) + DeclarationNode::lengthName[ src->length ] + " in type: ", src );
    538524                        } // if
    539525                        break;
     
    548534                                } // if
    549535                                dst->base->qualifiers |= src->qualifiers;
    550                                 src = nullptr;
     536                                src = 0;
    551537                                break;
    552538                          default:
     
    556542                                        dst->forall = src->forall;
    557543                                } // if
    558                                 src->forall = nullptr;
     544                                src->forall = 0;
    559545                                dst->base = src;
    560                                 src = nullptr;
     546                                src = 0;
    561547                        } // switch
    562548                } // switch
     
    564550}
    565551
    566 DeclarationNode * DeclarationNode::addType( DeclarationNode * o ) {
     552DeclarationNode *DeclarationNode::addType( DeclarationNode *o ) {
    567553        if ( o ) {
    568554                checkStorageClasses( o );
     
    580566                                        type = o->type;
    581567                                } // if
    582                                 o->type = nullptr;
     568                                o->type = 0;
    583569                        } else {
    584570                                addTypeToType( o->type, type );
     
    598584}
    599585
    600 DeclarationNode * DeclarationNode::addTypedef() {
    601         TypeData * newtype = new TypeData( TypeData::Symbolic );
    602         newtype->symbolic.params = nullptr;
     586DeclarationNode *DeclarationNode::addTypedef() {
     587        TypeData *newtype = new TypeData( TypeData::Symbolic );
     588        newtype->symbolic.params = 0;
    603589        newtype->symbolic.isTypedef = true;
    604         newtype->symbolic.name = name ? new string( *name ) : nullptr;
     590        newtype->symbolic.name = name;
    605591        newtype->base = type;
    606592        type = newtype;
     
    608594}
    609595
    610 DeclarationNode * DeclarationNode::addAssertions( DeclarationNode * assertions ) {
    611         if ( variable.tyClass != NoTypeClass ) {
    612                 if ( variable.assertions ) {
    613                         variable.assertions->appendList( assertions );
    614                 } else {
    615                         variable.assertions = assertions;
    616                 } // if
    617                 return this;
    618         } // if
    619 
     596DeclarationNode *DeclarationNode::addAssertions( DeclarationNode *assertions ) {
    620597        assert( type );
    621598        switch ( type->kind ) {
     
    627604                } // if
    628605                break;
     606          case TypeData::Variable:
     607                if ( variable.assertions ) {
     608                        variable.assertions->appendList( assertions );
     609                } else {
     610                        variable.assertions = assertions;
     611                } // if
     612                break;
    629613          default:
    630614                assert( false );
     
    634618}
    635619
    636 DeclarationNode * DeclarationNode::addName( string * newname ) {
    637         assert( ! name );
    638         name = newname;
    639         return this;
    640 }
    641 
    642 DeclarationNode * DeclarationNode::addBitfield( ExpressionNode * size ) {
     620DeclarationNode *DeclarationNode::addName( std::string *newname ) {
     621        name = assign_strptr( newname );
     622        return this;
     623}
     624
     625DeclarationNode *DeclarationNode::addBitfield( ExpressionNode *size ) {
    643626        bitfieldWidth = size;
    644627        return this;
    645628}
    646629
    647 DeclarationNode * DeclarationNode::addVarArgs() {
     630DeclarationNode *DeclarationNode::addVarArgs() {
    648631        assert( type );
    649632        hasEllipsis = true;
     
    651634}
    652635
    653 DeclarationNode * DeclarationNode::addFunctionBody( StatementNode * body ) {
     636DeclarationNode *DeclarationNode::addFunctionBody( StatementNode *body ) {
    654637        assert( type );
    655638        assert( type->kind == TypeData::Function );
    656         assert( ! type->function.body );
     639        assert( type->function.body == 0 );
    657640        type->function.body = body;
    658641        type->function.hasBody = true;
     
    660643}
    661644
    662 DeclarationNode * DeclarationNode::addOldDeclList( DeclarationNode * list ) {
     645DeclarationNode *DeclarationNode::addOldDeclList( DeclarationNode *list ) {
    663646        assert( type );
    664647        assert( type->kind == TypeData::Function );
    665         assert( ! type->function.oldDeclList );
     648        assert( type->function.oldDeclList == 0 );
    666649        type->function.oldDeclList = list;
    667650        return this;
    668651}
    669652
    670 static void setBase( TypeData *&type, TypeData * newType ) {
     653static void setBase( TypeData *&type, TypeData *newType ) {
    671654        if ( type ) {
    672                 TypeData * prevBase = type;
    673                 TypeData * curBase = type->base;
    674                 while ( curBase != nullptr ) {
     655                TypeData *prevBase = type;
     656                TypeData *curBase = type->base;
     657                while ( curBase != 0 ) {
    675658                        prevBase = curBase;
    676659                        curBase = curBase->base;
     
    682665}
    683666
    684 DeclarationNode * DeclarationNode::addPointer( DeclarationNode * p ) {
     667DeclarationNode *DeclarationNode::addPointer( DeclarationNode *p ) {
    685668        if ( p ) {
    686669                assert( p->type->kind == TypeData::Pointer );
    687670                setBase( type, p->type );
    688                 p->type = nullptr;
     671                p->type = 0;
    689672                delete p;
    690673        } // if
     
    692675}
    693676
    694 DeclarationNode * DeclarationNode::addArray( DeclarationNode * a ) {
     677DeclarationNode *DeclarationNode::addArray( DeclarationNode *a ) {
    695678        if ( a ) {
    696679                assert( a->type->kind == TypeData::Array );
    697680                setBase( type, a->type );
    698                 a->type = nullptr;
     681                a->type = 0;
    699682                delete a;
    700683        } // if
     
    702685}
    703686
    704 DeclarationNode * DeclarationNode::addNewPointer( DeclarationNode * p ) {
     687DeclarationNode *DeclarationNode::addNewPointer( DeclarationNode *p ) {
    705688        if ( p ) {
    706689                assert( p->type->kind == TypeData::Pointer );
     
    720703                                p->type->base = type;
    721704                        } // switch
    722                         type = nullptr;
     705                        type = 0;
    723706                } // if
    724707                delete this;
     
    729712}
    730713
    731 static TypeData * findLast( TypeData * a ) {
     714static TypeData *findLast( TypeData *a ) {
    732715        assert( a );
    733         TypeData * cur = a;
     716        TypeData *cur = a;
    734717        while ( cur->base ) {
    735718                cur = cur->base;
     
    738721}
    739722
    740 DeclarationNode * DeclarationNode::addNewArray( DeclarationNode * a ) {
     723DeclarationNode *DeclarationNode::addNewArray( DeclarationNode *a ) {
    741724        if ( a ) {
    742725                assert( a->type->kind == TypeData::Array );
    743                 TypeData * lastArray = findLast( a->type );
     726                TypeData *lastArray = findLast( a->type );
    744727                if ( type ) {
    745728                        switch ( type->kind ) {
     
    756739                                lastArray->base = type;
    757740                        } // switch
    758                         type = nullptr;
     741                        type = 0;
    759742                } // if
    760743                delete this;
     
    765748}
    766749
    767 DeclarationNode * DeclarationNode::addParamList( DeclarationNode * params ) {
    768         TypeData * ftype = new TypeData( TypeData::Function );
     750DeclarationNode *DeclarationNode::addParamList( DeclarationNode *params ) {
     751        TypeData *ftype = new TypeData( TypeData::Function );
    769752        ftype->function.params = params;
    770753        setBase( type, ftype );
     
    772755}
    773756
    774 static TypeData * addIdListToType( TypeData * type, DeclarationNode * ids ) {
     757static TypeData *addIdListToType( TypeData *type, DeclarationNode *ids ) {
    775758        if ( type ) {
    776759                if ( type->kind != TypeData::Function ) {
     
    781764                return type;
    782765        } else {
    783                 TypeData * newtype = new TypeData( TypeData::Function );
     766                TypeData *newtype = new TypeData( TypeData::Function );
    784767                newtype->function.idList = ids;
    785768                return newtype;
    786769        } // if
    787 } // addIdListToType
    788 
    789 DeclarationNode * DeclarationNode::addIdList( DeclarationNode * ids ) {
     770}
     771
     772DeclarationNode *DeclarationNode::addIdList( DeclarationNode *ids ) {
    790773        type = addIdListToType( type, ids );
    791774        return this;
    792775}
    793776
    794 DeclarationNode * DeclarationNode::addInitializer( InitializerNode * init ) {
     777DeclarationNode *DeclarationNode::addInitializer( InitializerNode *init ) {
     778        //assert
    795779        initializer = init;
    796780        return this;
    797781}
    798782
    799 DeclarationNode * DeclarationNode::cloneType( string * newName ) {
    800         DeclarationNode * newnode = new DeclarationNode;
     783DeclarationNode *DeclarationNode::cloneBaseType( string *newName ) {
     784        DeclarationNode *newnode = new DeclarationNode;
     785        TypeData *srcType = type;
     786        while ( srcType->base ) {
     787                srcType = srcType->base;
     788        } // while
     789        newnode->type = maybeClone( srcType );
     790        if ( newnode->type->kind == TypeData::AggregateInst ) {
     791                // don't duplicate members
     792                if ( newnode->type->aggInst.aggregate->kind == TypeData::Enum ) {
     793                        delete newnode->type->aggInst.aggregate->enumeration.constants;
     794                        newnode->type->aggInst.aggregate->enumeration.constants = 0;
     795                } else {
     796                        assert( newnode->type->aggInst.aggregate->kind == TypeData::Aggregate );
     797                        delete newnode->type->aggInst.aggregate->aggregate.fields;
     798                        newnode->type->aggInst.aggregate->aggregate.fields = 0;
     799                } // if
     800        } // if
     801        newnode->type->forall = maybeClone( type->forall );
     802        assert( storageClass == NoStorageClass );
     803        newnode->copyStorageClasses( this );
     804        newnode->name = assign_strptr( newName );
     805        return newnode;
     806}
     807
     808DeclarationNode *DeclarationNode::cloneBaseType( DeclarationNode *o ) {
     809        if ( o ) {
     810                o->copyStorageClasses( this );
     811                if ( type ) {
     812                        TypeData *srcType = type;
     813                        while ( srcType->base ) {
     814                                srcType = srcType->base;
     815                        } // while
     816                        TypeData *newType = srcType->clone();
     817                        if ( newType->kind == TypeData::AggregateInst ) {
     818                                // don't duplicate members
     819                                if ( newType->aggInst.aggregate->kind == TypeData::Enum ) {
     820                                        delete newType->aggInst.aggregate->enumeration.constants;
     821                                        newType->aggInst.aggregate->enumeration.constants = 0;
     822                                } else {
     823                                        assert( newType->aggInst.aggregate->kind == TypeData::Aggregate );
     824                                        delete newType->aggInst.aggregate->aggregate.fields;
     825                                        newType->aggInst.aggregate->aggregate.fields = 0;
     826                                } // if
     827                        } // if
     828                        newType->forall = maybeClone( type->forall );
     829                        if ( ! o->type ) {
     830                                o->type = newType;
     831                        } else {
     832                                addTypeToType( newType, o->type );
     833                                delete newType;
     834                        } // if
     835                } // if
     836        } // if
     837        return o;
     838}
     839
     840DeclarationNode *DeclarationNode::cloneType( string *newName ) {
     841        DeclarationNode *newnode = new DeclarationNode;
    801842        newnode->type = maybeClone( type );
    802843        assert( storageClass == NoStorageClass );
    803844        newnode->copyStorageClasses( this );
    804         assert( newName );
    805         newnode->name = newName;
    806         return newnode;
    807 }
    808 
    809 DeclarationNode * DeclarationNode::cloneBaseType( DeclarationNode * o ) {
    810         if ( ! o ) return nullptr;
    811 
    812         o->copyStorageClasses( this );
     845        newnode->name = assign_strptr( newName );
     846        return newnode;
     847}
     848
     849DeclarationNode *DeclarationNode::cloneType( DeclarationNode *o ) {
     850        if ( o ) {
     851                assert( storageClass == NoStorageClass );
     852                o->copyStorageClasses( this );
     853                if ( type ) {
     854                        TypeData *newType = type->clone();
     855                        if ( ! o->type ) {
     856                                o->type = newType;
     857                        } else {
     858                                addTypeToType( newType, o->type );
     859                                delete newType;
     860                        } // if
     861                } // if
     862        } // if
     863        delete o;
     864        return o;
     865}
     866
     867DeclarationNode *DeclarationNode::extractAggregate() const {
    813868        if ( type ) {
    814                 TypeData * srcType = type;
    815 
    816                 while ( srcType->base ) {
    817                         srcType = srcType->base;
    818                 } // while
    819 
    820                 TypeData * newType = srcType->clone();
    821                 if ( newType->kind == TypeData::AggregateInst ) {
    822                         // don't duplicate members
    823                         if ( newType->aggInst.aggregate->kind == TypeData::Enum ) {
    824                                 delete newType->aggInst.aggregate->enumeration.constants;
    825                                 newType->aggInst.aggregate->enumeration.constants = nullptr;
    826                         } else {
    827                                 assert( newType->aggInst.aggregate->kind == TypeData::Aggregate );
    828                                 delete newType->aggInst.aggregate->aggregate.fields;
    829                                 newType->aggInst.aggregate->aggregate.fields = nullptr;
    830                         } // if
    831                 } // if
    832 
    833                 newType->forall = maybeClone( type->forall );
    834                 if ( ! o->type ) {
    835                         o->type = newType;
    836                 } else {
    837                         addTypeToType( newType, o->type );
    838                         delete newType;
    839                 } // if
    840         } // if
    841         return o;
    842 }
    843 
    844 DeclarationNode * DeclarationNode::extractAggregate() const {
    845         if ( type ) {
    846                 TypeData * ret = typeextractAggregate( type );
     869                TypeData *ret = typeextractAggregate( type );
    847870                if ( ret ) {
    848                         DeclarationNode * newnode = new DeclarationNode;
     871                        DeclarationNode *newnode = new DeclarationNode;
    849872                        newnode->type = ret;
    850873                        return newnode;
    851874                } // if
    852875        } // if
    853         return nullptr;
    854 }
    855 
    856 void buildList( const DeclarationNode * firstNode, std::list< Declaration * > &outputList ) {
     876        return 0;
     877}
     878
     879void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ) {
    857880        SemanticError errors;
    858881        std::back_insert_iterator< std::list< Declaration * > > out( outputList );
    859         const DeclarationNode * cur = firstNode;
    860 
     882        const DeclarationNode *cur = firstNode;
    861883        while ( cur ) {
    862884                try {
    863                         if ( DeclarationNode * extr = cur->extractAggregate() ) {
     885                        if ( DeclarationNode *extr = cur->extractAggregate() ) {
    864886                                // handle the case where a structure declaration is contained within an object or type declaration
    865                                 Declaration * decl = extr->build();
     887                                Declaration *decl = extr->build();
    866888                                if ( decl ) {
    867                                         * out++ = decl;
     889                                        *out++ = decl;
    868890                                } // if
    869891                                delete extr;
    870892                        } // if
    871 
    872                         Declaration * decl = cur->build();
     893                        Declaration *decl = cur->build();
    873894                        if ( decl ) {
    874                                 * out++ = decl;
     895                                *out++ = decl;
    875896                        } // if
    876897                } catch( SemanticError &e ) {
     
    879900                cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
    880901        } // while
    881 
    882902        if ( ! errors.isEmpty() ) {
    883903                throw errors;
    884904        } // if
    885 } // buildList
    886 
    887 void buildList( const DeclarationNode * firstNode, std::list< DeclarationWithType * > &outputList ) {
     905}
     906
     907void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList ) {
    888908        SemanticError errors;
    889909        std::back_insert_iterator< std::list< DeclarationWithType * > > out( outputList );
    890         const DeclarationNode * cur = firstNode;
     910        const DeclarationNode *cur = firstNode;
    891911        while ( cur ) {
    892912                try {
    893                         Declaration * decl = cur->build();
     913                        Declaration *decl = cur->build();
    894914                        if ( decl ) {
    895                                 if ( DeclarationWithType * dwt = dynamic_cast< DeclarationWithType * >( decl ) ) {
    896                                         * out++ = dwt;
    897                                 } else if ( StructDecl * agg = dynamic_cast< StructDecl * >( decl ) ) {
    898                                         StructInstType * inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
    899                                         * out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
     915                                if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( decl ) ) {
     916                                        *out++ = dwt;
     917                                } else if ( StructDecl *agg = dynamic_cast< StructDecl * >( decl ) ) {
     918                                        StructInstType *inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
     919                                        *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
    900920                                        delete agg;
    901                                 } else if ( UnionDecl * agg = dynamic_cast< UnionDecl * >( decl ) ) {
    902                                         UnionInstType * inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
    903                                         * out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
     921                                } else if ( UnionDecl *agg = dynamic_cast< UnionDecl * >( decl ) ) {
     922                                        UnionInstType *inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
     923                                        *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
    904924                                } // if
    905925                        } // if
     
    912932                throw errors;
    913933        } // if
    914 } // buildList
    915 
    916 void buildTypeList( const DeclarationNode * firstNode, std::list< Type * > &outputList ) {
     934}
     935
     936void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList ) {
    917937        SemanticError errors;
    918938        std::back_insert_iterator< std::list< Type * > > out( outputList );
    919         const DeclarationNode * cur = firstNode;
    920 
     939        const DeclarationNode *cur = firstNode;
    921940        while ( cur ) {
    922941                try {
    923                         * out++ = cur->buildType();
     942                        *out++ = cur->buildType();
    924943                } catch( SemanticError &e ) {
    925944                        errors.append( e );
     
    927946                cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
    928947        } // while
    929 
    930948        if ( ! errors.isEmpty() ) {
    931949                throw errors;
    932950        } // if
    933 } // buildTypeList
    934 
    935 Declaration * DeclarationNode::build() const {
     951}
     952
     953Declaration *DeclarationNode::build() const {
    936954        if ( ! error.empty() ) throw SemanticError( error + " in declaration of ", this );
    937 
    938 //      if ( variable.name ) {
    939         if ( variable.tyClass != NoTypeClass ) {
    940                 static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype };
    941 //              TypeDecl * ret = new TypeDecl( *variable.name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
    942                 TypeDecl * ret = new TypeDecl( *name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
    943                 buildList( variable.assertions, ret->get_assertions() );
    944                 return ret;
    945         } // if
    946 
    947955        if ( type ) {
    948                 return buildDecl( type, name ? *name : string( "" ), storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
    949         } // if
    950 
     956                if ( type->kind == TypeData::Variable ) {
     957                        static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype };
     958                        TypeDecl * ret = new TypeDecl( variable.name, DeclarationNode::NoStorageClass, 0, kindMap[ variable.tyClass ] );
     959                        buildList( variable.assertions, ret->get_assertions() );
     960                        return ret;
     961                } else {
     962                        return buildDecl( type, name, storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
     963                } // if
     964        } // if
    951965        if ( ! isInline && ! isNoreturn ) {
    952                 assertf( name, "ObjectDecl are assumed to have names\n" );
    953                 return (new ObjectDecl( *name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), nullptr, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
    954         } // if
    955 
     966                return (new ObjectDecl( name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
     967        } // if
    956968        throw SemanticError( "invalid function specifier ", this );
    957969}
    958970
    959 Type * DeclarationNode::buildType() const {
     971Type *DeclarationNode::buildType() const {
    960972        assert( type );
    961 
    962         if ( attr.expr ) {
    963 //              return new AttrType( buildQualifiers( type ), *attr.name, attr.expr->build() );
    964                 return new AttrType( buildQualifiers( type ), *name, attr.expr->build() );
    965         } else if ( attr.type ) {
    966 //              return new AttrType( buildQualifiers( type ), *attr.name, attr.type->buildType() );
    967                 return new AttrType( buildQualifiers( type ), *name, attr.type->buildType() );
    968         } // if
    969973
    970974        switch ( type->kind ) {
    971975          case TypeData::Enum:
    972                 return new EnumInstType( buildQualifiers( type ), *type->enumeration.name );
     976                return new EnumInstType( buildQualifiers( type ), type->enumeration.name );
    973977          case TypeData::Aggregate: {
    974                   ReferenceToType * ret;
     978                  ReferenceToType *ret;
    975979                  switch ( type->aggregate.kind ) {
    976980                        case DeclarationNode::Struct:
    977                           ret = new StructInstType( buildQualifiers( type ), *type->aggregate.name );
     981                          ret = new StructInstType( buildQualifiers( type ), type->aggregate.name );
    978982                          break;
    979983                        case DeclarationNode::Union:
    980                           ret = new UnionInstType( buildQualifiers( type ), *type->aggregate.name );
     984                          ret = new UnionInstType( buildQualifiers( type ), type->aggregate.name );
    981985                          break;
    982986                        case DeclarationNode::Trait:
    983                           ret = new TraitInstType( buildQualifiers( type ), *type->aggregate.name );
     987                          ret = new TraitInstType( buildQualifiers( type ), type->aggregate.name );
    984988                          break;
    985989                        default:
     
    990994          }
    991995          case TypeData::Symbolic: {
    992                   TypeInstType * ret = new TypeInstType( buildQualifiers( type ), *type->symbolic.name, false );
     996                  TypeInstType *ret = new TypeInstType( buildQualifiers( type ), type->symbolic.name, false );
    993997                  buildList( type->symbolic.actuals, ret->get_parameters() );
     998                  return ret;
     999          }
     1000          case TypeData::Attr: {
     1001                  assert( type->kind == TypeData::Attr );
     1002                  // assert( type->attr );
     1003                  AttrType * ret;
     1004                  if ( attr.expr ) {
     1005                          ret = new AttrType( buildQualifiers( type ), attr.name, attr.expr->build() );
     1006                  } else {
     1007                          assert( attr.type );
     1008                          ret = new AttrType( buildQualifiers( type ), attr.name, attr.type->buildType() );
     1009                  } // if
    9941010                  return ret;
    9951011          }
  • src/Parser/ExpressionNode.cc

    r7756647 rac9ca967  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Sep 16 16:27:44 2016
    13 // Update Count     : 508
     12// Last Modified On : Thu Aug 25 21:39:40 2016
     13// Update Count     : 503
    1414//
    1515
     
    3131
    3232using namespace std;
     33
     34ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.get_name() ), extension( other.extension ) {}
    3335
    3436//##############################################################################
  • src/Parser/InitializerNode.cc

    r7756647 rac9ca967  
    1010// Created On       : Sat May 16 13:20:24 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Oct  1 23:09:51 2016
    13 // Update Count     : 21
     12// Last Modified On : Mon Aug 15 18:27:02 2016
     13// Update Count     : 20
    1414//
    1515
     
    2323
    2424InitializerNode::InitializerNode( ExpressionNode *_expr, bool aggrp, ExpressionNode *des )
    25                 : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
     25        : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    2626        if ( aggrp )
    2727                kids = dynamic_cast< InitializerNode * >( get_next() );
     
    3232
    3333InitializerNode::InitializerNode( InitializerNode *init, bool aggrp, ExpressionNode *des )
    34                 : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
     34        : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    3535        if ( init != 0 )
    3636                set_last( init );
     
    7979
    8080Initializer *InitializerNode::build() const {
     81        // if ( get_expression() == 0 ) return 0;  // XXX (?)
     82
    8183        if ( aggregate ) {
     84                //assert( next_init() != 0 );
     85
    8286                std::list< Initializer * > initlist;
    8387                buildList< Initializer, InitializerNode >( next_init(), initlist );
  • src/Parser/LinkageSpec.cc

    r7756647 rac9ca967  
    1010// Created On       : Sat May 16 13:22:09 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Oct  2 23:16:21 2016
    13 // Update Count     : 23
     12// Last Modified On : Sun Aug 21 12:32:53 2016
     13// Update Count     : 17
    1414//
    1515
     
    1717#include <string>
    1818#include <cassert>
    19 using namespace std;
    2019
    2120#include "LinkageSpec.h"
    2221#include "Common/SemanticError.h"
    2322
    24 LinkageSpec::Spec LinkageSpec::linkageCheck( const string * spec ) {
    25         unique_ptr<const string> guard( spec ); // allocated by lexer
    26         if ( *spec == "\"Cforall\"" ) {
     23LinkageSpec::Spec LinkageSpec::fromString( const std::string &spec ) {
     24        std::unique_ptr<const std::string> guard(&spec);                // allocated by lexer
     25        if ( spec == "\"Cforall\"" ) {
    2726                return Cforall;
    28         } else if ( *spec == "\"C\"" ) {
     27        } else if ( spec == "\"C\"" ) {
    2928                return C;
    3029        } else {
    31                 throw SemanticError( "Invalid linkage specifier " + *spec );
     30                throw SemanticError( "Invalid linkage specifier " + spec );
    3231        } // if
    3332}
    3433
    35 string LinkageSpec::linkageName( LinkageSpec::Spec linkage ) {
    36         assert( 0 <= linkage && linkage < LinkageSpec::NoOfSpecs );
     34std::string LinkageSpec::toString( LinkageSpec::Spec linkage ) {
     35        assert( linkage >= 0 && linkage < LinkageSpec::NoOfSpecs );
    3736        static const char *linkageKinds[LinkageSpec::NoOfSpecs] = {
    3837                "intrinsic", "Cforall", "C", "automatically generated", "compiler built-in",
     
    4241
    4342bool LinkageSpec::isDecoratable( Spec spec ) {
    44         assert( 0 <= spec && spec < LinkageSpec::NoOfSpecs );
     43        assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs );
    4544        static bool decoratable[LinkageSpec::NoOfSpecs] = {
    4645                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     
    5150
    5251bool LinkageSpec::isGeneratable( Spec spec ) {
    53         assert( 0 <= spec && spec < LinkageSpec::NoOfSpecs );
     52        assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs );
    5453        static bool generatable[LinkageSpec::NoOfSpecs] = {
    5554                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
  • src/Parser/LinkageSpec.h

    r7756647 rac9ca967  
    1010// Created On       : Sat May 16 13:24:28 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Oct  1 23:03:17 2016
    13 // Update Count     : 11
     12// Last Modified On : Sat Aug 20 19:22:23 2016
     13// Update Count     : 8
    1414//
    1515
     
    2929        };
    3030 
    31         static Spec linkageCheck( const std::string * );
    32         static std::string linkageName( Spec );
     31        static Spec fromString( const std::string & );
     32        static std::string toString( Spec );
    3333 
    3434        static bool isDecoratable( Spec );
  • src/Parser/ParseNode.cc

    r7756647 rac9ca967  
    1010// Created On       : Sat May 16 13:26:29 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Oct  1 23:10:43 2016
    13 // Update Count     : 127
     12// Last Modified On : Wed Aug 17 23:14:16 2016
     13// Update Count     : 126
    1414//
    1515
     
    2020
    2121std::ostream & operator<<( std::ostream & out, const ParseNode * node ) {
    22         node->print( out );
    23         return out;
     22  node->print( out );
     23  return out;
    2424}
    2525
  • src/Parser/ParseNode.h

    r7756647 rac9ca967  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Oct  3 18:03:08 2016
    13 // Update Count     : 636
     12// Last Modified On : Mon Sep 12 08:00:05 2016
     13// Update Count     : 603
    1414//
    1515
     
    4141  public:
    4242        ParseNode() {};
    43         virtual ~ParseNode() { delete next; delete name; };
     43        ParseNode( const std::string * name ) : name( * name ) { assert( false ); delete name; }
     44        ParseNode( const std::string &name ) : name( name ) { assert( false ); }
     45        virtual ~ParseNode() { delete next; };
    4446        virtual ParseNode * clone() const = 0;
    4547
    4648        ParseNode * get_next() const { return next; }
    4749        ParseNode * set_next( ParseNode * newlink ) { next = newlink; return this; }
    48 
    4950        ParseNode * get_last() {
    5051                ParseNode * current;
    51                 for ( current = this; current->get_next() != nullptr; current = current->get_next() );
     52                for ( current = this; current->get_next() != 0; current = current->get_next() );
    5253                return current;
    5354        }
    5455        ParseNode * set_last( ParseNode * newlast ) {
    55                 if ( newlast != nullptr ) get_last()->set_next( newlast );
     56                if ( newlast != 0 ) get_last()->set_next( newlast );
    5657                return this;
    5758        }
     59
     60        const std::string &get_name() const { return name; }
     61        void set_name( const std::string &newValue ) { name = newValue; }
    5862
    5963        virtual void print( std::ostream &os, int indent = 0 ) const {}
    6064        virtual void printList( std::ostream &os, int indent = 0 ) const {}
    61 
     65  private:
    6266        static int indent_by;
    6367
    6468        ParseNode * next = nullptr;
    65         std::string * name = nullptr;
     69        std::string name;
    6670}; // ParseNode
    6771
     
    7074class InitializerNode : public ParseNode {
    7175  public:
    72         InitializerNode( ExpressionNode *, bool aggrp = false,  ExpressionNode * des = nullptr );
    73         InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode * des = nullptr );
     76        InitializerNode( ExpressionNode *, bool aggrp = false,  ExpressionNode * des = 0 );
     77        InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode * des = 0 );
    7478        ~InitializerNode();
    7579        virtual InitializerNode * clone() const { assert( false ); return nullptr; }
     
    102106  public:
    103107        ExpressionNode( Expression * expr = nullptr ) : expr( expr ) {}
     108        ExpressionNode( Expression * expr, const std::string * name ) : ParseNode( name ), expr( expr ) {}
    104109        ExpressionNode( const ExpressionNode &other );
    105110        virtual ~ExpressionNode() {}
     
    178183Expression * build_attrexpr( NameExpr * var, ExpressionNode * expr_node );
    179184Expression * build_attrtype( NameExpr * var, DeclarationNode * decl_node );
    180 Expression * build_tuple( ExpressionNode * expr_node = nullptr );
     185Expression * build_tuple( ExpressionNode * expr_node = 0 );
    181186Expression * build_func( ExpressionNode * function, ExpressionNode * expr_node );
    182187Expression * build_range( ExpressionNode * low, ExpressionNode * high );
     
    198203        enum Signedness { Signed, Unsigned, NoSignedness };
    199204        enum Length { Short, Long, LongLong, NoLength };
    200         enum Aggregate { Struct, Union, Trait, NoAggregate };
    201         enum TypeClass { Otype, Dtype, Ftype, NoTypeClass };
     205        enum Aggregate { Struct, Union, Trait };
     206        enum TypeClass { Otype, Dtype, Ftype };
    202207        enum BuiltinType { Valist };
    203208
     
    214219        static DeclarationNode * newFunction( std::string * name, DeclarationNode * ret, DeclarationNode * param, StatementNode * body, bool newStyle = false );
    215220        static DeclarationNode * newQualifier( Qualifier );
    216         static DeclarationNode * newForall( DeclarationNode * );
     221        static DeclarationNode * newForall( DeclarationNode *);
    217222        static DeclarationNode * newStorageClass( StorageClass );
    218223        static DeclarationNode * newBasicType( BasicType );
     
    221226        static DeclarationNode * newLength( Length lnth );
    222227        static DeclarationNode * newBuiltinType( BuiltinType );
    223         static DeclarationNode * newFromTypedef( std::string * );
     228        static DeclarationNode * newFromTypedef( std::string *);
    224229        static DeclarationNode * newAggregate( Aggregate kind, const std::string * name, ExpressionNode * actuals, DeclarationNode * fields, bool body );
    225230        static DeclarationNode * newEnum( std::string * name, DeclarationNode * constants );
    226231        static DeclarationNode * newEnumConstant( std::string * name, ExpressionNode * constant );
    227         static DeclarationNode * newName( std::string * );
     232        static DeclarationNode * newName( std::string *);
    228233        static DeclarationNode * newFromTypeGen( std::string *, ExpressionNode * params );
    229         static DeclarationNode * newTypeParam( TypeClass, std::string * );
    230         static DeclarationNode * newTrait( const std::string * name, DeclarationNode * params, DeclarationNode * asserts );
    231         static DeclarationNode * newTraitUse( const std::string * name, ExpressionNode * params );
     234        static DeclarationNode * newTypeParam( TypeClass, std::string *);
     235        static DeclarationNode * newTrait( std::string * name, DeclarationNode * params, DeclarationNode * asserts );
     236        static DeclarationNode * newTraitUse( std::string * name, ExpressionNode * params );
    232237        static DeclarationNode * newTypeDecl( std::string * name, DeclarationNode * typeParams );
    233238        static DeclarationNode * newPointer( DeclarationNode * qualifiers );
     
    244249        DeclarationNode * clone() const;
    245250
    246         DeclarationNode * addQualifiers( DeclarationNode * );
     251        DeclarationNode * addQualifiers( DeclarationNode *);
    247252        void checkQualifiers( const TypeData *, const TypeData * );
    248         void checkStorageClasses( DeclarationNode * );
    249         DeclarationNode * copyStorageClasses( DeclarationNode * );
    250         DeclarationNode * addType( DeclarationNode * );
     253        void checkStorageClasses( DeclarationNode *q );
     254        DeclarationNode * copyStorageClasses( DeclarationNode *);
     255        DeclarationNode * addType( DeclarationNode *);
    251256        DeclarationNode * addTypedef();
    252         DeclarationNode * addAssertions( DeclarationNode * );
    253         DeclarationNode * addName( std::string * );
     257        DeclarationNode * addAssertions( DeclarationNode *);
     258        DeclarationNode * addName( std::string *);
    254259        DeclarationNode * addBitfield( ExpressionNode * size );
    255260        DeclarationNode * addVarArgs();
     
    265270
    266271        DeclarationNode * cloneType( std::string * newName );
     272        DeclarationNode * cloneType( DeclarationNode * existing );
     273        DeclarationNode * cloneType( int ) { return cloneType( ( std::string *)0 ); }
     274        DeclarationNode * cloneBaseType( std::string * newName );
    267275        DeclarationNode * cloneBaseType( DeclarationNode * newdecl );
    268276
     
    278286
    279287        bool get_hasEllipsis() const;
     288        const std::string &get_name() const { return name; }
    280289        LinkageSpec::Spec get_linkage() const { return linkage; }
    281290        DeclarationNode * extractAggregate() const;
     
    286295        DeclarationNode * set_extension( bool exten ) { extension = exten; return this; }
    287296  public:
     297        // StorageClass buildStorageClass() const;
     298        // bool buildFuncSpecifier( StorageClass key ) const;
     299
    288300        struct Variable_t {
    289 //              const std::string * name;
    290301                DeclarationNode::TypeClass tyClass;
     302                std::string name;
    291303                DeclarationNode * assertions;
    292304        };
     
    294306
    295307        struct Attr_t {
    296 //              const std::string * name;
     308                std::string name;
    297309                ExpressionNode * expr;
    298310                DeclarationNode * type;
     
    303315
    304316        TypeData * type;
     317        std::string name;
    305318        StorageClass storageClass;
    306319        bool isInline, isNoreturn;
     
    318331
    319332Type * buildType( TypeData * type );
     333//Type::Qualifiers buildQualifiers( const TypeData::Qualifiers & qualifiers );
    320334
    321335static inline Type * maybeMoveBuildType( const DeclarationNode * orig ) {
     
    379393Statement * build_finally( StatementNode * stmt );
    380394Statement * build_compound( StatementNode * first );
    381 Statement * build_asmstmt( bool voltile, ConstantExpr * instruction, ExpressionNode * output = nullptr, ExpressionNode * input = nullptr, ExpressionNode * clobber = nullptr, LabelNode * gotolabels = nullptr );
     395Statement * build_asmstmt( bool voltile, ConstantExpr * instruction, ExpressionNode * output = 0, ExpressionNode * input = 0, ExpressionNode * clobber = 0, LabelNode * gotolabels = 0 );
    382396
    383397//##############################################################################
  • src/Parser/TypeData.cc

    r7756647 rac9ca967  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Sep 24 11:14:26 2016
    13 // Update Count     : 415
     12// Last Modified On : Mon Sep 12 21:11:22 2016
     13// Update Count     : 377
    1414//
    1515
     
    2424#include "SynTree/Statement.h"
    2525#include "SynTree/Initializer.h"
    26 using namespace std;
    27 
    28 TypeData::TypeData( Kind k ) : kind( k ), base( nullptr ), forall( nullptr ) {
     26
     27TypeData::TypeData( Kind k ) : kind( k ), base( 0 ), forall( 0 ) {
    2928        switch ( kind ) {
    3029          case Unknown:
     
    3837          case Array:
    3938                // array = new Array_t;
    40                 array.dimension = nullptr;
     39                array.dimension = 0;
    4140                array.isVarLen = false;
    4241                array.isStatic = false;
     
    4443          case Function:
    4544                // function = new Function_t;
    46                 function.params = nullptr;
    47                 function.idList = nullptr;
    48                 function.oldDeclList = nullptr;
    49                 function.body = nullptr;
     45                function.params = 0;
     46                function.idList = 0;
     47                function.oldDeclList = 0;
     48                function.body = 0;
    5049                function.hasBody = false;
    5150                function.newStyle = false;
     
    5352          case Aggregate:
    5453                // aggregate = new Aggregate_t;
    55                 aggregate.name = nullptr;
    56                 aggregate.params = nullptr;
    57                 aggregate.actuals = nullptr;
    58                 aggregate.fields = nullptr;
     54                aggregate.params = 0;
     55                aggregate.actuals = 0;
     56                aggregate.fields = 0;
    5957                break;
    6058          case AggregateInst:
    6159                // aggInst = new AggInst_t;
    62                 aggInst.aggregate = nullptr;
    63                 aggInst.params = nullptr;
     60                aggInst.aggregate = 0;
     61                aggInst.params = 0;
    6462                break;
    6563          case Enum:
    6664                // enumeration = new Enumeration_t;
    67                 enumeration.name = nullptr;
    68                 enumeration.constants = nullptr;
     65                enumeration.constants = 0;
    6966                break;
    7067          case Symbolic:
    7168          case SymbolicInst:
    7269                // symbolic = new Symbolic_t;
    73                 symbolic.name = nullptr;
    74                 symbolic.params = nullptr;
    75                 symbolic.actuals = nullptr;
    76                 symbolic.assertions = nullptr;
     70                symbolic.params = 0;
     71                symbolic.actuals = 0;
     72                symbolic.assertions = 0;
     73                break;
     74          case Variable:
     75                // variable = new Variable_t;
     76                // variable.tyClass = DeclarationNode::Type;
     77                // variable.assertions = 0;
    7778                break;
    7879          case Tuple:
     
    8384                // typeexpr = new Typeof_t;
    8485                typeexpr = nullptr;
     86                break;
     87          case Attr:
     88                // attr = new Attr_t;
     89                // attr.expr = nullptr;
     90                // attr.type = nullptr;
    8591                break;
    8692          case Builtin:
     
    115121                break;
    116122          case Aggregate:
    117                 delete aggregate.name;
    118123                delete aggregate.params;
    119124                delete aggregate.actuals;
     
    127132                break;
    128133          case Enum:
    129                 delete enumeration.name;
    130134                delete enumeration.constants;
    131135                // delete enumeration;
     
    133137          case Symbolic:
    134138          case SymbolicInst:
    135                 delete symbolic.name;
    136139                delete symbolic.params;
    137140                delete symbolic.actuals;
     
    139142                // delete symbolic;
    140143                break;
     144          case Variable:
     145                // delete variable.assertions;
     146                // delete variable;
     147                break;
    141148          case Tuple:
    142149                // delete tuple->members;
     
    146153                // delete typeexpr->expr;
    147154                delete typeexpr;
     155                break;
     156          case Attr:
     157                // delete attr.expr;
     158                // delete attr.type;
     159                // delete attr;
    148160                break;
    149161          case Builtin:
     
    185197                break;
    186198          case Aggregate:
    187                 newtype->aggregate.name = aggregate.name ? new string( *aggregate.name ) : nullptr;
    188199                newtype->aggregate.params = maybeClone( aggregate.params );
    189200                newtype->aggregate.actuals = maybeClone( aggregate.actuals );
    190201                newtype->aggregate.fields = maybeClone( aggregate.fields );
     202                newtype->aggregate.name = aggregate.name;
    191203                newtype->aggregate.kind = aggregate.kind;
    192204                newtype->aggregate.body = aggregate.body;
     
    197209                break;
    198210          case Enum:
    199                 newtype->enumeration.name = enumeration.name ? new string( *enumeration.name ) : nullptr;
     211                newtype->enumeration.name = enumeration.name;
    200212                newtype->enumeration.constants = maybeClone( enumeration.constants );
    201213                break;
    202214          case Symbolic:
    203215          case SymbolicInst:
    204                 newtype->symbolic.name = symbolic.name ? new string( *symbolic.name ) : nullptr;
    205216                newtype->symbolic.params = maybeClone( symbolic.params );
    206217                newtype->symbolic.actuals = maybeClone( symbolic.actuals );
    207218                newtype->symbolic.assertions = maybeClone( symbolic.assertions );
    208219                newtype->symbolic.isTypedef = symbolic.isTypedef;
     220                newtype->symbolic.name = symbolic.name;
     221                break;
     222          case Variable:
     223                assert( false );
     224                // newtype->variable.assertions = maybeClone( variable.assertions );
     225                // newtype->variable.name = variable.name;
     226                // newtype->variable.tyClass = variable.tyClass;
    209227                break;
    210228          case Tuple:
     
    213231          case Typeof:
    214232                newtype->typeexpr = maybeClone( typeexpr );
     233                break;
     234          case Attr:
     235                assert( false );
     236                // newtype->attr.expr = maybeClone( attr.expr );
     237                // newtype->attr.type = maybeClone( attr.type );
    215238                break;
    216239          case Builtin:
     
    222245} // TypeData::clone
    223246
    224 void TypeData::print( ostream &os, int indent ) const {
     247void TypeData::print( std::ostream &os, int indent ) const {
     248        using std::endl;
     249        using std::string;
     250
    225251        for ( int i = 0; i < DeclarationNode::NoQualifier; i += 1 ) {
    226252                if ( qualifiers[i] ) os << DeclarationNode::qualifierName[ i ] << ' ';
     
    300326                break;
    301327          case Aggregate:
    302                 os << DeclarationNode::aggregateName[ aggregate.kind ] << ' ' << *aggregate.name << endl;
     328                os << DeclarationNode::aggregateName[ aggregate.kind ] << ' ' << aggregate.name << endl;
    303329                if ( aggregate.params ) {
    304330                        os << string( indent + 2, ' ' ) << "with type parameters " << endl;
     
    337363                break;
    338364          case SymbolicInst:
    339                 os << "instance of type " << *symbolic.name;
     365                os << "instance of type " << symbolic.name;
    340366                if ( symbolic.actuals ) {
    341367                        os << " with parameters" << endl;
     
    363389                } // if
    364390                break;
     391          case Variable:
     392                // os << DeclarationNode::typeClassName[ variable.tyClass ] << " variable ";
     393                // if ( variable.assertions ) {
     394                //      os << endl << string( indent + 2, ' ' ) << "with assertions" << endl;
     395                //      variable.assertions->printList( os, indent + 4 );
     396                //      os << string( indent + 2, ' ' );
     397                // } // if
     398                break;
    365399          case Tuple:
    366400                os << "tuple ";
     
    375409                        typeexpr->print( os, indent + 2 );
    376410                } // if
     411                break;
     412          case Attr:
     413                // os << "attribute type decl " << attr.name << " applied to ";
     414                // if ( attr.expr ) {
     415                //      attr.expr->print( os, indent + 2 );
     416                // } // if
     417                // if ( attr.type ) {
     418                //      attr.type->print( os, indent + 2 );
     419                // } // if
    377420                break;
    378421          case Builtin:
     
    394437                        // add dtor:  void ^?{}(T *)
    395438                        FunctionType * dtorType = new FunctionType( Type::Qualifiers(), false );
    396                         dtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
    397                         td->get_assertions().push_front( new FunctionDecl( "^?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, dtorType, nullptr, false, false ) );
     439                        dtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), td ) ), 0 ) );
     440                        td->get_assertions().push_front( new FunctionDecl( "^?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, dtorType, 0, false, false ) );
    398441
    399442                        // add copy ctor:  void ?{}(T *, T)
    400443                        FunctionType * copyCtorType = new FunctionType( Type::Qualifiers(), false );
    401                         copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
    402                         copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), td->get_name(), *i ), nullptr ) );
    403                         td->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, copyCtorType, nullptr, false, false ) );
     444                        copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), td ) ), 0 ) );
     445                        copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), td->get_name(), td ), 0 ) );
     446                        td->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, copyCtorType, 0, false, false ) );
    404447
    405448                        // add default ctor:  void ?{}(T *)
    406449                        FunctionType * ctorType = new FunctionType( Type::Qualifiers(), false );
    407                         ctorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
    408                         td->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, ctorType, nullptr, false, false ) );
     450                        ctorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), td ) ), 0 ) );
     451                        td->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, ctorType, 0, false, false ) );
    409452
    410453                        // add assignment operator:  T * ?=?(T *, T)
    411454                        FunctionType * assignType = new FunctionType( Type::Qualifiers(), false );
    412                         assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
    413                         assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), td->get_name(), *i ), nullptr ) );
    414                         assignType->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), td->get_name(), *i ), nullptr ) );
    415                         td->get_assertions().push_front( new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, assignType, nullptr, false, false ) );
     455                        assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), td ) ), 0 ) );
     456                        assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), td->get_name(), td ), 0 ) );
     457                        assignType->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), td->get_name(), td ), 0 ) );
     458                        td->get_assertions().push_front( new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, assignType, 0, false, false ) );
    416459                } // if
    417460        } // for
     
    445488          case TypeData::Builtin:
    446489                return new VarArgsType( buildQualifiers( td ) );
     490          case TypeData::Attr:
     491                assert( false );
     492                return buildAttr( td );
    447493          case TypeData::Symbolic:
    448494          case TypeData::Enum:
    449495          case TypeData::Aggregate:
     496          case TypeData::Variable:
    450497                assert( false );
    451498        } // switch
    452         return nullptr;
     499        return 0;
    453500} // typebuild
    454501
    455502TypeData * typeextractAggregate( const TypeData * td, bool toplevel ) {
    456         TypeData * ret = nullptr;
     503        TypeData * ret = 0;
    457504
    458505        switch ( td->kind ) {
     
    504551          case DeclarationNode::Bool:
    505552                if ( td->signedness != DeclarationNode::NoSignedness ) {
    506                         throw SemanticError( string( "invalid type specifier " ) + DeclarationNode::signednessName[ td->signedness ] + " in type: ", td );
     553                        throw SemanticError( std::string( "invalid type specifier " ) + DeclarationNode::signednessName[ td->signedness ] + " in type: ", td );
    507554                } // if
    508555                if ( td->length != DeclarationNode::NoLength ) {
    509                         throw SemanticError( string( "invalid type specifier " ) + DeclarationNode::lengthName[ td->length ] + " in type: ", td );
     556                        throw SemanticError( std::string( "invalid type specifier " ) + DeclarationNode::lengthName[ td->length ] + " in type: ", td );
    510557                } // if
    511558
     
    520567
    521568                if ( td->length != DeclarationNode::NoLength ) {
    522                         throw SemanticError( string( "invalid type specifier " ) + DeclarationNode::lengthName[ td->length ] + " in type: ", td );
     569                        throw SemanticError( std::string( "invalid type specifier " ) + DeclarationNode::lengthName[ td->length ] + " in type: ", td );
    523570                } // if
    524571
     
    550597          FloatingPoint: ;
    551598                if ( td->signedness != DeclarationNode::NoSignedness ) {
    552                         throw SemanticError( string( "invalid type specifier " ) + DeclarationNode::signednessName[ td->signedness ] + " in type: ", td );
     599                        throw SemanticError( std::string( "invalid type specifier " ) + DeclarationNode::signednessName[ td->signedness ] + " in type: ", td );
    553600                } // if
    554601                if ( td->length == DeclarationNode::Short || td->length == DeclarationNode::LongLong ) {
    555                         throw SemanticError( string( "invalid type specifier " ) + DeclarationNode::lengthName[ td->length ] + " in type: ", td );
     602                        throw SemanticError( std::string( "invalid type specifier " ) + DeclarationNode::lengthName[ td->length ] + " in type: ", td );
    556603                } // if
    557604                if ( td->basictype == DeclarationNode::Float && td->length == DeclarationNode::Long ) {
     
    610657        switch ( td->aggregate.kind ) {
    611658          case DeclarationNode::Struct:
    612                 at = new StructDecl( *td->aggregate.name );
     659                at = new StructDecl( td->aggregate.name );
    613660                buildForall( td->aggregate.params, at->get_parameters() );
    614661                break;
    615662          case DeclarationNode::Union:
    616                 at = new UnionDecl( *td->aggregate.name );
     663                at = new UnionDecl( td->aggregate.name );
    617664                buildForall( td->aggregate.params, at->get_parameters() );
    618665                break;
    619666          case DeclarationNode::Trait:
    620                 at = new TraitDecl( *td->aggregate.name );
     667                at = new TraitDecl( td->aggregate.name );
    621668                buildList( td->aggregate.params, at->get_parameters() );
    622669                break;
     
    636683        ReferenceToType * ret;
    637684        if ( td->aggInst.aggregate->kind == TypeData::Enum ) {
    638                 ret = new EnumInstType( buildQualifiers( td ), *td->aggInst.aggregate->enumeration.name );
     685                ret = new EnumInstType( buildQualifiers( td ), td->aggInst.aggregate->enumeration.name );
    639686        } else {
    640687                assert( td->aggInst.aggregate->kind == TypeData::Aggregate );
    641688                switch ( td->aggInst.aggregate->aggregate.kind ) {
    642689                  case DeclarationNode::Struct:
    643                         assert( td->aggInst.aggregate->aggregate.name );
    644                         ret = new StructInstType( buildQualifiers( td ), *td->aggInst.aggregate->aggregate.name );
     690                        ret = new StructInstType( buildQualifiers( td ), td->aggInst.aggregate->aggregate.name );
    645691                        break;
    646692                  case DeclarationNode::Union:
    647                         ret = new UnionInstType( buildQualifiers( td ), *td->aggInst.aggregate->aggregate.name );
     693                        ret = new UnionInstType( buildQualifiers( td ), td->aggInst.aggregate->aggregate.name );
    648694                        break;
    649695                  case DeclarationNode::Trait:
    650                         ret = new TraitInstType( buildQualifiers( td ), *td->aggInst.aggregate->aggregate.name );
     696                        ret = new TraitInstType( buildQualifiers( td ), td->aggInst.aggregate->aggregate.name );
    651697                        break;
    652698                  default:
     
    659705} // buildAggInst
    660706
    661 NamedTypeDecl * buildSymbolic( const TypeData * td, const string & name, DeclarationNode::StorageClass sc ) {
     707NamedTypeDecl * buildSymbolic( const TypeData * td, const std::string & name, DeclarationNode::StorageClass sc ) {
    662708        assert( td->kind == TypeData::Symbolic );
    663709        NamedTypeDecl * ret;
     
    673719} // buildSymbolic
    674720
     721TypeDecl * buildVariable( const TypeData * td ) {
     722        assert( false );
     723        return nullptr;
     724        // assert( td->kind == TypeData::Variable );
     725        // static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype };
     726
     727        // TypeDecl * ret = new TypeDecl( td->variable.name, DeclarationNode::NoStorageClass, 0, kindMap[ td->variable.tyClass ] );
     728        // buildList( td->variable.assertions, ret->get_assertions() );
     729        // return ret;
     730} // buildSymbolic
     731
    675732EnumDecl * buildEnum( const TypeData * td ) {
    676733        assert( td->kind == TypeData::Enum );
    677         EnumDecl * ret = new EnumDecl( *td->enumeration.name );
     734        EnumDecl * ret = new EnumDecl( td->enumeration.name );
    678735        buildList( td->enumeration.constants, ret->get_members() );
    679         list< Declaration * >::iterator members = ret->get_members().begin();
     736        std::list< Declaration * >::iterator members = ret->get_members().begin();
    680737        for ( const DeclarationNode * cur = td->enumeration. constants; cur != nullptr; cur = dynamic_cast< DeclarationNode * >( cur->get_next() ), ++members ) {
    681738                if ( cur->has_enumeratorValue() ) {
    682739                        ObjectDecl * member = dynamic_cast< ObjectDecl * >(* members);
    683                         member->set_init( new SingleInit( maybeMoveBuild< Expression >( cur->consume_enumeratorValue() ), list< Expression * >() ) );
     740                        member->set_init( new SingleInit( maybeMoveBuild< Expression >( cur->consume_enumeratorValue() ), std::list< Expression * >() ) );
    684741                } // if
    685742        } // for
     
    689746TypeInstType * buildSymbolicInst( const TypeData * td ) {
    690747        assert( td->kind == TypeData::SymbolicInst );
    691         TypeInstType * ret = new TypeInstType( buildQualifiers( td ), *td->symbolic.name, false );
     748        TypeInstType * ret = new TypeInstType( buildQualifiers( td ), td->symbolic.name, false );
    692749        buildList( td->symbolic.actuals, ret->get_parameters() );
    693750        buildForall( td->forall, ret->get_forall() );
     
    710767} // buildTypeof
    711768
    712 Declaration * buildDecl( const TypeData * td, const string &name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer * init ) {
     769AttrType * buildAttr( const TypeData * td ) {
     770        assert( false );
     771        return nullptr;
     772        // assert( td->kind == TypeData::Attr );
     773        // // assert( td->attr );
     774        // AttrType * ret;
     775        // if ( td->attr.expr ) {
     776        //      ret = new AttrType( buildQualifiers( td ), td->attr.name, td->attr.expr->build() );
     777        // } else {
     778        //      assert( td->attr.type );
     779        //      ret = new AttrType( buildQualifiers( td ), td->attr.name, td->attr.type->buildType() );
     780        // } // if
     781        // return ret;
     782} // buildAttr
     783
     784Declaration * buildDecl( const TypeData * td, std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer * init ) {
    713785        if ( td->kind == TypeData::Function ) {
    714786                FunctionDecl * decl;
     
    720792                                decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), body, isInline, isNoreturn );
    721793                        } else {
    722                                 // list< Label > ls;
    723                                 decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), new CompoundStmt( list< Label >() ), isInline, isNoreturn );
     794                                // std::list< Label > ls;
     795                                decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), new CompoundStmt( std::list< Label >() ), isInline, isNoreturn );
    724796                        } // if
    725797                } else {
    726                         decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), nullptr, isInline, isNoreturn );
    727                 } // if
    728                 for ( DeclarationNode * cur = td->function.idList; cur != nullptr; cur = dynamic_cast< DeclarationNode* >( cur->get_next() ) ) {
    729                         if ( cur->name ) {
    730                                 decl->get_oldIdents().insert( decl->get_oldIdents().end(), *cur->name );
     798                        decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), 0, isInline, isNoreturn );
     799                } // if
     800                for ( DeclarationNode * cur = td->function.idList; cur != 0; cur = dynamic_cast< DeclarationNode* >( cur->get_next() ) ) {
     801                        if ( cur->get_name() != "" ) {
     802                                decl->get_oldIdents().insert( decl->get_oldIdents().end(), cur->get_name() );
    731803                        } // if
    732804                } // for
     
    739811        } else if ( td->kind == TypeData::Symbolic ) {
    740812                return buildSymbolic( td, name, sc );
     813        } else if ( td->kind == TypeData::Variable ) {
     814                assert( false );
     815                return buildVariable( td );
    741816        } else {
    742                 return new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, list< Attribute * >(), isInline, isNoreturn );
     817                return new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, std::list< Attribute * >(), isInline, isNoreturn );
    743818        } // if
    744         return nullptr;
     819        return 0;
    745820} // buildDecl
    746821
     
    758833                        break;
    759834                  default:
    760                         ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base,  "", DeclarationNode::NoStorageClass, nullptr, false, false, LinkageSpec::Cforall ) ) );
     835                        ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base,  "", DeclarationNode::NoStorageClass, 0, false, false, LinkageSpec::Cforall ) ) );
    761836                } // switch
    762837        } else {
    763                 ft->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nullptr ) );
     838                ft->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), 0 ) );
    764839        } // if
    765840        return ft;
  • src/Parser/TypeData.h

    r7756647 rac9ca967  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Oct  3 12:34:08 2016
    13 // Update Count     : 142
     12// Last Modified On : Mon Sep 12 17:15:49 2016
     13// Update Count     : 129
    1414//
    1515
     
    2323
    2424struct TypeData {
    25         enum Kind { Basic, Pointer, Array, Function, Aggregate, AggregateInst, Enum, EnumConstant, Symbolic,
    26                                 SymbolicInst, Tuple, Typeof, Builtin, Unknown };
     25        enum Kind { Unknown, Basic, Pointer, Array, Function, Aggregate, AggregateInst,
     26                                Enum, EnumConstant, Symbolic, SymbolicInst, Variable, Tuple, Typeof, Builtin, Attr };
    2727
    2828        struct Aggregate_t {
    2929                DeclarationNode::Aggregate kind;
    30                 const std::string * name;
     30                std::string name;
    3131                DeclarationNode * params;
    32                 ExpressionNode * actuals;                                               // holds actual parameters later applied to AggInst
     32                ExpressionNode  * actuals;                                              // holds actual parameters later applied to AggInst
    3333                DeclarationNode * fields;
    3434                bool body;
     
    4747
    4848        struct Enumeration_t {
    49                 const std::string * name;
     49                std::string name;
    5050                DeclarationNode * constants;
    5151        };
     
    6161
    6262        struct Symbolic_t {
    63                 const std::string * name;
     63                std::string name;
    6464                bool isTypedef;                                                                 // false => TYPEGENname, true => TYPEDEFname
    6565                DeclarationNode * params;
     
    8888                DeclarationNode * tuple;
    8989                ExpressionNode * typeexpr;
     90                // Attr_t attr;
    9091                // DeclarationNode::BuiltinType builtin;
    9192
     
    110111TupleType * buildTuple( const TypeData * );
    111112TypeofType * buildTypeof( const TypeData * );
    112 Declaration * buildDecl( const TypeData *, const std::string &, DeclarationNode::StorageClass, Expression *, bool isInline, bool isNoreturn, LinkageSpec::Spec, Initializer * init = nullptr );
     113AttrType * buildAttr( const TypeData * );
     114Declaration * buildDecl( const TypeData *, std::string, DeclarationNode::StorageClass, Expression *, bool isInline, bool isNoreturn, LinkageSpec::Spec, Initializer * init = 0 );
    113115FunctionType * buildFunction( const TypeData * );
    114116
  • src/Parser/parser.cc

    r7756647 rac9ca967  
    8282#include "TypeData.h"
    8383#include "LinkageSpec.h"
    84 using namespace std;
    8584
    8685extern DeclarationNode * parseTree;
     
    8887extern TypedefTable typedefTable;
    8988
    90 stack< LinkageSpec::Spec > linkageStack;
    91 
    92 void appendStr( string *to, string *from ) {
     89std::stack< LinkageSpec::Spec > linkageStack;
     90
     91void appendStr( std::string *to, std::string *from ) {
    9392        // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
    9493        to->insert( to->length() - 1, from->substr( 1, from->length() - 2 ) );
     
    9796
    9897/* Line 268 of yacc.c  */
    99 #line 100 "Parser/parser.cc"
     98#line 99 "Parser/parser.cc"
    10099
    101100/* Enabling traces.  */
     
    348347
    349348/* Line 293 of yacc.c  */
    350 #line 116 "parser.yy"
     349#line 115 "parser.yy"
    351350
    352351        Token tok;
     
    368367
    369368/* Line 293 of yacc.c  */
    370 #line 371 "Parser/parser.cc"
     369#line 370 "Parser/parser.cc"
    371370} YYSTYPE;
    372371# define YYSTYPE_IS_TRIVIAL 1
     
    380379
    381380/* Line 343 of yacc.c  */
    382 #line 383 "Parser/parser.cc"
     381#line 382 "Parser/parser.cc"
    383382
    384383#ifdef short
     
    599598#define YYFINAL  250
    600599/* YYLAST -- Last index in YYTABLE.  */
    601 #define YYLAST   10888
     600#define YYLAST   10863
    602601
    603602/* YYNTOKENS -- Number of terminals.  */
    604603#define YYNTOKENS  133
    605604/* YYNNTS -- Number of nonterminals.  */
    606 #define YYNNTS  242
     605#define YYNNTS  241
    607606/* YYNRULES -- Number of rules.  */
    608 #define YYNRULES  754
     607#define YYNRULES  751
    609608/* YYNRULES -- Number of states.  */
    610 #define YYNSTATES  1558
     609#define YYNSTATES  1555
    611610
    612611/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     
    667666      17,    19,    21,    23,    25,    27,    29,    31,    33,    36,
    668667      38,    40,    44,    48,    50,    57,    62,    66,    74,    78,
    669       82,    90,    93,    96,   104,   109,   111,   115,   116,   118,
    670      120,   124,   126,   130,   138,   142,   150,   152,   154,   156,
    671      158,   160,   163,   166,   169,   172,   175,   178,   183,   186,
    672      191,   198,   200,   205,   210,   212,   214,   216,   218,   220,
    673      222,   224,   229,   234,   236,   240,   244,   248,   250,   254,
    674      258,   260,   264,   268,   270,   274,   278,   282,   286,   288,
    675      292,   296,   298,   302,   304,   308,   310,   314,   316,   320,
    676      322,   326,   328,   334,   339,   345,   347,   349,   353,   356,
    677      357,   359,   361,   363,   365,   367,   369,   371,   373,   375,
    678      377,   379,   381,   383,   386,   392,   399,   407,   409,   413,
    679      415,   419,   420,   422,   424,   426,   428,   430,   432,   434,
    680      436,   438,   445,   450,   453,   461,   463,   467,   469,   472,
    681      474,   477,   479,   482,   485,   491,   499,   505,   515,   521,
    682      531,   533,   537,   539,   541,   545,   549,   552,   554,   557,
    683      560,   561,   563,   566,   570,   571,   573,   576,   580,   584,
    684      589,   590,   592,   594,   597,   603,   611,   618,   625,   630,
    685      634,   639,   642,   646,   649,   653,   657,   661,   665,   671,
    686      675,   679,   684,   686,   692,   699,   705,   712,   722,   733,
    687      743,   754,   757,   759,   762,   765,   768,   770,   777,   786,
    688      797,   810,   825,   826,   828,   829,   831,   833,   837,   842,
    689      850,   851,   853,   857,   859,   863,   865,   867,   869,   873,
    690      875,   877,   879,   883,   884,   886,   890,   895,   897,   901,
    691      903,   905,   909,   913,   917,   921,   925,   928,   932,   939,
    692      943,   947,   952,   954,   957,   960,   964,   970,   979,   987,
    693      995,  1001,  1011,  1014,  1017,  1023,  1027,  1033,  1038,  1042,
    694     1047,  1052,  1060,  1064,  1068,  1072,  1076,  1081,  1088,  1090,
    695     1092,  1094,  1096,  1098,  1100,  1102,  1104,  1105,  1107,  1109,
    696     1112,  1114,  1116,  1118,  1120,  1122,  1124,  1126,  1127,  1133,
    697     1135,  1138,  1142,  1144,  1147,  1149,  1151,  1153,  1155,  1157,
    698     1159,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,  1177,
    699     1179,  1181,  1183,  1185,  1187,  1189,  1191,  1194,  1197,  1201,
    700     1205,  1207,  1211,  1213,  1216,  1219,  1222,  1227,  1232,  1237,
    701     1242,  1244,  1247,  1250,  1254,  1256,  1259,  1262,  1264,  1267,
    702     1270,  1274,  1276,  1279,  1282,  1284,  1286,  1291,  1294,  1295,
    703     1302,  1310,  1313,  1316,  1319,  1320,  1323,  1326,  1330,  1333,
    704     1337,  1339,  1342,  1346,  1349,  1352,  1357,  1358,  1360,  1363,
    705     1366,  1368,  1369,  1371,  1374,  1377,  1383,  1386,  1387,  1395,
    706     1398,  1403,  1404,  1407,  1408,  1410,  1412,  1414,  1420,  1426,
    707     1432,  1434,  1440,  1446,  1456,  1458,  1464,  1465,  1467,  1469,
    708     1475,  1477,  1479,  1485,  1491,  1493,  1497,  1501,  1506,  1508,
    709     1510,  1512,  1514,  1517,  1519,  1523,  1527,  1529,  1532,  1534,
    710     1538,  1540,  1542,  1544,  1546,  1548,  1550,  1552,  1554,  1556,
    711     1558,  1560,  1563,  1565,  1567,  1569,  1572,  1573,  1576,  1579,
    712     1581,  1586,  1587,  1589,  1592,  1596,  1601,  1604,  1607,  1609,
    713     1612,  1615,  1621,  1627,  1635,  1642,  1644,  1647,  1650,  1654,
    714     1656,  1659,  1662,  1667,  1670,  1675,  1676,  1681,  1684,  1686,
    715     1688,  1690,  1691,  1694,  1700,  1706,  1720,  1722,  1724,  1728,
    716     1732,  1735,  1739,  1743,  1746,  1751,  1753,  1760,  1770,  1771,
    717     1783,  1785,  1789,  1793,  1797,  1799,  1801,  1807,  1810,  1816,
    718     1817,  1819,  1821,  1825,  1826,  1828,  1830,  1832,  1834,  1835,
    719     1842,  1845,  1847,  1850,  1855,  1858,  1862,  1866,  1870,  1875,
    720     1881,  1887,  1893,  1900,  1902,  1904,  1906,  1910,  1911,  1917,
    721     1918,  1920,  1922,  1925,  1932,  1934,  1938,  1939,  1941,  1946,
    722     1948,  1950,  1952,  1954,  1957,  1959,  1962,  1965,  1967,  1971,
    723     1974,  1978,  1982,  1985,  1990,  1995,  1999,  2008,  2012,  2015,
    724     2017,  2020,  2027,  2036,  2040,  2043,  2047,  2051,  2056,  2061,
    725     2065,  2067,  2069,  2071,  2076,  2083,  2087,  2090,  2094,  2098,
    726     2103,  2108,  2112,  2115,  2117,  2120,  2123,  2125,  2129,  2132,
    727     2136,  2140,  2143,  2148,  2153,  2157,  2164,  2173,  2177,  2180,
    728     2182,  2185,  2188,  2191,  2195,  2199,  2202,  2207,  2212,  2216,
    729     2223,  2232,  2236,  2239,  2241,  2244,  2247,  2249,  2251,  2254,
    730     2258,  2262,  2265,  2270,  2277,  2286,  2288,  2291,  2294,  2296,
    731     2299,  2302,  2306,  2310,  2312,  2317,  2322,  2326,  2332,  2341,
    732     2345,  2348,  2352,  2354,  2360,  2366,  2373,  2380,  2382,  2385,
    733     2388,  2390,  2393,  2396,  2400,  2404,  2406,  2411,  2416,  2420,
    734     2426,  2435,  2439,  2441,  2444,  2446,  2449,  2456,  2462,  2469,
    735     2477,  2485,  2487,  2490,  2493,  2495,  2498,  2501,  2505,  2509,
    736     2511,  2516,  2521,  2525,  2534,  2538,  2540,  2542,  2545,  2547,
    737     2549,  2552,  2556,  2559,  2563,  2566,  2570,  2574,  2577,  2582,
    738     2586,  2589,  2593,  2596,  2601,  2605,  2608,  2615,  2622,  2629,
    739     2637,  2639,  2642,  2644,  2646,  2648,  2651,  2655,  2658,  2662,
    740     2665,  2669,  2673,  2678,  2681,  2685,  2690,  2693,  2699,  2705,
    741     2712,  2719,  2720,  2722,  2723
     668      86,    89,    92,   100,   105,   107,   111,   112,   114,   116,
     669     120,   122,   126,   134,   138,   146,   148,   150,   152,   155,
     670     158,   161,   164,   167,   170,   175,   178,   183,   190,   192,
     671     197,   202,   204,   206,   208,   210,   212,   214,   216,   221,
     672     226,   228,   232,   236,   240,   242,   246,   250,   252,   256,
     673     260,   262,   266,   270,   274,   278,   280,   284,   288,   290,
     674     294,   296,   300,   302,   306,   308,   312,   314,   318,   320,
     675     326,   331,   337,   339,   341,   345,   348,   349,   351,   353,
     676     355,   357,   359,   361,   363,   365,   367,   369,   371,   373,
     677     375,   378,   384,   391,   399,   401,   405,   407,   411,   412,
     678     414,   416,   418,   420,   422,   424,   426,   428,   430,   437,
     679     442,   445,   453,   455,   459,   461,   464,   466,   469,   471,
     680     474,   477,   483,   491,   497,   507,   513,   523,   525,   529,
     681     531,   533,   537,   541,   544,   546,   549,   552,   553,   555,
     682     558,   562,   563,   565,   568,   572,   576,   581,   582,   584,
     683     586,   589,   595,   603,   610,   617,   622,   626,   631,   634,
     684     638,   641,   645,   649,   653,   657,   663,   667,   671,   676,
     685     678,   684,   691,   697,   704,   714,   725,   735,   746,   749,
     686     751,   754,   757,   760,   762,   769,   778,   789,   802,   817,
     687     818,   820,   821,   823,   825,   829,   834,   842,   843,   845,
     688     849,   851,   855,   857,   859,   861,   865,   867,   869,   871,
     689     875,   876,   878,   882,   887,   889,   893,   895,   897,   901,
     690     905,   909,   913,   917,   920,   924,   931,   935,   939,   944,
     691     946,   949,   952,   956,   962,   971,   979,   987,   993,  1003,
     692    1006,  1009,  1015,  1019,  1025,  1030,  1034,  1039,  1044,  1052,
     693    1056,  1060,  1064,  1068,  1073,  1080,  1082,  1084,  1086,  1088,
     694    1090,  1092,  1094,  1096,  1097,  1099,  1101,  1104,  1106,  1108,
     695    1110,  1112,  1114,  1116,  1118,  1119,  1125,  1127,  1130,  1134,
     696    1136,  1139,  1141,  1143,  1145,  1147,  1149,  1151,  1153,  1155,
     697    1157,  1159,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,
     698    1177,  1179,  1181,  1183,  1186,  1189,  1193,  1197,  1199,  1203,
     699    1205,  1208,  1211,  1214,  1219,  1224,  1229,  1234,  1236,  1239,
     700    1242,  1246,  1248,  1251,  1254,  1256,  1259,  1262,  1266,  1268,
     701    1271,  1274,  1276,  1278,  1283,  1286,  1287,  1294,  1302,  1305,
     702    1308,  1311,  1312,  1315,  1318,  1322,  1325,  1329,  1331,  1334,
     703    1338,  1341,  1344,  1349,  1350,  1352,  1355,  1358,  1360,  1361,
     704    1363,  1366,  1369,  1375,  1378,  1379,  1387,  1390,  1395,  1396,
     705    1399,  1400,  1402,  1404,  1406,  1412,  1418,  1424,  1426,  1432,
     706    1438,  1448,  1450,  1456,  1457,  1459,  1461,  1467,  1469,  1471,
     707    1477,  1483,  1485,  1489,  1493,  1498,  1500,  1502,  1504,  1506,
     708    1509,  1511,  1515,  1519,  1521,  1524,  1526,  1530,  1532,  1534,
     709    1536,  1538,  1540,  1542,  1544,  1546,  1548,  1550,  1552,  1555,
     710    1557,  1559,  1561,  1564,  1565,  1568,  1571,  1573,  1578,  1579,
     711    1581,  1584,  1588,  1593,  1596,  1599,  1601,  1604,  1607,  1613,
     712    1619,  1627,  1634,  1636,  1639,  1642,  1646,  1648,  1651,  1654,
     713    1659,  1662,  1667,  1668,  1673,  1676,  1678,  1680,  1682,  1683,
     714    1686,  1692,  1698,  1712,  1714,  1716,  1720,  1724,  1727,  1731,
     715    1735,  1738,  1743,  1745,  1752,  1762,  1763,  1775,  1777,  1781,
     716    1785,  1789,  1791,  1793,  1799,  1802,  1808,  1809,  1811,  1813,
     717    1817,  1818,  1820,  1822,  1824,  1826,  1827,  1834,  1837,  1839,
     718    1842,  1847,  1850,  1854,  1858,  1862,  1867,  1873,  1879,  1885,
     719    1892,  1894,  1896,  1898,  1902,  1903,  1909,  1910,  1912,  1914,
     720    1917,  1924,  1926,  1930,  1931,  1933,  1938,  1940,  1942,  1944,
     721    1946,  1949,  1951,  1954,  1957,  1959,  1963,  1966,  1970,  1974,
     722    1977,  1982,  1987,  1991,  2000,  2004,  2007,  2009,  2012,  2019,
     723    2028,  2032,  2035,  2039,  2043,  2048,  2053,  2057,  2059,  2061,
     724    2063,  2068,  2075,  2079,  2082,  2086,  2090,  2095,  2100,  2104,
     725    2107,  2109,  2112,  2115,  2117,  2121,  2124,  2128,  2132,  2135,
     726    2140,  2145,  2149,  2156,  2165,  2169,  2172,  2174,  2177,  2180,
     727    2183,  2187,  2191,  2194,  2199,  2204,  2208,  2215,  2224,  2228,
     728    2231,  2233,  2236,  2239,  2241,  2243,  2246,  2250,  2254,  2257,
     729    2262,  2269,  2278,  2280,  2283,  2286,  2288,  2291,  2294,  2298,
     730    2302,  2304,  2309,  2314,  2318,  2324,  2333,  2337,  2340,  2344,
     731    2346,  2352,  2358,  2365,  2372,  2374,  2377,  2380,  2382,  2385,
     732    2388,  2392,  2396,  2398,  2403,  2408,  2412,  2418,  2427,  2431,
     733    2433,  2436,  2438,  2441,  2448,  2454,  2461,  2469,  2477,  2479,
     734    2482,  2485,  2487,  2490,  2493,  2497,  2501,  2503,  2508,  2513,
     735    2517,  2526,  2530,  2532,  2534,  2537,  2539,  2541,  2544,  2548,
     736    2551,  2555,  2558,  2562,  2566,  2569,  2574,  2578,  2581,  2585,
     737    2588,  2593,  2597,  2600,  2607,  2614,  2621,  2629,  2631,  2634,
     738    2636,  2638,  2640,  2643,  2647,  2650,  2654,  2657,  2661,  2665,
     739    2670,  2673,  2677,  2682,  2685,  2691,  2697,  2704,  2711,  2712,
     740    2714,  2715
    742741};
    743742
     
    745744static const yytype_int16 yyrhs[] =
    746745{
    747      303,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
     746     302,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
    748747      -1,    72,    -1,    76,    -1,   140,    -1,    72,    -1,    76,
    749748      -1,    72,    -1,   140,    -1,    83,    -1,    84,    -1,   142,
    750749      -1,    82,    -1,   142,    82,    -1,    72,    -1,   140,    -1,
    751      109,   171,   110,    -1,   109,   175,   110,    -1,   143,    -1,
    752      144,   111,   134,   166,   135,   112,    -1,   144,   109,   145,
     750     109,   170,   110,    -1,   109,   174,   110,    -1,   143,    -1,
     751     144,   111,   134,   165,   135,   112,    -1,   144,   109,   145,
    753752     110,    -1,   144,   113,   139,    -1,   144,   113,   111,   134,
    754      147,   135,   112,    -1,   144,   113,    79,    -1,   144,    85,
    755      139,    -1,   144,    85,   111,   134,   147,   135,   112,    -1,
    756      144,    86,    -1,   144,    87,    -1,   109,   276,   110,   114,
    757      280,   373,   115,    -1,   144,   114,   145,   115,    -1,   146,
    758       -1,   145,   116,   146,    -1,    -1,   166,    -1,   148,    -1,
    759      147,   116,   148,    -1,   149,    -1,   149,   113,   148,    -1,
    760      149,   113,   111,   134,   147,   135,   112,    -1,   149,    85,
    761      148,    -1,   149,    85,   111,   134,   147,   135,   112,    -1,
    762      139,    -1,    79,    -1,   144,    -1,   136,    -1,   141,    -1,
    763       40,   153,    -1,   151,   153,    -1,   152,   153,    -1,    86,
    764      150,    -1,    87,   150,    -1,    37,   150,    -1,    37,   109,
    765      276,   110,    -1,    66,   150,    -1,    66,   109,   276,   110,
    766       -1,    38,   109,   276,   116,   139,   110,    -1,    76,    -1,
    767       76,   109,   146,   110,    -1,    76,   109,   277,   110,    -1,
    768      117,    -1,   118,    -1,   119,    -1,   120,    -1,   121,    -1,
    769      122,    -1,   150,    -1,   109,   276,   110,   153,    -1,   109,
    770      276,   110,   169,    -1,   153,    -1,   154,   117,   153,    -1,
    771      154,   123,   153,    -1,   154,   124,   153,    -1,   154,    -1,
    772      155,   119,   154,    -1,   155,   120,   154,    -1,   155,    -1,
    773      156,    88,   155,    -1,   156,    89,   155,    -1,   156,    -1,
    774      157,   125,   156,    -1,   157,   126,   156,    -1,   157,    90,
    775      156,    -1,   157,    91,   156,    -1,   157,    -1,   158,    92,
    776      157,    -1,   158,    93,   157,    -1,   158,    -1,   159,   118,
    777      158,    -1,   159,    -1,   160,   127,   159,    -1,   160,    -1,
    778      161,   128,   160,    -1,   161,    -1,   162,    94,   161,    -1,
    779      162,    -1,   163,    95,   162,    -1,   163,    -1,   163,   129,
    780      171,   130,   164,    -1,   163,   129,   130,   164,    -1,   163,
    781      129,   171,   130,   169,    -1,   164,    -1,   164,    -1,   150,
    782      168,   166,    -1,   169,   374,    -1,    -1,   166,    -1,   131,
    783       -1,   107,    -1,    97,    -1,    98,    -1,    99,    -1,   100,
    784       -1,   101,    -1,   102,    -1,   103,    -1,   104,    -1,   105,
    785       -1,   106,    -1,   111,   112,    -1,   111,   134,   166,   135,
    786      112,    -1,   111,   134,   116,   170,   135,   112,    -1,   111,
    787      134,   166,   116,   170,   135,   112,    -1,   167,    -1,   170,
    788      116,   167,    -1,   166,    -1,   171,   116,   166,    -1,    -1,
    789      171,    -1,   174,    -1,   175,    -1,   179,    -1,   180,    -1,
    790      192,    -1,   194,    -1,   195,    -1,   200,    -1,   127,   144,
    791      114,   145,   115,   132,    -1,    72,   130,   313,   173,    -1,
    792      114,   115,    -1,   114,   134,   134,   211,   176,   135,   115,
    793       -1,   177,    -1,   176,   134,   177,    -1,   214,    -1,    40,
    794      214,    -1,   309,    -1,   173,   135,    -1,   173,    -1,   178,
    795      173,    -1,   172,   132,    -1,    41,   109,   171,   110,   173,
    796       -1,    41,   109,   171,   110,   173,    42,   173,    -1,    43,
    797      109,   171,   110,   185,    -1,    43,   109,   171,   110,   114,
    798      134,   207,   186,   115,    -1,    53,   109,   171,   110,   185,
    799       -1,    53,   109,   171,   110,   114,   134,   207,   188,   115,
    800       -1,   165,    -1,   165,    96,   165,    -1,   311,    -1,   181,
    801       -1,   182,   116,   181,    -1,    44,   182,   130,    -1,    45,
    802      130,    -1,   183,    -1,   184,   183,    -1,   184,   173,    -1,
    803       -1,   187,    -1,   184,   178,    -1,   187,   184,   178,    -1,
    804       -1,   189,    -1,   184,   191,    -1,   184,   178,   190,    -1,
    805      189,   184,   191,    -1,   189,   184,   178,   190,    -1,    -1,
    806      191,    -1,    56,    -1,    56,   132,    -1,    47,   109,   171,
    807      110,   173,    -1,    46,   173,    47,   109,   171,   110,   132,
    808       -1,    48,   109,   134,   193,   110,   173,    -1,   172,   135,
    809      132,   172,   132,   172,    -1,   214,   172,   132,   172,    -1,
    810       51,    72,   132,    -1,    51,   117,   171,   132,    -1,    50,
    811      132,    -1,    50,    72,   132,    -1,    49,   132,    -1,    49,
    812       72,   132,    -1,    52,   172,   132,    -1,    61,   167,   132,
    813       -1,    62,   167,   132,    -1,    62,   167,    63,   166,   132,
    814       -1,    57,   175,   196,    -1,    57,   175,   198,    -1,    57,
    815      175,   196,   198,    -1,   197,    -1,    58,   109,    96,   110,
    816      175,    -1,   197,    58,   109,    96,   110,   175,    -1,    59,
    817      109,    96,   110,   175,    -1,   197,    59,   109,    96,   110,
    818      175,    -1,    58,   109,   134,   134,   199,   135,   110,   175,
    819      135,    -1,   197,    58,   109,   134,   134,   199,   135,   110,
    820      175,   135,    -1,    59,   109,   134,   134,   199,   135,   110,
    821      175,   135,    -1,   197,    59,   109,   134,   134,   199,   135,
    822      110,   175,   135,    -1,    60,   175,    -1,   227,    -1,   227,
    823      310,    -1,   227,   358,    -1,   367,   139,    -1,   367,    -1,
    824       64,   201,   109,   141,   110,   132,    -1,    64,   201,   109,
    825      141,   130,   202,   110,   132,    -1,    64,   201,   109,   141,
    826      130,   202,   130,   202,   110,   132,    -1,    64,   201,   109,
    827      141,   130,   202,   130,   202,   130,   205,   110,   132,    -1,
    828       64,   201,    51,   109,   141,   130,   130,   202,   130,   205,
    829      130,   206,   110,   132,    -1,    -1,    11,    -1,    -1,   203,
    830       -1,   204,    -1,   203,   116,   204,    -1,   141,   109,   165,
    831      110,    -1,   111,   165,   112,   141,   109,   165,   110,    -1,
    832       -1,   141,    -1,   205,   116,   141,    -1,   139,    -1,   206,
    833      116,   139,    -1,   135,    -1,   208,    -1,   214,    -1,   208,
    834      134,   214,    -1,   135,    -1,   210,    -1,   224,    -1,   210,
    835      134,   224,    -1,    -1,   212,    -1,    29,   213,   132,    -1,
    836      212,    29,   213,   132,    -1,   275,    -1,   213,   116,   275,
    837       -1,   215,    -1,   224,    -1,   216,   135,   132,    -1,   221,
    838      135,   132,    -1,   218,   135,   132,    -1,   294,   135,   132,
    839       -1,   297,   135,   132,    -1,   217,   278,    -1,   233,   217,
    840      278,    -1,   216,   135,   116,   134,   273,   278,    -1,   368,
    841      273,   312,    -1,   371,   273,   312,    -1,   229,   371,   273,
    842      312,    -1,   219,    -1,   229,   219,    -1,   233,   219,    -1,
    843      233,   229,   219,    -1,   218,   135,   116,   134,   273,    -1,
    844      111,   112,   273,   109,   134,   261,   135,   110,    -1,   371,
    845      273,   109,   134,   261,   135,   110,    -1,   220,   273,   109,
    846      134,   261,   135,   110,    -1,   111,   134,   263,   135,   112,
    847       -1,   111,   134,   263,   135,   116,   134,   264,   135,   112,
    848       -1,     3,   217,    -1,     3,   219,    -1,   221,   135,   116,
    849      134,   139,    -1,     3,   227,   310,    -1,   222,   135,   116,
    850      134,   310,    -1,   229,     3,   227,   310,    -1,   227,     3,
    851      310,    -1,   227,     3,   229,   310,    -1,     3,   139,   131,
    852      166,    -1,   223,   135,   116,   134,   139,   131,   166,    -1,
    853      225,   135,   132,    -1,   222,   135,   132,    -1,   223,   135,
    854      132,    -1,   241,   135,   132,    -1,   226,   310,   312,   278,
    855       -1,   225,   116,   313,   310,   312,   278,    -1,   237,    -1,
    856      241,    -1,   243,    -1,   284,    -1,   238,    -1,   242,    -1,
    857      244,    -1,   285,    -1,    -1,   229,    -1,   230,    -1,   229,
    858      230,    -1,   231,    -1,   315,    -1,    10,    -1,    12,    -1,
    859       11,    -1,    14,    -1,    67,    -1,    -1,    13,   109,   232,
    860      287,   110,    -1,   234,    -1,   229,   234,    -1,   233,   229,
    861      234,    -1,   235,    -1,   234,   235,    -1,     5,    -1,     7,
    862       -1,     4,    -1,     6,    -1,     8,    -1,     9,    -1,    69,
    863       -1,    71,    -1,    16,    -1,    21,    -1,    20,    -1,    18,
    864       -1,    19,    -1,    17,    -1,    22,    -1,    23,    -1,    15,
    865       -1,    25,    -1,    26,    -1,    27,    -1,    24,    -1,   238,
    866       -1,   233,   238,    -1,   237,   235,    -1,   237,   235,   229,
    867       -1,   237,   235,   238,    -1,   239,    -1,   228,   240,   228,
    868       -1,   236,    -1,   229,   236,    -1,   239,   230,    -1,   239,
    869      236,    -1,    28,   109,   277,   110,    -1,    28,   109,   171,
    870      110,    -1,    78,   109,   277,   110,    -1,    78,   109,   171,
    871      110,    -1,   242,    -1,   233,   242,    -1,   241,   235,    -1,
    872      241,   235,   229,    -1,   245,    -1,   229,   245,    -1,   242,
    873      230,    -1,   244,    -1,   233,   244,    -1,   243,   235,    -1,
    874      243,   235,   229,    -1,    74,    -1,   229,    74,    -1,   244,
    875      230,    -1,   246,    -1,   257,    -1,   248,   114,   249,   115,
    876       -1,   248,   275,    -1,    -1,   248,   275,   247,   114,   249,
    877      115,    -1,   248,   109,   293,   110,   114,   249,   115,    -1,
    878      248,   286,    -1,    31,   313,    -1,    32,   313,    -1,    -1,
    879      249,   250,    -1,   251,   132,    -1,    40,   251,   132,    -1,
    880      252,   132,    -1,    40,   252,   132,    -1,   367,    -1,   367,
    881      275,    -1,   251,   116,   275,    -1,   251,   116,    -1,   227,
    882      253,    -1,   252,   116,   313,   253,    -1,    -1,   255,    -1,
    883      319,   254,    -1,   332,   254,    -1,   358,    -1,    -1,   255,
    884       -1,   130,   165,    -1,    30,   313,    -1,   256,   114,   259,
    885      373,   115,    -1,   256,   275,    -1,    -1,   256,   275,   258,
    886      114,   259,   373,   115,    -1,   275,   260,    -1,   259,   116,
    887      275,   260,    -1,    -1,   131,   165,    -1,    -1,   262,    -1,
    888      264,    -1,   263,    -1,   263,   135,   116,   134,   264,    -1,
    889      264,   135,   116,   134,    96,    -1,   263,   135,   116,   134,
    890       96,    -1,   268,    -1,   264,   135,   116,   134,   268,    -1,
    891      263,   135,   116,   134,   268,    -1,   263,   135,   116,   134,
    892      264,   135,   116,   134,   268,    -1,   269,    -1,   264,   135,
    893      116,   134,   269,    -1,    -1,   266,    -1,   267,    -1,   267,
    894      135,   116,   134,    96,    -1,   271,    -1,   270,    -1,   267,
    895      135,   116,   134,   271,    -1,   267,   135,   116,   134,   270,
    896       -1,   270,    -1,   363,   273,   374,    -1,   371,   273,   374,
    897       -1,   229,   371,   273,   374,    -1,   219,    -1,   271,    -1,
    898      363,    -1,   371,    -1,   229,   371,    -1,   372,    -1,   226,
    899      337,   374,    -1,   226,   341,   374,    -1,   226,    -1,   226,
    900      352,    -1,   139,    -1,   272,   116,   139,    -1,   137,    -1,
    901       74,    -1,    75,    -1,   138,    -1,    74,    -1,    75,    -1,
    902      139,    -1,    74,    -1,    75,    -1,   367,    -1,   227,    -1,
    903      227,   358,    -1,   367,    -1,   372,    -1,   227,    -1,   227,
    904      346,    -1,    -1,   131,   279,    -1,   107,   279,    -1,   166,
    905       -1,   114,   280,   373,   115,    -1,    -1,   279,    -1,   281,
    906      279,    -1,   280,   116,   279,    -1,   280,   116,   281,   279,
    907       -1,   282,   130,    -1,   275,   130,    -1,   283,    -1,   282,
    908      283,    -1,   113,   275,    -1,   111,   134,   166,   135,   112,
    909       -1,   111,   134,   311,   135,   112,    -1,   111,   134,   165,
    910       96,   165,   135,   112,    -1,   113,   111,   134,   147,   135,
    911      112,    -1,   285,    -1,   233,   285,    -1,   284,   235,    -1,
    912      284,   235,   229,    -1,   286,    -1,   229,   286,    -1,   285,
    913      230,    -1,    75,   109,   293,   110,    -1,   288,   374,    -1,
    914      287,   116,   288,   374,    -1,    -1,   290,   275,   289,   291,
    915       -1,   227,   337,    -1,    33,    -1,    35,    -1,    34,    -1,
    916       -1,   291,   292,    -1,   128,   275,   109,   293,   110,    -1,
    917      128,   114,   134,   299,   115,    -1,   128,   109,   134,   287,
    918      135,   110,   114,   134,   299,   115,   109,   293,   110,    -1,
    919      277,    -1,   166,    -1,   293,   116,   277,    -1,   293,   116,
    920      166,    -1,    33,   295,    -1,   234,    33,   295,    -1,   294,
    921      116,   295,    -1,   296,   291,    -1,   296,   291,   131,   277,
    922       -1,   275,    -1,   274,   109,   134,   287,   135,   110,    -1,
    923       36,   275,   109,   134,   287,   135,   110,   114,   115,    -1,
    924       -1,    36,   275,   109,   134,   287,   135,   110,   114,   298,
    925      299,   115,    -1,   300,    -1,   299,   134,   300,    -1,   301,
    926      135,   132,    -1,   302,   135,   132,    -1,   217,    -1,   219,
    927       -1,   301,   135,   116,   134,   273,    -1,   227,   310,    -1,
    928      302,   135,   116,   134,   310,    -1,    -1,   304,    -1,   306,
    929       -1,   304,   134,   306,    -1,    -1,   304,    -1,   214,    -1,
    930      308,    -1,   200,    -1,    -1,     5,    82,   307,   114,   305,
    931      115,    -1,    40,   306,    -1,   309,    -1,   324,   175,    -1,
    932      328,   134,   209,   175,    -1,   218,   175,    -1,   226,   324,
    933      175,    -1,   229,   324,   175,    -1,   233,   324,   175,    -1,
    934      233,   229,   324,   175,    -1,   226,   328,   134,   209,   175,
    935       -1,   229,   328,   134,   209,   175,    -1,   233,   328,   134,
    936      209,   175,    -1,   233,   229,   328,   134,   209,   175,    -1,
    937      319,    -1,   332,    -1,   324,    -1,   165,   122,   165,    -1,
    938       -1,    64,   109,   142,   110,   313,    -1,    -1,   314,    -1,
    939      315,    -1,   314,   315,    -1,    39,   109,   109,   316,   110,
    940      110,    -1,   317,    -1,   316,   116,   317,    -1,    -1,   318,
    941       -1,   318,   109,   172,   110,    -1,   273,    -1,   235,    -1,
    942      236,    -1,   230,    -1,   320,   313,    -1,   321,    -1,   322,
    943      313,    -1,   323,   313,    -1,   137,    -1,   109,   320,   110,
    944       -1,   151,   319,    -1,   151,   229,   319,    -1,   109,   321,
    945      110,    -1,   320,   350,    -1,   109,   321,   110,   350,    -1,
    946      109,   322,   110,   351,    -1,   109,   322,   110,    -1,   109,
    947      321,   110,   109,   134,   265,   135,   110,    -1,   109,   323,
    948      110,    -1,   325,   313,    -1,   326,    -1,   327,   313,    -1,
    949      320,   109,   134,   265,   135,   110,    -1,   109,   326,   110,
    950      109,   134,   265,   135,   110,    -1,   109,   325,   110,    -1,
    951      151,   324,    -1,   151,   229,   324,    -1,   109,   326,   110,
    952       -1,   109,   326,   110,   350,    -1,   109,   327,   110,   351,
    953       -1,   109,   327,   110,    -1,   329,    -1,   330,    -1,   331,
    954       -1,   320,   109,   272,   110,    -1,   109,   330,   110,   109,
    955      272,   110,    -1,   109,   329,   110,    -1,   151,   328,    -1,
    956      151,   229,   328,    -1,   109,   330,   110,    -1,   109,   330,
    957      110,   350,    -1,   109,   331,   110,   351,    -1,   109,   331,
    958      110,    -1,   333,   313,    -1,   334,    -1,   335,   313,    -1,
    959      336,   313,    -1,   342,    -1,   109,   333,   110,    -1,   151,
    960      332,    -1,   151,   229,   332,    -1,   109,   334,   110,    -1,
    961      333,   350,    -1,   109,   334,   110,   350,    -1,   109,   335,
    962      110,   351,    -1,   109,   335,   110,    -1,   333,   109,   134,
    963      265,   135,   110,    -1,   109,   334,   110,   109,   134,   265,
    964      135,   110,    -1,   109,   336,   110,    -1,   320,   313,    -1,
    965      338,    -1,   339,   313,    -1,   340,   313,    -1,   151,   337,
    966       -1,   151,   229,   337,    -1,   109,   338,   110,    -1,   320,
    967      356,    -1,   109,   338,   110,   350,    -1,   109,   339,   110,
    968      351,    -1,   109,   339,   110,    -1,   320,   109,   134,   265,
    969      135,   110,    -1,   109,   338,   110,   109,   134,   265,   135,
    970      110,    -1,   109,   340,   110,    -1,   342,   313,    -1,   343,
    971       -1,   344,   313,    -1,   345,   313,    -1,    74,    -1,    75,
    972       -1,   151,   341,    -1,   151,   229,   341,    -1,   109,   343,
    973      110,    -1,   342,   356,    -1,   109,   343,   110,   356,    -1,
    974      342,   109,   134,   265,   135,   110,    -1,   109,   343,   110,
    975      109,   134,   265,   135,   110,    -1,   347,    -1,   348,   313,
    976       -1,   349,   313,    -1,   151,    -1,   151,   229,    -1,   151,
    977      346,    -1,   151,   229,   346,    -1,   109,   347,   110,    -1,
    978      350,    -1,   109,   347,   110,   350,    -1,   109,   348,   110,
    979      351,    -1,   109,   348,   110,    -1,   109,   134,   265,   135,
    980      110,    -1,   109,   347,   110,   109,   134,   265,   135,   110,
    981       -1,   109,   349,   110,    -1,   111,   112,    -1,   111,   112,
    982      351,    -1,   351,    -1,   111,   134,   166,   135,   112,    -1,
    983      111,   134,   117,   135,   112,    -1,   351,   111,   134,   166,
    984      135,   112,    -1,   351,   111,   134,   117,   135,   112,    -1,
    985      353,    -1,   354,   313,    -1,   355,   313,    -1,   151,    -1,
    986      151,   229,    -1,   151,   352,    -1,   151,   229,   352,    -1,
    987      109,   353,   110,    -1,   356,    -1,   109,   353,   110,   356,
    988       -1,   109,   354,   110,   351,    -1,   109,   354,   110,    -1,
    989      109,   134,   265,   135,   110,    -1,   109,   353,   110,   109,
    990      134,   265,   135,   110,    -1,   109,   355,   110,    -1,   357,
    991       -1,   357,   351,    -1,   351,    -1,   111,   112,    -1,   111,
    992      134,   229,   117,   135,   112,    -1,   111,   134,   229,   135,
    993      112,    -1,   111,   134,   229,   166,   135,   112,    -1,   111,
    994      134,     7,   228,   166,   135,   112,    -1,   111,   134,   229,
    995        7,   166,   135,   112,    -1,   359,    -1,   360,   313,    -1,
    996      361,   313,    -1,   151,    -1,   151,   229,    -1,   151,   358,
    997       -1,   151,   229,   358,    -1,   109,   359,   110,    -1,   350,
    998       -1,   109,   359,   110,   350,    -1,   109,   360,   110,   351,
    999       -1,   109,   360,   110,    -1,   109,   359,   110,   109,   134,
    1000      265,   135,   110,    -1,   109,   361,   110,    -1,   363,    -1,
    1001      371,    -1,   229,   371,    -1,   364,    -1,   365,    -1,   151,
    1002      227,    -1,   229,   151,   227,    -1,   151,   372,    -1,   229,
    1003      151,   372,    -1,   151,   362,    -1,   229,   151,   362,    -1,
    1004      111,   112,   227,    -1,   366,   227,    -1,   111,   112,   351,
    1005      227,    -1,   366,   351,   227,    -1,   351,   227,    -1,   111,
    1006      112,   364,    -1,   366,   364,    -1,   111,   112,   351,   364,
    1007       -1,   366,   351,   364,    -1,   351,   364,    -1,   111,   134,
    1008      229,   117,   135,   112,    -1,   111,   134,   229,   166,   135,
    1009      112,    -1,   111,   134,   233,   166,   135,   112,    -1,   111,
    1010      134,   233,   229,   166,   135,   112,    -1,   371,    -1,   229,
    1011      371,    -1,   368,    -1,   369,    -1,   370,    -1,   151,   227,
    1012       -1,   229,   151,   227,    -1,   151,   372,    -1,   229,   151,
    1013      372,    -1,   151,   367,    -1,   229,   151,   367,    -1,   111,
    1014      112,   227,    -1,   111,   112,   351,   227,    -1,   351,   227,
    1015       -1,   111,   112,   369,    -1,   111,   112,   351,   369,    -1,
    1016      351,   369,    -1,   111,   134,   264,   135,   112,    -1,   111,
    1017      112,   109,   261,   110,    -1,   371,   109,   134,   261,   135,
    1018      110,    -1,   220,   109,   134,   261,   135,   110,    -1,    -1,
    1019      116,    -1,    -1,   131,   166,    -1
     753     147,   135,   112,    -1,   144,    85,   139,    -1,   144,    85,
     754     111,   134,   147,   135,   112,    -1,   144,    86,    -1,   144,
     755      87,    -1,   109,   275,   110,   114,   279,   372,   115,    -1,
     756     144,   114,   145,   115,    -1,   146,    -1,   145,   116,   146,
     757      -1,    -1,   165,    -1,   148,    -1,   147,   116,   148,    -1,
     758     139,    -1,   139,   113,   148,    -1,   139,   113,   111,   134,
     759     147,   135,   112,    -1,   139,    85,   148,    -1,   139,    85,
     760     111,   134,   147,   135,   112,    -1,   144,    -1,   136,    -1,
     761     141,    -1,    40,   152,    -1,   150,   152,    -1,   151,   152,
     762      -1,    86,   149,    -1,    87,   149,    -1,    37,   149,    -1,
     763      37,   109,   275,   110,    -1,    66,   149,    -1,    66,   109,
     764     275,   110,    -1,    38,   109,   275,   116,   139,   110,    -1,
     765      76,    -1,    76,   109,   146,   110,    -1,    76,   109,   276,
     766     110,    -1,   117,    -1,   118,    -1,   119,    -1,   120,    -1,
     767     121,    -1,   122,    -1,   149,    -1,   109,   275,   110,   152,
     768      -1,   109,   275,   110,   168,    -1,   152,    -1,   153,   117,
     769     152,    -1,   153,   123,   152,    -1,   153,   124,   152,    -1,
     770     153,    -1,   154,   119,   153,    -1,   154,   120,   153,    -1,
     771     154,    -1,   155,    88,   154,    -1,   155,    89,   154,    -1,
     772     155,    -1,   156,   125,   155,    -1,   156,   126,   155,    -1,
     773     156,    90,   155,    -1,   156,    91,   155,    -1,   156,    -1,
     774     157,    92,   156,    -1,   157,    93,   156,    -1,   157,    -1,
     775     158,   118,   157,    -1,   158,    -1,   159,   127,   158,    -1,
     776     159,    -1,   160,   128,   159,    -1,   160,    -1,   161,    94,
     777     160,    -1,   161,    -1,   162,    95,   161,    -1,   162,    -1,
     778     162,   129,   170,   130,   163,    -1,   162,   129,   130,   163,
     779      -1,   162,   129,   170,   130,   168,    -1,   163,    -1,   163,
     780      -1,   149,   167,   165,    -1,   168,   373,    -1,    -1,   165,
     781      -1,   131,    -1,   107,    -1,    97,    -1,    98,    -1,    99,
     782      -1,   100,    -1,   101,    -1,   102,    -1,   103,    -1,   104,
     783      -1,   105,    -1,   106,    -1,   111,   112,    -1,   111,   134,
     784     165,   135,   112,    -1,   111,   134,   116,   169,   135,   112,
     785      -1,   111,   134,   165,   116,   169,   135,   112,    -1,   166,
     786      -1,   169,   116,   166,    -1,   165,    -1,   170,   116,   165,
     787      -1,    -1,   170,    -1,   173,    -1,   174,    -1,   178,    -1,
     788     179,    -1,   191,    -1,   193,    -1,   194,    -1,   199,    -1,
     789     127,   144,   114,   145,   115,   132,    -1,    72,   130,   312,
     790     172,    -1,   114,   115,    -1,   114,   134,   134,   210,   175,
     791     135,   115,    -1,   176,    -1,   175,   134,   176,    -1,   213,
     792      -1,    40,   213,    -1,   308,    -1,   172,   135,    -1,   172,
     793      -1,   177,   172,    -1,   171,   132,    -1,    41,   109,   170,
     794     110,   172,    -1,    41,   109,   170,   110,   172,    42,   172,
     795      -1,    43,   109,   170,   110,   184,    -1,    43,   109,   170,
     796     110,   114,   134,   206,   185,   115,    -1,    53,   109,   170,
     797     110,   184,    -1,    53,   109,   170,   110,   114,   134,   206,
     798     187,   115,    -1,   164,    -1,   164,    96,   164,    -1,   310,
     799      -1,   180,    -1,   181,   116,   180,    -1,    44,   181,   130,
     800      -1,    45,   130,    -1,   182,    -1,   183,   182,    -1,   183,
     801     172,    -1,    -1,   186,    -1,   183,   177,    -1,   186,   183,
     802     177,    -1,    -1,   188,    -1,   183,   190,    -1,   183,   177,
     803     189,    -1,   188,   183,   190,    -1,   188,   183,   177,   189,
     804      -1,    -1,   190,    -1,    56,    -1,    56,   132,    -1,    47,
     805     109,   170,   110,   172,    -1,    46,   172,    47,   109,   170,
     806     110,   132,    -1,    48,   109,   134,   192,   110,   172,    -1,
     807     171,   135,   132,   171,   132,   171,    -1,   213,   171,   132,
     808     171,    -1,    51,    72,   132,    -1,    51,   117,   170,   132,
     809      -1,    50,   132,    -1,    50,    72,   132,    -1,    49,   132,
     810      -1,    49,    72,   132,    -1,    52,   171,   132,    -1,    61,
     811     166,   132,    -1,    62,   166,   132,    -1,    62,   166,    63,
     812     165,   132,    -1,    57,   174,   195,    -1,    57,   174,   197,
     813      -1,    57,   174,   195,   197,    -1,   196,    -1,    58,   109,
     814      96,   110,   174,    -1,   196,    58,   109,    96,   110,   174,
     815      -1,    59,   109,    96,   110,   174,    -1,   196,    59,   109,
     816      96,   110,   174,    -1,    58,   109,   134,   134,   198,   135,
     817     110,   174,   135,    -1,   196,    58,   109,   134,   134,   198,
     818     135,   110,   174,   135,    -1,    59,   109,   134,   134,   198,
     819     135,   110,   174,   135,    -1,   196,    59,   109,   134,   134,
     820     198,   135,   110,   174,   135,    -1,    60,   174,    -1,   226,
     821      -1,   226,   309,    -1,   226,   357,    -1,   366,   139,    -1,
     822     366,    -1,    64,   200,   109,   141,   110,   132,    -1,    64,
     823     200,   109,   141,   130,   201,   110,   132,    -1,    64,   200,
     824     109,   141,   130,   201,   130,   201,   110,   132,    -1,    64,
     825     200,   109,   141,   130,   201,   130,   201,   130,   204,   110,
     826     132,    -1,    64,   200,    51,   109,   141,   130,   130,   201,
     827     130,   204,   130,   205,   110,   132,    -1,    -1,    11,    -1,
     828      -1,   202,    -1,   203,    -1,   202,   116,   203,    -1,   141,
     829     109,   164,   110,    -1,   111,   164,   112,   141,   109,   164,
     830     110,    -1,    -1,   141,    -1,   204,   116,   141,    -1,   139,
     831      -1,   205,   116,   139,    -1,   135,    -1,   207,    -1,   213,
     832      -1,   207,   134,   213,    -1,   135,    -1,   209,    -1,   223,
     833      -1,   209,   134,   223,    -1,    -1,   211,    -1,    29,   212,
     834     132,    -1,   211,    29,   212,   132,    -1,   274,    -1,   212,
     835     116,   274,    -1,   214,    -1,   223,    -1,   215,   135,   132,
     836      -1,   220,   135,   132,    -1,   217,   135,   132,    -1,   293,
     837     135,   132,    -1,   296,   135,   132,    -1,   216,   277,    -1,
     838     232,   216,   277,    -1,   215,   135,   116,   134,   272,   277,
     839      -1,   367,   272,   311,    -1,   370,   272,   311,    -1,   228,
     840     370,   272,   311,    -1,   218,    -1,   228,   218,    -1,   232,
     841     218,    -1,   232,   228,   218,    -1,   217,   135,   116,   134,
     842     272,    -1,   111,   112,   272,   109,   134,   260,   135,   110,
     843      -1,   370,   272,   109,   134,   260,   135,   110,    -1,   219,
     844     272,   109,   134,   260,   135,   110,    -1,   111,   134,   262,
     845     135,   112,    -1,   111,   134,   262,   135,   116,   134,   263,
     846     135,   112,    -1,     3,   216,    -1,     3,   218,    -1,   220,
     847     135,   116,   134,   139,    -1,     3,   226,   309,    -1,   221,
     848     135,   116,   134,   309,    -1,   228,     3,   226,   309,    -1,
     849     226,     3,   309,    -1,   226,     3,   228,   309,    -1,     3,
     850     139,   131,   165,    -1,   222,   135,   116,   134,   139,   131,
     851     165,    -1,   224,   135,   132,    -1,   221,   135,   132,    -1,
     852     222,   135,   132,    -1,   240,   135,   132,    -1,   225,   309,
     853     311,   277,    -1,   224,   116,   312,   309,   311,   277,    -1,
     854     236,    -1,   240,    -1,   242,    -1,   283,    -1,   237,    -1,
     855     241,    -1,   243,    -1,   284,    -1,    -1,   228,    -1,   229,
     856      -1,   228,   229,    -1,   230,    -1,   314,    -1,    10,    -1,
     857      12,    -1,    11,    -1,    14,    -1,    67,    -1,    -1,    13,
     858     109,   231,   286,   110,    -1,   233,    -1,   228,   233,    -1,
     859     232,   228,   233,    -1,   234,    -1,   233,   234,    -1,     5,
     860      -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
     861      -1,    69,    -1,    71,    -1,    16,    -1,    21,    -1,    20,
     862      -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
     863      -1,    15,    -1,    25,    -1,    26,    -1,    27,    -1,    24,
     864      -1,   237,    -1,   232,   237,    -1,   236,   234,    -1,   236,
     865     234,   228,    -1,   236,   234,   237,    -1,   238,    -1,   227,
     866     239,   227,    -1,   235,    -1,   228,   235,    -1,   238,   229,
     867      -1,   238,   235,    -1,    28,   109,   276,   110,    -1,    28,
     868     109,   170,   110,    -1,    78,   109,   276,   110,    -1,    78,
     869     109,   170,   110,    -1,   241,    -1,   232,   241,    -1,   240,
     870     234,    -1,   240,   234,   228,    -1,   244,    -1,   228,   244,
     871      -1,   241,   229,    -1,   243,    -1,   232,   243,    -1,   242,
     872     234,    -1,   242,   234,   228,    -1,    74,    -1,   228,    74,
     873      -1,   243,   229,    -1,   245,    -1,   256,    -1,   247,   114,
     874     248,   115,    -1,   247,   274,    -1,    -1,   247,   274,   246,
     875     114,   248,   115,    -1,   247,   109,   292,   110,   114,   248,
     876     115,    -1,   247,   285,    -1,    31,   312,    -1,    32,   312,
     877      -1,    -1,   248,   249,    -1,   250,   132,    -1,    40,   250,
     878     132,    -1,   251,   132,    -1,    40,   251,   132,    -1,   366,
     879      -1,   366,   274,    -1,   250,   116,   274,    -1,   250,   116,
     880      -1,   226,   252,    -1,   251,   116,   312,   252,    -1,    -1,
     881     254,    -1,   318,   253,    -1,   331,   253,    -1,   357,    -1,
     882      -1,   254,    -1,   130,   164,    -1,    30,   312,    -1,   255,
     883     114,   258,   372,   115,    -1,   255,   274,    -1,    -1,   255,
     884     274,   257,   114,   258,   372,   115,    -1,   274,   259,    -1,
     885     258,   116,   274,   259,    -1,    -1,   131,   164,    -1,    -1,
     886     261,    -1,   263,    -1,   262,    -1,   262,   135,   116,   134,
     887     263,    -1,   263,   135,   116,   134,    96,    -1,   262,   135,
     888     116,   134,    96,    -1,   267,    -1,   263,   135,   116,   134,
     889     267,    -1,   262,   135,   116,   134,   267,    -1,   262,   135,
     890     116,   134,   263,   135,   116,   134,   267,    -1,   268,    -1,
     891     263,   135,   116,   134,   268,    -1,    -1,   265,    -1,   266,
     892      -1,   266,   135,   116,   134,    96,    -1,   270,    -1,   269,
     893      -1,   266,   135,   116,   134,   270,    -1,   266,   135,   116,
     894     134,   269,    -1,   269,    -1,   362,   272,   373,    -1,   370,
     895     272,   373,    -1,   228,   370,   272,   373,    -1,   218,    -1,
     896     270,    -1,   362,    -1,   370,    -1,   228,   370,    -1,   371,
     897      -1,   225,   336,   373,    -1,   225,   340,   373,    -1,   225,
     898      -1,   225,   351,    -1,   139,    -1,   271,   116,   139,    -1,
     899     137,    -1,    74,    -1,    75,    -1,   138,    -1,    74,    -1,
     900      75,    -1,   139,    -1,    74,    -1,    75,    -1,   366,    -1,
     901     226,    -1,   226,   357,    -1,   366,    -1,   371,    -1,   226,
     902      -1,   226,   345,    -1,    -1,   131,   278,    -1,   107,   278,
     903      -1,   165,    -1,   114,   279,   372,   115,    -1,    -1,   278,
     904      -1,   280,   278,    -1,   279,   116,   278,    -1,   279,   116,
     905     280,   278,    -1,   281,   130,    -1,   274,   130,    -1,   282,
     906      -1,   281,   282,    -1,   113,   274,    -1,   111,   134,   165,
     907     135,   112,    -1,   111,   134,   310,   135,   112,    -1,   111,
     908     134,   164,    96,   164,   135,   112,    -1,   113,   111,   134,
     909     147,   135,   112,    -1,   284,    -1,   232,   284,    -1,   283,
     910     234,    -1,   283,   234,   228,    -1,   285,    -1,   228,   285,
     911      -1,   284,   229,    -1,    75,   109,   292,   110,    -1,   287,
     912     373,    -1,   286,   116,   287,   373,    -1,    -1,   289,   274,
     913     288,   290,    -1,   226,   336,    -1,    33,    -1,    35,    -1,
     914      34,    -1,    -1,   290,   291,    -1,   128,   274,   109,   292,
     915     110,    -1,   128,   114,   134,   298,   115,    -1,   128,   109,
     916     134,   286,   135,   110,   114,   134,   298,   115,   109,   292,
     917     110,    -1,   276,    -1,   165,    -1,   292,   116,   276,    -1,
     918     292,   116,   165,    -1,    33,   294,    -1,   233,    33,   294,
     919      -1,   293,   116,   294,    -1,   295,   290,    -1,   295,   290,
     920     131,   276,    -1,   274,    -1,   273,   109,   134,   286,   135,
     921     110,    -1,    36,   274,   109,   134,   286,   135,   110,   114,
     922     115,    -1,    -1,    36,   274,   109,   134,   286,   135,   110,
     923     114,   297,   298,   115,    -1,   299,    -1,   298,   134,   299,
     924      -1,   300,   135,   132,    -1,   301,   135,   132,    -1,   216,
     925      -1,   218,    -1,   300,   135,   116,   134,   272,    -1,   226,
     926     309,    -1,   301,   135,   116,   134,   309,    -1,    -1,   303,
     927      -1,   305,    -1,   303,   134,   305,    -1,    -1,   303,    -1,
     928     213,    -1,   307,    -1,   199,    -1,    -1,     5,    82,   306,
     929     114,   304,   115,    -1,    40,   305,    -1,   308,    -1,   323,
     930     174,    -1,   327,   134,   208,   174,    -1,   217,   174,    -1,
     931     225,   323,   174,    -1,   228,   323,   174,    -1,   232,   323,
     932     174,    -1,   232,   228,   323,   174,    -1,   225,   327,   134,
     933     208,   174,    -1,   228,   327,   134,   208,   174,    -1,   232,
     934     327,   134,   208,   174,    -1,   232,   228,   327,   134,   208,
     935     174,    -1,   318,    -1,   331,    -1,   323,    -1,   164,   122,
     936     164,    -1,    -1,    64,   109,   142,   110,   312,    -1,    -1,
     937     313,    -1,   314,    -1,   313,   314,    -1,    39,   109,   109,
     938     315,   110,   110,    -1,   316,    -1,   315,   116,   316,    -1,
     939      -1,   317,    -1,   317,   109,   171,   110,    -1,   272,    -1,
     940     234,    -1,   235,    -1,   229,    -1,   319,   312,    -1,   320,
     941      -1,   321,   312,    -1,   322,   312,    -1,   137,    -1,   109,
     942     319,   110,    -1,   150,   318,    -1,   150,   228,   318,    -1,
     943     109,   320,   110,    -1,   319,   349,    -1,   109,   320,   110,
     944     349,    -1,   109,   321,   110,   350,    -1,   109,   321,   110,
     945      -1,   109,   320,   110,   109,   134,   264,   135,   110,    -1,
     946     109,   322,   110,    -1,   324,   312,    -1,   325,    -1,   326,
     947     312,    -1,   319,   109,   134,   264,   135,   110,    -1,   109,
     948     325,   110,   109,   134,   264,   135,   110,    -1,   109,   324,
     949     110,    -1,   150,   323,    -1,   150,   228,   323,    -1,   109,
     950     325,   110,    -1,   109,   325,   110,   349,    -1,   109,   326,
     951     110,   350,    -1,   109,   326,   110,    -1,   328,    -1,   329,
     952      -1,   330,    -1,   319,   109,   271,   110,    -1,   109,   329,
     953     110,   109,   271,   110,    -1,   109,   328,   110,    -1,   150,
     954     327,    -1,   150,   228,   327,    -1,   109,   329,   110,    -1,
     955     109,   329,   110,   349,    -1,   109,   330,   110,   350,    -1,
     956     109,   330,   110,    -1,   332,   312,    -1,   333,    -1,   334,
     957     312,    -1,   335,   312,    -1,   341,    -1,   109,   332,   110,
     958      -1,   150,   331,    -1,   150,   228,   331,    -1,   109,   333,
     959     110,    -1,   332,   349,    -1,   109,   333,   110,   349,    -1,
     960     109,   334,   110,   350,    -1,   109,   334,   110,    -1,   332,
     961     109,   134,   264,   135,   110,    -1,   109,   333,   110,   109,
     962     134,   264,   135,   110,    -1,   109,   335,   110,    -1,   319,
     963     312,    -1,   337,    -1,   338,   312,    -1,   339,   312,    -1,
     964     150,   336,    -1,   150,   228,   336,    -1,   109,   337,   110,
     965      -1,   319,   355,    -1,   109,   337,   110,   349,    -1,   109,
     966     338,   110,   350,    -1,   109,   338,   110,    -1,   319,   109,
     967     134,   264,   135,   110,    -1,   109,   337,   110,   109,   134,
     968     264,   135,   110,    -1,   109,   339,   110,    -1,   341,   312,
     969      -1,   342,    -1,   343,   312,    -1,   344,   312,    -1,    74,
     970      -1,    75,    -1,   150,   340,    -1,   150,   228,   340,    -1,
     971     109,   342,   110,    -1,   341,   355,    -1,   109,   342,   110,
     972     355,    -1,   341,   109,   134,   264,   135,   110,    -1,   109,
     973     342,   110,   109,   134,   264,   135,   110,    -1,   346,    -1,
     974     347,   312,    -1,   348,   312,    -1,   150,    -1,   150,   228,
     975      -1,   150,   345,    -1,   150,   228,   345,    -1,   109,   346,
     976     110,    -1,   349,    -1,   109,   346,   110,   349,    -1,   109,
     977     347,   110,   350,    -1,   109,   347,   110,    -1,   109,   134,
     978     264,   135,   110,    -1,   109,   346,   110,   109,   134,   264,
     979     135,   110,    -1,   109,   348,   110,    -1,   111,   112,    -1,
     980     111,   112,   350,    -1,   350,    -1,   111,   134,   165,   135,
     981     112,    -1,   111,   134,   117,   135,   112,    -1,   350,   111,
     982     134,   165,   135,   112,    -1,   350,   111,   134,   117,   135,
     983     112,    -1,   352,    -1,   353,   312,    -1,   354,   312,    -1,
     984     150,    -1,   150,   228,    -1,   150,   351,    -1,   150,   228,
     985     351,    -1,   109,   352,   110,    -1,   355,    -1,   109,   352,
     986     110,   355,    -1,   109,   353,   110,   350,    -1,   109,   353,
     987     110,    -1,   109,   134,   264,   135,   110,    -1,   109,   352,
     988     110,   109,   134,   264,   135,   110,    -1,   109,   354,   110,
     989      -1,   356,    -1,   356,   350,    -1,   350,    -1,   111,   112,
     990      -1,   111,   134,   228,   117,   135,   112,    -1,   111,   134,
     991     228,   135,   112,    -1,   111,   134,   228,   165,   135,   112,
     992      -1,   111,   134,     7,   227,   165,   135,   112,    -1,   111,
     993     134,   228,     7,   165,   135,   112,    -1,   358,    -1,   359,
     994     312,    -1,   360,   312,    -1,   150,    -1,   150,   228,    -1,
     995     150,   357,    -1,   150,   228,   357,    -1,   109,   358,   110,
     996      -1,   349,    -1,   109,   358,   110,   349,    -1,   109,   359,
     997     110,   350,    -1,   109,   359,   110,    -1,   109,   358,   110,
     998     109,   134,   264,   135,   110,    -1,   109,   360,   110,    -1,
     999     362,    -1,   370,    -1,   228,   370,    -1,   363,    -1,   364,
     1000      -1,   150,   226,    -1,   228,   150,   226,    -1,   150,   371,
     1001      -1,   228,   150,   371,    -1,   150,   361,    -1,   228,   150,
     1002     361,    -1,   111,   112,   226,    -1,   365,   226,    -1,   111,
     1003     112,   350,   226,    -1,   365,   350,   226,    -1,   350,   226,
     1004      -1,   111,   112,   363,    -1,   365,   363,    -1,   111,   112,
     1005     350,   363,    -1,   365,   350,   363,    -1,   350,   363,    -1,
     1006     111,   134,   228,   117,   135,   112,    -1,   111,   134,   228,
     1007     165,   135,   112,    -1,   111,   134,   232,   165,   135,   112,
     1008      -1,   111,   134,   232,   228,   165,   135,   112,    -1,   370,
     1009      -1,   228,   370,    -1,   367,    -1,   368,    -1,   369,    -1,
     1010     150,   226,    -1,   228,   150,   226,    -1,   150,   371,    -1,
     1011     228,   150,   371,    -1,   150,   366,    -1,   228,   150,   366,
     1012      -1,   111,   112,   226,    -1,   111,   112,   350,   226,    -1,
     1013     350,   226,    -1,   111,   112,   368,    -1,   111,   112,   350,
     1014     368,    -1,   350,   368,    -1,   111,   134,   263,   135,   112,
     1015      -1,   111,   112,   109,   260,   110,    -1,   370,   109,   134,
     1016     260,   135,   110,    -1,   219,   109,   134,   260,   135,   110,
     1017      -1,    -1,   116,    -1,    -1,   131,   165,    -1
    10201018};
    10211019
     
    10231021static const yytype_uint16 yyrline[] =
    10241022{
    1025        0,   302,   302,   306,   313,   314,   315,   319,   320,   321,
    1026      325,   326,   330,   331,   335,   336,   340,   344,   345,   356,
    1027      358,   360,   362,   367,   368,   374,   378,   380,   382,   384,
    1028      386,   388,   390,   392,   394,   403,   404,   410,   411,   415,
    1029      416,   420,   424,   426,   428,   430,   435,   436,   440,   443,
    1030      445,   447,   452,   465,   467,   469,   471,   473,   475,   477,
    1031      479,   481,   483,   485,   492,   493,   499,   500,   501,   502,
    1032      506,   507,   509,   514,   515,   517,   519,   524,   525,   527,
    1033      532,   533,   535,   540,   541,   543,   545,   547,   552,   553,
    1034      555,   560,   561,   566,   567,   572,   573,   578,   579,   584,
    1035      585,   590,   591,   594,   596,   601,   606,   607,   609,   615,
    1036      616,   620,   621,   622,   623,   624,   625,   626,   627,   628,
    1037      629,   630,   631,   637,   639,   641,   643,   648,   649,   654,
    1038      655,   661,   662,   668,   669,   670,   671,   672,   673,   674,
    1039      675,   676,   686,   693,   695,   705,   706,   711,   713,   719,
    1040      721,   725,   726,   731,   736,   739,   741,   743,   753,   755,
    1041      766,   767,   769,   773,   775,   779,   780,   785,   786,   790,
    1042      795,   796,   800,   802,   808,   809,   813,   815,   817,   819,
    1043      825,   826,   830,   832,   837,   839,   841,   846,   848,   853,
    1044      855,   859,   862,   866,   869,   873,   875,   877,   879,   884,
    1045      886,   888,   893,   895,   897,   899,   901,   906,   908,   910,
    1046      912,   917,   929,   930,   935,   937,   942,   946,   948,   950,
    1047      952,   954,   960,   961,   967,   968,   972,   973,   978,   980,
    1048      986,   987,   989,   994,   999,  1009,  1011,  1015,  1016,  1021,
    1049     1023,  1027,  1028,  1032,  1034,  1038,  1039,  1043,  1044,  1048,
    1050     1049,  1064,  1065,  1066,  1067,  1068,  1072,  1077,  1084,  1094,
    1051     1099,  1104,  1112,  1117,  1122,  1127,  1132,  1140,  1162,  1167,
    1052     1174,  1176,  1183,  1188,  1193,  1204,  1209,  1214,  1219,  1224,
    1053     1233,  1238,  1246,  1247,  1248,  1249,  1255,  1260,  1268,  1269,
    1054     1270,  1271,  1275,  1276,  1277,  1278,  1283,  1284,  1293,  1294,
    1055     1299,  1300,  1305,  1307,  1309,  1311,  1313,  1316,  1315,  1327,
    1056     1328,  1330,  1340,  1341,  1346,  1348,  1350,  1352,  1354,  1357,
    1057     1359,  1362,  1367,  1369,  1371,  1373,  1375,  1377,  1379,  1381,
    1058     1383,  1385,  1387,  1389,  1391,  1397,  1398,  1400,  1402,  1404,
    1059     1409,  1410,  1416,  1417,  1419,  1421,  1426,  1428,  1430,  1432,
    1060     1437,  1438,  1440,  1442,  1447,  1448,  1450,  1455,  1456,  1458,
    1061     1460,  1465,  1467,  1469,  1474,  1475,  1479,  1481,  1487,  1486,
    1062     1490,  1492,  1497,  1499,  1505,  1506,  1511,  1512,  1514,  1515,
    1063     1524,  1525,  1527,  1529,  1534,  1536,  1542,  1543,  1545,  1548,
    1064     1551,  1556,  1557,  1562,  1567,  1571,  1573,  1579,  1578,  1585,
    1065     1587,  1593,  1594,  1602,  1603,  1607,  1608,  1609,  1611,  1613,
    1066     1620,  1621,  1623,  1625,  1630,  1631,  1637,  1638,  1642,  1643,
    1067     1648,  1649,  1650,  1652,  1660,  1661,  1663,  1666,  1668,  1672,
    1068     1673,  1674,  1676,  1678,  1682,  1687,  1695,  1696,  1705,  1707,
    1069     1712,  1713,  1714,  1718,  1719,  1720,  1724,  1725,  1726,  1730,
    1070     1731,  1732,  1737,  1738,  1739,  1740,  1746,  1747,  1749,  1754,
    1071     1755,  1760,  1761,  1762,  1763,  1764,  1779,  1780,  1785,  1786,
    1072     1792,  1794,  1797,  1799,  1801,  1824,  1825,  1827,  1829,  1834,
    1073     1835,  1837,  1842,  1847,  1848,  1854,  1853,  1857,  1861,  1863,
    1074     1865,  1871,  1872,  1877,  1882,  1884,  1889,  1891,  1892,  1894,
    1075     1899,  1901,  1903,  1908,  1910,  1915,  1920,  1928,  1934,  1933,
    1076     1947,  1948,  1953,  1954,  1958,  1963,  1968,  1976,  1981,  1992,
    1077     1993,  1998,  1999,  2005,  2006,  2010,  2011,  2012,  2015,  2014,
    1078     2025,  2034,  2040,  2046,  2055,  2061,  2067,  2073,  2079,  2087,
    1079     2093,  2101,  2107,  2116,  2117,  2118,  2122,  2126,  2128,  2133,
    1080     2134,  2138,  2139,  2144,  2150,  2151,  2154,  2156,  2157,  2161,
    1081     2162,  2163,  2164,  2198,  2200,  2201,  2203,  2208,  2213,  2218,
    1082     2220,  2222,  2227,  2229,  2231,  2233,  2238,  2240,  2249,  2251,
    1083     2252,  2257,  2259,  2261,  2266,  2268,  2270,  2275,  2277,  2279,
    1084     2288,  2289,  2290,  2294,  2296,  2298,  2303,  2305,  2307,  2312,
    1085     2314,  2316,  2331,  2333,  2334,  2336,  2341,  2342,  2347,  2349,
    1086     2351,  2356,  2358,  2360,  2362,  2367,  2369,  2371,  2381,  2383,
    1087     2384,  2386,  2391,  2393,  2395,  2400,  2402,  2404,  2406,  2411,
    1088     2413,  2415,  2446,  2448,  2449,  2451,  2456,  2461,  2469,  2471,
    1089     2473,  2478,  2480,  2485,  2487,  2501,  2502,  2504,  2509,  2511,
    1090     2513,  2515,  2517,  2522,  2523,  2525,  2527,  2532,  2534,  2536,
    1091     2542,  2544,  2546,  2550,  2552,  2554,  2556,  2570,  2571,  2573,
    1092     2578,  2580,  2582,  2584,  2586,  2591,  2592,  2594,  2596,  2601,
    1093     2603,  2605,  2611,  2612,  2614,  2623,  2626,  2628,  2631,  2633,
    1094     2635,  2648,  2649,  2651,  2656,  2658,  2660,  2662,  2664,  2669,
    1095     2670,  2672,  2674,  2679,  2681,  2689,  2690,  2691,  2696,  2697,
    1096     2701,  2703,  2705,  2707,  2709,  2711,  2718,  2720,  2722,  2724,
    1097     2726,  2728,  2730,  2732,  2734,  2736,  2741,  2743,  2745,  2750,
    1098     2776,  2777,  2779,  2783,  2784,  2788,  2790,  2792,  2794,  2796,
    1099     2798,  2805,  2807,  2809,  2811,  2813,  2815,  2820,  2825,  2827,
    1100     2829,  2847,  2849,  2854,  2855
     1023       0,   300,   300,   304,   311,   312,   313,   317,   318,   319,
     1024     323,   324,   328,   329,   333,   334,   338,   342,   343,   354,
     1025     356,   358,   360,   365,   366,   372,   376,   378,   380,   382,
     1026     384,   386,   388,   390,   399,   400,   406,   407,   411,   412,
     1027     416,   420,   422,   424,   426,   431,   434,   436,   438,   443,
     1028     456,   458,   460,   462,   464,   466,   468,   470,   472,   474,
     1029     476,   483,   484,   490,   491,   492,   493,   497,   498,   500,
     1030     505,   506,   508,   510,   515,   516,   518,   523,   524,   526,
     1031     531,   532,   534,   536,   538,   543,   544,   546,   551,   552,
     1032     557,   558,   563,   564,   569,   570,   575,   576,   581,   582,
     1033     585,   587,   592,   597,   598,   600,   606,   607,   611,   612,
     1034     613,   614,   615,   616,   617,   618,   619,   620,   621,   622,
     1035     628,   630,   632,   634,   639,   640,   645,   646,   652,   653,
     1036     659,   660,   661,   662,   663,   664,   665,   666,   667,   677,
     1037     684,   686,   696,   697,   702,   704,   710,   712,   716,   717,
     1038     722,   727,   730,   732,   734,   744,   746,   757,   758,   760,
     1039     764,   766,   770,   771,   776,   777,   781,   786,   787,   791,
     1040     793,   799,   800,   804,   806,   808,   810,   816,   817,   821,
     1041     823,   828,   830,   832,   837,   839,   844,   846,   850,   853,
     1042     857,   860,   864,   866,   868,   870,   875,   877,   879,   884,
     1043     886,   888,   890,   892,   897,   899,   901,   903,   908,   920,
     1044     921,   926,   928,   933,   937,   939,   941,   943,   945,   951,
     1045     952,   958,   959,   963,   964,   969,   971,   977,   978,   980,
     1046     985,   990,  1000,  1002,  1006,  1007,  1012,  1014,  1018,  1019,
     1047    1023,  1025,  1029,  1030,  1034,  1035,  1039,  1040,  1055,  1056,
     1048    1057,  1058,  1059,  1063,  1068,  1075,  1085,  1090,  1095,  1103,
     1049    1108,  1113,  1118,  1123,  1131,  1153,  1158,  1165,  1167,  1174,
     1050    1179,  1184,  1195,  1200,  1205,  1210,  1215,  1224,  1229,  1237,
     1051    1238,  1239,  1240,  1246,  1251,  1259,  1260,  1261,  1262,  1266,
     1052    1267,  1268,  1269,  1274,  1275,  1284,  1285,  1290,  1291,  1296,
     1053    1298,  1300,  1302,  1304,  1307,  1306,  1318,  1319,  1321,  1331,
     1054    1332,  1337,  1339,  1341,  1343,  1345,  1348,  1350,  1353,  1358,
     1055    1360,  1362,  1364,  1366,  1368,  1370,  1372,  1374,  1376,  1378,
     1056    1380,  1382,  1388,  1389,  1391,  1393,  1395,  1400,  1401,  1407,
     1057    1408,  1410,  1412,  1417,  1419,  1421,  1423,  1428,  1429,  1431,
     1058    1433,  1438,  1439,  1441,  1446,  1447,  1449,  1451,  1456,  1458,
     1059    1460,  1465,  1466,  1470,  1472,  1478,  1477,  1481,  1483,  1488,
     1060    1490,  1496,  1497,  1502,  1503,  1505,  1506,  1515,  1516,  1518,
     1061    1520,  1525,  1527,  1533,  1534,  1536,  1539,  1542,  1547,  1548,
     1062    1553,  1558,  1562,  1564,  1570,  1569,  1576,  1578,  1584,  1585,
     1063    1593,  1594,  1598,  1599,  1600,  1602,  1604,  1611,  1612,  1614,
     1064    1616,  1621,  1622,  1628,  1629,  1633,  1634,  1639,  1640,  1641,
     1065    1643,  1651,  1652,  1654,  1657,  1659,  1663,  1664,  1665,  1667,
     1066    1669,  1673,  1678,  1686,  1687,  1696,  1698,  1703,  1704,  1705,
     1067    1709,  1710,  1711,  1715,  1716,  1717,  1721,  1722,  1723,  1728,
     1068    1729,  1730,  1731,  1737,  1738,  1740,  1745,  1746,  1751,  1752,
     1069    1753,  1754,  1755,  1770,  1771,  1776,  1777,  1783,  1785,  1788,
     1070    1790,  1792,  1815,  1816,  1818,  1820,  1825,  1826,  1828,  1833,
     1071    1838,  1839,  1845,  1844,  1848,  1852,  1854,  1856,  1862,  1863,
     1072    1868,  1873,  1875,  1880,  1882,  1883,  1885,  1890,  1892,  1894,
     1073    1899,  1901,  1906,  1911,  1919,  1925,  1924,  1938,  1939,  1944,
     1074    1945,  1949,  1954,  1959,  1967,  1972,  1983,  1984,  1989,  1990,
     1075    1996,  1997,  2001,  2002,  2003,  2006,  2005,  2016,  2025,  2031,
     1076    2037,  2046,  2052,  2058,  2064,  2070,  2078,  2084,  2092,  2098,
     1077    2107,  2108,  2109,  2113,  2117,  2119,  2124,  2125,  2129,  2130,
     1078    2135,  2141,  2142,  2145,  2147,  2148,  2152,  2153,  2154,  2155,
     1079    2189,  2191,  2192,  2194,  2199,  2204,  2209,  2211,  2213,  2218,
     1080    2220,  2222,  2224,  2229,  2231,  2240,  2242,  2243,  2248,  2250,
     1081    2252,  2257,  2259,  2261,  2266,  2268,  2270,  2279,  2280,  2281,
     1082    2285,  2287,  2289,  2294,  2296,  2298,  2303,  2305,  2307,  2322,
     1083    2324,  2325,  2327,  2332,  2333,  2338,  2340,  2342,  2347,  2349,
     1084    2351,  2353,  2358,  2360,  2362,  2372,  2374,  2375,  2377,  2382,
     1085    2384,  2386,  2391,  2393,  2395,  2397,  2402,  2404,  2406,  2437,
     1086    2439,  2440,  2442,  2447,  2452,  2460,  2462,  2464,  2469,  2471,
     1087    2476,  2478,  2492,  2493,  2495,  2500,  2502,  2504,  2506,  2508,
     1088    2513,  2514,  2516,  2518,  2523,  2525,  2527,  2533,  2535,  2537,
     1089    2541,  2543,  2545,  2547,  2561,  2562,  2564,  2569,  2571,  2573,
     1090    2575,  2577,  2582,  2583,  2585,  2587,  2592,  2594,  2596,  2602,
     1091    2603,  2605,  2614,  2617,  2619,  2622,  2624,  2626,  2639,  2640,
     1092    2642,  2647,  2649,  2651,  2653,  2655,  2660,  2661,  2663,  2665,
     1093    2670,  2672,  2680,  2681,  2682,  2687,  2688,  2692,  2694,  2696,
     1094    2698,  2700,  2702,  2709,  2711,  2713,  2715,  2717,  2719,  2721,
     1095    2723,  2725,  2727,  2732,  2734,  2736,  2741,  2767,  2768,  2770,
     1096    2774,  2775,  2779,  2781,  2783,  2785,  2787,  2789,  2796,  2798,
     1097    2800,  2802,  2804,  2806,  2811,  2816,  2818,  2820,  2838,  2840,
     1098    2845,  2846
    11011099};
    11021100#endif
     
    11301128  "string_literal", "string_literal_list", "primary_expression",
    11311129  "postfix_expression", "argument_expression_list", "argument_expression",
    1132   "field_list", "field", "field_name", "unary_expression",
    1133   "ptrref_operator", "unary_operator", "cast_expression",
    1134   "multiplicative_expression", "additive_expression", "shift_expression",
    1135   "relational_expression", "equality_expression", "AND_expression",
    1136   "exclusive_OR_expression", "inclusive_OR_expression",
    1137   "logical_AND_expression", "logical_OR_expression",
    1138   "conditional_expression", "constant_expression", "assignment_expression",
    1139   "assignment_expression_opt", "assignment_operator", "tuple",
    1140   "tuple_expression_list", "comma_expression", "comma_expression_opt",
    1141   "statement", "labeled_statement", "compound_statement",
    1142   "block_item_list", "block_item", "statement_list",
    1143   "expression_statement", "selection_statement", "case_value",
    1144   "case_value_list", "case_label", "case_label_list", "case_clause",
    1145   "switch_clause_list_opt", "switch_clause_list", "choose_clause_list_opt",
    1146   "choose_clause_list", "fall_through_opt", "fall_through",
    1147   "iteration_statement", "for_control_expression", "jump_statement",
    1148   "exception_statement", "handler_list", "handler_clause",
    1149   "finally_clause", "exception_declaration", "asm_statement",
    1150   "asm_volatile_opt", "asm_operands_opt", "asm_operands_list",
    1151   "asm_operand", "asm_clobbers_list_opt", "label_list",
    1152   "declaration_list_opt", "declaration_list", "old_declaration_list_opt",
    1153   "old_declaration_list", "local_label_declaration_opt",
    1154   "local_label_declaration_list", "local_label_list", "declaration",
    1155   "new_declaration", "new_variable_declaration", "new_variable_specifier",
     1130  "field_list", "field", "unary_expression", "ptrref_operator",
     1131  "unary_operator", "cast_expression", "multiplicative_expression",
     1132  "additive_expression", "shift_expression", "relational_expression",
     1133  "equality_expression", "AND_expression", "exclusive_OR_expression",
     1134  "inclusive_OR_expression", "logical_AND_expression",
     1135  "logical_OR_expression", "conditional_expression", "constant_expression",
     1136  "assignment_expression", "assignment_expression_opt",
     1137  "assignment_operator", "tuple", "tuple_expression_list",
     1138  "comma_expression", "comma_expression_opt", "statement",
     1139  "labeled_statement", "compound_statement", "block_item_list",
     1140  "block_item", "statement_list", "expression_statement",
     1141  "selection_statement", "case_value", "case_value_list", "case_label",
     1142  "case_label_list", "case_clause", "switch_clause_list_opt",
     1143  "switch_clause_list", "choose_clause_list_opt", "choose_clause_list",
     1144  "fall_through_opt", "fall_through", "iteration_statement",
     1145  "for_control_expression", "jump_statement", "exception_statement",
     1146  "handler_list", "handler_clause", "finally_clause",
     1147  "exception_declaration", "asm_statement", "asm_volatile_opt",
     1148  "asm_operands_opt", "asm_operands_list", "asm_operand",
     1149  "asm_clobbers_list_opt", "label_list", "declaration_list_opt",
     1150  "declaration_list", "old_declaration_list_opt", "old_declaration_list",
     1151  "local_label_declaration_opt", "local_label_declaration_list",
     1152  "local_label_list", "declaration", "new_declaration",
     1153  "new_variable_declaration", "new_variable_specifier",
    11561154  "new_function_declaration", "new_function_specifier",
    11571155  "new_function_return", "new_typedef_declaration", "typedef_declaration",
     
    12431241     138,   138,   139,   139,   140,   140,   141,   142,   142,   143,
    12441242     143,   143,   143,   144,   144,   144,   144,   144,   144,   144,
    1245      144,   144,   144,   144,   144,   145,   145,   146,   146,   147,
    1246      147,   148,   148,   148,   148,   148,   149,   149,   150,   150,
    1247      150,   150,   150,   150,   150,   150,   150,   150,   150,   150,
    1248      150,   150,   150,   150,   151,   151,   152,   152,   152,   152,
    1249      153,   153,   153,   154,   154,   154,   154,   155,   155,   155,
    1250      156,   156,   156,   157,   157,   157,   157,   157,   158,   158,
    1251      158,   159,   159,   160,   160,   161,   161,   162,   162,   163,
    1252      163,   164,   164,   164,   164,   165,   166,   166,   166,   167,
    1253      167,   168,   168,   168,   168,   168,   168,   168,   168,   168,
    1254      168,   168,   168,   169,   169,   169,   169,   170,   170,   171,
    1255      171,   172,   172,   173,   173,   173,   173,   173,   173,   173,
    1256      173,   173,   174,   175,   175,   176,   176,   177,   177,   177,
    1257      177,   178,   178,   179,   180,   180,   180,   180,   180,   180,
    1258      181,   181,   181,   182,   182,   183,   183,   184,   184,   185,
    1259      186,   186,   187,   187,   188,   188,   189,   189,   189,   189,
    1260      190,   190,   191,   191,   192,   192,   192,   193,   193,   194,
    1261      194,   194,   194,   194,   194,   194,   194,   194,   194,   195,
    1262      195,   195,   196,   196,   196,   196,   196,   197,   197,   197,
    1263      197,   198,   199,   199,   199,   199,   199,   200,   200,   200,
    1264      200,   200,   201,   201,   202,   202,   203,   203,   204,   204,
    1265      205,   205,   205,   206,   206,   207,   207,   208,   208,   209,
    1266      209,   210,   210,   211,   211,   212,   212,   213,   213,   214,
    1267      214,   215,   215,   215,   215,   215,   216,   216,   216,   217,
    1268      217,   217,   218,   218,   218,   218,   218,   219,   219,   219,
    1269      220,   220,   221,   221,   221,   222,   222,   222,   222,   222,
    1270      223,   223,   224,   224,   224,   224,   225,   225,   226,   226,
    1271      226,   226,   227,   227,   227,   227,   228,   228,   229,   229,
    1272      230,   230,   231,   231,   231,   231,   231,   232,   231,   233,
    1273      233,   233,   234,   234,   235,   235,   235,   235,   235,   235,
    1274      235,   235,   236,   236,   236,   236,   236,   236,   236,   236,
    1275      236,   236,   236,   236,   236,   237,   237,   237,   237,   237,
    1276      238,   238,   239,   239,   239,   239,   240,   240,   240,   240,
    1277      241,   241,   241,   241,   242,   242,   242,   243,   243,   243,
    1278      243,   244,   244,   244,   245,   245,   246,   246,   247,   246,
    1279      246,   246,   248,   248,   249,   249,   250,   250,   250,   250,
    1280      251,   251,   251,   251,   252,   252,   253,   253,   253,   253,
    1281      253,   254,   254,   255,   256,   257,   257,   258,   257,   259,
    1282      259,   260,   260,   261,   261,   262,   262,   262,   262,   262,
    1283      263,   263,   263,   263,   264,   264,   265,   265,   266,   266,
    1284      267,   267,   267,   267,   268,   268,   268,   268,   268,   269,
    1285      269,   269,   269,   269,   270,   270,   271,   271,   272,   272,
     1243     144,   144,   144,   144,   145,   145,   146,   146,   147,   147,
     1244     148,   148,   148,   148,   148,   149,   149,   149,   149,   149,
     1245     149,   149,   149,   149,   149,   149,   149,   149,   149,   149,
     1246     149,   150,   150,   151,   151,   151,   151,   152,   152,   152,
     1247     153,   153,   153,   153,   154,   154,   154,   155,   155,   155,
     1248     156,   156,   156,   156,   156,   157,   157,   157,   158,   158,
     1249     159,   159,   160,   160,   161,   161,   162,   162,   163,   163,
     1250     163,   163,   164,   165,   165,   165,   166,   166,   167,   167,
     1251     167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
     1252     168,   168,   168,   168,   169,   169,   170,   170,   171,   171,
     1253     172,   172,   172,   172,   172,   172,   172,   172,   172,   173,
     1254     174,   174,   175,   175,   176,   176,   176,   176,   177,   177,
     1255     178,   179,   179,   179,   179,   179,   179,   180,   180,   180,
     1256     181,   181,   182,   182,   183,   183,   184,   185,   185,   186,
     1257     186,   187,   187,   188,   188,   188,   188,   189,   189,   190,
     1258     190,   191,   191,   191,   192,   192,   193,   193,   193,   193,
     1259     193,   193,   193,   193,   193,   193,   194,   194,   194,   195,
     1260     195,   195,   195,   195,   196,   196,   196,   196,   197,   198,
     1261     198,   198,   198,   198,   199,   199,   199,   199,   199,   200,
     1262     200,   201,   201,   202,   202,   203,   203,   204,   204,   204,
     1263     205,   205,   206,   206,   207,   207,   208,   208,   209,   209,
     1264     210,   210,   211,   211,   212,   212,   213,   213,   214,   214,
     1265     214,   214,   214,   215,   215,   215,   216,   216,   216,   217,
     1266     217,   217,   217,   217,   218,   218,   218,   219,   219,   220,
     1267     220,   220,   221,   221,   221,   221,   221,   222,   222,   223,
     1268     223,   223,   223,   224,   224,   225,   225,   225,   225,   226,
     1269     226,   226,   226,   227,   227,   228,   228,   229,   229,   230,
     1270     230,   230,   230,   230,   231,   230,   232,   232,   232,   233,
     1271     233,   234,   234,   234,   234,   234,   234,   234,   234,   235,
     1272     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
     1273     235,   235,   236,   236,   236,   236,   236,   237,   237,   238,
     1274     238,   238,   238,   239,   239,   239,   239,   240,   240,   240,
     1275     240,   241,   241,   241,   242,   242,   242,   242,   243,   243,
     1276     243,   244,   244,   245,   245,   246,   245,   245,   245,   247,
     1277     247,   248,   248,   249,   249,   249,   249,   250,   250,   250,
     1278     250,   251,   251,   252,   252,   252,   252,   252,   253,   253,
     1279     254,   255,   256,   256,   257,   256,   258,   258,   259,   259,
     1280     260,   260,   261,   261,   261,   261,   261,   262,   262,   262,
     1281     262,   263,   263,   264,   264,   265,   265,   266,   266,   266,
     1282     266,   267,   267,   267,   267,   267,   268,   268,   268,   268,
     1283     268,   269,   269,   270,   270,   271,   271,   272,   272,   272,
    12861284     273,   273,   273,   274,   274,   274,   275,   275,   275,   276,
    1287      276,   276,   277,   277,   277,   277,   278,   278,   278,   279,
    1288      279,   280,   280,   280,   280,   280,   281,   281,   282,   282,
    1289      283,   283,   283,   283,   283,   284,   284,   284,   284,   285,
    1290      285,   285,   286,   287,   287,   289,   288,   288,   290,   290,
    1291      290,   291,   291,   292,   292,   292,   293,   293,   293,   293,
    1292      294,   294,   294,   295,   295,   296,   296,   297,   298,   297,
    1293      299,   299,   300,   300,   301,   301,   301,   302,   302,   303,
    1294      303,   304,   304,   305,   305,   306,   306,   306,   307,   306,
    1295      306,   308,   308,   308,   309,   309,   309,   309,   309,   309,
    1296      309,   309,   309,   310,   310,   310,   311,   312,   312,   313,
    1297      313,   314,   314,   315,   316,   316,   317,   317,   317,   318,
    1298      318,   318,   318,   319,   319,   319,   319,   320,   320,   321,
    1299      321,   321,   322,   322,   322,   322,   323,   323,   324,   324,
     1285     276,   276,   276,   277,   277,   277,   278,   278,   279,   279,
     1286     279,   279,   279,   280,   280,   281,   281,   282,   282,   282,
     1287     282,   282,   283,   283,   283,   283,   284,   284,   284,   285,
     1288     286,   286,   288,   287,   287,   289,   289,   289,   290,   290,
     1289     291,   291,   291,   292,   292,   292,   292,   293,   293,   293,
     1290     294,   294,   295,   295,   296,   297,   296,   298,   298,   299,
     1291     299,   300,   300,   300,   301,   301,   302,   302,   303,   303,
     1292     304,   304,   305,   305,   305,   306,   305,   305,   307,   307,
     1293     307,   308,   308,   308,   308,   308,   308,   308,   308,   308,
     1294     309,   309,   309,   310,   311,   311,   312,   312,   313,   313,
     1295     314,   315,   315,   316,   316,   316,   317,   317,   317,   317,
     1296     318,   318,   318,   318,   319,   319,   320,   320,   320,   321,
     1297     321,   321,   321,   322,   322,   323,   323,   323,   324,   324,
    13001298     324,   325,   325,   325,   326,   326,   326,   327,   327,   327,
    13011299     328,   328,   328,   329,   329,   329,   330,   330,   330,   331,
    1302      331,   331,   332,   332,   332,   332,   333,   333,   334,   334,
    1303      334,   335,   335,   335,   335,   336,   336,   336,   337,   337,
    1304      337,   337,   338,   338,   338,   339,   339,   339,   339,   340,
    1305      340,   340,   341,   341,   341,   341,   342,   342,   343,   343,
    1306      343,   344,   344,   345,   345,   346,   346,   346,   347,   347,
    1307      347,   347,   347,   348,   348,   348,   348,   349,   349,   349,
    1308      350,   350,   350,   351,   351,   351,   351,   352,   352,   352,
    1309      353,   353,   353,   353,   353,   354,   354,   354,   354,   355,
    1310      355,   355,   356,   356,   356,   357,   357,   357,   357,   357,
    1311      357,   358,   358,   358,   359,   359,   359,   359,   359,   360,
    1312      360,   360,   360,   361,   361,   362,   362,   362,   363,   363,
    1313      364,   364,   364,   364,   364,   364,   365,   365,   365,   365,
    1314      365,   365,   365,   365,   365,   365,   366,   366,   366,   366,
    1315      367,   367,   367,   368,   368,   369,   369,   369,   369,   369,
    1316      369,   370,   370,   370,   370,   370,   370,   371,   372,   372,
    1317      372,   373,   373,   374,   374
     1300     331,   331,   331,   332,   332,   333,   333,   333,   334,   334,
     1301     334,   334,   335,   335,   335,   336,   336,   336,   336,   337,
     1302     337,   337,   338,   338,   338,   338,   339,   339,   339,   340,
     1303     340,   340,   340,   341,   341,   342,   342,   342,   343,   343,
     1304     344,   344,   345,   345,   345,   346,   346,   346,   346,   346,
     1305     347,   347,   347,   347,   348,   348,   348,   349,   349,   349,
     1306     350,   350,   350,   350,   351,   351,   351,   352,   352,   352,
     1307     352,   352,   353,   353,   353,   353,   354,   354,   354,   355,
     1308     355,   355,   356,   356,   356,   356,   356,   356,   357,   357,
     1309     357,   358,   358,   358,   358,   358,   359,   359,   359,   359,
     1310     360,   360,   361,   361,   361,   362,   362,   363,   363,   363,
     1311     363,   363,   363,   364,   364,   364,   364,   364,   364,   364,
     1312     364,   364,   364,   365,   365,   365,   365,   366,   366,   366,
     1313     367,   367,   368,   368,   368,   368,   368,   368,   369,   369,
     1314     369,   369,   369,   369,   370,   371,   371,   371,   372,   372,
     1315     373,   373
    13181316};
    13191317
     
    13231321       0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
    13241322       1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
    1325        1,     3,     3,     1,     6,     4,     3,     7,     3,     3,
    1326        7,     2,     2,     7,     4,     1,     3,     0,     1,     1,
    1327        3,     1,     3,     7,     3,     7,     1,     1,     1,     1,
    1328        1,     2,     2,     2,     2,     2,     2,     4,     2,     4,
    1329        6,     1,     4,     4,     1,     1,     1,     1,     1,     1,
    1330        1,     4,     4,     1,     3,     3,     3,     1,     3,     3,
    1331        1,     3,     3,     1,     3,     3,     3,     3,     1,     3,
    1332        3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
    1333        3,     1,     5,     4,     5,     1,     1,     3,     2,     0,
     1323       1,     3,     3,     1,     6,     4,     3,     7,     3,     7,
     1324       2,     2,     7,     4,     1,     3,     0,     1,     1,     3,
     1325       1,     3,     7,     3,     7,     1,     1,     1,     2,     2,
     1326       2,     2,     2,     2,     4,     2,     4,     6,     1,     4,
     1327       4,     1,     1,     1,     1,     1,     1,     1,     4,     4,
     1328       1,     3,     3,     3,     1,     3,     3,     1,     3,     3,
     1329       1,     3,     3,     3,     3,     1,     3,     3,     1,     3,
     1330       1,     3,     1,     3,     1,     3,     1,     3,     1,     5,
     1331       4,     5,     1,     1,     3,     2,     0,     1,     1,     1,
    13341332       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1335        1,     1,     1,     2,     5,     6,     7,     1,     3,     1,
    1336        3,     0,     1,     1,     1,     1,     1,     1,     1,     1,
    1337        1,     6,     4,     2,     7,     1,     3,     1,     2,     1,
    1338        2,     1,     2,     2,     5,     7,     5,     9,     5,     9,
    1339        1,     3,     1,     1,     3,     3,     2,     1,     2,     2,
    1340        0,     1,     2,     3,     0,     1,     2,     3,     3,     4,
    1341        0,     1,     1,     2,     5,     7,     6,     6,     4,     3,
    1342        4,     2,     3,     2,     3,     3,     3,     3,     5,     3,
    1343        3,     4,     1,     5,     6,     5,     6,     9,    10,     9,
    1344       10,     2,     1,     2,     2,     2,     1,     6,     8,    10,
    1345       12,    14,     0,     1,     0,     1,     1,     3,     4,     7,
    1346        0,     1,     3,     1,     3,     1,     1,     1,     3,     1,
    1347        1,     1,     3,     0,     1,     3,     4,     1,     3,     1,
    1348        1,     3,     3,     3,     3,     3,     2,     3,     6,     3,
    1349        3,     4,     1,     2,     2,     3,     5,     8,     7,     7,
    1350        5,     9,     2,     2,     5,     3,     5,     4,     3,     4,
    1351        4,     7,     3,     3,     3,     3,     4,     6,     1,     1,
    1352        1,     1,     1,     1,     1,     1,     0,     1,     1,     2,
    1353        1,     1,     1,     1,     1,     1,     1,     0,     5,     1,
    1354        2,     3,     1,     2,     1,     1,     1,     1,     1,     1,
     1333       2,     5,     6,     7,     1,     3,     1,     3,     0,     1,
     1334       1,     1,     1,     1,     1,     1,     1,     1,     6,     4,
     1335       2,     7,     1,     3,     1,     2,     1,     2,     1,     2,
     1336       2,     5,     7,     5,     9,     5,     9,     1,     3,     1,
     1337       1,     3,     3,     2,     1,     2,     2,     0,     1,     2,
     1338       3,     0,     1,     2,     3,     3,     4,     0,     1,     1,
     1339       2,     5,     7,     6,     6,     4,     3,     4,     2,     3,
     1340       2,     3,     3,     3,     3,     5,     3,     3,     4,     1,
     1341       5,     6,     5,     6,     9,    10,     9,    10,     2,     1,
     1342       2,     2,     2,     1,     6,     8,    10,    12,    14,     0,
     1343       1,     0,     1,     1,     3,     4,     7,     0,     1,     3,
     1344       1,     3,     1,     1,     1,     3,     1,     1,     1,     3,
     1345       0,     1,     3,     4,     1,     3,     1,     1,     3,     3,
     1346       3,     3,     3,     2,     3,     6,     3,     3,     4,     1,
     1347       2,     2,     3,     5,     8,     7,     7,     5,     9,     2,
     1348       2,     5,     3,     5,     4,     3,     4,     4,     7,     3,
     1349       3,     3,     3,     4,     6,     1,     1,     1,     1,     1,
     1350       1,     1,     1,     0,     1,     1,     2,     1,     1,     1,
     1351       1,     1,     1,     1,     0,     5,     1,     2,     3,     1,
     1352       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    13551353       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1356        1,     1,     1,     1,     1,     1,     2,     2,     3,     3,
    1357        1,     3,     1,     2,     2,     2,     4,     4,     4,     4,
    1358        1,     2,     2,     3,     1,     2,     2,     1,     2,     2,
    1359        3,     1,     2,     2,     1,     1,     4,     2,     0,     6,
    1360        7,     2,     2,     2,     0,     2,     2,     3,     2,     3,
    1361        1,     2,     3,     2,     2,     4,     0,     1,     2,     2,
    1362        1,     0,     1,     2,     2,     5,     2,     0,     7,     2,
    1363        4,     0,     2,     0,     1,     1,     1,     5,     5,     5,
    1364        1,     5,     5,     9,     1,     5,     0,     1,     1,     5,
    1365        1,     1,     5,     5,     1,     3,     3,     4,     1,     1,
    1366        1,     1,     2,     1,     3,     3,     1,     2,     1,     3,
    1367        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1368        1,     2,     1,     1,     1,     2,     0,     2,     2,     1,
    1369        4,     0,     1,     2,     3,     4,     2,     2,     1,     2,
    1370        2,     5,     5,     7,     6,     1,     2,     2,     3,     1,
    1371        2,     2,     4,     2,     4,     0,     4,     2,     1,     1,
    1372        1,     0,     2,     5,     5,    13,     1,     1,     3,     3,
    1373        2,     3,     3,     2,     4,     1,     6,     9,     0,    11,
    1374        1,     3,     3,     3,     1,     1,     5,     2,     5,     0,
    1375        1,     1,     3,     0,     1,     1,     1,     1,     0,     6,
    1376        2,     1,     2,     4,     2,     3,     3,     3,     4,     5,
    1377        5,     5,     6,     1,     1,     1,     3,     0,     5,     0,
    1378        1,     1,     2,     6,     1,     3,     0,     1,     4,     1,
    1379        1,     1,     1,     2,     1,     2,     2,     1,     3,     2,
    1380        3,     3,     2,     4,     4,     3,     8,     3,     2,     1,
    1381        2,     6,     8,     3,     2,     3,     3,     4,     4,     3,
    1382        1,     1,     1,     4,     6,     3,     2,     3,     3,     4,
    1383        4,     3,     2,     1,     2,     2,     1,     3,     2,     3,
    1384        3,     2,     4,     4,     3,     6,     8,     3,     2,     1,
    1385        2,     2,     2,     3,     3,     2,     4,     4,     3,     6,
    1386        8,     3,     2,     1,     2,     2,     1,     1,     2,     3,
    1387        3,     2,     4,     6,     8,     1,     2,     2,     1,     2,
    1388        2,     3,     3,     1,     4,     4,     3,     5,     8,     3,
    1389        2,     3,     1,     5,     5,     6,     6,     1,     2,     2,
    1390        1,     2,     2,     3,     3,     1,     4,     4,     3,     5,
    1391        8,     3,     1,     2,     1,     2,     6,     5,     6,     7,
    1392        7,     1,     2,     2,     1,     2,     2,     3,     3,     1,
    1393        4,     4,     3,     8,     3,     1,     1,     2,     1,     1,
    1394        2,     3,     2,     3,     2,     3,     3,     2,     4,     3,
    1395        2,     3,     2,     4,     3,     2,     6,     6,     6,     7,
    1396        1,     2,     1,     1,     1,     2,     3,     2,     3,     2,
    1397        3,     3,     4,     2,     3,     4,     2,     5,     5,     6,
    1398        6,     0,     1,     0,     2
     1354       1,     1,     1,     2,     2,     3,     3,     1,     3,     1,
     1355       2,     2,     2,     4,     4,     4,     4,     1,     2,     2,
     1356       3,     1,     2,     2,     1,     2,     2,     3,     1,     2,
     1357       2,     1,     1,     4,     2,     0,     6,     7,     2,     2,
     1358       2,     0,     2,     2,     3,     2,     3,     1,     2,     3,
     1359       2,     2,     4,     0,     1,     2,     2,     1,     0,     1,
     1360       2,     2,     5,     2,     0,     7,     2,     4,     0,     2,
     1361       0,     1,     1,     1,     5,     5,     5,     1,     5,     5,
     1362       9,     1,     5,     0,     1,     1,     5,     1,     1,     5,
     1363       5,     1,     3,     3,     4,     1,     1,     1,     1,     2,
     1364       1,     3,     3,     1,     2,     1,     3,     1,     1,     1,
     1365       1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
     1366       1,     1,     2,     0,     2,     2,     1,     4,     0,     1,
     1367       2,     3,     4,     2,     2,     1,     2,     2,     5,     5,
     1368       7,     6,     1,     2,     2,     3,     1,     2,     2,     4,
     1369       2,     4,     0,     4,     2,     1,     1,     1,     0,     2,
     1370       5,     5,    13,     1,     1,     3,     3,     2,     3,     3,
     1371       2,     4,     1,     6,     9,     0,    11,     1,     3,     3,
     1372       3,     1,     1,     5,     2,     5,     0,     1,     1,     3,
     1373       0,     1,     1,     1,     1,     0,     6,     2,     1,     2,
     1374       4,     2,     3,     3,     3,     4,     5,     5,     5,     6,
     1375       1,     1,     1,     3,     0,     5,     0,     1,     1,     2,
     1376       6,     1,     3,     0,     1,     4,     1,     1,     1,     1,
     1377       2,     1,     2,     2,     1,     3,     2,     3,     3,     2,
     1378       4,     4,     3,     8,     3,     2,     1,     2,     6,     8,
     1379       3,     2,     3,     3,     4,     4,     3,     1,     1,     1,
     1380       4,     6,     3,     2,     3,     3,     4,     4,     3,     2,
     1381       1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
     1382       4,     3,     6,     8,     3,     2,     1,     2,     2,     2,
     1383       3,     3,     2,     4,     4,     3,     6,     8,     3,     2,
     1384       1,     2,     2,     1,     1,     2,     3,     3,     2,     4,
     1385       6,     8,     1,     2,     2,     1,     2,     2,     3,     3,
     1386       1,     4,     4,     3,     5,     8,     3,     2,     3,     1,
     1387       5,     5,     6,     6,     1,     2,     2,     1,     2,     2,
     1388       3,     3,     1,     4,     4,     3,     5,     8,     3,     1,
     1389       2,     1,     2,     6,     5,     6,     7,     7,     1,     2,
     1390       2,     1,     2,     2,     3,     3,     1,     4,     4,     3,
     1391       8,     3,     1,     1,     2,     1,     1,     2,     3,     2,
     1392       3,     2,     3,     3,     2,     4,     3,     2,     3,     2,
     1393       4,     3,     2,     6,     6,     6,     7,     1,     2,     1,
     1394       1,     1,     2,     3,     2,     3,     2,     3,     3,     4,
     1395       2,     3,     4,     2,     5,     5,     6,     6,     0,     1,
     1396       0,     2
    13991397};
    14001398
     
    14041402static const yytype_uint16 yydefact[] =
    14051403{
    1406      296,   296,   316,   314,   317,   315,   318,   319,   302,   304,
    1407      303,     0,   305,   330,   322,   327,   325,   326,   324,   323,
    1408      328,   329,   334,   331,   332,   333,   549,   549,   549,     0,
    1409        0,     0,   296,   222,   306,   320,   321,     7,   361,     0,
    1410        8,    14,    15,     0,     2,    64,    65,   567,     9,   296,
    1411      527,   525,   249,     3,   456,     3,   262,     0,     3,     3,
    1412        3,   250,     3,     0,     0,     0,   297,   298,   300,   296,
    1413      309,   312,   342,   288,   335,   340,   289,   350,   290,   357,
    1414      354,   364,     0,     0,   365,   291,   475,   479,     3,     3,
    1415        0,     2,   521,   526,   531,   301,     0,     0,   549,   579,
    1416      549,     2,   590,   591,   592,   296,     0,   733,   734,     0,
    1417       12,     0,    13,   296,   272,   273,     0,   297,   292,   293,
    1418      294,   295,   528,   307,   394,   550,   551,   372,   373,    12,
    1419      447,   448,    11,   443,   446,     0,   505,   500,   491,   447,
    1420      448,     0,     0,   530,   223,     0,   296,     0,     0,     0,
    1421        0,     0,     0,     0,     0,   296,   296,     2,     0,   735,
    1422      297,   584,   596,   739,   732,   730,   737,     0,     0,     0,
    1423      256,     2,     0,   534,   441,   442,   440,     0,     0,     0,
    1424        0,   549,     0,   636,   637,     0,     0,   547,   543,   549,
    1425      564,   549,   549,   545,     2,   544,   549,   603,   549,   549,
    1426      606,     0,     0,     0,   296,   296,   314,   362,     2,   296,
    1427      263,   299,   310,   343,   355,   480,     0,     2,     0,   456,
    1428      264,   297,   336,   351,   358,   476,     0,     2,     0,   313,
    1429      337,   344,   345,     0,   352,   356,   359,   363,   448,   296,
    1430      374,   367,   371,     0,   396,   477,   481,     0,     0,     0,
    1431        1,   296,     2,   532,   578,   580,   296,     2,   743,   297,
    1432      746,   547,   547,     0,   297,     0,     0,   275,   549,   545,
    1433        2,   296,     0,     0,   296,   552,     2,   503,     2,   556,
    1434        0,     0,     0,     0,     0,     0,    19,    61,     4,     5,
    1435        6,    17,     0,     0,   296,     2,    66,    67,    68,    69,
    1436       49,    20,    50,    16,    23,    48,    70,   296,     0,    73,
    1437       77,    80,    83,    88,    91,    93,    95,    97,    99,   101,
    1438      106,   497,   753,   454,   496,     0,   452,   453,     0,   568,
    1439      583,   586,   589,   595,   598,   601,   361,     0,     2,   741,
    1440        0,   296,   744,     2,    64,   296,     3,   428,     0,   436,
    1441      297,   296,   309,   335,   289,   350,   357,     3,     3,   410,
    1442      414,   424,   429,   475,   296,   430,   708,   709,   296,   431,
    1443      433,   296,     2,   585,   597,   731,     2,     2,   251,     2,
    1444      461,     0,   459,   458,   457,   143,     2,     2,   253,     2,
    1445        2,   252,     2,   283,     2,   284,     0,   282,     0,     0,
    1446        0,     0,     0,     0,     0,     0,     0,   569,   608,     0,
    1447      456,     2,   563,   572,   662,   565,   566,   535,   296,     2,
    1448      602,   611,   604,   605,     0,   278,   296,   296,   341,   297,
    1449        0,   297,     0,   296,   736,   740,   738,   536,   296,   547,
    1450      257,   265,   311,     0,     2,   537,   296,   501,   338,   339,
    1451      285,   353,   360,     0,   296,     0,   751,   401,     0,   478,
    1452      502,   254,   255,   522,   296,   438,     0,   296,   239,     0,
    1453        2,   241,     0,   297,     0,   259,     2,   260,   280,     0,
    1454        0,     2,   296,   547,   296,   488,   490,   489,     0,     0,
    1455      753,     0,   296,     0,   296,   492,   296,   562,   560,   561,
    1456      559,     0,   554,   557,     0,     0,   296,    56,   296,    70,
    1457       51,   296,    58,   296,   296,    54,    55,     2,   129,     0,
    1458        0,   450,     0,   449,   730,   123,   296,    18,     0,    31,
    1459       32,    37,     2,     0,    37,   113,   114,   115,   116,   117,
    1460      118,   119,   120,   121,   122,   112,   111,     0,    52,    53,
     1404     293,   293,   313,   311,   314,   312,   315,   316,   299,   301,
     1405     300,     0,   302,   327,   319,   324,   322,   323,   321,   320,
     1406     325,   326,   331,   328,   329,   330,   546,   546,   546,     0,
     1407       0,     0,   293,   219,   303,   317,   318,     7,   358,     0,
     1408       8,    14,    15,     0,     2,    61,    62,   564,     9,   293,
     1409     524,   522,   246,     3,   453,     3,   259,     0,     3,     3,
     1410       3,   247,     3,     0,     0,     0,   294,   295,   297,   293,
     1411     306,   309,   339,   285,   332,   337,   286,   347,   287,   354,
     1412     351,   361,     0,     0,   362,   288,   472,   476,     3,     3,
     1413       0,     2,   518,   523,   528,   298,     0,     0,   546,   576,
     1414     546,     2,   587,   588,   589,   293,     0,   730,   731,     0,
     1415      12,     0,    13,   293,   269,   270,     0,   294,   289,   290,
     1416     291,   292,   525,   304,   391,   547,   548,   369,   370,    12,
     1417     444,   445,    11,   440,   443,     0,   502,   497,   488,   444,
     1418     445,     0,     0,   527,   220,     0,   293,     0,     0,     0,
     1419       0,     0,     0,     0,     0,   293,   293,     2,     0,   732,
     1420     294,   581,   593,   736,   729,   727,   734,     0,     0,     0,
     1421     253,     2,     0,   531,   438,   439,   437,     0,     0,     0,
     1422       0,   546,     0,   633,   634,     0,     0,   544,   540,   546,
     1423     561,   546,   546,   542,     2,   541,   546,   600,   546,   546,
     1424     603,     0,     0,     0,   293,   293,   311,   359,     2,   293,
     1425     260,   296,   307,   340,   352,   477,     0,     2,     0,   453,
     1426     261,   294,   333,   348,   355,   473,     0,     2,     0,   310,
     1427     334,   341,   342,     0,   349,   353,   356,   360,   445,   293,
     1428     371,   364,   368,     0,   393,   474,   478,     0,     0,     0,
     1429       1,   293,     2,   529,   575,   577,   293,     2,   740,   294,
     1430     743,   544,   544,     0,   294,     0,     0,   272,   546,   542,
     1431       2,   293,     0,     0,   293,   549,     2,   500,     2,   553,
     1432       0,     0,     0,     0,     0,     0,    19,    58,     4,     5,
     1433       6,    17,     0,     0,   293,     2,    63,    64,    65,    66,
     1434      46,    20,    47,    16,    23,    45,    67,   293,     0,    70,
     1435      74,    77,    80,    85,    88,    90,    92,    94,    96,    98,
     1436     103,   494,   750,   451,   493,     0,   449,   450,     0,   565,
     1437     580,   583,   586,   592,   595,   598,   358,     0,     2,   738,
     1438       0,   293,   741,     2,    61,   293,     3,   425,     0,   433,
     1439     294,   293,   306,   332,   286,   347,   354,     3,     3,   407,
     1440     411,   421,   426,   472,   293,   427,   705,   706,   293,   428,
     1441     430,   293,     2,   582,   594,   728,     2,     2,   248,     2,
     1442     458,     0,   456,   455,   454,   140,     2,     2,   250,     2,
     1443       2,   249,     2,   280,     2,   281,     0,   279,     0,     0,
     1444       0,     0,     0,     0,     0,     0,     0,   566,   605,     0,
     1445     453,     2,   560,   569,   659,   562,   563,   532,   293,     2,
     1446     599,   608,   601,   602,     0,   275,   293,   293,   338,   294,
     1447       0,   294,     0,   293,   733,   737,   735,   533,   293,   544,
     1448     254,   262,   308,     0,     2,   534,   293,   498,   335,   336,
     1449     282,   350,   357,     0,   293,     0,   748,   398,     0,   475,
     1450     499,   251,   252,   519,   293,   435,     0,   293,   236,     0,
     1451       2,   238,     0,   294,     0,   256,     2,   257,   277,     0,
     1452       0,     2,   293,   544,   293,   485,   487,   486,     0,     0,
     1453     750,     0,   293,     0,   293,   489,   293,   559,   557,   558,
     1454     556,     0,   551,   554,     0,     0,   293,    53,   293,    67,
     1455      48,   293,    55,   293,   293,    51,    52,     2,   126,     0,
     1456       0,   447,     0,   446,   727,   120,   293,    18,     0,    30,
     1457      31,    36,     2,     0,    36,   110,   111,   112,   113,   114,
     1458     115,   116,   117,   118,   119,   109,   108,     0,    49,    50,
    14611459       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    14621460       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1463      108,     2,   648,   455,   645,   549,   549,   653,   482,   296,
    1464        2,   587,   588,     0,   599,   600,     0,     2,   742,   745,
    1465      123,   296,     0,     2,   710,   297,   714,   705,   706,   712,
    1466        0,     2,     2,   670,   549,   753,   619,   549,   549,   753,
    1467      549,   633,   549,   549,   684,   437,   667,   549,   549,   675,
    1468      682,   296,   432,   297,     0,     0,   296,   720,   297,   725,
    1469      753,   717,   296,   722,   753,   296,   296,   296,     0,   123,
    1470        0,    19,     2,     0,    20,     0,   462,   751,     0,     0,
    1471      468,   243,     0,   296,     0,     0,     0,   547,   571,   575,
    1472      577,   607,   610,   614,   617,   570,   609,     0,   286,   660,
    1473        0,   296,   279,     0,     0,     0,     0,   277,     2,     0,
    1474      261,   538,   296,     0,     0,   296,     2,   366,   386,   375,
    1475        0,     0,   380,   374,   752,     0,     0,   399,     0,   297,
    1476        3,   417,     3,   421,   420,   593,     0,   533,   296,    64,
    1477        3,   296,   436,   297,     3,   430,   431,     2,     0,     0,
    1478        0,   487,   308,   296,   483,   485,     3,     2,     2,     0,
    1479      504,     3,     0,   556,   131,     0,     0,   224,     0,     0,
    1480        0,     0,    38,     0,     0,   123,   296,    21,     0,    22,
    1481        0,   694,   699,   451,   691,   549,   549,     0,   109,     3,
    1482        2,    29,     0,    35,     0,    28,     2,    26,     0,   107,
    1483       74,    75,    76,    78,    79,    81,    82,    86,    87,    84,
    1484       85,    89,    90,    92,    94,    96,    98,   100,     0,     0,
    1485      754,   296,     0,     0,     0,   649,   650,   646,   647,   499,
    1486      498,   296,     0,   296,   716,   296,   721,   297,   296,   664,
    1487      296,   296,   707,   663,     2,   296,     0,     0,     0,     0,
    1488        0,     0,     0,     0,   685,     0,   671,   622,   638,   672,
    1489        2,   618,   625,   434,   620,   621,   435,     2,   632,   641,
    1490      634,   635,   668,   669,   683,   711,   715,   713,   753,   270,
    1491        2,   747,     2,   425,   719,   724,   426,     0,   404,     3,
    1492        3,     3,     3,   456,     3,     0,     2,   470,   467,   752,
    1493        0,   463,     2,   466,   469,     0,   296,   244,   266,     3,
    1494      274,   276,     0,   456,     2,   573,   574,     2,   612,   613,
    1495        0,   661,   539,     3,   347,   346,   349,   348,   296,   540,
    1496        0,   541,   374,     0,     0,   296,   296,     0,     0,   694,
    1497      384,   387,   391,   549,   391,   390,   383,   376,   549,   378,
    1498      381,   296,   401,   395,   105,   402,   751,     0,     0,   439,
    1499      242,     0,     0,     3,     2,   670,   432,     0,   529,     0,
    1500      753,   491,     0,   296,   296,   296,     0,   553,   555,   132,
    1501        0,     0,   217,     0,     0,     0,   225,   226,    57,     0,
    1502       59,    62,    63,     0,     2,   130,     0,     0,     0,   695,
    1503      696,   692,   693,   461,    71,    72,   110,   127,     3,   109,
    1504        0,     0,    25,    37,     3,     0,    34,   103,     0,     3,
    1505      652,   656,   659,   651,     3,   594,     3,   718,   723,     2,
    1506       64,   296,     3,     3,   297,     0,     3,   624,   628,   631,
    1507      640,   674,   678,   681,   296,     3,   623,   639,   673,   296,
    1508      296,   427,   296,   296,   748,     0,     0,     0,     0,   258,
    1509        0,   105,     0,     3,     3,     0,   464,     0,   460,     0,
    1510        0,   247,   296,     0,     0,   131,     0,     0,     0,     0,
    1511        0,   131,     0,     0,   109,   109,    19,     2,     0,     0,
    1512        3,   133,   134,     2,   145,   135,   136,   137,   138,   139,
    1513      140,   147,   149,     0,     0,     0,   287,   296,   296,   549,
    1514        0,   542,   296,   377,   379,     0,   393,   695,   388,   392,
    1515      389,   382,   386,   369,   400,     0,   581,     2,   666,   665,
    1516        0,   671,     2,   484,   486,   506,     3,   514,   515,     0,
    1517        2,   510,     3,     3,     0,     0,   558,   224,     0,     0,
    1518        0,   224,     0,     0,   123,   698,   702,   704,   697,   751,
    1519      109,     0,     3,   663,    47,    46,     3,    39,    41,    36,
    1520        0,     3,   102,   104,     0,     2,   654,   655,     0,     0,
    1521      296,     0,     0,     0,     3,   640,     0,     2,   626,   627,
    1522        2,   642,     2,   676,   677,     0,     0,    64,     0,     3,
    1523        3,     3,     3,   412,   411,   415,     2,     2,   750,   749,
    1524      124,     0,     0,     0,     0,     3,   465,     3,     0,   245,
    1525      148,     3,   297,   296,     0,     0,     0,     0,     2,     0,
    1526      193,     0,   191,     0,     0,     0,     0,     0,     0,     0,
    1527      549,   123,     0,   153,   150,   296,     0,     0,   269,   281,
    1528        3,     3,   548,   615,   370,   385,   398,   296,   268,   296,
    1529        0,   517,   494,   296,     0,     0,   493,   508,     0,     0,
    1530        0,   218,     0,   227,    60,     2,   700,   701,     0,   128,
    1531      125,     0,     0,     0,     0,     0,    24,     0,   657,   296,
    1532      582,   267,   726,   727,   728,     0,   679,   296,   296,   296,
    1533        3,     3,     0,   687,     0,     0,     0,     0,   296,   296,
    1534        3,   546,   124,   472,     0,     0,   248,   297,     0,     0,
    1535        0,     0,   296,   194,   192,   189,     0,   195,     0,     0,
    1536        0,     0,   199,   202,   200,   196,     0,   197,   131,    37,
    1537      146,   144,   246,     0,     0,   419,   423,   422,     0,   511,
    1538        2,   512,     2,   513,   507,   296,   230,     0,   228,     0,
    1539      230,   296,    33,   126,    40,    30,     2,    44,     2,    42,
    1540       27,     3,   729,     3,     3,     3,     0,     0,   686,   688,
    1541      629,   643,   271,     2,   409,     3,   408,     0,   474,   471,
    1542      131,     0,     0,   131,     3,     0,   131,   190,     0,     2,
    1543        2,   211,   201,     0,     0,     0,   142,     0,   576,   616,
    1544        2,     0,     0,     2,   231,     0,     0,   219,     0,     3,
    1545        0,     0,     0,     0,     0,     0,   689,   690,   296,     0,
    1546      473,   154,     0,     0,     2,   167,   131,   156,     0,   184,
    1547        0,   131,     0,     2,   158,     0,     2,     0,     2,     2,
    1548        2,   198,    34,   296,   516,   518,   509,     0,     0,     0,
    1549        0,     0,     3,     3,   658,   630,   644,   680,   413,   131,
    1550      160,   163,     0,   162,   166,     3,   169,   168,     0,   131,
    1551      186,   131,     3,     0,   296,     0,   296,     0,     2,     0,
    1552        2,   141,     2,   232,   233,     0,   229,   220,   703,     0,
    1553        0,   155,     0,     0,   165,   235,   170,     2,   237,   185,
    1554        0,   188,   174,   203,     3,   212,   216,   205,     3,     0,
    1555      296,     0,   296,     0,     0,     0,    45,    43,   161,   164,
    1556      131,     0,   171,   296,   131,   131,     0,   175,     0,     0,
    1557      694,   213,   214,   215,     0,   204,     3,   206,     3,   296,
    1558      221,   234,   151,   172,   157,   131,   238,   187,   182,   180,
    1559      176,   159,   131,     0,   695,     0,     0,     0,     0,   152,
    1560      173,   183,   177,   181,   180,   178,     3,     3,     0,     0,
    1561      495,   179,   207,   209,     3,     3,   208,   210
     1461     105,     2,   645,   452,   642,   546,   546,   650,   479,   293,
     1462       2,   584,   585,     0,   596,   597,     0,     2,   739,   742,
     1463     120,   293,     0,     2,   707,   294,   711,   702,   703,   709,
     1464       0,     2,     2,   667,   546,   750,   616,   546,   546,   750,
     1465     546,   630,   546,   546,   681,   434,   664,   546,   546,   672,
     1466     679,   293,   429,   294,     0,     0,   293,   717,   294,   722,
     1467     750,   714,   293,   719,   750,   293,   293,   293,     0,   120,
     1468       0,    19,     2,     0,    20,     0,   459,   748,     0,     0,
     1469     465,   240,     0,   293,     0,     0,     0,   544,   568,   572,
     1470     574,   604,   607,   611,   614,   567,   606,     0,   283,   657,
     1471       0,   293,   276,     0,     0,     0,     0,   274,     2,     0,
     1472     258,   535,   293,     0,     0,   293,     2,   363,   383,   372,
     1473       0,     0,   377,   371,   749,     0,     0,   396,     0,   294,
     1474       3,   414,     3,   418,   417,   590,     0,   530,   293,    61,
     1475       3,   293,   433,   294,     3,   427,   428,     2,     0,     0,
     1476       0,   484,   305,   293,   480,   482,     3,     2,     2,     0,
     1477     501,     3,     0,   553,   128,     0,     0,   221,     0,     0,
     1478       0,     0,    37,     0,     0,   120,   293,    21,     0,    22,
     1479       0,   691,   696,   448,   688,   546,   546,     0,   106,     3,
     1480       2,    28,     0,    34,     0,     2,    26,     0,   104,    71,
     1481      72,    73,    75,    76,    78,    79,    83,    84,    81,    82,
     1482      86,    87,    89,    91,    93,    95,    97,     0,     0,   751,
     1483     293,     0,     0,     0,   646,   647,   643,   644,   496,   495,
     1484     293,     0,   293,   713,   293,   718,   294,   293,   661,   293,
     1485     293,   704,   660,     2,   293,     0,     0,     0,     0,     0,
     1486       0,     0,     0,   682,     0,   668,   619,   635,   669,     2,
     1487     615,   622,   431,   617,   618,   432,     2,   629,   638,   631,
     1488     632,   665,   666,   680,   708,   712,   710,   750,   267,     2,
     1489     744,     2,   422,   716,   721,   423,     0,   401,     3,     3,
     1490       3,     3,   453,     3,     0,     2,   467,   464,   749,     0,
     1491     460,     2,   463,   466,     0,   293,   241,   263,     3,   271,
     1492     273,     0,   453,     2,   570,   571,     2,   609,   610,     0,
     1493     658,   536,     3,   344,   343,   346,   345,   293,   537,     0,
     1494     538,   371,     0,     0,   293,   293,     0,     0,   691,   381,
     1495     384,   388,   546,   388,   387,   380,   373,   546,   375,   378,
     1496     293,   398,   392,   102,   399,   748,     0,     0,   436,   239,
     1497       0,     0,     3,     2,   667,   429,     0,   526,     0,   750,
     1498     488,     0,   293,   293,   293,     0,   550,   552,   129,     0,
     1499       0,   214,     0,     0,     0,   222,   223,    54,     0,    56,
     1500      59,    60,     0,     2,   127,     0,     0,     0,   692,   693,
     1501     689,   690,   458,    68,    69,   107,   124,     3,   106,     0,
     1502       0,    25,    36,     3,     0,    33,   100,     0,     3,   649,
     1503     653,   656,   648,     3,   591,     3,   715,   720,     2,    61,
     1504     293,     3,     3,   294,     0,     3,   621,   625,   628,   637,
     1505     671,   675,   678,   293,     3,   620,   636,   670,   293,   293,
     1506     424,   293,   293,   745,     0,     0,     0,     0,   255,     0,
     1507     102,     0,     3,     3,     0,   461,     0,   457,     0,     0,
     1508     244,   293,     0,     0,   128,     0,     0,     0,     0,     0,
     1509     128,     0,     0,   106,   106,    19,     2,     0,     0,     3,
     1510     130,   131,     2,   142,   132,   133,   134,   135,   136,   137,
     1511     144,   146,     0,     0,     0,   284,   293,   293,   546,     0,
     1512     539,   293,   374,   376,     0,   390,   692,   385,   389,   386,
     1513     379,   383,   366,   397,     0,   578,     2,   663,   662,     0,
     1514     668,     2,   481,   483,   503,     3,   511,   512,     0,     2,
     1515     507,     3,     3,     0,     0,   555,   221,     0,     0,     0,
     1516     221,     0,     0,   120,   695,   699,   701,   694,   748,   106,
     1517       0,     3,   660,    40,     3,    38,    35,     0,     3,    99,
     1518     101,     0,     2,   651,   652,     0,     0,   293,     0,     0,
     1519       0,     3,   637,     0,     2,   623,   624,     2,   639,     2,
     1520     673,   674,     0,     0,    61,     0,     3,     3,     3,     3,
     1521     409,   408,   412,     2,     2,   747,   746,   121,     0,     0,
     1522       0,     0,     3,   462,     3,     0,   242,   145,     3,   294,
     1523     293,     0,     0,     0,     0,     2,     0,   190,     0,   188,
     1524       0,     0,     0,     0,     0,     0,     0,   546,   120,     0,
     1525     150,   147,   293,     0,     0,   266,   278,     3,     3,   545,
     1526     612,   367,   382,   395,   293,   265,   293,     0,   514,   491,
     1527     293,     0,     0,   490,   505,     0,     0,     0,   215,     0,
     1528     224,    57,     2,   697,   698,     0,   125,   122,     0,     0,
     1529       0,     0,     0,    24,     0,   654,   293,   579,   264,   723,
     1530     724,   725,     0,   676,   293,   293,   293,     3,     3,     0,
     1531     684,     0,     0,     0,     0,   293,   293,     3,   543,   121,
     1532     469,     0,     0,   245,   294,     0,     0,     0,     0,   293,
     1533     191,   189,   186,     0,   192,     0,     0,     0,     0,   196,
     1534     199,   197,   193,     0,   194,   128,    36,   143,   141,   243,
     1535       0,     0,   416,   420,   419,     0,   508,     2,   509,     2,
     1536     510,   504,   293,   227,     0,   225,     0,   227,   293,    32,
     1537     123,     2,    43,     2,    41,    39,    29,    27,     3,   726,
     1538       3,     3,     3,     0,     0,   683,   685,   626,   640,   268,
     1539       2,   406,     3,   405,     0,   471,   468,   128,     0,     0,
     1540     128,     3,     0,   128,   187,     0,     2,     2,   208,   198,
     1541       0,     0,     0,   139,     0,   573,   613,     2,     0,     0,
     1542       2,   228,     0,     0,   216,     0,     3,     0,     0,     0,
     1543       0,     0,     0,   686,   687,   293,     0,   470,   151,     0,
     1544       0,     2,   164,   128,   153,     0,   181,     0,   128,     0,
     1545       2,   155,     0,     2,     0,     2,     2,     2,   195,    33,
     1546     293,   513,   515,   506,     0,     0,     0,     0,     0,     3,
     1547       3,   655,   627,   641,   677,   410,   128,   157,   160,     0,
     1548     159,   163,     3,   166,   165,     0,   128,   183,   128,     3,
     1549       0,   293,     0,   293,     0,     2,     0,     2,   138,     2,
     1550     229,   230,     0,   226,   217,   700,     0,     0,   152,     0,
     1551       0,   162,   232,   167,     2,   234,   182,     0,   185,   171,
     1552     200,     3,   209,   213,   202,     3,     0,   293,     0,   293,
     1553       0,     0,     0,    44,    42,   158,   161,   128,     0,   168,
     1554     293,   128,   128,     0,   172,     0,     0,   691,   210,   211,
     1555     212,     0,   201,     3,   203,     3,   293,   218,   231,   148,
     1556     169,   154,   128,   235,   184,   179,   177,   173,   156,   128,
     1557       0,   692,     0,     0,     0,     0,   149,   170,   180,   174,
     1558     178,   177,   175,     3,     3,     0,     0,   492,   176,   204,
     1559     206,     3,     3,   205,   207
    15621560};
    15631561
     
    15651563static const yytype_int16 yydefgoto[] =
    15661564{
    1567       -1,   815,   468,   300,    47,   133,   134,   301,   302,   303,
    1568      304,   305,   762,   763,  1136,  1137,  1138,   306,   381,   308,
    1569      309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
    1570      319,   320,  1032,   518,   977,   547,   322,   978,   949,  1059,
    1571     1522,  1061,  1062,  1063,  1064,  1523,  1065,  1066,  1441,  1442,
    1572     1405,  1406,  1407,  1501,  1502,  1506,  1507,  1542,  1543,  1067,
    1573     1365,  1068,  1069,  1302,  1303,  1304,  1484,  1070,   145,   955,
    1574      956,   957,  1385,  1465,  1476,  1477,   469,   470,   876,   877,
    1575     1040,    51,    52,    53,    54,    55,   347,   158,    58,    59,
    1576       60,    61,    62,   349,    64,    65,   264,    67,    68,   274,
    1577      351,   352,    71,    72,    73,   118,    75,   204,   354,   119,
    1578       78,   120,    80,    81,   455,    82,   454,   689,   690,   691,
    1579      910,  1088,   911,    83,    84,   458,   456,   697,   857,   858,
    1580      859,   860,   700,   701,   702,   359,   360,   361,   362,   466,
    1581      340,   135,   136,   522,   324,   170,   646,   647,   648,   649,
    1582      650,    85,   121,    87,   489,   490,   941,   491,   277,   495,
    1583      325,    88,   137,   138,    89,  1325,  1110,  1111,  1112,  1113,
    1584       90,    91,   718,    92,   273,    93,    94,   187,  1034,   680,
    1585      412,   125,    95,   501,   502,   503,   188,   268,   190,   191,
    1586      192,   269,    98,    99,   100,   101,   102,   103,   104,   195,
    1587      196,   197,   198,   199,   827,   606,   607,   608,   609,   200,
    1588      611,   612,   613,   573,   574,   575,   576,   752,   105,   615,
    1589      616,   617,   618,   619,   620,   970,   754,   755,   756,   596,
    1590      365,   366,   367,   368,   326,   164,   107,   108,   109,   370,
    1591      695,   570
     1565      -1,   814,   468,   300,    47,   133,   134,   301,   302,   303,
     1566     304,   305,   762,   763,  1134,  1135,   306,   381,   308,   309,
     1567     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
     1568     320,  1031,   518,   976,   547,   322,   977,   948,  1058,  1519,
     1569    1060,  1061,  1062,  1063,  1520,  1064,  1065,  1438,  1439,  1402,
     1570    1403,  1404,  1498,  1499,  1503,  1504,  1539,  1540,  1066,  1362,
     1571    1067,  1068,  1299,  1300,  1301,  1481,  1069,   145,   954,   955,
     1572     956,  1382,  1462,  1473,  1474,   469,   470,   875,   876,  1039,
     1573      51,    52,    53,    54,    55,   347,   158,    58,    59,    60,
     1574      61,    62,   349,    64,    65,   264,    67,    68,   274,   351,
     1575     352,    71,    72,    73,   118,    75,   204,   354,   119,    78,
     1576     120,    80,    81,   455,    82,   454,   689,   690,   691,   909,
     1577    1087,   910,    83,    84,   458,   456,   697,   856,   857,   858,
     1578     859,   700,   701,   702,   359,   360,   361,   362,   466,   340,
     1579     135,   136,   522,   324,   170,   646,   647,   648,   649,   650,
     1580      85,   121,    87,   489,   490,   940,   491,   277,   495,   325,
     1581      88,   137,   138,    89,  1322,  1109,  1110,  1111,  1112,    90,
     1582      91,   718,    92,   273,    93,    94,   187,  1033,   680,   412,
     1583     125,    95,   501,   502,   503,   188,   268,   190,   191,   192,
     1584     269,    98,    99,   100,   101,   102,   103,   104,   195,   196,
     1585     197,   198,   199,   826,   606,   607,   608,   609,   200,   611,
     1586     612,   613,   573,   574,   575,   576,   752,   105,   615,   616,
     1587     617,   618,   619,   620,   969,   754,   755,   756,   596,   365,
     1588     366,   367,   368,   326,   164,   107,   108,   109,   370,   695,
     1589     570
    15921590};
    15931591
    15941592/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15951593   STATE-NUM.  */
    1596 #define YYPACT_NINF -1338
     1594#define YYPACT_NINF -1323
    15971595static const yytype_int16 yypact[] =
    15981596{
    1599     4794,  8872, -1338,   118, -1338, -1338, -1338, -1338, -1338, -1338,
    1600    -1338,   -32, -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338,
    1601    -1338, -1338, -1338, -1338, -1338, -1338,    75,    75,    75,   889,
    1602      761,    17,  6057,   231, -1338, -1338, -1338, -1338, -1338,   166,
    1603    -1338, -1338, -1338,   566,   192, -1338, -1338, -1338, -1338,  4939,
    1604    -1338, -1338, -1338, -1338,   195,   234, -1338,  1148, -1338, -1338,
    1605    -1338, -1338,   170,  2042,   352,    44,  7574, -1338, -1338,  9333,
    1606     1157, -1338, -1338,  1542,   364,  3919,   608,   982,  1542,  1041,
    1607    -1338, -1338,   474,   402, -1338,  1542,  1242, -1338,   273, -1338,
    1608      455,   478, -1338, -1338, -1338, -1338,   354,   234,    75, -1338,
    1609       75, -1338, -1338, -1338, -1338,  9218,  1148, -1338, -1338,  1148,
    1610    -1338,   387, -1338,  9518, -1338, -1338,  2342,  9556, -1338,   992,
    1611      992,   992, -1338, -1338, -1338,    75, -1338, -1338, -1338,   374,
    1612      386,   471, -1338, -1338, -1338,   480, -1338, -1338, -1338, -1338,
    1613    -1338,   525,   539, -1338, -1338,    53,  8841,  1022,    54,   558,
    1614      563,   587,   592,   605,   615,  8759,  7097,   644,   585, -1338,
    1615     9371, -1338, -1338, -1338, -1338,   619, -1338,   349,  4637,  4637,
    1616    -1338,   657,   446, -1338, -1338, -1338, -1338,   651,   453,   454,
    1617      476,    75,   659, -1338, -1338,  2042,  2592,   742, -1338,    57,
    1618    -1338,    75,    75,   234, -1338, -1338,   101, -1338,    75,    75,
    1619    -1338,  3079,   687,   706,   992,  6771, -1338, -1338,   707,  4939,
    1620    -1338, -1338,  1542, -1338, -1338, -1338,   234, -1338,  1148,   195,
    1621    -1338,  7912, -1338,   992,   992,   992,   234, -1338,   889, -1338,
    1622     4555, -1338, -1338,   691,   992, -1338,   992, -1338,   166,  8841,
    1623    -1338,   713, -1338,   761,   725,   992, -1338,   889,   756,   768,
    1624    -1338,  6057,   675, -1338, -1338, -1338,  9300, -1338, -1338,  2361,
    1625    -1338,   742,   105, 10239,  9556,  2342,  3079, -1338,   194, -1338,
    1626    -1338,  9518,  1148,   743,  7605, -1338, -1338,   126, -1338, 10586,
    1627      755,   847, 10372,   832, 10391, 10448, -1338,   839, -1338, -1338,
    1628    -1338, -1338, 10467, 10467,  8615,   824, -1338, -1338, -1338, -1338,
    1629    -1338, -1338, -1338,   901, -1338,   679,  3121,  8954, 10391, -1338,
    1630      507,   418,   680,   295,   694,   894,   852,   888,   930,    66,
    1631    -1338, -1338,   938,   665, -1338,   380, -1338, -1338,  1022, -1338,
    1632    -1338,    12,   949, -1338,   338,   949,   961,   166, -1338, -1338,
    1633      968,  9218, -1338,   983,   984,  9067, -1338, -1338,   776,  1555,
    1634     8330,  6771,  1542, -1338,  1542,   992,   992, -1338, -1338, -1338,
    1635    -1338, -1338, -1338,   992,  9218,  1148, -1338, -1338,  9594,  1098,
    1636    -1338,  8061, -1338, -1338, -1338, -1338, -1338, -1338, -1338,   995,
    1637     5881, 10391, -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338,
    1638    -1338, -1338, -1338, -1338, -1338, -1338,  2342, -1338,   489,   993,
    1639      994,  1000,   732,  1004,  1007,  1008,  2592, -1338, -1338,   969,
    1640      195,  1030, -1338, -1338,  1024, -1338, -1338, -1338,  9300, -1338,
    1641    -1338, -1338, -1338, -1338,  3079, -1338,  8841,  8841, -1338,   992,
    1642     2342,  6890,  1148,  8403, -1338, -1338, -1338, -1338,  9300,   105,
    1643    -1338, -1338,  1542,   234, -1338, -1338,  9300, -1338,  6655, -1338,
    1644    -1338,   992,   992,   465,  8248,  1029,  1028,  1015,  1033,   992,
    1645    -1338, -1338, -1338, -1338,  9742, -1338,   591,  6518, -1338,   234,
    1646     1044, -1338,  2342, 10668, 10296, -1338, -1338, -1338, -1338,   929,
    1647     3079, -1338,  8476,   742,  5771, -1338, -1338, -1338,  1039,   645,
    1648      938,   761,  7605,   809,  9518, -1338,  7605, -1338, -1338, -1338,
    1649    -1338,   688, -1338,  1046,   847,   251,  8615, -1338,  9627, -1338,
    1650    -1338,  8615, -1338,  8728,  8615, -1338, -1338,  1048, -1338,   751,
    1651     1043,   711,  1057, -1338, -1338,  9447,  6740, -1338,   107, -1338,
    1652    -1338, 10239, -1338,   318, 10239, -1338, -1338, -1338, -1338, -1338,
    1653    -1338, -1338, -1338, -1338, -1338, -1338, -1338, 10239, -1338, -1338,
    1654    10391, 10391, 10391, 10391, 10391, 10391, 10391, 10391, 10391, 10391,
    1655    10391, 10391, 10391, 10391, 10391, 10391, 10391, 10391,  4422, 10239,
    1656    -1338,   665,  1831, -1338, -1338,    75,    75, -1338, -1338,  8841,
    1657    -1338, -1338,  1024,   675, -1338,  1024, 10315, -1338, -1338, -1338,
    1658     5500,  6740,  1056,  1064, -1338,  9556, -1338, -1338,   619, -1338,
    1659     1065,  1323,  1067,  2196,   209,   938, -1338,    75,    75,   938,
    1660      243, -1338,    75,    75,  1024, -1338, -1338,    75,    75, -1338,
    1661      949,  9665,  1148, 10813,   217,   306,  9665, -1338,  2361, -1338,
    1662      938, -1338,  9218, -1338,   212,  8027,  8027,  8027,  1148, -1338,
    1663     6120,  1053,   995,   535,  1061,  1066, -1338,  1071,  4637,   421,
    1664    -1338,  1166,  1148,  8027,   675,  2342,   675,   742,   394,   949,
    1665    -1338, -1338,   788,   949, -1338, -1338, -1338,   847, -1338,   949,
    1666      234,  9742, -1338,   764,  1087,   806,  1088, -1338,  1089,   234,
    1667    -1338, -1338,  9300,   234,  1090,  9627,  1096, -1338,  1729, -1338,
    1668      527,   550,   761, -1338,   761,  1102, 10391, -1338,   761, 10813,
    1669    -1338, -1338,  1092, -1338, -1338, -1338,   675, -1338, 10741,   984,
    1670    -1338,  8027,   857,  8330, -1338, -1338,   619,  1103,  1112,  1039,
    1671     3523, -1338, -1338,  7605, -1338, -1338,  1097, -1338, -1338,  1121,
    1672    -1338,  1097,  1124, 10586, 10239,  1105,  1104,    94,  1128,  1123,
    1673     1132,  1133, -1338,  1136,  1138,  9485,  6859, -1338, 10239, -1338,
    1674      711,  1914, -1338, -1338, -1338,    75,    75,  6186, 10239,  1134,
    1675    -1338, -1338,   822, -1338, 10239, -1338, -1338, -1338,   715, -1338,
    1676    -1338, -1338, -1338,   507,   507,   418,   418,   680,   680,   680,
    1677      680,   295,   295,   694,   894,   852,   888,   930, 10391,   250,
    1678    -1338,  9742,  1151,  1153,  1158,  1831, -1338, -1338, -1338, -1338,
    1679    -1338,  9742,   827,  8027, -1338,  9218, -1338,  7216,  9180, -1338,
    1680     8061,  7097, -1338, -1338,  1323,  9742,   936,  1159,  1162,  1164,
    1681     1167,  1170,  1175,  1178, -1338,  3437,  2196, -1338, -1338, -1338,
    1682    -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338,
    1683    -1338, -1338, -1338, -1338,  1024, -1338, -1338, -1338,   938, -1338,
    1684    -1338, -1338, -1338, -1338, -1338, -1338, -1338,  1179, -1338,  1180,
    1685     1181, -1338, -1338,   195,  1134,  6120, -1338, -1338, -1338,  5881,
    1686     1143, -1338, -1338, -1338, -1338,   761,  6348,  1247, -1338, -1338,
    1687    -1338, -1338,  1165,   195, -1338, -1338,  1024, -1338, -1338,  1024,
    1688      230,  1024, -1338, -1338, -1338, -1338, -1338, -1338,  9409, -1338,
    1689      234, -1338, -1338,   554,   555,  9594,  7335,  2114, 10391,  2586,
    1690    -1338, -1338,  1163,    40,  1163, -1338,   761, -1338,    75, -1338,
    1691    -1338,  8985,  1015, -1338, -1338, -1338,  1028,  1185,  1186, -1338,
    1692    -1338,  1189,  1191, -1338,   857,  1994, -1338,   444, -1338,  3523,
    1693      938, -1338,  1195,  7605,  9703,  8841,  1196, -1338, -1338,  1192,
    1694     1200,  1182, -1338, 10391,  1205,   298,  1203, -1338,  1206,   675,
    1695     1206, -1338, -1338,  1206,  1209, -1338,  1214,  1216,  1217,  1914,
    1696    -1338, -1338, -1338,  5881, -1338, -1338, -1338, -1338,  1215, 10239,
    1697     1220,   831, -1338, 10239, -1338,   831, -1338, -1338, 10239, -1338,
    1698      972,   949, -1338, -1338, -1338, -1338, -1338, -1338, -1338,   995,
    1699      984,  9067, -1338, -1338,  7454,  1229, -1338,   975,   949, -1338,
    1700      979,   991,   949, -1338,   992,  3705, -1338, -1338, -1338,  9742,
    1701     9742, -1338,  8403,  8403, -1338,  1226,  1232,  1235,  1240, -1338,
    1702     1244,   564,    43,  1134, -1338,   831, -1338,  4637, -1338, 10239,
    1703      582, -1338,  6621,  1243,  1245, 10182,  1248,  1251,    46,    70,
    1704      103, 10239,  1252,   234, 10239, 10239,  1238,  1257,   333,  1239,
    1705    -1338, -1338, -1338,  1258, -1338, -1338, -1338, -1338, -1338, -1338,
    1706    -1338, -1338, -1338,   761,  1268, 10239, -1338,  9742,  9742,    75,
    1707     1269, -1338,  9098, -1338, -1338,   767, -1338,  2586, -1338, -1338,
    1708    -1338, -1338,  1729, -1338, -1338,  1270, -1338, -1338, -1338, -1338,
    1709     1273,  1994, -1338, -1338,  1256, -1338,  1097, -1338, -1338,  2342,
    1710     1271, -1338, -1338, -1338,   836,  1276, -1338,    94,  1279, 10391,
    1711     1265,    94,    94,  1293,  9447,  1023,   949, -1338, -1338,  1071,
    1712    10239,  1292,  1215,   513, -1338, -1338,  1296, -1338,    -5, -1338,
    1713     1297,  1296, -1338, -1338,  1304, -1338, -1338,  1024,  1306,  1309,
    1714     6978,  1310,  1312,  1313, -1338, -1338,  1316, -1338, -1338,  1024,
    1715    -1338, -1338, -1338, -1338,  1024, 10239, 10239,   984,  1315, -1338,
    1716    -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338,
    1717    -1338, 10391, 10391,  1317,  1318,  1296, -1338, -1338,   761, -1338,
    1718    -1338, -1338,  7839,  9703, 10239, 10239,  1381, 10239, -1338,  1299,
    1719    -1338,  1303, -1338,  1305, 10239,  1311, 10239,  1014,  1314,    39,
    1720       75,  5221,  1493, -1338, -1338,  6348,  1321,   584, -1338, -1338,
    1721    -1338, -1338, -1338, -1338, -1338, -1338, -1338, 10002, -1338,  8476,
    1722     1328, -1338, -1338,  9703,   589,   606, -1338,  1327,  1325,   847,
    1723     1334, -1338,   331, -1338, -1338, -1338, -1338,  1024,  1332, -1338,
    1724    -1338,  1336,   831,  1339,   320,   457, -1338,  1341, -1338,  9742,
    1725    -1338, -1338, -1338, -1338, -1338,  1345, -1338,  9742,  9742,  9742,
    1726    -1338, -1338,  1351, -1338,  1355,  1358,  1360,   623,  8100,  8215,
    1727    -1338, -1338,   463, -1338,  1361,  1370, -1338,  8549,   841,   866,
    1728     1374,   868,  6487, -1338, -1338, -1338,   616, -1338,   881,  1375,
    1729     1379,   234,  1429,   861, -1338, -1338, 10239, -1338, 10182, 10239,
    1730    -1338, -1338, -1338,  1383,  1384, -1338, -1338, -1338,  1382, -1338,
    1731    -1338, -1338, -1338, -1338, -1338,  9703,   847,  1386, -1338,  1366,
    1732      847,  9742, -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338,
    1733    -1338, -1338, -1338, -1338, -1338, -1338,  1389,  1390, -1338, -1338,
    1734    -1338, -1338, -1338, -1338, -1338,  1395, -1338,  1394, -1338, -1338,
    1735    10182,   334, 10239, 10182, -1338,  1398, 10239, -1338,   339,  1415,
    1736     1417, -1338, -1338,  1405,  1406,  1393, -1338,   840, -1338, -1338,
    1737    -1338,  1148,  2342,  1403, -1338,   329, 10391, -1338,   897, -1338,
    1738      831,   831,  1411,  1412,  1416,  1421, -1338, -1338,  8403,  1423,
    1739    -1338,  1485, 10391,  1407, -1338, -1338, 10094, -1338,   898, -1338,
    1740     1410, 10182,  1422, -1338, -1338,  1434, -1338,  1443, -1338,  1459,
    1741     1461, -1338,  1428,  9703, -1338, -1338, -1338,   847,   675,  1452,
    1742     1431,  1455,  1296,  1296, -1338, -1338, -1338, -1338, -1338, 10182,
    1743       81, -1338,   447, -1338, -1338,  7690, -1338, -1338,  1435, 10239,
    1744    -1338, 10239,  7690,   234,  9627,   234,  9627,  1465, -1338,  1466,
    1745    -1338, -1338,  1456, -1338, -1338,   909, -1338, -1338, -1338,  1470,
    1746     1471, -1338, 10391, 10391, -1338, -1338,   880,   254, -1338, -1338,
    1747     1453, -1338,   880, -1338, -1338,  2645,   675, -1338, -1338,   234,
    1748     9627,   234,  9627,  1480,  1458,   675, -1338, -1338, -1338, -1338,
    1749    10094,  1476,   880,  7766, 10239, 10006,  1478,   880,  1486,  2645,
    1750     2922, -1338, -1338, -1338,  1487, -1338, -1338, -1338, -1338,  8841,
    1751    -1338, -1338, -1338,  9873, -1338, 10094, -1338, -1338,  1467,  9785,
    1752    -1338, -1338, 10006,   234,  2922,   234,  1495,  1498,   927, -1338,
    1753     9873, -1338, -1338, -1338,  9785, -1338, -1338, -1338,   234,   234,
    1754    -1338, -1338, -1338, -1338, -1338, -1338, -1338, -1338
     1597    7329,  8828, -1323,    37, -1323, -1323, -1323, -1323, -1323, -1323,
     1598   -1323,   109, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
     1599   -1323, -1323, -1323, -1323, -1323, -1323,    85,    85,    85,   873,
     1600     733,   178,  7561,   370, -1323, -1323, -1323, -1323, -1323,   191,
     1601   -1323, -1323, -1323,   614,   225, -1323, -1323, -1323, -1323,  4615,
     1602   -1323, -1323, -1323, -1323,   229,   285, -1323,   934, -1323, -1323,
     1603   -1323, -1323,   435,  1196,   579,   110,  7677, -1323, -1323,  4858,
     1604    1038, -1323, -1323,   580,   596,  6761,  1021,   875,   580,  1103,
     1605   -1323, -1323,  1317,   308, -1323,   580,  1224, -1323,   495, -1323,
     1606     616,   623, -1323, -1323, -1323, -1323,   547,   285,    85, -1323,
     1607      85, -1323, -1323, -1323, -1323,  9174,   934, -1323, -1323,   934,
     1608   -1323,   551, -1323,  9403, -1323, -1323,  1899,  9436, -1323,   844,
     1609     844,   844, -1323, -1323, -1323,    85, -1323, -1323, -1323,   584,
     1610     608,   632, -1323, -1323, -1323,   646, -1323, -1323, -1323, -1323,
     1611   -1323,   664,   687, -1323, -1323,   -28,  8797,  2908,   117,   701,
     1612     717,   726,   771,   786,   799,  8715,  6849,   731,   757, -1323,
     1613    5600, -1323, -1323, -1323, -1323,   804, -1323,   223,  5225,  5225,
     1614   -1323,   802,   365, -1323, -1323, -1323, -1323,   816,   443,   480,
     1615     534,    85,   827, -1323, -1323,  1196,  4341,   868, -1323,    50,
     1616   -1323,    85,    85,   285, -1323, -1323,    61, -1323,    85,    85,
     1617   -1323,  4647,   857,   864,   844,  6523, -1323, -1323,   869,  4615,
     1618   -1323, -1323,   580, -1323, -1323, -1323,   285, -1323,   934,   229,
     1619   -1323,  7868, -1323,   844,   844,   844,   285, -1323,   873, -1323,
     1620    5676, -1323, -1323,   852,   844, -1323,   844, -1323,   191,  8797,
     1621   -1323,   884, -1323,   733,   890,   844, -1323,   873,   888,   892,
     1622   -1323,  7561,   631, -1323, -1323, -1323,  9256, -1323, -1323,  9621,
     1623   -1323,   868,   151, 10214,  9436,  1899,  4647, -1323,    88, -1323,
     1624   -1323,  9403,   934,   891,  7708, -1323, -1323,   347, -1323, 10561,
     1625     922,   956, 10347,   945, 10366, 10423, -1323,   954, -1323, -1323,
     1626   -1323, -1323, 10442, 10442,  8571,   952, -1323, -1323, -1323, -1323,
     1627   -1323, -1323, -1323,   988, -1323,   966,  1946,  8910, 10366, -1323,
     1628     756,   338,   485,   411,   635,   955,   947,   957,   984,   237,
     1629   -1323, -1323,   962,   647, -1323,   302, -1323, -1323,  2908, -1323,
     1630   -1323,   235,   985, -1323,   312,   985,   989,   191, -1323, -1323,
     1631     990,  9174, -1323,   999,  1006,  9023, -1323, -1323,  1335,  2030,
     1632    8286,  6523,   580, -1323,   580,   844,   844, -1323, -1323, -1323,
     1633   -1323, -1323, -1323,   844,  9174,   934, -1323, -1323,  9474,  1575,
     1634   -1323,  8017, -1323, -1323, -1323, -1323, -1323, -1323, -1323,  1008,
     1635    5958, 10366, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
     1636   -1323, -1323, -1323, -1323, -1323, -1323,  1899, -1323,   973,   991,
     1637     992,  1012,   978,  1017,  1018,  1020,  4341, -1323, -1323,  1029,
     1638     229,  1031, -1323, -1323,  1033, -1323, -1323, -1323,  9256, -1323,
     1639   -1323, -1323, -1323, -1323,  4647, -1323,  8797,  8797, -1323,   844,
     1640    1899,  6642,   934,  8359, -1323, -1323, -1323, -1323,  9256,   151,
     1641   -1323, -1323,   580,   285, -1323, -1323,  9256, -1323,  5770, -1323,
     1642   -1323,   844,   844,   337,  8204,  1032,  1036,  1023,  1042,   844,
     1643   -1323, -1323, -1323, -1323,  9660, -1323,   367,  6404, -1323,   285,
     1644    1044, -1323,  1899, 10643, 10271, -1323, -1323, -1323, -1323,  1015,
     1645    4647, -1323,  8432,   868,  7445, -1323, -1323, -1323,   843,   436,
     1646     962,   733,  7708,  1341,  9403, -1323,  7708, -1323, -1323, -1323,
     1647   -1323,   508, -1323,  1051,   956,   248,  8571, -1323,  9512, -1323,
     1648   -1323,  8571, -1323,  8684,  8571, -1323, -1323,  1049, -1323,   606,
     1649    1057,   682,  1059, -1323, -1323,  3527,  6492, -1323,   362, -1323,
     1650   -1323, 10214, -1323,   368, 10214, -1323, -1323, -1323, -1323, -1323,
     1651   -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10214, -1323, -1323,
     1652   10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366,
     1653   10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366,  3593, 10214,
     1654   -1323,   647,  1677, -1323, -1323,    85,    85, -1323, -1323,  8797,
     1655   -1323, -1323,  1033,   631, -1323,  1033, 10290, -1323, -1323, -1323,
     1656    5046,  6492,  1060,  1063, -1323,  9436, -1323, -1323,   804, -1323,
     1657    1067,   750,  1068,  2627,   125,   962, -1323,    85,    85,   962,
     1658     132, -1323,    85,    85,  1033, -1323, -1323,    85,    85, -1323,
     1659     985,  9545,   934, 10788,   532,   656,  9545, -1323,  9621, -1323,
     1660     962, -1323,  9174, -1323,   238,  7983,  7983,  7983,   934, -1323,
     1661    5791,  1047,  1008,   493,  1058,  1061, -1323,  1076,  5225,   528,
     1662   -1323,  1165,   934,  7983,   631,  1899,   631,   868,   430,   985,
     1663   -1323, -1323,   536,   985, -1323, -1323, -1323,   956, -1323,   985,
     1664     285,  9660, -1323,   619,  1086,   633,  1088, -1323,  1087,   285,
     1665   -1323, -1323,  9256,   285,  1089,  9512,  1092, -1323,  1065, -1323,
     1666     538,   552,   733, -1323,   733,  1085, 10366, -1323,   733, 10788,
     1667   -1323, -1323,  1096, -1323, -1323, -1323,   631, -1323, 10716,  1006,
     1668   -1323,  7983,   703,  8286, -1323, -1323,   804,  1095,  1098,   843,
     1669    5016, -1323, -1323,  7708, -1323, -1323,  1091, -1323, -1323,  1102,
     1670   -1323,  1091,  1104, 10561, 10214,  1090,  1093,    94,  1109,  1107,
     1671    1111,  1114, -1323,  1118,  1129,  9365,  6611, -1323, 10214, -1323,
     1672     682,  1717, -1323, -1323, -1323,    85,    85, 10157, 10214,  1125,
     1673   -1323, -1323,   653, -1323, 10214, -1323, -1323,   736, -1323, -1323,
     1674   -1323, -1323,   756,   756,   338,   338,   485,   485,   485,   485,
     1675     411,   411,   635,   955,   947,   957,   984, 10366,   260, -1323,
     1676    9660,  1132,  1136,  1137,  1677, -1323, -1323, -1323, -1323, -1323,
     1677    9660,   708,  7983, -1323,  9174, -1323,  6968,  9136, -1323,  8017,
     1678    6849, -1323, -1323,   750,  9660,  1022,  1140,  1141,  1142,  1143,
     1679    1146,  1149,  1154, -1323,  3715,  2627, -1323, -1323, -1323, -1323,
     1680   -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
     1681   -1323, -1323, -1323,  1033, -1323, -1323, -1323,   962, -1323, -1323,
     1682   -1323, -1323, -1323, -1323, -1323, -1323,  1155, -1323,  1157,  1159,
     1683   -1323, -1323,   229,  1125,  5791, -1323, -1323, -1323,  5958,  1158,
     1684   -1323, -1323, -1323, -1323,   733,  6174,  1248, -1323, -1323, -1323,
     1685   -1323,  1151,   229, -1323, -1323,  1033, -1323, -1323,  1033,    84,
     1686    1033, -1323, -1323, -1323, -1323, -1323, -1323,  9327, -1323,   285,
     1687   -1323, -1323,   559,   562,  9474,  7087,  2137, 10366,  3114, -1323,
     1688   -1323,  1156,    51,  1156, -1323,   733, -1323,    85, -1323, -1323,
     1689    8941,  1023, -1323, -1323, -1323,  1036,  1175,  1171, -1323, -1323,
     1690    1178,  1181, -1323,   703,  1901, -1323,   672, -1323,  5016,   962,
     1691   -1323,  1184,  7708,  9583,  8797,  1185, -1323, -1323,  1180,  1187,
     1692    1170, -1323, 10366,  1197,   326,  1194, -1323,  1202,   631,  1202,
     1693   -1323, -1323,  1202,  1199, -1323,  1208,  1210,  1211,  1717, -1323,
     1694   -1323, -1323,  5958, -1323, -1323, -1323, -1323,  1209, 10214,  1212,
     1695     631, -1323, 10214, -1323,   631, -1323, -1323, 10214, -1323,   558,
     1696     985, -1323, -1323, -1323, -1323, -1323, -1323, -1323,  1008,  1006,
     1697    9023, -1323, -1323,  7206,  1218, -1323,   674,   985, -1323,   813,
     1698     861,   985, -1323,   844,  4029, -1323, -1323, -1323,  9660,  9660,
     1699   -1323,  8359,  8359, -1323,  1215,  1216,  1225,  1230, -1323,  1232,
     1700     685,    82,  1125, -1323,   631, -1323,  5225, -1323, 10214,   564,
     1701   -1323,  6373,  1236,  1240, 10100,  1242,  1243,    70,    79,    96,
     1702   10214,  1244,   285, 10214, 10214,  1227,  1249,   522,  1222, -1323,
     1703   -1323, -1323,  1250, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
     1704   -1323, -1323,   733,  1254, 10214, -1323,  9660,  9660,    85,  1257,
     1705   -1323,  9054, -1323, -1323,   752, -1323,  3114, -1323, -1323, -1323,
     1706   -1323,  1065, -1323, -1323,  1255, -1323, -1323, -1323, -1323,  1258,
     1707    1901, -1323, -1323,  1245, -1323,  1091, -1323, -1323,  1899,  1260,
     1708   -1323, -1323, -1323,   713,  1264, -1323,    94,  1269, 10366,  1252,
     1709      94,    94,  1262,  3527,   879,   985, -1323, -1323,  1076, 10214,
     1710    1273,  1209,   358,   204,  1270, -1323, -1323,  1275,  1270, -1323,
     1711   -1323,  1278, -1323, -1323,  1033,  1280,  1284,  6730,  1285,  1290,
     1712    1291, -1323, -1323,  1286, -1323, -1323,  1033, -1323, -1323, -1323,
     1713   -1323,  1033, 10214, 10214,  1006,  1294, -1323, -1323, -1323, -1323,
     1714   -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10366, 10366,
     1715    1300,  1302,  1270, -1323, -1323,   733, -1323, -1323, -1323,  5213,
     1716    9583, 10214, 10214,  1374, 10214, -1323,  1295, -1323,  1296, -1323,
     1717    1297, 10214,  1301, 10214,  1105,  1304,    12,    85,  9289,  1625,
     1718   -1323, -1323,  6174,  1322,   573, -1323, -1323, -1323, -1323, -1323,
     1719   -1323, -1323, -1323, -1323,  9920, -1323,  8432,  1330, -1323, -1323,
     1720    9583,   576,   602, -1323,  1331,  1315,   956,  1337, -1323,   329,
     1721   -1323, -1323, -1323, -1323,  1033,  1339, -1323, -1323,  1320,   486,
     1722     509,   631,  1340, -1323,  1344, -1323,  9660, -1323, -1323, -1323,
     1723   -1323, -1323,  1347, -1323,  9660,  9660,  9660, -1323, -1323,  1348,
     1724   -1323,  1351,  1354,  1355,   716,  8056,  8171, -1323, -1323,   529,
     1725   -1323,  1357,  1362, -1323,  8505,   721,   730,  1358,   761,  3837,
     1726   -1323, -1323, -1323,   605, -1323,   766,  1366,  1367,   285,  1419,
     1727     834, -1323, -1323, 10214, -1323, 10100, 10214, -1323, -1323, -1323,
     1728    1370,  1375, -1323, -1323, -1323,  1372, -1323, -1323, -1323, -1323,
     1729   -1323, -1323,  9583,   956,  1379, -1323,  1352,   956,  9660, -1323,
     1730   -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
     1731   -1323, -1323, -1323,  1378,  1382, -1323, -1323, -1323, -1323, -1323,
     1732   -1323, -1323,  1387, -1323,  1386, -1323, -1323, 10100,   289, 10214,
     1733   10100, -1323,  1389, 10214, -1323,   318,  1405,  1406, -1323, -1323,
     1734    1399,  1400,  1380, -1323,   821, -1323, -1323, -1323,   934,  1899,
     1735    1396, -1323,   402, 10366, -1323,   785, -1323,   631,   631,  1407,
     1736    1408,  1413,  1415, -1323, -1323,  8359,  1414, -1323,  1490, 10366,
     1737    1385, -1323, -1323, 10012, -1323,   800, -1323,  1402, 10100,  1403,
     1738   -1323, -1323,  1426, -1323,  1427, -1323,  1445,  1446, -1323,  1411,
     1739    9583, -1323, -1323, -1323,   956,   631,  1434,  1417,  1435,  1270,
     1740    1270, -1323, -1323, -1323, -1323, -1323, 10100,   107, -1323,   433,
     1741   -1323, -1323,  7793, -1323, -1323,  1418, 10214, -1323, 10214,  7793,
     1742     285,  9512,   285,  9512,  1436, -1323,  1442, -1323, -1323,  1440,
     1743   -1323, -1323,   825, -1323, -1323, -1323,  1444,  1449, -1323, 10366,
     1744   10366, -1323, -1323,   909,   211, -1323, -1323,  1425, -1323,   909,
     1745   -1323, -1323,  2166,   631, -1323, -1323,   285,  9512,   285,  9512,
     1746    1453,  1431,   631, -1323, -1323, -1323, -1323, 10012,  1443,   909,
     1747    6091, 10214,  9924,  1452,   909,  1454,  2166,  3344, -1323, -1323,
     1748   -1323,  1458, -1323, -1323, -1323, -1323,  8797, -1323, -1323, -1323,
     1749    9791, -1323, 10012, -1323, -1323,  1438,  9703, -1323, -1323,  9924,
     1750     285,  3344,   285,  1464,  1466,   853, -1323,  9791, -1323, -1323,
     1751   -1323,  9703, -1323, -1323, -1323,   285,   285, -1323, -1323, -1323,
     1752   -1323, -1323, -1323, -1323, -1323
    17551753};
    17561754
     
    17581756static const yytype_int16 yypgoto[] =
    17591757{
    1760    -1338,  4260,  2887, -1338,  1463, -1338,  1198,   661,  -268,   942,
    1761    -1338,   552,  -528,  -471,  -934,  -784, -1338,  4910,     0, -1338,
    1762     -100,   434,   472,   506,   438,  1049,  1050,  1051,  1062,  1055,
    1763    -1338,  1094,  -577,  5180,  -896, -1338,  -712,   636,   -68,  -593,
    1764     -654, -1338,  1469, -1338,   408, -1065, -1338, -1338,   159, -1338,
    1765    -1118,  -880,   265, -1338, -1338, -1338, -1338,    92, -1253, -1338,
    1766    -1338, -1338, -1338, -1338, -1338,   341, -1303,    36, -1338,  -904,
    1767    -1338,   518,   311, -1338,   196, -1338,  -309, -1338, -1338, -1338,
    1768      571,  -749, -1338, -1338,    16,  -930,   172,  1119, -1338, -1338,
    1769    -1338,  -149, -1338,    71,   966,  -196,  1532,  4034, -1338, -1338,
    1770       83,   174,   287,  2700, -1338,  1836, -1338, -1338,    55,  2097,
    1771    -1338,  2401,  2181, -1338, -1338, -1338,  -656, -1338,   962,   964,
    1772      560,   736,  -249, -1338, -1338, -1338,   955,   734,  -456, -1338,
    1773     -116,   -94,   869, -1338, -1338,  -963,  -979,    -2,   913,  1074,
    1774       29, -1338,   719,   357,  -283,  -191,  -146,   681,   789, -1338,
    1775     1010, -1338,  2818,  1589,  -439,   940, -1338, -1338,   720, -1338,
    1776     -237, -1338,   109, -1338, -1338, -1338, -1275,   435, -1338, -1338,
    1777    -1338,  1183, -1338,    32, -1338, -1338,  -845,  -111, -1337,  -112,
    1778     3150, -1338,  3946, -1338,   941, -1338,  -138,  1137,  -181,  -176,
    1779     -174,     7,   -40,   -33,   -28,  1352,    38,    50,    77,  -134,
    1780     -173,  -171,  -166,  -165,  -261,  -504,  -490,  -476,  -565,  -319,
    1781     -523, -1338, -1338,  -525,  1107,  1111,  1115,  -135,  4740,  -582,
    1782     -583,  -534,  -519,  -480, -1338,  -505,  -725,  -715,  -709,  -592,
    1783     -312,  -258, -1338, -1338,   326,    26,   -81, -1338,  3689,   -15,
    1784     -601,  -356
     1758   -1323,  4572,  3263, -1323,   197, -1323,   601,   950,  -251,   910,
     1759   -1323,   521,  -520,  -467,  -853,   -64,  3183,     0, -1323,  -150,
     1760     423,   446,   477,   450,  1016,  1025,  1019,  1026,  1028, -1323,
     1761    -622,  -408,  5012,  -745, -1323,  -735,   604,   472,  -656,   413,
     1762   -1323,  1279, -1323,   374, -1058, -1323, -1323,   126, -1323,  -823,
     1763   -1106,   222, -1323, -1323, -1323, -1323,    58, -1209, -1323, -1323,
     1764   -1323, -1323, -1323, -1323,   301, -1149,    35, -1323,  -933, -1323,
     1765     482,   274, -1323,   159, -1323,  -303, -1323, -1323, -1323,   535,
     1766    -827, -1323, -1323,    15, -1007,    71,    28, -1323, -1323, -1323,
     1767     -21, -1323,   357,  1253,  -198,  1636,  4113, -1323, -1323,    80,
     1768      54,   422,  1473, -1323,  1886, -1323, -1323,   192,  2183, -1323,
     1769    2495,   898, -1323, -1323, -1323,  -638, -1323,   924,   925,   524,
     1770     699,    83, -1323, -1323, -1323,   915,   695,  -339, -1323,  -106,
     1771      34,  1281, -1323, -1323,  -847,  -986,  1046,  1127,  1039,     5,
     1772   -1323,  1536,   481,  -165,  -210,  -124,   651,   758, -1323,   979,
     1773   -1323,  2789,  1548,  -413,   904, -1323, -1323,   689, -1323,  -235,
     1774   -1323,   158, -1323, -1323, -1323, -1257,   401, -1323, -1323, -1323,
     1775    1148, -1323,    21, -1323, -1323,  -858,  -105, -1322,  -129,  2267,
     1776   -1323,  2391, -1323,   906, -1323,  -184,    59,  -180,  -173,  -170,
     1777       7,   -40,   -35,   -33,    60,    -6,    25,    93,  -168,  -164,
     1778    -158,  -147,  -144,  -292,  -471,  -462,  -452,  -551,  -302,  -537,
     1779   -1323, -1323,  -511,  1069,  1072,  1074,  2608,  4844,  -578,  -514,
     1780    -502,  -495,  -500, -1323,  -508,  -724,  -717,  -708,  -590,  -305,
     1781    -195, -1323, -1323,   246,    19,    36, -1323,  3865,   104,  -623,
     1782    -397
    17851783};
    17861784
     
    17881786   positive, shift that token.  If negative, reduce the rule which
    17891787   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1790 #define YYTABLE_NINF -525
     1788#define YYTABLE_NINF -522
    17911789static const yytype_int16 yytable[] =
    17921790{
    1793       49,   113,   453,   149,   399,   267,   768,    97,   428,   400,
    1794      150,   401,   402,   505,   403,   151,   753,   114,   821,   404,
    1795      405,   829,   383,   384,   260,   966,   106,   106,   440,   846,
    1796      610,  1072,    49,   597,   166,   967,    50,   921,   828,    97,
    1797      357,   968,   741,   147,  1175,   975,   870,   796,   407,    49,
    1798     1383,  1141,   408,   726,   413,    76,   161,   731,   106,  1173,
    1799     1174,   421,   358,   186,   143,  1443,   209,   822,    50,    49,
    1800      193,    63,   202,   216,   342,   410,   226,   123,   820,    31,
    1801     1254,   152,   823,    69,   399,   219,   177,    76,   605,   400,
    1802      425,   401,   402,   153,   403,   106,    31,   817,   166,   404,
    1803      405,  1185,  1306,    63,   280,   113,   629,   471,  1255,   670,
    1804      633,   818,  1191,   113,    31,    69,   266,   271,  1199,   925,
    1805      154,   580,   203,   411,   832,   819,   142,  1071,   407,   679,
    1806      839,   327,   408,   413,   724,   261,  1443,   683,   262,  1181,
    1807       31,   950,  1201,   674,   676,   149,   307,   147,  1462,   475,
    1808      477,   411,   150,  1488,   161,   113,   345,   151,  1208,  1209,
    1809      209,   567,   281,   252,   329,  1182,   252,   373,   411,   409,
    1810      715,  1307,    56,   115,    70,  1203,   291,  1472,  1200,   110,
    1811      861,   862,   966,   915,   510,   186,   186,  1516,   577,  1518,
    1812       41,    42,   967,   161,   436,   568,   581,   879,   968,   584,
    1813      122,   266,  1202,  1182,    56,   953,    70,   548,   549,    49,
    1814      419,   730,   411,  1238,   476,   817,   161,  1242,   760,   668,
    1815     1204,   209,  1060,   152,   327,   149,   519,   721,   443,   818,
    1816      743,   821,   150,    31,  1249,   153,   735,   151,   210,   307,
    1817      212,   220,   144,   819,  1018,   548,  1082,   439,    31,   833,
    1818     1175,    49,  1530,   836,   493,   933,   436,   494,    97,   271,
    1819      589,  1017,   154,   413,   271,   266,   266,   421,   665,   471,
    1820      993,   113,   666,   161,   853,   146,  1143,   106,   856,  1545,
    1821      822,   548,    31,   463,   610,   657,   181,    50,  1447,   471,
    1822      342,  1005,   166,  1190,   307,   823,   800,   471,  -236,  -236,
    1823     1175,   483,   168,   481,   155,   411,    76,   307,   500,   597,
    1824      817,    76,   527,   672,   597,  1173,  1174,   357,   830,   677,
    1825      602,   476,    63,   572,   818,  1095,   169,   472,   147,   849,
    1826      599,  1086,   806,   850,    69,   373,   832,   447,   819,   358,
    1827     1079,   113,   665,   569,   413,   345,   666,   996,   171,   603,
    1828      621,   821,   837,   829,   602,   201,   460,   229,   673,   675,
    1829      230,   736,  1191,   234,   626,   236,   748,  -292,   626,  -236,
    1830     1072,   113,   245,   900,   855,   163,  1118,   177,  1402,  1403,
    1831      988,   737,  1447,  1402,  1403,   557,   558,  1447,   714,   247,
    1832      110,  1196,   110,   441,   630,   442,   266,   765,   634,  1134,
    1833      822,    41,    42,    41,    42,   286,   186,  1447,  1120,   846,
    1834      357,   327,   327,   373,  1447,   823,    41,    42,   851,  1175,
    1835      559,   560,   852,    56,   266,    70,   307,   307,  1121,   766,
    1836      266,  1336,   358,   626,   715,  1438,   577,   577,   519,   163,
    1837     1529,  1329,   514,   519,   342,  1427,   519,   583,  1404,   411,
    1838      770,   771,   772,  1413,   113,   250,  1432,  1433,  1205,  1428,
    1839     1540,  1330,   703,   252,  1128,   377,  1071,  1544,  1334,   954,
    1840     1337,  1339,   266,    76,   110,   357,   139,   140,  -520,   327,
    1841      266,   378,   626,   -10,    49,    41,    42,   373,   720,   472,
    1842      578,    97,  1021,    76,   113,  -444,   579,   358,   327,   229,
    1843      789,    76,   871,   884,  1106,   411,   307,   610,   113,   472,
    1844      106,   307,  1139,   307,   307,  1191,   243,   472,   263,  1018,
    1845       50,   751,  1191,   885,   212,   113,   345,   888,  1248,   110,
    1846     1161,  1163,   872,   471,   643,   435,  1134,   553,   554,    76,
    1847       41,    42,  1240,  1366,   881,   883,   110,   998,   139,   238,
    1848      912,   873,   806,   712,   914,    63,   851,    41,    42,   930,
    1849     1102,  1060,   387,  1473,   327,  1016,   498,    69,  1338,   390,
    1850      392,   572,   572,  1191,  -471,   684,  -471,  1474,   388,   307,
    1851     -445,   579,  1128,   239,  1103,   391,   393,   915,   240,   276,
    1852      626,   345,   394,  -471,   715,   621,  1500,   435,   252,   329,
    1853      411,   603,  1505,   603,  1280,  1281,   847,   110,   395,   139,
    1854      140,   599,     2,   206,     4,     5,     6,     7,    41,    42,
    1855      523,   626,  1525,  -124,   550,  -124,   626,  1532,   621,  -124,
    1856      551,   552,   626,   163,   278,   626,   626,   626,    37,   229,
    1857      806,   234,    40,   916,  -124,  -124,   866,   212,   279,    41,
    1858       42,   848,   714,   626,  1376,   266,    56,   974,    70,   917,
    1859      577,    48,   112,  1089,   342,  1089,   918,   863,   330,   703,
    1860      916,   918,  1029,   331,   808,    43,  -106,    35,  1016,    36,
    1861     -106,   878,   919,    45,    46,   113,  1083,  1084,   909,   597,
    1862      112,   112,  1076,    48,   372,   357,  1478,   332,  1188,  1364,
    1863     1188,   705,   333,  1478,    48,  1320,  1401,   706,  1114,  1409,
    1864       48,   626,   935,   621,  1189,   334,  1312,   358,    48,   720,
    1865      720,  1321,  1322,  1036,    48,   335,   399,    48,   376,   229,
    1866       48,   400,   748,   401,   402,  1352,   403,    76,  1323,  1353,
    1867       -3,   404,   405,   112,   112,   113,   345,   110,  1367,   141,
    1868      751,   751,  1446,   472,  1526,   722,   371,  1450,    41,    42,
    1869      389,   723,   500,    76,   528,   529,   530,    48,   555,   556,
    1870       48,   407,   385,  1412,   571,   408,   411,    48,   413,   472,
    1871      692,  1377,    45,    46,   966,  1471,   561,   562,   531,   703,
    1872      532,   397,   533,   534,   967,   572,   426,   442,   732,   703,
    1873      968,   241,   244,   626,   733,   626,   409,  1001,    48,  1429,
    1874      626,   345,   714,   703,   603,   427,    48,   712,  1165,   432,
    1875      750,    48,   411,   450,   342,  1440,   603,  -368,    45,    46,
    1876      986,   983,   523,   110,   523,   139,   140,   523,   715,  -397,
    1877      523,   419,   661,   411,    41,    42,    48,    48,    37,   954,
    1878      174,   175,    40,   954,   954,  1146,  1480,   484,  1481,    41,
    1879       42,   747,    48,   738,   504,   739,   806,   748,   740,  1539,
    1880       48,   744,  1158,   212,   894,  1539,   307,   329,   411,    48,
    1881      748,   110,    48,   139,   140,   372,  1539,   212,   461,   112,
    1882     1539,  1186,    41,    42,   808,  1498,  1440,   887,   626,   411,
    1883      462,   548,   106,   110,   112,   113,   345,   909,   112,   909,
    1884     1134,  1527,    48,   112,    41,    42,   896,   715,   727,  1373,
    1885     1374,   113,   748,   728,  1402,  1403,    48,    48,  1172,   291,
    1886      327,    76,   982,    48,   935,   935,   525,   995,   983,   720,
    1887       48,   508,   510,   706,   113,   307,  1236,    63,   513,   665,
    1888      413,  1360,   579,   666,   912,  1422,   983,   748,   914,    69,
    1889     1107,   129,   457,   130,   131,   132,   934,   116,   602,   751,
    1890      106,  1327,    41,    42,    45,    46,  1361,   712,  1363,   564,
    1891     1512,   212,   748,   527,   748,  -293,   847,   773,   774,    48,
    1892     1246,  1368,     8,     9,    10,    11,    12,   748,  1231,   781,
    1893      782,   345,     8,     9,    10,    11,    12,  1430,  1448,    48,
    1894       48,   692,   563,  1427,   748,   159,   565,   703,   703,  1494,
    1895      498,    31,   626,   626,   566,  1495,    48,   775,   776,  1128,
    1896       48,    31,     8,     9,    10,    11,    12,  1550,   481,   329,
    1897      411,   644,   307,   579,  -294,   830,   329,   602,    56,    34,
    1898       70,     8,     9,    10,    11,    12,   714,    48,  1384,    34,
    1899      338,    31,  1384,   777,   778,   779,   780,    48,   106,   569,
    1900     -441,   258,  1299,  1300,  1301,   703,   703,   587,   667,   159,
    1901       31,  1145,   113,   411,  1157,    48,   411,   909,  1160,    34,
    1902      602,    48,   909,    48,    37,   590,    -3,    76,    40,   645,
    1903     1162,   935,   602,   658,   659,    41,    42,   639,    34,   266,
    1904      660,    37,   323,   472,   662,    40,  1108,   663,   664,    57,
    1905       57,   339,    41,    42,   626,  1193,  1288,  1289,   112,  1291,
    1906      342,    43,  1245,    48,   411,   257,  1296,    96,  1298,    45,
    1907       46,    48,   669,   693,   694,    48,   696,   698,   719,    48,
    1908      345,    57,   112,   749,   112,   734,    45,    46,  -240,  1463,
    1909      745,     2,   206,     4,     5,     6,     7,   757,   809,    96,
    1910       37,   430,   174,   175,    40,   434,   810,   813,   442,   824,
    1911      148,    41,    42,   -12,  1355,    57,    96,   869,    57,   112,
    1912      228,   -13,   271,   113,   112,   875,   868,   895,   897,   111,
    1913      189,   898,  -418,    96,   902,   323,    96,   376,   905,   219,
    1914      725,   113,   729,   723,    56,   307,    70,   923,  -524,   106,
    1915       37,   712,   174,   175,    40,  1316,    35,   938,    36,   626,
    1916      945,    41,    42,   113,   947,   951,   952,   434,   958,   959,
    1917      488,   106,   960,   961,   112,  -295,   962,   692,   963,  1107,
    1918      979,    48,     8,     9,    10,    11,    12,   703,  1038,   106,
    1919      521,   990,    48,   991,    48,   703,   703,   703,   992,  1007,
    1920       76,  1425,  1008,   159,  1009,   348,  1073,  1010,   626,   626,
    1921     1011,    31,  1538,    48,    96,  1012,    63,   271,  1013,  1024,
    1922     -406,  -405,   307,   908,  1408,  1096,  1075,    96,    69,    48,
    1923      712,  1098,  1097,  1099,   112,  1105,  1115,   588,   748,    34,
    1924     1116,   594,  1117,    48,  1119,   112,    48,   112,   106,  1122,
    1925      973,  1124,   398,   189,  1125,   113,  1126,  1127,   399,   703,
    1926      627,  1130,  1133,   400,   631,   401,   402,   339,   403,  1155,
    1927       57,  1107,  1176,   404,   405,  1178,    96,    76,  1177,    48,
    1928     1179,   106,  1194,   112,  1195,   112,  1180,  1197,    96,   112,
    1929     1198,  1206,   867,   472,   210,   220,   212,   112,  1210,  1211,
    1930       57,  1213,   407,    -3,  1511,  1193,   408,   704,  1218,  1223,
    1931       48,    48,   266,  1228,   493,  1226,  1232,    56,    96,    70,
    1932     1237,  1239,   323,   323,    48,    37,   665,  1241,   626,    40,
    1933      666,   162,   479,  1244,  1250,  1108,    41,    42,   692,  1256,
    1934     1424,   920,  1252,   922,  1258,   194,  1260,   457,   217,  1261,
    1935      688,   227,  1262,   113,  1263,  1264,  1266,  1273,  1290,  1282,
    1936     1283,  1293,   814,   116,   602,  1294,  1311,  1295,  1318,  1107,
    1937       45,    46,  1324,  1297,  1328,   113,  1305,  1332,  1333,   106,
    1938      465,  1335,   113,  1340,   113,  1326,   113,  1342,   488,   441,
    1939      323,   442,   488,  1348,    56,    96,    70,  1349,  1350,   149,
    1940     1351,   106,   521,  1358,   521,    48,   150,   521,   106,   323,
    1941      521,   151,  1359,  1362,  1369,  1510,   604,    48,  1370,  1301,
    1942      113,   339,   113,  1378,  1379,  1386,  1380,  1108,  1387,   162,
    1943       76,  1396,  1397,   113,   327,  -407,  1400,    76,  1411,  1510,
    1944     1510,  1415,   374,  1417,  1419,  1420,   472,   161,  1426,   307,
    1945      176,  1434,  1435,   472,   173,  1421,  1436,  1439,  1193,   106,
    1946      644,  1437,    66,   117,  1510,  1193,   112,  1444,   162,  1353,
    1947      893,   373,  1449,   189,  1453,   323,     2,   206,     4,     5,
    1948        6,     7,   348,  1455,  1451,  1457,   804,  1459,    76,    48,
    1949     1461,   162,  1466,  1467,    66,  1468,   253,  1479,    48,   176,
    1950       48,  1493,   176,   444,   472,  1489,  1491,   112,   528,   529,
    1951      530,   160,  1496,  1497,   704,  1504,  1193,   845,   645,  1519,
    1952     1520,  1524,   594,  1531,  1041,  1108,  1533,  1535,   854,  1541,
    1953       48,   221,   531,    57,   532,  1548,   533,  1309,  1549,   890,
    1954     1212,    35,   783,    36,   784,  1132,   785,    56,   176,    70,
    1955      112,    96,   787,  1310,    56,   604,    70,    37,   786,   183,
    1956      184,    40,  1499,  1414,   644,  1091,  1551,   259,    41,    42,
    1957     1243,  1388,   112,  1372,  1217,   348,   112,   903,  1482,   904,
    1958     1090,   688,  1225,   926,  1129,   215,  1094,   802,  1037,   874,
    1959      989,  1104,   417,   940,   601,   111,   602,   717,  1319,     0,
    1960      994,   242,    45,    46,   948,    56,     0,    70,   792,   328,
    1961      374,   176,   793,     0,  1006,   437,   794,   259,   350,   488,
    1962        0,     0,   645,     0,     0,   445,   112,     0,     0,     0,
    1963        0,     0,     0,     0,   704,     0,   215,     0,     0,     0,
    1964      348,   339,     0,     0,   704,     0,     0,     0,   406,     0,
    1965        0,     0,     0,     0,     0,     0,   761,     0,   704,     0,
    1966        0,   767,     0,   424,   112,   176,   429,   431,   816,     0,
    1967      604,   160,   176,     0,     0,     0,     0,     0,    48,   215,
    1968        0,     0,     0,    48,   348,   348,   348,     0,   374,     0,
    1969        0,     0,   448,   520,     0,     0,   451,     0,   452,     0,
    1970       48,   997,   348,     0,     0,     0,   804,   459,     0,     0,
    1971     1486,   465,  1486,    66,     0,     0,     0,     0,   473,     0,
    1972      924,     0,  1041,     0,     0,     0,     0,     0,   480,     0,
    1973        0,    37,     0,   183,   184,    40,   431,     0,     0,     0,
    1974      215,   176,    41,    42,     0,     0,  1486,     0,  1486,     0,
    1975        0,     0,     0,     0,     0,   913,     0,     0,   176,     0,
    1976      348,     0,   176,     0,     0,     0,    74,     0,   907,     0,
    1977      411,     8,     9,    10,    11,    12,    45,    46,   215,   112,
    1978        0,     0,   880,   215,   882,     0,   816,   604,     0,   908,
    1979        0,     0,     0,     0,   804,     0,     0,     0,    74,     0,
    1980       31,   339,    48,   259,     0,     0,     0,   595,     0,     0,
    1981        0,     0,   987,   623,     0,     0,     0,   688,  1170,  1171,
    1982        0,     0,     0,     0,     0,   176,   628,     0,    34,     0,
    1983      628,     0,     0,   259,   929,   222,     0,  1286,     0,   488,
    1984     1109,   323,   681,   112,     0,   112,   112,     0,     0,     0,
    1985        0,     0,   348,     0,     8,     9,    10,    11,    12,     0,
    1986      348,     0,   704,   704,     0,     0,     0,     0,   707,   215,
    1987      571,     0,   411,     0,     0,     0,  1220,  1221,    45,    46,
    1988      473,   816,     0,    31,     0,     0,     0,     0,     0,  1031,
    1989        0,     0,     0,   604,     0,   350,     0,   845,     0,     0,
    1990      473,     0,     0,     0,     0,   520,     0,     0,   473,     0,
    1991      520,    34,     0,   520,     0,     0,     0,     0,     0,     0,
    1992      704,   704,   353,     0,     0,    57,   699,     0,     0,   431,
    1993        0,     0,   924,     0,     8,     9,    10,    11,    12,     0,
    1994        0,     0,     0,     0,   713,     0,    66,     0,     0,     0,
    1995      215,     0,     0,   750,   431,   411,     0,     0,   431,     0,
    1996        0,    45,    46,    31,     0,     0,     0,     0,     0,     0,
    1997        0,     0,    48,    48,  1085,     0,   913,   924,   688,     0,
    1998        0,   112,   112,   176,     0,     0,     0,   259,   350,     0,
    1999        0,    34,   215,    57,     0,     0,   449,     0,     0,     0,
    2000        0,     0,     0,     0,     0,     0,   604,     0,     0,     0,
    2001        0,     0,  1142,     0,     0,   176,     0,    74,     0,   112,
    2002      804,     0,    74,     0,     0,     0,     0,    77,     0,     0,
    2003        0,   176,     0,   934,   795,   602,     0,     0,     0,     0,
    2004        0,    45,    46,     0,    37,   176,   183,   184,    40,     0,
    2005        0,     0,   628,   807,     0,    41,    42,     0,  1341,    77,
    2006        0,     0,     0,  1031,     0,   826,  1343,  1344,  1345,   892,
    2007     1317,   348,   348,     0,     0,     0,    48,   112,   899,     0,
    2008        0,   185,   901,   595,     0,     0,   112,  1123,   595,    45,
    2009       46,    57,     0,     0,   628,     0,   223,   350,   350,   350,
    2010       48,    48,   704,     0,     0,     0,     0,   339,     0,  1135,
    2011      704,   704,   704,  1135,   215,   350,    37,   222,   183,   184,
    2012       40,     0,     0,     0,     0,    48,   176,    41,    42,  1109,
    2013     1389,     0,     0,   699,     0,     0,     8,     9,    10,    11,
    2014       12,     0,   215,   924,   473,     0,     0,   215,     0,     0,
    2015        0,     0,     0,   907,   913,   411,     0,     0,     0,   913,
    2016        0,    45,    46,  1135,     0,    31,     0,     0,     0,     0,
    2017      473,     0,     0,   350,   704,     0,     0,   214,     0,     0,
    2018        0,     0,   939,   355,    74,   431,     0,     0,     0,     0,
    2019        0,     0,     0,    34,     0,     0,     0,     0,    37,   353,
    2020      183,   184,    40,     0,    74,   924,   924,   259,   713,    41,
    2021       42,     0,    74,   969,     0,     0,     0,     0,   215,     0,
    2022        0,  1109,     0,     0,     0,     0,     0,     0,   214,     0,
    2023      353,     0,   215,     0,     0,   601,     0,   602,     0,     0,
    2024        0,    57,    57,    45,    46,     0,     0,     0,   353,     0,
    2025       74,     0,     0,   699,     0,     0,     0,     0,     0,     0,
    2026        0,     0,     0,   699,    57,   350,     0,   628,     0,     0,
    2027     1004,   214,   628,   807,     0,     0,     0,   699,    77,     0,
    2028        0,     0,    57,    77,     0,     0,     0,  1015,     0,     0,
    2029        0,   176,   353,     0,     0,     0,     0,     0,     0,  1081,
    2030        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2031       17,    18,    19,    20,    21,    22,    23,    24,    25,  1109,
    2032        0,    26,    27,    28,     0,     0,   215,   348,   348,     0,
    2033       31,    79,   214,     0,     0,     0,    57,     0,    66,     0,
    2034        0,    57,     0,     0,    37,     0,   183,   184,    40,     0,
    2035     1485,     0,  1485,     0,     0,    41,    42,   353,    34,     0,
    2036      628,     0,     0,    79,     0,   207,    39,   259,   713,     0,
    2037      214,  1087,     0,     0,    57,   214,     0,     0,   223,     0,
    2038     1135,   265,  1135,  1135,     0,     0,  1485,     0,  1485,    45,
    2039       46,     0,     0,     0,     0,     0,     0,  1101,     0,     0,
    2040      224,   353,   353,   353,     0,   431,   117,     0,    45,    46,
    2041      924,     0,     0,     0,     0,   323,     0,     0,     0,   353,
    2042        0,     0,     0,     0,     0,     0,   924,     0,     0,     0,
    2043        0,     0,     0,     0,     0,     0,     0,   353,     0,     0,
    2044        0,     0,     0,     0,     0,    77,     0,   348,    74,     0,
    2045        0,     0,  1207,     0,     0,     0,     0,     0,     0,     0,
    2046      355,   214,     0,   595,     0,    77,     0,     0,     0,     0,
    2047        0,     0,    57,    77,    74,     0,   429,   353,     0,     0,
    2048        0,   699,   699,     0,   350,   350,     0,   356,     0,     0,
    2049        0,   355,     0,     0,    57,     0,   924,   924,     0,     0,
    2050        0,    57,     0,     0,  1192,     0,     0,     0,     0,   355,
    2051        0,    77,   353,     0,     0,     0,     0,     0,  1135,  1135,
    2052        0,     0,     0,   215,     0,     0,     8,     9,    10,    11,
    2053       12,     0,     8,     9,    10,    11,    12,     0,     0,   699,
    2054      699,     0,   214,     0,     0,     0,     0,     0,     0,     0,
    2055        0,     0,    57,   355,     0,    31,  1464,   353,     0,     0,
    2056        0,    31,     0,     0,     0,     0,     0,   353,     0,   353,
    2057        0,     0,     0,     0,   222,     0,   479,   353,     0,     0,
    2058        0,   353,    79,    34,   214,     0,   628,    79,    37,    34,
    2059      183,   184,    40,     0,    37,     0,   183,   184,    40,    41,
    2060       42,     0,     0,     0,   176,    41,    42,     0,     0,     0,
    2061        0,     0,   713,     0,  1513,     0,     0,     0,   355,     0,
    2062        0,     0,     0,  1521,     0,   907,     0,   411,     0,     0,
    2063        0,   185,     0,    45,    46,     0,     0,     0,     0,    45,
    2064       46,     0,    74,     0,     0,     0,     0,    37,     0,   183,
    2065      184,    40,     0,     0,     0,  1287,     0,     0,    41,    42,
    2066        0,     0,   355,   355,   355,     0,     0,     0,     0,     0,
    2067        0,     0,   353,   259,     0,     0,     0,    66,     0,     0,
    2068      355,     0,   224,     0,  1509,     0,   411,     0,     0,   699,
    2069        0,   713,    45,    46,     0,   117,   213,     0,   355,     0,
    2070     1371,     0,     0,     0,     0,   232,   214,     0,     0,    77,
    2071        0,   215,     0,     0,     0,     0,     0,     0,     0,     0,
    2072        0,   699,     0,     0,     0,     0,     0,     0,     0,   699,
    2073      699,   699,     0,     0,   214,    77,     0,     0,   355,   214,
    2074      350,   350,     0,     0,     0,     0,     0,   213,    86,    79,
    2075        0,     0,     0,     0,  1192,     0,     0,     0,     0,     0,
    2076        0,     0,     0,     0,   356,     0,     0,     0,     0,    79,
    2077        0,     0,     0,   355,   176,     0,     0,    79,     0,     0,
    2078       86,     0,     0,     0,     0,   353,   353,   117,   353,   353,
    2079      213,     0,     0,   699,     0,   356,     0,     0,     0,     0,
    2080        0,     0,     0,     0,     0,     0,   215,     0,    74,     0,
    2081      214,     0,     0,   356,     0,    79,     0,   225,   355,     0,
    2082        0,     0,     0,     0,   214,     0,     0,     0,   355,     0,
    2083      355,     0,     0,     0,     0,   223,     0,     0,   355,     0,
    2084        0,     0,   355,   353,   353,     0,     0,     0,     0,     0,
    2085        0,   213,  1483,     0,  1487,     0,     0,   356,     0,     0,
    2086      350,     0,     8,     9,    10,    11,    12,     0,     0,     0,
    2087      167,     0,   172,     0,     0,   178,   179,   180,     0,   182,
    2088        0,     0,     0,     0,     0,   117,     0,     0,  1515,   213,
    2089     1517,    31,     0,   233,   213,     0,     0,     0,     0,     0,
    2090        0,     0,     0,    77,   363,   248,   249,  1192,     0,   499,
    2091        0,     0,     0,     0,  1192,     0,   353,     0,   214,    34,
    2092        0,     0,   356,     0,    37,     0,   183,   184,    40,     0,
    2093        0,     0,  1546,   355,  1547,    41,    42,     0,     0,     0,
    2094        0,     0,     0,     0,     0,     0,     0,  1554,  1555,     0,
    2095        0,     0,     0,     0,     0,     0,     0,     0,     0,   222,
    2096        0,  1509,     0,   411,     0,  1192,   356,   356,   356,    45,
    2097       46,     0,  1534,     0,     0,     0,     0,     0,     0,     0,
    2098      213,    74,     0,     0,   356,     0,     0,     0,     0,     0,
    2099        0,     0,     0,   353,     0,   353,     0,     0,     0,    86,
    2100        0,     0,   356,     0,    86,     0,     0,     0,     0,     0,
    2101        0,     0,     0,    79,     0,     0,     0,     0,     0,     8,
    2102        9,    10,    11,    12,     0,   353,     0,     0,     0,     0,
    2103        0,     0,     0,   353,   353,   353,     0,     0,     0,    79,
    2104        0,     0,   356,     0,   353,   353,   355,   355,    31,   355,
    2105      355,     0,     0,     0,     0,     0,     0,     0,    74,     0,
    2106        0,   213,     0,     0,     0,     0,     0,     0,     0,    77,
    2107        0,     0,     0,     0,     0,     0,    34,   356,   213,     0,
    2108        0,    37,     0,   183,   184,    40,     0,     0,     0,     0,
    2109        0,     0,    41,    42,     0,     0,     0,   353,     0,   225,
    2110        0,     0,     0,   213,   355,   355,   124,   127,   128,     0,
    2111        0,     0,     0,     0,     0,   214,     0,     0,   265,     0,
    2112        0,     0,   356,     0,     0,     0,    45,    46,     0,     0,
    2113        0,     0,   356,     0,   356,     0,     0,     0,     0,   224,
    2114        0,     0,   356,     0,     0,     0,   356,     0,   535,   536,
    2115      537,   538,   539,   540,   541,   542,   543,   544,   545,     0,
    2116        0,   592,     0,   600,   353,     0,    86,     0,     0,     0,
    2117        0,     0,     0,     0,   624,   625,     0,   355,   254,     0,
    2118      255,   363,   546,     0,     0,     0,    86,     0,     0,     0,
    2119        0,     0,     0,     0,    86,     0,     0,     0,     0,     0,
    2120        0,     0,     0,     0,     0,     0,     0,    79,     0,     0,
    2121        0,    74,   363,     0,     0,     0,     0,     0,    74,     0,
    2122      223,     0,     0,     0,     0,   213,     0,     0,     0,     0,
    2123      363,     0,    86,     0,     0,     0,     0,   356,     0,     0,
    2124        0,     0,    77,     0,     0,     0,     0,     0,     0,     0,
    2125        0,     0,     0,   213,   355,     0,   355,     0,   213,     0,
    2126        0,   396,     0,     0,     0,     0,     0,     0,     0,    74,
    2127        0,   415,   416,     0,   363,     0,   420,     0,   422,   423,
     1791      49,   113,   407,   149,   453,   399,   428,    97,   150,   440,
     1792     151,   267,   400,   753,   767,   401,   114,  1071,   408,   106,
     1793     106,   402,   974,   280,   869,   828,   965,   403,    57,    57,
     1794     505,   845,    49,   966,  1188,    50,  1172,   152,   404,    97,
     1795     597,   405,   967,   147,   383,   384,   741,   610,  1070,    49,
     1796     357,   106,   827,   143,    70,   920,   161,   605,   410,    96,
     1797      57,   795,   177,   186,   819,  1380,   209,    50,   153,    49,
     1798     193,    56,   115,   216,   923,  1303,   226,  1440,   949,   726,
     1799      69,   281,   407,   731,   219,   399,    70,   820,   106,    31,
     1800      31,    96,   400,   724,    57,   401,   425,    57,   408,   821,
     1801      31,   402,   148,    56,   831,   113,   822,   403,    96,   162,
     1802     838,   261,    69,   113,   262,   670,   266,   271,   404,   122,
     1803     212,   405,   189,   194,    31,    96,   217,    31,    96,   227,
     1804     816,  1138,   475,   477,   510,   679,   154,   210,   202,   817,
     1805     220,   260,  1196,   683,  1304,   149,   307,   147,  1440,   818,
     1806     150,  1198,   151,   166,   161,   113,   345,   548,   549,   252,
     1807     209,   411,   411,  1459,    31,   986,   527,   373,  1200,   629,
     1808     419,    31,   411,   633,  1170,  1171,   291,   715,  1178,   152,
     1809     914,  1182,   965,  1235,   348,   186,   186,  1239,   203,   966,
     1810     358,   342,    76,   161,  1078,   548,   721,   481,   967,   411,
     1811     668,   266,  1197,  1469,  1179,   952,    96,   162,   832,    49,
     1812     153,  1199,   835,  1201,  1187,   409,   161,   166,   123,    96,
     1813     374,   209,   665,   439,    76,   149,   252,   329,   443,  1179,
     1814     150,   548,   151,   852,   829,   471,   602,   855,   666,   307,
     1815    1172,   836,  1030,   602,   398,   189,   162,  1017,   816,    57,
     1816     327,    49,  1140,   735,   176,  -233,  -233,   817,    97,   271,
     1817     476,   674,   676,  1081,   271,   266,   266,   818,    96,   162,
     1818     106,   113,   463,   161,  1016,   442,  1004,   483,   154,    57,
     1819      96,   444,  1188,   992,   500,   923,    50,   142,   924,  1249,
     1820    1172,   657,   441,  1527,   307,   163,   665,   860,   861,   820,
     1821     146,   610,  1094,   176,  1485,    70,   176,   307,  1205,  1206,
     1822      96,   821,   666,   436,   878,   831,   597,  1250,   822,   672,
     1823    1542,   597,    56,   572,   479,   677,  -233,   357,   147,   730,
     1824     923,    69,   567,  1399,  1400,   373,   168,   155,  1513,   377,
     1825    1515,   113,   816,   327,   580,   345,   411,   476,   743,   603,
     1826     621,   817,   176,   177,  1071,   378,   828,    63,   736,   163,
     1827     169,   818,  1399,  1400,   626,  1139,   568,  1497,   626,   569,
     1828     630,   113,   932,  1502,   634,   436,   748,   589,   737,   899,
     1829     110,   144,   139,   140,  1246,  1070,   447,    96,   374,    63,
     1830     987,    41,    42,  1522,  1202,   805,   266,   471,  1529,   171,
     1831     769,   770,   771,  1401,   212,   460,   186,   342,   604,  1172,
     1832     845,   166,   578,   373,   799,   176,  1030,   471,   579,   820,
     1833     357,   583,   243,   411,   266,   471,   307,   307,  1170,  1171,
     1834     266,   821,  1410,   626,   110,  1188,  1119,   854,   822,  1326,
     1835     110,   715,  1188,    76,  1526,    41,    42,   684,    76,   599,
     1836    1020,    41,    42,   579,   113,   435,  1120,   553,   554,  1327,
     1837    1127,   348,  1363,   995,  1537,   189,   374,   358,  -121,   176,
     1838    -121,  1541,   266,   760,  -121,   493,   176,   705,   494,   765,
     1839     266,   387,   626,   706,    49,   357,   953,   373,   720,  -121,
     1840    -121,    97,   229,  1188,   113,   230,   923,   388,   234,  1085,
     1841     236,   557,   558,   106,   911,  1245,   307,   245,   113,  1158,
     1842    1160,   307,    57,   307,   307,  1136,   714,   435,  1424,    50,
     1843     913,   751,  1017,   610,   870,   113,   345,   212,   882,  1105,
     1844     327,   327,  1425,  1015,  1429,  1430,   559,   560,    70,   883,
     1845     523,   411,  1102,    96,  1117,   176,   722,   604,  1435,  1470,
     1846     880,   181,   723,   163,   348,    56,   923,   923,   110,   390,
     1847     358,   342,   176,  1471,    69,   110,   176,   139,   140,    41,
     1848      42,   572,   572,   555,   556,   391,    41,    42,  1127,   307,
     1849    1444,   110,   201,   914,     2,   206,     4,     5,     6,     7,
     1850     626,   345,    41,    42,   286,   621,   392,  1331,   327,  -289,
     1851     715,   603,   111,   603,   865,    41,    42,   973,    63,   997,
     1852      76,   247,   393,   472,   805,  1475,   250,   327,   732,   348,
     1853    1333,   626,  1475,  -517,   733,   358,   626,   847,   621,   176,
     1854      76,   514,   626,  1361,   229,   626,   626,   626,    76,   871,
     1855    -468,   643,  -468,   862,   848,   886,  1015,   411,   849,    35,
     1856     394,    36,  1028,   626,   915,   266,   252,   877,   872,  -468,
     1857     815,   471,   604,   348,   348,   348,   395,  1142,   917,   411,
     1858     916,   807,  1075,  1523,  1444,   915,    76,   442,   917,  1444,
     1859    1185,   348,   263,   327,   918,   113,    37,   929,   908,  1185,
     1860      40,  1082,  1317,   -10,  1083,   597,  1186,    41,    42,  1444,
     1861     692,   498,   805,   110,   357,  1309,  1444,  1409,  1318,  1113,
     1862    1237,   626,   934,   621,    41,    42,   747,  -441,  1319,   720,
     1863     720,   748,   748,    43,   407,   846,   399,   561,   562,   893,
     1864     599,    45,    46,   400,  1320,   748,   401,  1364,   500,   348,
     1865     408,  -442,   402,   895,  1035,   113,   345,   912,   403,   748,
     1866     751,   751,   523,   212,   523,   276,   571,   523,   411,   404,
     1867     523,   923,   405,   981,    45,    46,   519,   212,   850,   982,
     1868    1277,  1278,   851,   278,   229,   472,   234,   923,   815,   604,
     1869     714,   342,   965,  1154,   850,   411,  1374,   176,  1101,   966,
     1870    1477,   750,  1478,   411,   572,   472,   279,  -103,   967,    45,
     1871      46,  -103,   626,   472,   626,   110,  1000,   139,   140,   626,
     1872     345,   330,   933,   603,   602,  1162,    41,    42,   994,   176,
     1873      45,    46,    37,  1233,   706,   603,    40,   331,  1349,   579,
     1874     348,  1357,  1350,    41,    42,   176,   332,   748,   348,   712,
     1875    1358,    63,   715,   371,   358,  1524,   748,   923,   923,   176,
     1876     548,   985,   982,   465,     8,     9,    10,    11,    12,   813,
     1877     212,   602,   329,   411,   229,   953,   372,    45,    46,   953,
     1878     953,  1360,   815,   550,    76,   307,  1365,   748,  -290,   551,
     1879     552,   333,   748,    31,   604,     8,     9,    10,    11,    12,
     1880     807,   510,  1370,  1371,   106,  1427,   334,   626,   673,   675,
     1881      76,  1424,   665,    57,   113,   345,   908,   911,   908,   335,
     1882    1445,    34,  1183,   376,    31,    37,   748,   385,   666,    40,
     1883     113,   715,  1157,   913,   602,   389,    41,    42,   805,    70,
     1884     176,   692,   409,   934,   934,  1491,  1419,   982,   720,   714,
     1885     342,  1492,    34,   113,   307,   129,    56,   130,   131,   132,
     1886      48,   112,   719,  1399,  1400,    69,    41,    42,  1106,   397,
     1887      45,    46,   106,  1547,   214,  1084,   426,   912,   751,   579,
     1888    1159,    57,   602,   427,  1509,  1426,   772,   773,   519,   112,
     1889     112,   432,    48,   519,   450,  1324,   519,   738,  1242,   739,
     1890     411,  1437,   740,    48,  1088,   744,  1088,   604,  -365,    48,
     1891     345,   774,   775,  1228,  -394,   484,    37,    48,   174,   175,
     1892      40,   780,   781,    48,  1107,   214,    48,    41,    42,    48,
     1893     461,   626,   626,  1127,   462,     2,   206,     4,     5,     6,
     1894       7,   504,   112,   112,   776,   777,   778,   779,   291,   472,
     1895     788,   307,     2,   206,     4,     5,     6,     7,   327,   348,
     1896     348,   528,   529,   530,   508,  1169,    48,   442,   214,    48,
     1897     106,  1495,  1437,   513,   525,   472,    48,    76,   111,    57,
     1898     527,   228,  1381,   563,   564,   531,  1381,   532,   566,   533,
     1899     534,   113,   252,   329,   411,   565,   908,   419,   661,   411,
     1900      35,   908,    36,   569,   176,    70,   338,    48,  -438,   587,
     1901     934,   658,   659,   712,   846,    48,  -291,    35,   266,    36,
     1902      48,   590,    56,     8,     9,    10,    11,    12,    -3,   214,
     1903     639,  1190,   660,   626,   481,   329,   411,   662,   663,   761,
     1904     664,   829,   329,   602,   766,    48,    48,    37,   667,   183,
     1905     184,    40,    31,   669,   257,   912,   693,   345,    41,    42,
     1906     912,    48,   694,    -3,   696,   498,   698,   214,  -237,    48,
     1907     734,   745,   214,  1296,  1297,  1298,   692,   749,    48,   757,
     1908      34,    48,   808,  1460,   906,   809,   411,   -12,   112,   812,
     1909     823,   714,    45,    46,   465,  1332,  1334,  1335,   -13,   271,
     1910     113,   867,   868,   112,   874,   907,   894,   112,   896,   897,
     1911     922,    48,   112,   901,   904,   219,  -415,   723,   113,   106,
     1912    -521,   944,   307,   937,   946,    48,    48,    57,    57,   957,
     1913     950,   959,    48,   958,   960,   951,   626,  -292,   961,    48,
     1914     113,   106,    63,    76,     8,     9,    10,    11,    12,   962,
     1915      57,   978,   989,   212,   342,  1106,   990,   991,   214,   106,
     1916    1006,  1007,  1008,  1009,   116,   879,  1010,   881,    57,  1011,
     1917     210,   220,   712,    31,  1012,  1023,    70,  -403,    37,  -402,
     1918     183,   184,    40,  1037,  1422,   626,   626,  1072,    48,    41,
     1919      42,  1535,  1074,    56,   271,  1095,   907,  1096,  1059,   307,
     1920    1097,    34,    69,  1098,  1104,  1114,   748,  1115,    48,    48,
     1921    1116,  1107,   159,   348,   348,   185,  1118,   928,   106,  1352,
     1922    1121,  1123,    57,    45,    46,    48,   972,    57,  1124,    48,
     1923    1125,  1126,   113,   407,  1132,  1129,   399,   692,  1152,   214,
     1924     644,  1173,  1174,   400,   173,  1175,   401,  1106,   442,   408,
     1925    1176,   106,   402,    70,  1177,  1191,    48,   665,   403,  1192,
     1926      57,  1194,  1195,  1203,  1210,   441,    48,  1207,   258,   404,
     1927      56,  1208,   405,   666,  1215,    -3,   159,  1220,  1225,  1190,
     1928    1223,   214,  1241,   493,    48,  1229,   253,  1508,  1234,   266,
     1929      48,  1236,    48,  1421,  1238,  1247,  1251,  1253,  1255,   110,
     1930    1257,   139,   238,  1107,  1258,   626,  1263,  1259,   472,   323,
     1931      41,    42,  1260,  1261,    76,   176,  1270,    37,   339,   174,
     1932     175,    40,  1279,   110,  1280,   139,   140,   112,    41,    42,
     1933     113,  1287,    48,   348,    41,    42,   239,  1290,  1291,  1292,
     1934      48,   240,  1330,  1294,    48,  1106,  1302,  1308,    48,   106,
     1935    1315,   112,   113,   112,   372,  1323,  1321,  1325,    57,   113,
     1936     727,   113,  1336,   113,  1329,   728,  1337,  1193,   430,  1339,
     1937    1345,   106,   434,  1346,  1347,  1348,   149,  1359,   106,  1355,
     1938      57,   150,   417,   151,  1356,  1366,  1367,    57,   112,  1298,
     1939    1375,    76,  1507,   112,  1384,  1376,  1377,   113,  1383,   113,
     1940    1393,  1107,   323,   214,  1394,   437,    70,  -404,  1397,  1408,
     1941     113,  1412,  1414,    70,   712,   445,  1507,  1507,  1416,  1417,
     1942     703,  1423,  1418,    56,   161,  1441,   307,  1431,  1432,   106,
     1943      56,   214,  1190,  1433,   434,  1434,   214,   488,    57,  1190,
     1944    1350,  1507,  1436,   112,  1446,  1448,  1450,  1452,   373,   213,
     1945      48,  1454,  1456,  1458,  1463,  1465,  1486,   521,   232,  1464,
     1946    1476,    48,  1488,    48,    70,  1490,  1493,  1501,  1521,  1122,
     1947     159,  1494,  1516,  1517,  1530,   479,   141,  1528,  1532,    63,
     1948    1538,    56,    48,   520,  1545,   176,  1546,   889,  1209,   782,
     1949    1190,  1133,  1131,   712,   784,  1133,  1307,  1411,    48,   783,
     1950     213,   704,   785,   112,   588,   786,  1496,   214,   594,  1548,
     1951    1369,  1385,    48,  1240,   112,    48,   112,  1214,  1479,   902,
     1952     903,   214,  1089,   925,   215,  1222,  1093,   627,   241,   244,
     1953     327,   631,   801,  1128,   339,  1059,  1036,   939,   873,  1103,
     1954     242,  1316,   717,   213,    76,  1133,    66,   117,    48,   947,
     1955     791,    76,   112,   792,   112,   793,   472,    37,   112,   174,
     1956     175,    40,     0,     0,     0,     0,   112,     0,    41,    42,
     1957       0,     0,     0,  1285,  1286,   215,  1288,     0,    66,    48,
     1958      48,     0,     0,  1293,     0,  1295,     0,     0,     0,   323,
     1959     323,     0,     0,    48,   376,   160,     0,     8,     9,    10,
     1960      11,    12,    76,     0,   213,     0,     0,  1483,     0,  1483,
     1961       0,     0,     0,     0,   214,   221,     0,   688,   215,     0,
     1962     528,   529,   530,     0,     0,     0,    31,   703,  1373,     0,
     1963     116,     0,   681,     0,     0,     0,     0,     8,     9,    10,
     1964      11,    12,   213,  1483,   531,  1483,   532,   213,   533,  1306,
     1965       0,   259,     0,     0,    34,   488,     0,   323,   707,   488,
     1966       0,     0,   499,     0,     0,     0,    31,     0,     0,   521,
     1967       0,   521,     0,    48,   521,     0,   323,   521,     0,   215,
     1968    1398,     0,     0,  1406,     0,    48,     0,     0,   339,   457,
     1969       0,     0,     0,   328,    34,   520,   571,     0,   411,     0,
     1970     520,   259,   350,   520,    45,    46,     0,     0,   704,   472,
     1971       0,     0,     0,     0,     0,     0,   472,   215,     0,     0,
     1972       0,     0,   215,     0,     0,     0,  1443,     0,   644,     0,
     1973       0,  1447,   406,   213,   112,     0,   750,     0,   411,     0,
     1974       0,  1405,   323,     0,    45,    46,   703,   424,     0,     0,
     1975     429,   431,     0,   803,     0,   160,   703,    48,     0,  1468,
     1976    1133,  1133,  1133,     0,     0,     0,    48,   472,    48,     0,
     1977     703,     0,     0,     0,     0,   112,   448,     0,     0,     0,
     1978     451,     0,   452,     0,   844,     0,     0,     0,     0,   594,
     1979       0,   459,     0,     0,     0,   853,    74,    66,    48,     0,
     1980       0,     0,   473,     0,     0,     0,     0,     0,   215,     0,
     1981       0,   214,   480,     0,   213,     0,     0,     0,   112,     0,
     1982     431,     8,     9,    10,    11,    12,   645,   704,    74,     0,
     1983       0,   213,   644,     0,     0,     0,     0,   704,     0,     0,
     1984     112,     0,     0,  1536,   112,     0,     0,     0,   688,  1536,
     1985      31,   704,     0,     0,     0,     0,   213,     0,     0,   891,
     1986    1536,     0,   892,     0,  1536,   222,     0,     0,   898,     0,
     1987       0,     0,   900,     0,     0,     0,     0,     0,    34,     0,
     1988       0,    37,     0,   183,   184,    40,   488,   259,     0,   215,
     1989       0,   595,    41,    42,   112,     0,     0,   623,  1133,  1133,
     1990       0,     0,     0,     0,     0,     0,     0,     0,   339,     0,
     1991     628,     0,     0,     0,   628,     0,     0,   259,   265,     0,
     1992     933,     0,   602,     0,     0,     0,    45,    46,    45,    46,
     1993       0,   215,   112,     0,     0,     0,  1461,   725,     0,   729,
     1994       0,     0,     0,     0,     0,     0,    48,     0,     0,     0,
     1995       0,    48,   353,   535,   536,   537,   538,   539,   540,   541,
     1996     542,   543,   544,   545,   473,     0,     0,   996,    48,     0,
     1997       0,     0,   803,     0,   703,   703,     0,     0,   213,   350,
     1998       0,   988,     0,     0,   473,     0,     0,   546,     0,     0,
     1999       0,   993,   473,     0,  1510,     0,     0,   214,     0,     0,
     2000       0,     0,     0,  1518,     0,  1005,   213,     0,     0,     0,
     2001     699,   213,    37,   431,   183,   184,    40,     0,     0,     0,
     2002       0,     0,     0,    41,    42,     0,   449,     0,   713,     0,
     2003      66,     0,   703,   703,     0,     0,     0,     0,   431,     0,
     2004       0,     0,   431,     0,     0,   112,     0,    74,     0,   601,
     2005       0,   602,    74,   215,     0,   704,   704,    45,    46,     0,
     2006     803,     0,     0,     0,     0,     0,     0,   339,    48,     0,
     2007       0,   259,   350,     0,     0,     0,     0,     0,     0,     0,
     2008       0,   215,   213,   688,     0,     0,   215,     0,  1080,   866,
     2009       0,     0,   214,    77,     0,     0,   213,     0,     0,     0,
     2010       0,     0,     0,     0,     0,   488,  1108,   323,     0,   112,
     2011     112,   112,     0,   704,   704,     0,   499,     0,   794,    37,
     2012       0,   183,   184,    40,     0,    77,     0,     0,     0,     0,
     2013      41,    42,     0,     0,     0,     0,   628,   806,   919,     0,
     2014     921,     0,     0,     0,   457,     0,     0,   222,    37,   825,
     2015     183,   184,    40,     0,     0,     0,   906,   215,   411,    41,
     2016      42,     0,   223,   844,    45,    46,     0,   595,     0,     0,
     2017       0,   215,   595,     0,     0,     0,     0,     0,   628,     0,
     2018    1313,   350,   350,   350,     0,  1506,     0,   411,     0,   213,
     2019       0,     0,     0,    45,    46,     0,     0,     0,     0,   350,
     2020       0,     0,     0,   124,   127,   128,     0,     0,     0,  1167,
     2021    1168,     0,   703,     0,    74,     0,     0,   699,     0,     0,
     2022     703,   703,   703,     0,     0,     0,     0,     0,   473,   353,
     2023       0,     0,     0,     0,    74,     0,     0,     0,    48,    48,
     2024       0,  1204,    74,     0,   688,     0,     0,   112,   112,   355,
     2025       0,     0,     0,     0,   473,     0,     0,   350,     0,     0,
     2026     353,  1314,     0,     0,   215,     0,   938,  1217,  1218,   431,
     2027       0,     0,     0,     0,     0,   254,     0,   255,   353,     0,
     2028      74,     0,     0,     0,   703,   112,   803,     0,     0,     0,
     2029       0,   259,   713,   704,     0,     0,     0,   968,     0,     0,
     2030       0,   704,   704,   704,     0,     0,     0,     0,     0,     0,
     2031       0,     0,     0,     0,   645,     0,     0,     0,     0,     0,
     2032    1040,     0,   353,     0,     0,     0,     0,   126,   126,   126,
     2033       0,     0,     0,     0,     0,     0,   699,     0,     0,     0,
     2034       0,     0,    48,   112,    77,     0,   699,     0,   350,    77,
     2035     628,     0,   112,  1003,     0,   628,   806,     0,   396,     0,
     2036     699,  1090,     0,     0,     0,   704,    48,    48,   415,   416,
     2037    1014,   339,     0,   420,     0,   422,   423,     0,     0,     0,
     2038       0,     0,     0,     0,     0,     0,   213,   353,     0,     0,
     2039       0,    48,     0,  1108,     0,     0,     0,     0,     0,   126,
     2040       0,   126,     0,     0,     0,    79,     0,     0,     0,     0,
     2041       0,     0,     0,     0,     0,     0,     0,     0,   645,     0,
     2042       0,    66,     0,     0,     0,     0,   275,     0,     0,     0,
     2043       0,   353,   353,   353,     0,     0,     0,    79,     0,     0,
     2044       0,     0,     0,   628,   223,     0,     0,  1338,     0,   353,
     2045     259,   713,     0,     0,  1086,  1340,  1341,  1342,     0,     0,
     2046       0,   215,     0,     0,     0,     0,     0,   353,     0,     0,
     2047       0,     0,     0,     0,   224,     0,     0,     0,    74,     0,
     2048    1100,     0,   126,     0,     0,  1108,     0,  1368,   431,   117,
     2049     126,     0,   126,   126,     0,     0,     0,   126,     0,   126,
     2050     126,     0,     0,     0,    74,     0,     0,   353,     0,     0,
     2051       0,    77,     0,     0,     0,     0,     0,     0,  1040,  1386,
    21282052       0,     0,     0,     0,     0,     0,   355,     0,     0,     0,
    2129        0,     0,     0,     0,   355,   355,   355,     0,     0,     0,
    2130        0,     0,     0,   214,     0,   355,   355,     0,     0,     0,
    2131        0,     0,     0,     0,     0,     0,     0,     0,     0,    77,
    2132        0,     0,     0,     0,     0,     0,     0,     0,     0,   213,
     2053       0,    77,     0,     0,     0,     0,     0,     0,     0,    77,
     2054       0,     0,   353,     0,     0,     0,   595,     8,     9,    10,
     2055      11,    12,     0,     0,     0,     0,     0,   355,     0,   429,
     2056       0,   356,     0,     0,   699,   699,     0,   350,   350,   126,
     2057       0,     0,   213,     0,     0,   355,    31,    77,     0,     0,
     2058       0,     0,     0,  1108,     0,     0,   353,  1189,     0,     0,
     2059       0,     0,     0,     0,     0,     0,   353,     0,   353,     0,
     2060       0,     0,     0,   222,    34,     0,   353,     0,     0,    37,
     2061     353,   183,   184,    40,  1482,     0,  1482,     0,     0,   355,
     2062      41,    42,   699,   699,     0,     0,     0,     0,     0,     0,
     2063       0,  1283,     0,     0,     0,     0,     0,     0,     0,  1480,
     2064       0,  1484,     0,     0,     0,     0,   601,   215,   602,     0,
     2065    1482,     0,  1482,     0,    45,    46,    79,     0,     0,     0,
     2066       0,    79,     0,     0,     0,     0,     0,   213,     0,   628,
     2067       0,    74,     0,     0,     0,  1512,     0,  1514,     0,   323,
     2068       0,     0,     0,     0,   355,     0,     0,     0,     0,     0,
     2069       0,     0,     0,   713,     0,     0,     0,     0,     0,    86,
     2070       0,   353,     0,     0,     0,     0,     0,   413,     0,     0,
     2071       0,     0,     0,     0,   421,     0,     0,     0,     0,  1543,
     2072       0,  1544,     0,     0,     0,     0,     0,     0,   355,   355,
     2073     355,    86,     0,     0,  1551,  1552,  1284,     0,     0,     0,
     2074       0,     0,   215,     0,     0,     0,   355,     0,     0,     0,
     2075       0,     0,   796,   797,   259,     0,   224,     0,    66,     0,
     2076       0,     0,     0,     0,   355,     0,     0,     0,   225,     0,
     2077     699,     0,   713,     0,     0,    77,   117,     0,     0,     0,
     2078       0,   830,     0,     0,   833,   834,   413,   837,     0,   839,
     2079     840,     0,     0,     0,   841,   842,     0,     0,     0,     0,
     2080       0,    77,   699,     0,   355,     0,     0,     0,     0,     0,
     2081     699,   699,   699,     0,   353,   353,     0,   353,   353,     0,
     2082       0,   350,   350,    79,     0,     0,     0,     0,     8,     9,
     2083      10,    11,    12,     0,     0,  1189,     0,    74,   356,   355,
     2084       0,   577,     0,    79,     0,     0,     0,     0,     0,   581,
     2085       0,    79,   584,     0,     0,   363,     0,    31,     0,     0,
     2086       0,     0,     0,     0,     0,     0,     0,     0,   117,   356,
     2087       0,     0,   353,   353,   699,     0,   126,   126,     0,     0,
     2088       0,     0,     0,   355,     0,    34,     0,   356,     0,    79,
     2089      37,     0,     0,   355,    40,   355,     0,     0,     0,     0,
     2090     223,    41,    42,   355,     0,   126,     0,   355,   126,   126,
     2091       0,   126,     0,   126,   126,     0,   413,     0,   126,   126,
     2092     421,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2093       0,   356,   970,   971,     0,    45,    46,     0,     0,     0,
     2094       0,   350,     0,   353,     0,     0,     0,     0,     0,     0,
     2095      86,     0,     0,     0,     0,    86,     0,     0,     0,     0,
     2096       0,     0,     0,     0,     0,     0,   117,     0,    77,     0,
     2097       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2098       0,     0,     0,     0,     0,     0,   222,     0,  1189,     0,
     2099       0,     0,     0,     0,     0,  1189,   356,   413,   355,     0,
     2100       0,     0,     0,     0,     0,     0,     0,     0,    74,     0,
     2101       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2102     353,     0,   353,     0,     0,     0,     0,     0,     0,     0,
     2103       0,     0,     0,     0,     8,     9,    10,    11,    12,     0,
     2104     356,   356,   356,     0,     0,     0,  1189,     0,     0,     0,
     2105     225,     0,   353,  1531,     0,     0,   126,   126,   356,     0,
     2106     353,   353,   353,    31,     0,     0,     0,     0,     0,     0,
     2107       0,   353,   353,     0,     0,     0,   356,     0,     0,     0,
     2108       0,     0,     0,     0,     0,    74,     0,    79,     0,   577,
     2109     577,    34,     0,     0,  1091,     0,    37,     0,   183,   184,
     2110      40,     0,     0,     0,     0,     0,     0,    41,    42,     0,
     2111       0,   355,   355,    79,   355,   355,   356,    86,     0,     0,
     2112       0,     0,     0,     0,   353,     0,     0,     0,     0,     0,
     2113       0,     0,   363,   906,    77,   411,     0,    86,     0,     0,
     2114       0,    45,    46,     0,     0,    86,     0,     0,     0,     0,
     2115       0,   356,     0,     0,     0,     0,     0,     0,     0,     0,
     2116       0,     0,     0,   363,     0,     0,     0,     0,     0,   355,
     2117     355,     0,     0,     0,     0,     0,   884,     0,     0,     0,
     2118     887,   363,     0,    86,     0,     0,     0,     0,     0,     0,
     2119       0,   353,     0,     0,     0,   356,     0,     0,     0,     0,
     2120       0,     0,     0,     0,     0,   356,     0,   356,     0,     0,
     2121       0,     0,   224,   126,     0,   356,     0,     0,   126,   356,
     2122       0,     0,     0,     0,     0,   363,   167,     0,   172,     0,
     2123       0,   178,   179,   180,     0,   182,     0,     0,    74,     0,
     2124     355,     0,     0,     0,     0,    74,     0,     0,     0,   233,
     2125       0,     0,     0,     0,     0,  1219,     0,     0,     0,     0,
     2126       0,   248,   249,     0,     8,     9,    10,    11,    12,     0,
     2127       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2128      79,     0,     0,   223,     0,     0,     0,     0,     0,     0,
     2129     363,     0,     0,    31,     0,     0,    74,     0,     0,     0,
     2130       0,     0,     0,     0,     0,    77,     0,     0,     0,     0,
     2131     356,     0,   577,     0,     0,     0,     0,   355,     0,   355,
     2132       0,    34,     0,     0,     0,     0,    37,     0,   183,   184,
     2133      40,     0,     0,     0,   363,   363,   363,    41,    42,     0,
     2134       0,     0,     0,     0,     0,     0,     0,     0,     0,   355,
     2135       0,     0,   363,     0,     0,     0,     0,   355,   355,   355,
     2136       0,     0,     0,  1506,     0,   411,     0,     0,   355,   355,
     2137     363,    45,    46,     0,     0,   507,     0,   509,   512,   126,
     2138       0,    86,    77,     0,  1305,   515,   516,     0,     0,     0,
     2139       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2140     509,   509,     0,     0,     0,     0,     0,    86,     0,     0,
     2141     363,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2142       0,   355,     0,   356,   356,     0,   356,   356,     0,     0,
     2143     413,     0,     0,     0,     0,     0,     0,     0,   509,     0,
     2144       0,     0,     0,     0,     0,   363,    79,     8,     9,    10,
     2145      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2146      21,    22,    23,    24,    25,  -293,     0,    26,    27,    28,
     2147       0,     0,     0,     0,   509,     0,    31,     0,     0,     0,
     2148       0,   356,   356,     0,     0,     0,     0,     0,   355,   363,
    21332149       0,     0,     0,     0,     0,     0,     0,     0,     0,   363,
    2134        0,     0,     0,   213,     0,     0,     0,     0,     0,     0,
    2135      356,   356,     0,   356,   356,     0,     0,     0,   355,     0,
    2136        0,     0,     0,   499,     0,     0,     0,     0,     0,     0,
    2137        0,     0,     0,    79,  1014,     0,     0,     8,     9,    10,
    2138       11,    12,     0,   363,   363,   363,     0,     0,     0,     0,
    2139        0,     0,     0,     0,     0,     0,     0,     0,   214,     0,
    2140        0,   363,     0,     0,   282,   283,    31,   284,   356,   356,
    2141        0,     0,     0,     0,     0,     0,     0,     0,     0,   363,
    2142        0,     0,     0,     0,     0,   355,     0,     0,     0,     0,
    2143       86,     0,     0,   285,    34,     0,     0,   213,     0,   286,
    2144        0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
    2145       41,    42,     0,   292,   293,     0,    86,     0,     0,   363,
    2146        0,     0,     0,     8,     9,    10,    11,    12,     0,     0,
    2147        0,     0,    77,     0,     0,     0,   294,     0,   379,    77,
    2148        0,   356,     0,     0,   344,    46,   296,   297,   298,   299,
    2149        0,     0,    31,     0,   363,     0,     0,     0,     0,     0,
     2150       0,   363,     0,     0,    34,     0,   225,  1143,   126,   363,
     2151       0,    38,    39,   363,     0,  -293,     0,   592,     0,   600,
     2152       0,     0,     0,     0,  1155,     0,     0,     0,     0,     0,
     2153     624,   625,     0,     0,     0,    77,     0,     0,     0,     0,
     2154     282,   283,    77,   284,     0,     0,   635,     0,   338,     0,
     2155       0,     0,   356,     0,    45,    46,     0,     0,     0,     0,
     2156       0,     0,     0,     0,     0,     0,     0,     0,     0,   285,
     2157       0,     0,     0,     0,    86,   286,     0,     0,     0,   287,
     2158       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     2159     293,     0,     0,    77,     0,   224,     0,     0,     0,     0,
     2160       0,     0,   413,     0,   363,     0,     0,     0,     0,     0,
     2161       0,     0,   294,     0,   379,     0,     0,    79,     0,     0,
     2162      45,    46,   296,   297,   298,   299,     0,     0,     0,   356,
     2163       0,   356,  1013,   787,     0,     8,     9,    10,    11,    12,
     2164       0,     0,  1243,   509,   509,   509,   509,   509,   509,   509,
     2165     509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
     2166     509,   356,   282,   283,    31,   284,     0,     0,     0,   356,
     2167     356,   356,     0,     0,     0,     0,     0,     0,     0,     0,
     2168     356,   356,     0,     0,     0,     0,     0,     0,     0,     0,
     2169       0,   285,    34,     0,    79,     0,     0,   286,     0,     0,
     2170       0,   287,     0,     0,   288,   289,   290,   291,    41,    42,
     2171       0,   292,   293,     0,     0,     0,     0,   363,   363,     0,
     2172     363,   363,     0,     0,     0,     0,     0,     0,     0,     0,
     2173       0,     0,     0,   356,   294,     0,   379,     0,     0,     0,
     2174      86,     0,   344,    46,   296,   297,   298,   299,     0,     0,
     2175       1,     2,   206,     4,     5,     6,     7,     8,     9,    10,
     2176      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2177      21,    22,    23,    24,    25,   363,   363,    26,    27,    28,
     2178      29,     0,     0,    30,   282,   283,    31,   284,     0,   509,
    21502179       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2151        0,     0,     0,     0,     0,     0,     0,   927,     0,   928,
    2152       34,     0,     0,     0,   224,    37,   931,   932,     0,    40,
    2153       77,   937,     0,     0,     0,     0,    41,    42,     0,   363,
    2154        0,     0,     0,   942,     0,     0,    79,     0,   946,   363,
    2155        0,   363,     0,     0,     0,     0,   225,     0,   356,   363,
    2156      356,     0,   719,   363,     0,     0,     0,     0,     0,     0,
    2157       45,    46,     0,     0,     0,     0,   980,     0,     0,     0,
     2180     356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2181       0,     0,     0,   285,    34,     0,    35,     0,    36,   286,
     2182       0,    38,    39,   287,   165,     0,   288,   289,   290,   291,
     2183      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
     2184       0,   218,     0,     0,     0,     0,   363,    79,     0,     0,
     2185     509,     0,     0,     0,    79,     0,   294,     0,  1056,     0,
     2186       0,     0,     0,     0,    45,    46,   296,   297,   298,   299,
     2187       0,     0,     0,   926,     0,   927,     0,     0,     0,  -128,
     2188     509,     0,   930,   931,     0,     0,     0,   936,   165,   225,
     2189       0,     0,   272,     0,     0,     0,     0,     0,     0,   941,
     2190       0,     0,     0,     0,   945,    79,     0,     0,     0,     0,
     2191       0,    86,     0,     0,     0,     0,     0,     0,     0,     0,
     2192       0,   165,     0,   363,     0,   363,     0,     0,     0,     0,
     2193       0,   369,   979,     0,     0,   375,     0,     0,     0,     0,
     2194       0,     0,     0,     0,     0,     0,  1163,     0,     0,     8,
     2195       9,    10,    11,    12,     0,   363,     0,     0,     0,     0,
     2196       0,     0,     0,   363,   363,   363,     0,     0,     0,     0,
     2197       0,     0,     0,     0,   363,   363,   282,   283,    31,   284,
     2198       0,     0,     0,     0,   165,     0,     0,     0,    86,     0,
     2199       0,     0,     0,     0,     0,     0,   218,     0,     0,     0,
     2200     509,     0,     0,     0,     0,   285,    34,     0,     0,     0,
     2201       0,   286,     0,     0,   165,   287,     0,     0,   288,   289,
     2202     290,   291,    41,    42,     0,   292,   293,   363,     0,     0,
     2203       0,  1024,  1025,  1026,  1027,     0,  1029,     0,     0,   375,
     2204       0,     0,     0,     0,     0,   509,   165,     0,   294,     0,
     2205     379,  1073,     0,     0,     0,     0,  1164,    46,   296,   297,
     2206     298,   299,     0,     0,     0,  1079,     0,     0,     0,   524,
    21582207       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2159      356,     0,     0,     0,     0,     0,     0,     0,   356,   356,
    2160      356,     0,     0,     0,     0,     0,     0,     0,     0,   356,
    2161      356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2162        0,     0,     0,    79,    86,     0,     0,     0,     0,     0,
    2163        0,     0,     0,     0,   213,     0,     0,     0,     0,     0,
    2164        0,     0,  1166,     0,     0,     8,     9,    10,    11,    12,
    2165        0,     0,     0,     0,   363,   797,   798,     0,     0,     0,
    2166        0,     0,   356,     0,     0,     0,     0,     0,   165,     0,
    2167        0,     0,   282,   283,    31,   284,  1025,  1026,  1027,  1028,
    2168        0,  1030,     0,     0,   831,   218,     0,   834,   835,     0,
    2169      838,     0,   840,   841,     0,     0,  1074,   842,   843,     0,
    2170        0,   285,    34,     0,     0,     0,     0,   286,     0,     0,
    2171     1080,   287,     0,     0,   288,   289,   290,   291,    41,    42,
    2172        0,   292,   293,     0,     0,     0,     0,     0,     0,   356,
    2173        0,     0,   165,     0,     0,     0,   272,     0,     0,     0,
    2174        0,     0,     0,     0,   294,     0,   379,     0,     0,     0,
    2175     1100,     0,  1167,    46,   296,   297,   298,   299,     0,     0,
    2176        0,     0,     0,     0,     0,   165,     0,   363,   363,     0,
    2177      363,   363,     0,     0,     0,   369,    79,     0,     0,   375,
    2178        0,     0,     0,    79,     0,     0,     0,     0,     0,     0,
    2179       86,     0,     0,     0,     0,  1131,     0,     0,     0,     0,
    2180        0,  1140,     0,     0,     0,     0,  1144,     0,     0,     0,
    2181        0,  1148,     0,  1149,     0,     0,     0,  1151,     0,  1152,
    2182     1153,     0,   213,  1156,     0,   363,   363,     0,   165,     0,
    2183        0,     0,  1168,     0,    79,   971,   972,     0,     0,     0,
    2184      218,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2185     1183,  1184,     0,     0,     0,     0,     0,     0,   165,     8,
    2186        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2187       19,    20,    21,    22,    23,    24,    25,  1214,     0,     0,
    2188     1216,     0,     0,   375,     0,     0,     0,     0,    31,     0,
    2189      165,     0,     0,     0,     0,     0,     0,     0,   363,     0,
    2190        0,     0,   126,   126,   126,     0,     0,     0,     0,     0,
    2191        0,     0,     0,   524,     0,     0,    34,   213,     0,     0,
    2192        0,     0,     0,  1230,     0,     0,   165,     0,     0,  1234,
    2193     1235,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2194        0,   225,     0,     0,     0,     0,     0,     0,     0,  1251,
    2195        0,     0,     0,  1253,     0,     0,     0,     0,  1257,     0,
    2196        0,     0,     0,    86,   598,     0,     0,     0,     0,   622,
    2197        0,  1265,     0,     0,   126,   363,   126,   363,     0,     0,
    2198        0,     0,     0,     0,  1272,     0,  1274,  1275,  1276,  1277,
    2199        0,     0,     0,     0,     0,     0,     0,     0,  1092,     0,
    2200        0,   275,  1284,     0,  1285,     0,     0,   363,   172,     0,
    2201        0,     0,     0,     0,     0,   363,   363,   363,     0,     0,
    2202        0,     0,     0,     0,     0,     0,   363,   363,     0,     0,
    2203      211,     0,     0,     0,     0,     0,     0,  1313,  1314,   231,
    2204       86,   235,     0,   237,     0,   165,   165,     0,     0,     0,
    2205      246,     0,   369,     0,     0,     0,     0,   126,     0,     0,
    2206        0,     0,     0,     0,     0,   126,     0,   126,   126,     0,
    2207        0,     0,   126,   524,   126,   126,     0,     0,     0,   363,
    2208        0,   211,     0,   235,   237,   246,     0,  1346,  1347,     0,
    2209        0,     0,     0,     0,     0,     0,     0,  1357,     0,     0,
    2210        0,   716,     0,     0,     0,     0,     0,     0,     0,     0,
    2211        0,     0,     0,   165,     0,     0,     0,     0,     0,     0,
    2212        0,     0,     0,     0,   211,   524,     0,   524,     0,     0,
    2213      524,     0,   165,   524,     0,     0,     0,     0,     0,     0,
    2214        0,     0,     0,     0,   126,   369,   363,     0,     0,     0,
    2215        0,     0,     0,     0,     0,     0,     0,     0,  1392,  1222,
    2216     1393,  1394,  1395,     0,     0,     0,     0,     0,     0,     0,
    2217        0,     0,  1399,     0,     0,     0,     0,     0,     0,     0,
    2218        0,  1410,     0,     0,     0,   211,     0,   235,   237,   246,
    2219        0,     0,     0,    86,     0,     0,     0,     0,   165,     0,
    2220       86,     0,     0,     0,     0,     0,  1431,     0,     0,     0,
    2221      369,     0,     0,     0,   812,     0,     0,     0,     0,     0,
    2222        0,     0,     0,   211,     0,     0,     0,     0,   211,     0,
    2223        0,     0,     0,     0,   156,     0,     0,     0,     0,     0,
    2224      598,     0,     0,   497,     0,   598,     0,     0,     0,  1469,
    2225     1470,    86,     0,     0,   369,   369,   369,     0,     0,     0,
    2226        0,     0,  1475,     0,     0,     0,     0,     0,     0,  1475,
    2227        0,     0,   369,     0,     0,     0,     0,     0,     0,     0,
    2228        0,   251,     0,     0,     0,     0,     0,     0,     0,     0,
    2229     1308,   256,   211,     0,     0,     0,     0,     0,     0,     0,
    2230        0,  1508,     0,     0,   524,  1514,     0,     0,     0,     0,
    2231        0,     0,     0,     0,   211,     0,     0,     0,     0,   235,
    2232      237,     0,     0,     0,     0,     0,     0,   246,     0,     0,
    2233      369,     0,   936,  1536,     0,  1537,     0,     0,     0,     0,
    2234        0,     0,     0,     0,     0,     0,     0,   156,     0,     0,
     2208     509,     0,   165,     0,     0,     0,     0,     0,     0,   211,
     2209       0,     0,     0,   509,   363,     0,     0,     0,   231,     0,
     2210     235,     0,   237,     0,     0,  1099,     0,     0,     0,   246,
    22352211       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2236        0,   386,     0,  1552,  1553,   716,     0,     0,     0,     0,
    2237      211,  1556,  1557,     0,     0,     0,     0,     0,     0,     0,
    2238        0,     0,     0,     0,   418,     0,     0,     0,   211,   282,
    2239      283,     0,   284,   211,     0,   211,     0,     0,   433,     0,
    2240        0,     0,     0,     0,     0,     0,     0,   438,     0,     0,
    2241        0,     0,   211,     0,     0,   211,   211,   446,   285,     0,
    2242        0,     0,   369,   211,   286,     0,   622,     0,   287,     0,
    2243      369,   288,   289,   290,   291,    41,    42,   211,   292,   293,
    2244        0,     0,   464,     0,   211,     0,     0,   474,     0,     0,
    2245        0,   126,   126,     0,     0,     0,     0,     0,     0,     0,
    2246      482,   294,     0,   379,     0,     0,   492,     0,   496,    45,
    2247       46,   296,   297,   298,   299,     0,     0,     0,     0,     0,
    2248      126,     0,   788,   126,   126,   526,   126,     0,   126,   126,
    2249        0,     0,     0,   126,   126,     8,     9,    10,    11,    12,
     2212     598,     0,     0,     0,     0,   622,     0,     0,     0,     0,
     2213       0,     0,     0,     0,   509,     0,     0,     0,     0,     0,
     2214     211,    86,   235,   237,   246,     0,     0,     0,    86,     0,
     2215    1130,     0,     0,     0,     0,     0,  1137,     0,     0,     0,
     2216       0,  1141,     0,     0,     0,     0,  1145,     0,  1146,     0,
     2217       0,     0,  1148,     0,  1149,  1150,     0,     0,  1153,     0,
     2218       0,     0,     0,   211,     0,     0,     0,  1165,     0,     0,
     2219       0,     0,     0,     0,     0,     0,     0,     0,     0,    86,
     2220       0,   165,   165,     0,     0,  1180,  1181,     0,   369,     0,
     2221       0,   509,     0,     0,     0,     0,     0,     0,     0,     0,
     2222       0,     0,     0,     0,     0,     0,     0,     0,     0,   524,
     2223       0,     0,  1211,     0,     0,  1213,     0,     0,     0,     0,
     2224       0,     0,     0,     0,   211,     0,   235,   237,   246,     0,
     2225       0,     0,     0,     0,     0,     0,     0,   716,     0,     0,
     2226       0,     8,     9,    10,    11,    12,     0,     0,     0,   165,
     2227       0,   509,   509,     0,     0,     0,     0,     0,  1227,     0,
     2228       0,   524,   211,   524,  1231,  1232,   524,   211,   165,   524,
     2229      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2230       0,   369,   497,     0,  1248,     0,     0,  1252,     0,     0,
     2231       0,  1254,     0,     0,     0,     0,     0,     0,    34,     0,
     2232       0,     0,     0,    37,  1262,   183,   184,    40,     0,     0,
     2233       0,     0,     0,     0,    41,    42,     0,  1269,     0,  1271,
     2234    1272,  1273,  1274,     0,     0,     0,     0,     0,     0,     0,
     2235       0,   211,     0,     0,   165,  1281,     0,  1282,     0,     0,
     2236     185,   172,     0,     0,     0,     0,   369,     0,    45,    46,
     2237     811,     0,     0,   211,     0,     0,     0,     0,   235,   237,
     2238       0,     0,     0,     0,     0,     0,   246,     0,     0,     0,
     2239    1310,  1311,     0,     0,     0,     0,   598,     0,     0,     0,
     2240       0,   598,     0,     0,     0,     0,     0,     0,     0,     0,
     2241     369,   369,   369,     0,     0,     0,     0,     0,     0,     0,
     2242       0,     0,     0,     0,     0,     0,     0,     0,   369,   211,
     2243       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2244    1343,  1344,     0,     0,     0,     0,     0,   211,     0,     0,
     2245    1354,     0,   211,     0,   211,     0,     0,     0,     0,     0,
     2246     524,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2247       0,   211,     0,     0,   211,   211,   509,     0,     0,     0,
     2248       0,     0,   211,     0,     0,     0,   369,     0,   935,     0,
     2249       0,     0,   509,     0,     0,     0,   211,     0,     0,     0,
     2250       0,     0,     0,   211,     0,     0,     0,     0,     0,     0,
     2251       0,  1389,     0,  1390,  1391,  1392,     0,     0,     0,     0,
     2252       0,   716,     0,     0,     0,  1396,   156,     0,     0,     0,
     2253       0,     0,     0,     0,  1407,     8,     9,    10,    11,    12,
    22502254      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2251       23,    24,    25,  -296,     0,     0,     0,     0,     0,     0,
    2252        0,     0,     0,     0,    31,   716,     0,     0,   586,     0,
    2253        0,     0,     0,   591,     0,     0,     0,     0,     0,     0,
    2254      524,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2255        0,     0,    34,     0,     0,     0,     0,     0,     0,   211,
    2256        0,     0,   636,  -296,   165,     0,   637,   638,     0,   640,
    2257        0,     0,     0,     0,     0,     0,   651,   652,     0,   653,
    2258      654,     0,   655,     0,   656,     0,     0,   211,     0,     0,
    2259        0,     0,   211,     0,     0,     0,     0,     0,     0,     0,
    2260        0,   586,     0,     0,   282,   283,     0,   284,     0,   671,
     2255      23,    24,    25,     0,     0,    26,    27,    28,     0,  1428,
     2256       0,     0,   509,   509,    31,     0,     0,     8,     9,    10,
     2257      11,    12,     0,   251,     0,     0,     0,   369,     0,     0,
     2258       0,   622,     0,   256,     0,   369,     0,     0,     0,     0,
     2259       0,     0,    34,     0,     0,     0,    31,    37,     0,    38,
     2260      39,    40,  1466,  1467,     0,     0,     0,     0,    41,    42,
     2261       0,     0,     0,     0,     0,  1472,     0,     0,   211,     0,
     2262       0,     0,  1472,     0,    34,     0,     0,     0,     0,    37,
     2263       0,   183,   184,    40,    43,     0,   157,     0,     0,   156,
     2264      41,    42,    45,    46,     0,     0,   211,     0,     0,     0,
     2265       0,   211,     0,   386,  1505,     0,     0,     0,  1511,     0,
     2266       0,     0,     0,     0,     0,     0,   265,     0,     0,     0,
     2267       0,     0,     0,     0,    45,    46,   418,     0,     0,     0,
     2268     716,     0,     0,     0,     0,     0,  1533,     0,  1534,     0,
     2269     433,     0,     0,     0,     0,   524,     0,     0,     0,   438,
     2270       0,     0,     0,     0,     0,     0,     0,     0,     0,   446,
     2271       0,     0,     0,     0,     0,     0,  1549,  1550,     0,   165,
     2272       0,     0,   211,     0,  1553,  1554,     0,     0,     0,     0,
     2273       0,     0,     0,     0,   464,     0,   211,     0,     0,   474,
    22612274       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2262      598,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2263        0,   126,   126,   285,   682,     0,     0,     0,     0,   286,
    2264        0,   369,   369,   287,     0,     0,   288,   289,   290,   291,
    2265       41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
    2266      708,     0,     0,   211,     0,     0,   711,     0,     0,     0,
    2267        0,   464,     0,     0,     0,     0,   294,   211,   379,     0,
    2268        0,   380,     0,     0,    45,    46,   296,   297,   298,   299,
    2269        0,     0,     0,     0,     0,     0,     0,   497,     0,     0,
    2270        0,   524,     0,     0,     0,     0,     0,   746,     0,     0,
     2275       0,     0,   482,     0,     0,     0,   497,     0,   492,     0,
     2276     496,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2277       0,     0,     0,     0,     0,   598,     0,   526,     8,     9,
     2278      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2279      20,    21,    22,    23,    24,    25,   369,   369,    26,    27,
     2280      28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
     2281       0,     0,     0,     0,     0,     0,     0,   211,     0,     0,
     2282     586,     0,     0,     0,     0,   591,     0,     0,     0,   211,
     2283       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
     2284      37,     0,    38,    39,    40,     0,     0,     0,   211,     0,
     2285       0,    41,    42,     0,   636,     0,   524,     0,   637,   638,
     2286       0,   640,     0,     0,     0,     0,     0,     0,   651,   652,
     2287       0,   653,   654,     0,   655,     0,   656,    43,     0,    44,
     2288       0,     0,     0,     0,     0,    45,    46,     0,     0,     0,
     2289       0,     0,     0,   586,     0,     0,     0,     0,     0,     0,
     2290       0,   671,     0,     0,     0,     0,     0,     0,     0,   341,
     2291     364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2292       0,     0,   716,     0,     0,     0,   682,     0,     0,     0,
     2293       0,     0,     0,     0,     0,     0,     8,     9,    10,    11,
     2294      12,     0,     0,   414,     0,     0,     0,     0,     0,     0,
     2295     414,     0,   708,     0,     0,     0,     0,     0,   711,     0,
     2296       0,   211,     0,   464,   218,    31,     8,     9,    10,    11,
     2297      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2298      22,    23,    24,    25,  -293,     0,    26,    27,    28,     0,
     2299       0,   211,     0,    34,     0,    31,     0,     0,    37,   746,
     2300       0,   716,    40,     0,     0,     0,     0,     0,     0,    41,
     2301      42,     0,     0,     0,   764,     0,     0,     0,     0,     0,
     2302       0,     0,   414,    34,     0,     0,   211,     0,    37,     0,
     2303     336,   337,    40,     0,  -293,   719,     0,   211,     0,    41,
     2304      42,     0,     0,    45,    46,     0,     0,     0,     0,     0,
     2305     369,   369,     0,   790,     0,     0,     0,     0,     0,   218,
     2306       0,     0,   800,     0,     0,   635,     0,   338,   321,   802,
     2307       0,     0,     0,    45,    46,   810,     0,   414,   346,     0,
     2308       0,     0,     0,     0,   824,   414,   582,     0,   414,   585,
     2309     382,   382,     0,     0,     0,     0,     0,     0,     0,   364,
     2310       0,     0,     0,   614,     0,     0,     0,     0,     0,   211,
    22712311       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2272        0,     0,   764,     0,  -519,     0,     0,     1,     2,     3,
     2312       0,     0,   632,   211,   864,   341,   205,     2,   206,     4,
     2313       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2314      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2315      25,     0,   414,    26,    27,    28,   414,     0,     0,     0,
     2316     810,   321,    31,     0,     0,     0,     0,     0,   905,     0,
     2317     369,     0,   282,   283,     0,   284,     0,     0,     0,     0,
     2318       0,     0,     0,     0,     0,   478,     0,   364,     0,     0,
     2319      34,     0,    35,     0,    36,     0,     0,   207,    39,   251,
     2320       0,   285,     0,     0,     0,     0,     0,   286,     0,   942,
     2321     943,   287,   211,     0,   288,   289,   290,   291,    41,    42,
     2322       0,   292,   293,     0,     0,     0,   524,     0,   524,     0,
     2323       0,     0,     0,   414,   208,     0,   364,     0,     0,     0,
     2324      45,    46,   980,     0,   294,     0,   379,   984,     0,   380,
     2325       0,     0,    45,    46,   296,   297,   298,   299,     0,     0,
     2326       0,     0,   524,     0,   524,     0,     0,     0,     0,     0,
     2327       0,     0,     0,     0,     0,   414,     0,     0,     0,   341,
     2328     364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2329       0,   165,     0,     0,     0,     0,     0,     0,     0,     0,
     2330       0,     0,   382,     0,     0,     0,     0,   211,     0,     0,
     2331       0,  1018,     0,     0,     0,     0,     0,     0,  1019,     0,
     2332       0,     0,     0,     0,     0,   414,   414,     0,     0,     0,
     2333       0,  1021,     0,  1022,     0,     0,     0,     0,     0,     0,
     2334       0,     0,     0,     0,   804,   364,     0,  1034,     0,     0,
     2335       0,     0,     0,  1038,     0,   614,     0,   614,   614,     0,
     2336       0,     0,     0,     0,   614,  1076,     0,     0,  1077,     0,
     2337       0,     0,     0,     0,   843,   364,     0,     0,     0,     0,
     2338     364,     0,     0,     0,     0,     0,     0,     0,     0,   364,
     2339     364,   364,     0,     0,     0,     0,   710,     0,     0,     0,
     2340       0,     0,     0,     0,     0,     0,     0,   364,     0,     0,
     2341       0,     0,   414,   885,     0,     0,   414,   888,     0,     0,
     2342       0,     0,     0,   890,     0,     0,     0,     0,     0,     0,
     2343       0,     0,     0,     0,     0,   742,     0,     0,     0,     0,
     2344       0,     0,   414,     0,     0,   591,     0,     0,   759,     0,
     2345       0,     0,     0,   742,     0,     0,   742,     0,     0,     0,
     2346       0,     0,     0,     0,     0,   364,   614,     0,     0,   768,
     2347       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2348    1147,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2349       0,   789,     0,     0,     0,     0,     0,     0,     0,   341,
     2350     364,   798,     0,     0,   414,   414,     0,     0,   346,     0,
     2351       0,     0,     0,   759,     0,     0,     0,     0,     0,     0,
     2352       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2353      18,    19,    20,    21,    22,    23,    24,    25,   526,     0,
     2354      26,    27,    28,     0,  1212,     0,     0,     0,   414,    31,
     2355       0,     0,     0,     0,   211,     0,   364,     0,     0,     0,
     2356       0,     0,   863,   804,   364,     0,     0,   614,     0,   614,
     2357     382,     0,     0,     0,     0,     0,     0,    34,  1224,   614,
     2358       0,     0,    37,  1226,   207,    39,    40,     0,     0,     0,
     2359       0,  1230,     0,    41,    42,     0,     8,     9,    10,    11,
     2360      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2361      22,    23,    24,    25,  -293,     0,     0,     0,     0,    43,
     2362       0,   270,     0,     0,  1256,    31,     0,    45,    46,     0,
     2363       0,     0,     0,     0,     0,     0,  1264,     0,     0,  1265,
     2364       0,  1266,     0,     0,     0,     0,     0,     0,     0,     0,
     2365       0,   804,     0,    34,     0,  1275,  1276,     0,   341,   364,
     2366     414,     0,   414,     0,  -293,     0,   414,     0,   759,     0,
     2367     964,     0,     0,     0,     0,     0,     0,  1289,     0,     0,
     2368     975,     0,     0,     0,     0,     0,   983,   614,   614,     0,
     2369       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2370      18,    19,    20,    21,    22,    23,    24,    25,  -294,     0,
     2371       0,     0,     0,     0,     0,     0,     0,     0,     0,    31,
     2372       0,     0,   414,     0,  1328,     0,     0,     0,  1001,  1002,
     2373       0,     0,   346,     0,     0,     0,     0,     0,   282,   283,
     2374       0,   284,     0,   414,  1144,     0,   346,    34,     0,     0,
     2375       0,     0,     0,     0,   364,     0,     0,     0,  -294,     0,
     2376     414,  1156,     0,   614,   614,  1161,     0,   285,     0,     0,
     2377       0,     0,     0,   286,     0,   364,   364,   287,     0,     0,
     2378     288,   289,   290,   291,    41,    42,  1032,   292,   293,     0,
     2379     382,     0,     0,     0,     0,     0,     0,     0,     0,  1378,
     2380       0,  1379,     0,     0,     0,     0,     0,     0,     0,     0,
     2381     294,     0,   379,  1387,     0,  1388,     0,   758,    45,    46,
     2382     296,   297,   298,   299,     0,     0,     0,   346,     0,     0,
     2383       0,     0,  1395,     0,     0,     0,     0,     0,   414,     0,
     2384     414,     0,     0,     0,     0,   414,     0,     0,  1413,  1415,
     2385       0,     0,     0,     0,   614,     0,     0,     0,     0,  1420,
     2386       0,     0,  1230,     0,     0,     0,   321,     0,     0,     0,
     2387       0,     0,     0,     0,     0,     0,     0,   804,   414,  1244,
     2388       0,     0,     0,  1442,     0,     0,     0,     0,     0,     0,
     2389       0,     0,  1449,     0,   382,  1451,     0,  1453,  1455,  1457,
     2390     975,   364,     0,     0,   742,   282,   283,     0,   284,     0,
     2391       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2392       0,     0,     0,     0,     0,  1151,     0,     0,     0,     0,
     2393       0,     0,     0,     0,   285,     0,  1166,  1487,     0,  1489,
     2394     641,  1230,   139,   140,   287,     0,     0,   288,   289,   290,
     2395     291,    41,    42,     0,   292,   293,  1500,     0,   382,     0,
     2396    1184,     0,   341,     0,     0,     0,     0,     0,     0,     0,
     2397       0,     0,     0,     0,     0,   975,   975,   294,     0,   642,
     2398     364,   643,   380,     0,     0,    45,    46,   296,   297,   298,
     2399     299,     0,     0,     0,     0,     0,  1216,     0,     0,     0,
     2400       0,     0,     0,     0,     1,     2,   206,     4,     5,     6,
     2401       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2402      17,    18,    19,    20,    21,    22,    23,    24,    25,   364,
     2403     364,    26,    27,    28,    29,     0,     0,    30,     0,     0,
     2404      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2405       0,   975,     0,     0,     0,     0,     0,     0,     0,     0,
     2406       0,     0,     0,     0,     0,     0,     0,     0,    34,   863,
     2407      35,     0,    36,     0,     0,    38,    39,     0,     0,     0,
     2408       0,     0,     0,     0,  1267,  1268,     0,     1,     2,   206,
    22732409       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    22742410      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2275       24,    25,     0,     0,    26,    27,    28,    29,     0,   211,
    2276       30,   791,     0,    31,    32,     0,     0,     0,     0,   716,
    2277      801,   211,     0,     0,     0,     0,     0,   803,     0,     0,
    2278        0,     0,     0,   811,     0,     0,     0,     0,    33,   126,
    2279      211,    34,   825,    35,   126,    36,    37,     0,    38,    39,
    2280       40,     0,     0,     0,     0,     0,     0,    41,    42,     0,
    2281        0,   218,     0,     0,     0,     0,     0,     0,     0,     0,
    2282        0,     0,     0,     0,     0,   341,   364,     0,     0,     0,
    2283        0,     0,   865,    43,     0,    44,     0,     0,     0,     0,
    2284        0,    45,    46,     0,     0,     0,     0,     0,   716,     0,
    2285        0,     0,     0,     0,     0,     0,     0,     0,     0,   414,
    2286        0,     0,     0,     0,     0,     0,   414,     0,   811,     0,
    2287        0,     0,     0,     0,     0,     0,   906,     0,     0,     8,
    2288        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2289       19,    20,    21,    22,    23,    24,    25,   369,   369,    26,
    2290       27,    28,     0,   211,     0,     0,   218,   251,    31,     0,
    2291        0,     0,     0,     0,     0,     0,     0,   943,   944,     0,
     2411      24,    25,    44,     0,    26,    27,    28,    29,    45,    46,
     2412      30,   282,   283,    31,  1041,  1042,     0,  1043,     0,     0,
     2413    1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,
     2414       0,  1052,     0,     0,     0,  1053,  1054,     0,    33,   364,
     2415     285,    34,     0,    35,     0,    36,  1055,     0,    38,    39,
     2416     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
     2417     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
    22922418       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2293        0,     0,     0,   211,     0,     0,    34,     0,   414,     0,
    2294        0,    37,     0,    38,    39,    40,     0,     0,     0,     0,
    2295      981,     0,    41,    42,     0,   126,   985,     0,     0,     0,
    2296        0,     0,     0,     0,     0,     0,     0,     0,   211,     0,
    2297        0,     0,     0,     0,     0,     0,     0,     0,    43,   211,
    2298      157,     0,     0,     0,     0,     0,    45,    46,     0,     0,
    2299        0,     0,     0,   414,     0,     0,     0,     0,     0,     0,
    2300        0,   414,   582,     0,   414,   585,     0,     0,     0,     0,
    2301        0,     0,     0,     0,     0,   364,     0,   369,     0,   614,
    2302     1019,     0,     0,     0,     0,     0,     0,  1020,     0,     0,
    2303        0,     0,     0,     0,     0,     0,     0,     0,   632,     0,
    2304     1022,   341,  1023,     0,     0,     0,     0,     0,     0,     0,
    2305        0,   211,     0,     0,     0,     0,  1035,     0,     0,     0,
    2306        0,     0,  1039,     0,     0,   211,     0,     0,   414,     0,
    2307        0,     0,   414,   524,  1077,   524,     0,  1078,     0,     0,
    2308        0,     0,     0,     0,     0,     0,   126,     0,     0,     0,
     2419       0,     0,     0,   294,     0,  1056,     0,     0,   171,     0,
     2420       0,    45,    46,   296,   297,   298,   299,     0,     0,     0,
     2421       0,  1057,     0,     0,     0,     0,  -128,     0,     0,     0,
     2422       0,     0,     0,     0,     0,  1372,     0,     0,   742,     0,
     2423       0,     0,     0,     0,     0,     0,   414,     0,     0,     0,
    23092424       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2310        0,     0,     0,   364,     0,     0,     0,     0,     0,   524,
    2311        0,   524,     0,     0,     0,     0,     0,     0,     0,     0,
    2312        0,     0,   507,     0,   509,   512,     0,     0,     0,     0,
    2313        0,     0,   515,   516,     0,     0,     0,     0,   165,     0,
    2314        0,     0,     0,     0,     0,     0,     0,   509,   509,   414,
    2315        0,     0,   364,     0,   591,     0,   211,     0,     0,     0,
    2316        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2317       17,    18,    19,    20,    21,    22,    23,    24,    25,  -296,
    2318        0,    26,    27,    28,     0,   509,     0,     0,     0,  1150,
    2319       31,   414,     0,     0,     0,   341,   364,     0,     0,     0,
    23202425       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2321        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2322        0,   509,     0,    37,     0,   336,   337,    40,     0,  -296,
    2323        0,     0,     0,     0,    41,    42,     0,     0,     0,     0,
    2324        0,   414,   414,     0,     0,     0,     0,   526,     0,     0,
    2325        0,   211,     0,  1215,     0,     0,   321,     0,     0,     0,
    2326      805,   364,   338,     0,     0,     0,   346,     0,    45,    46,
    2327        0,   614,     0,   614,   614,     0,     0,     0,   382,   382,
    2328      614,     0,     0,     0,     0,     0,     0,  1227,     0,     0,
    2329      844,   364,  1229,     0,     0,     0,   364,     0,     0,     0,
    2330     1233,     0,     0,     0,     0,   364,   364,   364,     0,     0,
     2426     414,   414,     0,     0,     0,     0,     0,     0,     0,     0,
    23312427       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2332        0,     0,     0,   364,     0,     0,     0,     0,   414,   886,
    2333        0,     0,   414,   889,     0,  1259,     0,     0,     0,   891,
    2334        0,     0,     0,     0,     0,     0,     0,  1267,     0,   321,
    2335     1268,     0,  1269,     0,     0,     0,     0,     0,   414,     0,
    2336        0,     0,     0,     0,     0,     0,  1278,  1279,     0,     0,
    2337        0,     0,     0,   478,     0,     0,     0,     0,     0,     0,
    2338        0,   364,   614,     0,     0,     0,     0,     0,  1292,     0,
    2339      509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
    2340      509,   509,   509,   509,   509,   509,   509,   509,     0,     0,
    2341        0,     0,     0,     0,     0,   341,   364,     0,     0,     0,
    2342      414,   414,     0,     0,     0,     0,     0,     0,     0,     0,
    2343        0,     0,     0,     0,     0,  1331,     0,     0,     0,     0,
    2344        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2345       18,    19,    20,    21,    22,    23,    24,    25,  -296,     0,
    2346       26,    27,    28,     0,     0,   414,     0,     0,     0,    31,
    2347        0,     0,     0,   364,     0,     0,     0,     0,     0,     0,
    2348      805,   364,     0,     0,   614,     0,   614,     0,     0,     0,
    2349      382,     0,     0,     0,     0,     0,   614,    34,   211,     0,
    2350        0,     0,    37,     0,   336,   337,    40,     0,  -296,     0,
    2351     1381,     0,  1382,    41,    42,     0,     0,     0,     0,     0,
    2352        0,     0,     0,     0,     0,     0,  1390,     0,  1391,     0,
    2353        0,     0,     0,     0,     0,     0,   509,     0,     0,   635,
    2354        0,   338,     0,  1398,     0,     0,     0,    45,    46,     0,
    2355        0,     0,     0,     0,     0,     0,     0,     0,     0,  1416,
    2356     1418,     0,     0,     0,     0,     0,     0,     0,   805,     0,
    2357     1423,     0,     0,  1233,     0,   341,   364,   414,     0,   414,
    2358        0,     0,     0,   414,   710,     0,     0,     0,     0,     0,
    2359        0,     0,     0,     0,  1445,     0,     0,   509,     0,     0,
    2360        0,     0,     0,  1452,   614,   614,  1454,     0,  1456,  1458,
    2361     1460,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2362        0,     0,     0,   742,     0,     0,     0,     0,   509,     0,
    2363        0,     0,     0,     0,     0,     0,   759,     0,     0,   414,
    2364        0,   742,     0,     0,   742,     0,     0,     0,  1490,     0,
    2365     1492,     0,  1233,     0,     0,     0,     0,   769,     0,     0,
    2366      414,  1147,     0,     0,     0,     0,     0,  1503,     0,     0,
    2367        0,   364,     0,     0,     0,     0,     0,   414,  1159,   790,
    2368      614,   614,  1164,     0,     0,     0,     0,     0,     0,   799,
    2369        0,     0,   364,   364,     0,     0,   346,     0,     0,     0,
    2370        0,   759,     0,     0,     1,     2,     3,     4,     5,     6,
     2428       0,     0,     0,     0,     0,   414,     1,     2,   206,     4,
     2429       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2430      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2431      25,     0,     0,    26,    27,    28,    29,     0,     0,    30,
     2432     282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
     2433      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2434      24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
     2435      34,     0,    35,    31,    36,   286,     0,    38,    39,   287,
     2436       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     2437     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2438       0,    34,     0,     0,     0,     0,   110,     0,    38,    39,
     2439       0,     0,   294,     0,    44,     0,     0,    41,    42,     0,
     2440      45,    46,   296,   297,   298,   299,     2,   206,     4,     5,
     2441       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2442      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2443       0,     0,    26,    27,    28,     0,     0,     0,   321,   282,
     2444     283,    31,   284,     8,     9,    10,    11,    12,    13,    14,
     2445      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2446      25,     0,     0,    26,    27,    28,     0,     0,   285,    34,
     2447       0,    35,    31,    36,   286,     0,    38,    39,   287,     0,
     2448       0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
     2449       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2450      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
     2451       0,   294,     0,   343,     0,     0,     0,     0,   758,   344,
     2452      46,   296,   297,   298,   299,     2,   206,     4,     5,     6,
    23712453       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    23722454      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2373        0,    26,    27,    28,    29,     0,     0,    30,     0,     0,
    2374       31,    32,     0,     0,     0,     0,     0,     0,   509,     0,
    2375      864,     0,     0,     0,     0,   414,     0,   414,   382,     0,
    2376        0,     0,   414,     0,     0,    33,     0,     0,    34,     0,
    2377       35,   614,    36,    37,     0,    38,    39,    40,     0,     0,
    2378        0,     0,     0,     0,    41,    42,     0,     0,     0,     0,
    2379        0,     0,     0,   509,   805,   414,  1247,     0,     0,     0,
    2380        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2381       43,     0,    44,     0,     0,     0,  -523,     0,    45,    46,
    2382      364,     0,     0,     0,     0,     0,     0,     0,   509,     0,
    2383        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2384        0,   509,     0,     0,     0,     0,     0,     0,   282,   283,
    2385        0,   284,     0,     0,     0,     0,   759,     0,   965,     0,
    2386        0,     0,     0,     0,     0,     0,     0,     0,   976,     0,
    2387        0,     0,     0,     0,   984,     0,     0,   285,     0,     0,
    2388        0,   341,   509,   641,     0,   139,   140,   287,     0,     0,
    2389      288,   289,   290,   291,    41,    42,     0,   292,   293,   364,
    2390        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2391        0,     0,     0,     0,     0,     0,     0,  1002,  1003,     0,
    2392      294,   346,   642,     0,   643,   380,     0,     0,    45,    46,
    2393      296,   297,   298,   299,     0,   346,     0,     0,     0,     0,
    2394        0,     0,     0,     0,     0,     0,     0,     0,   364,   364,
    2395        0,     0,     0,     0,     0,     0,     0,     0,     0,   509,
    2396        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2397        0,     0,     0,     0,     0,  1033,     0,     0,     0,   382,
    2398        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2399        1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
    2400       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2401       21,    22,    23,    24,    25,     0,   346,    26,    27,    28,
    2402       29,   509,   509,    30,     0,     0,    31,    32,     0,     0,
    2403        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2404        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2405        0,    33,     0,     0,    34,   321,    35,     0,    36,    37,
    2406        0,    38,    39,    40,     0,     0,     0,     0,   364,     0,
    2407       41,    42,     0,     0,     0,     0,     0,     0,     0,     0,
    2408        0,     0,     0,   382,     0,     0,     0,   282,   283,   976,
    2409      284,     0,     0,   742,     0,     0,    43,     0,    44,     0,
    2410        0,     0,     0,     0,    45,    46,     0,     0,     0,     0,
    2411        0,     0,     0,     0,  1154,     0,   285,     0,     0,     0,
    2412        0,     0,   286,     0,     0,  1169,   287,     0,     0,   288,
    2413      289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
    2414        0,     0,     0,     0,     0,     0,     0,   382,     0,  1187,
    2415        0,     0,     0,   282,   283,   414,   284,     0,     0,   294,
    2416        0,   379,     0,     0,   976,   976,   758,    45,    46,   296,
    2417      297,   298,   299,     0,     0,     0,     0,     0,     0,   414,
    2418      414,     0,   285,     0,     0,  1219,     0,     0,   286,     0,
    2419        0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
    2420       42,     0,   292,   293,   414,     0,     0,     0,     0,     0,
    2421        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2422        0,     0,     0,     0,     0,   294,   509,   379,     0,     0,
    2423      973,     0,     0,    45,    46,   296,   297,   298,   299,     0,
    2424      976,     0,   509,     0,     0,     0,     0,     0,     0,     0,
    2425        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2426      864,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2427        0,     0,     0,     0,     0,  1270,  1271,     0,     0,     0,
    2428        0,     1,     2,   206,     4,     5,     6,     7,     8,     9,
    2429       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2430       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2431       28,    29,   509,   509,    30,   282,   283,    31,  1042,  1043,
    2432        0,  1044,     0,     0,  1045,  1046,  1047,  1048,  1049,  1050,
    2433     1051,  1052,     0,     0,     0,  1053,     0,     0,     0,  1054,
    2434     1055,     0,    33,     0,   285,    34,     0,    35,     0,    36,
    2435     1056,     0,    38,    39,   287,     0,     0,   288,   289,   290,
    2436      291,    41,    42,     0,   292,   293,     0,     0,     0,     0,
    2437        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2438        0,     0,     0,     0,     0,     0,     0,   294,     0,  1057,
    2439        0,     0,   171,     0,     0,    45,    46,   296,   297,   298,
    2440      299,     0,     0,     0,     0,  1058,     0,     0,     0,     0,
    2441     -131,     0,     0,     0,     0,     0,  1375,     0,     0,   742,
    2442        1,     2,   206,     4,     5,     6,     7,     8,     9,    10,
    2443       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2444       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2445       29,     0,     0,    30,   282,   283,    31,   284,     8,     9,
    2446       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2447       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2448       28,     0,     0,   285,    34,     0,    35,    31,    36,   286,
    2449        0,    38,    39,   287,     0,     0,   288,   289,   290,   291,
    2450       41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
    2451        0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
    2452      110,     0,    38,    39,     0,     0,   294,     0,  1057,     0,
    2453        0,    41,    42,     0,    45,    46,   296,   297,   298,   299,
    2454        0,     0,     0,     0,     0,     0,     0,     0,     0,  -131,
    2455        0,     0,     0,     0,     1,     2,   206,     4,     5,     6,
    2456        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2457       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2458        0,    26,    27,    28,    29,     0,     0,    30,   282,   283,
    2459       31,   284,     0,     0,     0,     8,     9,    10,    11,    12,
    2460       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2461       23,    24,    25,  -297,     0,     0,     0,   285,    34,     0,
    2462       35,     0,    36,   286,    31,    38,    39,   287,     0,   321,
     2455       0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
     2456      31,   284,     8,     9,    10,    11,    12,    13,    14,    15,
     2457      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2458       0,     0,    26,    27,    28,     0,     0,   285,    34,     0,
     2459      35,    31,    36,   286,     0,    38,    39,   287,     0,     0,
    24632460     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
    2464        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2465        0,     0,    34,     0,     0,     0,     0,     0,     0,     0,
    2466      294,     0,    44,  -297,     0,     0,     0,     0,    45,    46,
     2461       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2462       0,     0,     0,     0,     0,     0,   207,    39,     0,     0,
     2463     294,     0,   963,     0,     0,     0,     0,   758,   344,    46,
    24672464     296,   297,   298,   299,     2,   206,     4,     5,     6,     7,
    24682465       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     
    24712468     284,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    24722469      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2473        0,    26,    27,    28,     0,     0,   285,    34,     0,    35,
     2470       0,     0,     0,     0,     0,     0,   285,    34,     0,    35,
    24742471      31,    36,   286,     0,    38,    39,   287,     0,     0,   288,
    24752472     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
    24762473       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2477        0,     0,     0,     0,     0,    38,    39,     0,     0,   294,
    2478        0,   343,     0,     0,     0,     0,   758,   344,    46,   296,
     2474       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
     2475       0,   963,     0,     0,     0,     0,   758,    45,    46,   296,
    24792476     297,   298,   299,     2,   206,     4,     5,     6,     7,     8,
    24802477       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    24812478      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    24822479      27,    28,     0,     0,     0,     0,   282,   283,    31,   284,
    2483        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2484       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2485       26,    27,    28,     0,     0,   285,    34,     0,    35,    31,
     2480       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2481       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2482       0,     0,     0,     0,     0,   285,    34,     0,    35,     0,
    24862483      36,   286,     0,    38,    39,   287,     0,     0,   288,   289,
    24872484     290,   291,    41,    42,     0,   292,   293,     0,     0,     0,
    2488        0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
    2489        0,     0,     0,     0,   207,    39,     0,     0,   294,     0,
    2490      964,     0,     0,     0,     0,   758,   344,    46,   296,   297,
     2485       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2486       0,     0,     0,     0,     0,     0,     0,     0,   294,     0,
     2487     343,     0,     0,     0,     0,     0,   344,    46,   296,   297,
    24912488     298,   299,     2,   206,     4,     5,     6,     7,     8,     9,
    24922489      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     
    24962493       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24972494       0,     0,     0,     0,   285,    34,     0,    35,     0,    36,
    2498      286,     0,    38,    39,   287,     0,     0,   288,   289,   290,
     2495     286,     0,   207,    39,   287,     0,     0,   288,   289,   290,
    24992496     291,    41,    42,     0,   292,   293,     0,     0,     0,     0,
    25002497       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2501        0,     0,     0,     0,     0,     0,     0,   294,     0,   964,
    2502        0,     0,     0,     0,   758,    45,    46,   296,   297,   298,
     2498       0,     0,     0,     0,     0,     0,     0,   294,     0,   998,
     2499       0,     0,     0,     0,     0,   999,    46,   296,   297,   298,
    25032500     299,     2,   206,     4,     5,     6,     7,     8,     9,    10,
    25042501      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     
    25112508      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
    25122509       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2513        0,     0,     0,     0,     0,     0,   294,     0,   343,     0,
     2510       0,     0,     0,     0,     0,     0,   294,     0,   963,     0,
    25142511       0,     0,     0,     0,   344,    46,   296,   297,   298,   299,
    25152512       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
     
    25232520      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
    25242521       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2525        0,     0,     0,     0,     0,   294,     0,   999,     0,     0,
    2526        0,     0,     0,  1000,    46,   296,   297,   298,   299,     2,
     2522       0,     0,     0,     0,     0,   294,     0,   379,     0,     0,
     2523       0,     0,     0,    45,    46,   296,   297,   298,   299,  -516,
     2524       0,     0,     1,     2,     3,     4,     5,     6,     7,     8,
     2525       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2526      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2527      27,    28,    29,     0,     0,    30,     0,     0,    31,    32,
     2528       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2529       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2530       0,     0,     0,    33,     0,     0,    34,     0,    35,     0,
     2531      36,    37,     0,    38,    39,    40,     0,     0,     0,     0,
     2532       0,     0,    41,    42,     0,     0,     0,     0,     0,     0,
     2533       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2534       0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
     2535      44,     0,     0,     0,     0,     0,    45,    46,     1,     2,
     2536       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2537      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2538      23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
     2539       0,    30,     0,     0,    31,    32,     0,     0,     0,     0,
     2540       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2541       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2542       0,     0,    34,     0,    35,     0,    36,    37,     0,    38,
     2543      39,    40,     0,     0,     0,     0,     0,     0,    41,    42,
     2544       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2545       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2546       0,     0,     0,     0,    43,     0,    44,     0,     0,     0,
     2547    -520,     0,    45,    46,     1,     2,     3,     4,     5,     6,
     2548       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2549      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2550       0,    26,    27,    28,    29,     0,     0,    30,     0,     0,
     2551      31,    32,     0,     0,     0,     0,     0,     0,     0,     0,
     2552       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2553       0,     0,     0,     0,     0,    33,     0,     0,    34,     0,
     2554      35,     0,    36,    37,     0,    38,    39,    40,     0,     0,
     2555       0,     0,     0,     0,    41,    42,     0,     0,     0,     0,
     2556       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2557       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2558      43,     0,    44,     0,     0,     0,     0,     0,    45,    46,
     2559     205,     2,   206,     4,     5,     6,     7,     8,     9,    10,
     2560      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2561      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2562       0,     0,     0,     0,     0,     0,    31,     0,     8,     9,
     2563      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2564      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2565      28,   485,   486,   487,    34,     0,    35,    31,    36,    37,
     2566       0,   207,    39,    40,     0,     0,     0,     0,     0,     0,
     2567      41,    42,     0,     0,     0,     0,     0,     0,     0,     0,
     2568       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
     2569       0,     0,    38,    39,     0,     0,    43,     0,   208,     0,
     2570       0,     0,     0,     0,    45,    46,     1,     2,   206,     4,
     2571       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2572      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2573      25,  -293,     0,    26,    27,    28,    29,     0,     0,    30,
     2574       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
     2575       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2576       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2577      34,     0,    35,     0,    36,     0,     0,    38,    39,     0,
     2578       0,  -293,     2,   206,     4,     5,     6,     7,     8,     9,
     2579      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2580      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2581      28,     0,     0,     0,    44,     0,     0,    31,     0,     0,
     2582      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
     2583       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2584       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
     2585      37,     0,   207,    39,    40,     0,     0,     0,     0,     0,
     2586       0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
     2587       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2588       0,     0,     0,     0,     0,     0,     0,    43,     0,   208,
     2589       0,     0,     0,     0,     0,    45,    46,     2,   206,     4,
     2590       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2591      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2592      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2593       0,     0,    31,     0,     0,     0,     0,     8,     9,    10,
     2594      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2595      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2596      34,     0,    35,     0,    36,     0,    31,    38,    39,     0,
     2597       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
     2598      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2599      22,    23,    24,    25,    34,     0,    26,    27,    28,     0,
     2600       0,    38,    39,  -400,   678,    31,     0,     0,     0,     0,
     2601      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
     2602       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2603       0,     0,     0,    34,     0,    35,   635,    36,   338,     0,
     2604      38,    39,     0,     0,    45,    46,     0,     0,     0,     0,
     2605       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2606       0,     0,  1351,     0,     0,     0,     0,     0,     0,     0,
     2607       0,     0,     0,     0,     0,     0,     0,   678,     0,     0,
     2608       0,     0,     0,    45,    46,     2,   206,     4,     5,     6,
     2609       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2610      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2611       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
     2612      31,     0,     0,     0,     8,     9,    10,    11,    12,    13,
     2613      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2614      24,    25,     0,     0,    26,    27,    28,     0,    34,     0,
     2615      35,     0,    36,    31,   685,    38,    39,     0,     0,     0,
     2616       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2617       0,     0,     0,     0,     0,     0,     0,  1353,     0,     0,
     2618       0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
     2619       0,     0,   678,     0,     0,     0,     0,     0,    45,    46,
     2620       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
     2621      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2622      22,    23,    24,    25,     0,   686,    26,    27,    28,   687,
     2623       0,    45,    46,     0,     0,    31,     0,     0,     0,     0,
     2624       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2625       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2626       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
     2627     207,    39,     0,     2,   206,     4,     5,     6,     7,     8,
     2628       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2629      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2630      27,    28,     0,     0,     0,     0,     0,   270,    31,     0,
     2631       0,     0,     0,    45,    46,     0,     0,     0,     0,     0,
     2632       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2633       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
     2634      36,     0,     0,    38,    39,     0,     2,   206,     4,     5,
     2635       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2636      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2637       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2638     678,    31,     0,     0,     0,     0,    45,    46,     0,     0,
     2639       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2640       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2641       0,    35,     0,    36,     0,     0,    38,    39,     0,     2,
    25272642     206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    25282643      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    25292644      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2530        0,     0,   282,   283,    31,   284,     0,     0,     0,     0,
     2645       0,     0,     0,   593,    31,     0,     0,     0,     0,    45,
     2646      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2647       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2648       0,     0,    34,     0,    35,     0,    36,     0,     0,   207,
     2649      39,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2650      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2651       0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
     2652      31,   284,     0,     0,     0,     0,   208,     0,     0,     0,
     2653       0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
     2654       0,     0,     0,     0,     0,     0,     0,   285,    34,     0,
     2655       0,     0,     0,   286,     0,    38,    39,   287,     0,     0,
     2656     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
    25312657       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25322658       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2533        0,   285,    34,     0,    35,     0,    36,   286,     0,    38,
    2534       39,   287,     0,     0,   288,   289,   290,   291,    41,    42,
    2535        0,   292,   293,     0,     0,     0,     0,     0,     0,     0,
    2536        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2537        0,     0,     0,     0,   294,     0,   964,     0,     0,     0,
    2538        0,     0,   344,    46,   296,   297,   298,   299,     2,   206,
    2539        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2659     294,     0,   517,     0,     0,   171,     0,     0,    45,    46,
     2660     296,   297,   298,   299,     8,     9,    10,    11,    12,    13,
    25402661      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    25412662      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2542        0,   282,   283,    31,   284,     0,     0,     0,     0,     0,
    2543        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2544        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2545      285,    34,     0,    35,     0,    36,   286,     0,   207,    39,
     2663       0,   282,   283,    31,   284,     8,     9,    10,    11,    12,
     2664      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2665      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2666     285,    34,     0,     0,    31,     0,   286,     0,    38,    39,
    25462667     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
    25472668     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
    2548        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2549        0,     0,     0,   294,     0,   379,     0,     0,     0,     0,
    2550        0,    45,    46,   296,   297,   298,   299,   205,     2,   206,
    2551        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2552       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2553       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2554        0,     0,     0,    31,     0,     8,     9,    10,    11,    12,
    2555       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2556       23,    24,    25,     0,     0,    26,    27,    28,   485,   486,
    2557      487,    34,     0,    35,    31,    36,    37,     0,   207,    39,
    2558       40,     0,     0,     0,     0,     0,     0,    41,    42,     0,
    2559        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2560        0,     0,    34,     0,     0,     0,     0,     0,     0,    38,
    2561       39,     0,     0,    43,     0,   208,     0,     0,     0,     0,
    2562        0,    45,    46,     1,     2,   206,     4,     5,     6,     7,
    2563        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2564       18,    19,    20,    21,    22,    23,    24,    25,  -296,     0,
    2565       26,    27,    28,    29,     0,     0,    30,     0,     0,    31,
    2566        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2567        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2568        0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
    2569        0,    36,     0,     0,    38,    39,     0,     0,  -296,     1,
    2570        2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
    2571       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2572       22,    23,    24,    25,     0,     0,    26,    27,    28,    29,
    2573        0,    44,    30,     0,     0,    31,     0,    45,    46,     0,
    2574        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2575        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2576        0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
    2577       38,    39,   205,     2,   206,     4,     5,     6,     7,     8,
    2578        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2579       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2580       27,    28,     0,     0,     0,     0,     0,    44,    31,     0,
    2581        0,     0,     0,    45,    46,     0,     0,     0,     0,     0,
    2582        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2583        0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
    2584       36,     0,     0,   207,    39,     0,     2,   206,     4,     5,
    2585        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2586       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2587        0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
    2588      208,    31,     0,     0,     0,     0,    45,    46,     0,     0,
    2589        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2590        0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    2591        0,    35,     0,    36,    37,     0,   207,    39,    40,     0,
    2592        0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
    2593        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2594        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2595        0,    43,     0,   208,     0,     0,     0,     0,     0,    45,
    2596       46,     2,   206,     4,     5,     6,     7,     8,     9,    10,
     2669       0,     0,    34,     0,     0,     0,     0,    37,     0,   336,
     2670     337,    40,     0,   294,   -36,   295,     0,     0,    41,    42,
     2671       0,    45,    46,   296,   297,   298,   299,     8,     9,    10,
    25972672      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2598       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2599        0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
    2600        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2601       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2602        0,    26,    27,    28,    34,     0,    35,     0,    36,     0,
    2603       31,    38,    39,     0,     2,   206,     4,     5,     6,     7,
    2604        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2605       18,    19,    20,    21,    22,    23,    24,    25,    34,     0,
    2606       26,    27,    28,     0,     0,    38,    39,  -403,   678,    31,
    2607        0,     0,     0,     0,    45,    46,     0,     0,     0,     0,
    2608        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2609        0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
    2610      635,    36,   338,     0,    38,    39,     0,     0,    45,    46,
    2611        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2612        0,     0,     0,     0,     0,     0,  1354,     0,     0,     0,
    2613        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2614        0,   678,     0,     0,     0,     0,     0,    45,    46,     2,
    2615      206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2616       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2617       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2618        0,     0,     0,     0,    31,     0,     0,     0,     8,     9,
     2673      21,    22,    23,    24,    25,     0,   338,    26,    27,    28,
     2674       0,     0,    45,    46,   282,   283,    31,   284,     8,     9,
    26192675      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    26202676      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2621       28,     0,    34,     0,    35,     0,    36,    31,   685,    38,
    2622       39,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2623        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2624        0,  1356,     0,     0,     0,    34,     0,     0,     0,     0,
    2625        0,     0,    38,    39,     0,     0,   678,     0,     0,     0,
    2626        0,     0,    45,    46,     2,   206,     4,     5,     6,     7,
    2627        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2628       18,    19,    20,    21,    22,    23,    24,    25,     0,   686,
    2629       26,    27,    28,   687,     0,    45,    46,     0,     0,    31,
    2630        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2631        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2632        0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
    2633        0,    36,     0,     0,   207,    39,     0,     2,   206,     4,
    2634        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2635       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2636       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2637        0,   270,    31,     0,     0,     0,     0,    45,    46,     0,
    2638        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2639        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2640       34,     0,    35,     0,    36,     0,     0,    38,    39,     0,
    2641        2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
    2642       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2643       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2644        0,     0,     0,     0,   678,    31,     0,     0,     0,     0,
    2645       45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
    2646        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2647        0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
    2648       38,    39,     0,     2,   206,     4,     5,     6,     7,     8,
    2649        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2650       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2651       27,    28,     0,     0,     0,     0,     0,   593,    31,     0,
    2652        0,     0,     0,    45,    46,     0,     0,     0,     0,     0,
    2653        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2654        0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
    2655       36,     0,     0,   207,    39,     8,     9,    10,    11,    12,
    2656       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2657       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2658        0,     0,   282,   283,    31,   284,     0,     0,     0,     0,
    2659      208,     0,     0,     0,     0,     0,    45,    46,     0,     0,
    2660        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2661        0,   285,    34,     0,     0,     0,     0,   286,     0,    38,
    2662       39,   287,     0,     0,   288,   289,   290,   291,    41,    42,
    2663        0,   292,   293,     0,     0,     0,     0,     0,     0,     0,
    2664        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2665        0,     0,     0,     0,   294,     0,   517,     0,     0,   171,
    2666        0,     0,    45,    46,   296,   297,   298,   299,     8,     9,
    2667       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2668       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2669       28,     0,     0,     0,     0,   282,   283,    31,   284,     8,
    2670        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2671       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2672       27,    28,     0,     0,   285,    34,     0,     0,    31,     0,
    2673      286,     0,    38,    39,   287,     0,     0,   288,   289,   290,
    2674      291,    41,    42,     0,   292,   293,     0,     0,     0,     0,
    2675        0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2676        0,    37,     0,   336,   337,    40,     0,   294,   -37,   295,
    2677        0,     0,    41,    42,     0,    45,    46,   296,   297,   298,
    2678      299,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2679       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2680      338,    26,    27,    28,     0,     0,    45,    46,   282,   283,
    2681       31,   284,     8,     9,    10,    11,    12,    13,    14,    15,
    2682       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2683        0,     0,    26,    27,    28,     0,     0,   285,    34,     0,
    2684        0,    31,     0,   286,     0,    38,    39,   287,     0,     0,
    2685      288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
    2686        0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    2687        0,     0,     0,     0,   110,     0,    38,    39,     0,     0,
    2688      294,     0,   295,     0,     0,    41,    42,     0,    45,    46,
    2689      296,   297,   298,   299,     8,     9,    10,    11,    12,    13,
    2690       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2691       24,    25,     0,    44,    26,    27,    28,     0,     0,    45,
    2692       46,   282,   283,    31,   284,     8,     9,    10,    11,    12,
    2693       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2694       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2695      285,    34,     0,     0,    31,   685,   286,     0,    38,    39,
    2696      287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
    2697      292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
    2698        0,     0,    34,     0,     0,     0,     0,     0,     0,    38,
    2699       39,     0,     0,   294,     0,   157,     0,     0,     0,     0,
    2700        0,    45,    46,   296,   297,   298,   299,     8,     9,    10,
    2701       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2702       21,    22,    23,    24,    25,     0,   686,    26,    27,    28,
    2703     1093,     0,    45,    46,   282,   283,    31,   284,     8,     9,
    2704       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2705       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2706       28,     0,     0,   285,    34,     0,     0,    31,   685,   286,
     2677      28,     0,     0,   285,    34,     0,     0,    31,     0,   286,
    27072678       0,    38,    39,   287,     0,     0,   288,   289,   290,   291,
    27082679      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
    27092680       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
    2710        0,     0,    38,    39,     0,     0,   294,     0,   593,     0,
    2711        0,     0,     0,     0,    45,    46,   296,   297,   298,   299,
     2681     110,     0,    38,    39,     0,     0,   294,     0,   295,     0,
     2682       0,    41,    42,     0,    45,    46,   296,   297,   298,   299,
    27122683       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2713       18,    19,    20,    21,    22,    23,    24,    25,     0,   686,
    2714       26,    27,    28,  1224,     0,    45,    46,   282,   283,    31,
    2715      284,     0,     0,     0,     0,     0,     0,     0,     8,     9,
    2716       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2717       20,    21,    22,    23,    24,    25,   285,    34,    26,    27,
    2718       28,     0,   286,     0,    38,    39,   287,    31,     0,   288,
     2684      18,    19,    20,    21,    22,    23,    24,    25,     0,    44,
     2685      26,    27,    28,     0,     0,    45,    46,   282,   283,    31,
     2686     284,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2687      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2688       0,    26,    27,    28,     0,     0,   285,    34,     0,     0,
     2689      31,   685,   286,     0,    38,    39,   287,     0,     0,   288,
    27192690     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
     2691       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2692       0,     0,     0,     0,     0,    38,    39,     0,     0,   294,
     2693       0,   157,     0,     0,     0,     0,     0,    45,    46,   296,
     2694     297,   298,   299,     8,     9,    10,    11,    12,    13,    14,
     2695      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2696      25,     0,   686,    26,    27,    28,  1092,     0,    45,    46,
     2697     282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
     2698      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2699      24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
     2700      34,     0,     0,    31,   685,   286,     0,    38,    39,   287,
     2701       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     2702     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2703       0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
     2704       0,     0,   294,     0,   593,     0,     0,     0,     0,     0,
     2705      45,    46,   296,   297,   298,   299,     8,     9,    10,    11,
     2706      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2707      22,    23,    24,    25,     0,   686,    26,    27,    28,  1221,
     2708       0,    45,    46,   282,   283,    31,   284,     0,     0,     0,
     2709       0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
     2710      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2711      24,    25,   285,    34,    26,    27,    28,     0,   286,     0,
     2712      38,    39,   287,    31,     0,   288,   289,   290,   291,    41,
     2713      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
    27202714       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2721        0,     0,     0,     0,     0,    34,     0,     0,     0,   294,
    2722        0,   379,    38,    39,     0,     0,     0,    45,    46,   296,
    2723      297,   298,   299,   467,     2,   206,     4,     5,     6,     7,
    2724        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2725       18,    19,    20,    21,    22,    23,    24,    25,     0,   257,
    2726       26,    27,    28,     0,     0,    45,    46,     0,     0,    31,
    2727        0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2715       0,    34,     0,     0,     0,   294,     0,   379,    38,    39,
     2716       0,     0,     0,    45,    46,   296,   297,   298,   299,   467,
     2717       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
     2718      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2719      22,    23,    24,    25,     0,   257,    26,    27,    28,     0,
     2720       0,    45,    46,     0,     0,    31,     0,     0,     0,     8,
     2721       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2722      19,    20,    21,    22,    23,    24,    25,  -293,     0,    26,
     2723      27,    28,     0,    34,     0,    35,     0,    36,    31,     0,
     2724      38,    39,     0,     0,     0,     0,     0,     8,     9,    10,
     2725      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2726      21,    22,    23,    24,    25,     0,    34,    26,    27,    28,
     2727       0,    37,     0,   336,   337,    40,    31,  -293,     0,     0,
     2728      -3,     0,    41,    42,     0,     8,     9,    10,    11,    12,
     2729      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2730      23,    24,    25,  -293,    34,    26,    27,    28,     0,    37,
     2731     338,   336,   337,    40,    31,     0,    45,    46,     0,     0,
     2732      41,    42,     0,     8,     9,    10,    11,    12,    13,    14,
    27282733      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2729       25,     0,     0,    26,    27,    28,     0,    34,     0,    35,
    2730        0,    36,    31,     0,    38,    39,     0,     0,     0,     0,
    2731        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2732       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2733       34,    26,    27,    28,     0,    37,     0,    38,    39,    40,
    2734       31,     0,     0,     0,    -3,     0,    41,    42,     0,     8,
    2735        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2736       19,    20,    21,    22,    23,    24,    25,     0,    34,    26,
    2737       27,    28,    43,    37,    44,   207,    39,    40,    31,     0,
    2738       45,    46,     0,     0,    41,    42,     0,     8,     9,    10,
    2739       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2740       21,    22,    23,    24,    25,  -296,    34,    26,    27,    28,
    2741       43,    37,   270,   336,   337,    40,    31,     0,    45,    46,
    2742        0,     0,    41,    42,     0,     8,     9,    10,    11,    12,
    2743       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2744       23,    24,    25,  -296,    34,    26,    27,    28,   635,     0,
    2745      338,    38,    39,     0,    31,  -296,    45,    46,     8,     9,
    2746       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2747       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2748       28,     0,    34,     0,     0,     0,   635,    31,   338,    38,
    2749       39,     0,     0,  -296,    45,    46,     8,     9,    10,    11,
     2734      25,     0,    34,    26,    27,    28,   635,     0,   338,    38,
     2735      39,     0,    31,  -293,    45,    46,     8,     9,    10,    11,
    27502736      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2751       22,    23,    24,    25,     0,    34,    26,    27,    28,     0,
    2752        0,     0,    38,    39,     0,    31,   338,     0,     0,     0,
     2737      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2738      34,     0,     0,     0,     0,    31,   338,    38,    39,     0,
    27532739       0,     0,    45,    46,     8,     9,    10,    11,    12,    13,
    27542740      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2755       24,    25,     0,    34,    26,    27,    28,     0,     0,   157,
    2756      207,    39,     0,    31,     0,    45,    46,     8,     9,    10,
    2757       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2758       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2759        0,    34,     0,     0,     0,     0,    31,   270,    38,    39,
    2760        0,     0,     0,    45,    46,     8,     9,    10,    11,    12,
     2741      24,    25,     0,    34,    26,    27,    28,     0,     0,     0,
     2742     207,    39,     0,    31,   157,     0,     0,     0,     0,     0,
     2743      45,    46,     8,     9,    10,    11,    12,    13,    14,    15,
     2744      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2745       0,    34,    26,    27,    28,     0,     0,   270,    38,    39,
     2746       0,    31,     0,    45,    46,     8,     9,    10,    11,    12,
    27612747      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2762       23,    24,    25,     0,    34,    26,    27,    28,     0,     0,
    2763        0,    38,    39,     0,    31,   338,     0,     0,     0,     0,
     2748      23,    24,    25,     0,     0,    26,    27,    28,     0,    34,
     2749       0,     0,     0,     0,    31,   338,    38,    39,     0,     0,
    27642750       0,    45,    46,     8,     9,    10,    11,    12,    13,    14,
    27652751      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2766       25,     0,    34,    26,    27,    28,     0,     0,   686,    38,
    2767       39,     0,    31,     0,    45,    46,     2,   206,     4,     5,
    2768        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2769       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2770       34,     0,    26,    27,    28,     0,   593,    38,    39,     0,
    2771        0,    31,    45,    46,     0,     0,     0,     0,     0,     0,
     2752      25,     0,    34,    26,    27,    28,     0,     0,     0,    38,
     2753      39,     0,    31,   686,     0,     0,     0,     0,     0,    45,
     2754      46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2755      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2756      34,    26,    27,    28,     0,     0,   593,    38,    39,     0,
     2757      31,     0,    45,    46,     2,   206,     4,     5,     6,     7,
     2758       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2759      18,    19,    20,    21,    22,    23,    24,    25,    34,     0,
     2760      26,    27,    28,     0,    44,   207,    39,     0,     0,    31,
     2761      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
    27722762       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2773        0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    2774        0,    35,     0,    36,    44,     0,    38,    39,     0,     0,
    2775       45,    46,   282,   283,     0,   284,  1043,     0,  1044,     0,
    2776        0,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,     0,
    2777        0,  1528,  1053,     0,     0,     0,  1054,  1055,     0,    33,
    2778        0,   285,  -416,     0,     0,     0,     0,  1056,     0,     0,
    2779        0,   287,     0,     0,   288,   289,   290,   291,    41,    42,
    2780        0,   292,   293,     0,     0,     0,     0,     0,     0,     0,
    2781        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2782        0,     0,     0,     0,   294,     0,   379,     0,     0,   171,
    2783        0,     0,    45,    46,   296,   297,   298,   299,     0,     0,
    2784      282,   283,  1058,   284,  1043,     0,  1044,  -131,     0,  1045,
    2785     1046,  1047,  1048,  1049,  1050,  1051,  1052,     0,     0,     0,
    2786     1053,     0,     0,     0,  1054,  1055,     0,    33,     0,   285,
    2787        0,     0,     0,     0,     0,  1056,     0,     0,     0,   287,
     2763       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
     2764       0,    36,     0,     0,    38,    39,     0,     0,    45,    46,
     2765     282,   283,     0,   284,  1042,     0,  1043,     0,     0,  1044,
     2766    1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,  1525,
     2767    1052,     0,     0,     0,  1053,  1054,     0,    33,     0,   285,
     2768    -413,     0,     0,     0,     0,  1055,     0,     0,     0,   287,
    27882769       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
    27892770     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27902771       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27912772       0,     0,   294,     0,   379,     0,     0,   171,     0,     0,
    2792       45,    46,   296,   297,   298,   299,     0,     0,     0,     0,
    2793     1058,     0,     0,     0,     0,  -131,     2,   206,     4,     5,
    2794        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2795       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2796        0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
    2797        0,    31,     0,   282,   283,     0,   284,  1043,     0,  1044,
    2798     1402,  1403,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,
    2799        0,     0,  1528,  1053,     0,     0,     0,  1054,  1055,    34,
    2800       33,    35,   285,    36,     0,     0,    38,    39,  1056,     0,
    2801        0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
    2802       42,     0,   292,   293,     0,     0,     0,     0,  1315,     0,
     2773      45,    46,   296,   297,   298,   299,     0,     0,   282,   283,
     2774    1057,   284,  1042,     0,  1043,  -128,     0,  1044,  1045,  1046,
     2775    1047,  1048,  1049,  1050,  1051,     0,     0,     0,  1052,     0,
     2776       0,     0,  1053,  1054,     0,    33,     0,   285,     0,     0,
     2777       0,     0,     0,  1055,     0,     0,     0,   287,     0,     0,
     2778     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
    28032779       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2804        0,     0,     0,     0,     0,   294,     0,   379,     0,     0,
    2805      171,     0,     0,    45,    46,   296,   297,   298,   299,     0,
    2806        0,   282,   283,  1058,   284,  1043,     0,  1044,  1402,  1403,
    2807     1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,     0,     0,
    2808        0,  1053,     0,     0,     0,  1054,  1055,     0,    33,     0,
    2809      285,     0,     0,     0,     0,     0,  1056,     0,     0,     0,
     2780       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2781     294,     0,   379,     0,     0,   171,     0,     0,    45,    46,
     2782     296,   297,   298,   299,     0,     0,     0,     0,  1057,     0,
     2783       0,     0,     0,  -128,     2,   206,     4,     5,     6,     7,
     2784       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2785      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2786      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2787       0,   282,   283,     0,   284,  1042,     0,  1043,  1399,  1400,
     2788    1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,
     2789    1525,  1052,     0,     0,     0,  1053,  1054,    34,    33,    35,
     2790     285,    36,     0,     0,    38,    39,  1055,     0,     0,     0,
    28102791     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
    2811      292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
     2792     292,   293,     0,     0,     0,     0,  1312,     0,     0,     0,
    28122793       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28132794       0,     0,     0,   294,     0,   379,     0,     0,   171,     0,
    28142795       0,    45,    46,   296,   297,   298,   299,     0,     0,   282,
    2815      283,  1058,   284,  1043,     0,  1044,     0,     0,  1045,  1046,
    2816     1047,  1048,  1049,  1050,  1051,  1052,     0,     0,     0,  1053,
    2817        0,     0,     0,  1054,  1055,     0,    33,     0,   285,     0,
    2818        0,     0,     0,     0,  1056,     0,     0,     0,   287,     0,
     2796     283,  1057,   284,  1042,     0,  1043,  1399,  1400,  1044,  1045,
     2797    1046,  1047,  1048,  1049,  1050,  1051,     0,     0,     0,  1052,
     2798       0,     0,     0,  1053,  1054,     0,    33,     0,   285,     0,
     2799       0,     0,     0,     0,  1055,     0,     0,     0,   287,     0,
    28192800       0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
    2820        0,     0,     0,     0,     0,     0,   282,   283,     0,   284,
     2801       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28212802       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28222803       0,   294,     0,   379,     0,     0,   171,     0,     0,    45,
    2823       46,   296,   297,   298,   299,   285,     0,     0,     0,  1058,
    2824        0,   286,     0,     0,     0,   287,     0,     0,   288,   289,
    2825      290,   291,    41,    42,     0,   292,   293,     0,     0,     0,
    2826        0,     0,     0,   282,   283,     0,   284,     0,     0,     0,
    2827        0,     0,     0,     0,     0,     0,     0,     0,   294,     0,
    2828      379,     0,   282,   283,     0,   284,    45,    46,   296,   297,
    2829      298,   299,   285,     0,     0,     0,     0,     0,   286,     0,
     2804      46,   296,   297,   298,   299,     0,     0,   282,   283,  1057,
     2805     284,  1042,     0,  1043,     0,     0,  1044,  1045,  1046,  1047,
     2806    1048,  1049,  1050,  1051,     0,     0,     0,  1052,     0,     0,
     2807       0,  1053,  1054,     0,    33,     0,   285,     0,     0,     0,
     2808       0,     0,  1055,     0,     0,     0,   287,     0,     0,   288,
     2809     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
     2810       0,     0,     0,     0,   282,   283,     0,   284,     0,     0,
     2811       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
     2812       0,   379,     0,     0,   171,     0,     0,    45,    46,   296,
     2813     297,   298,   299,   285,     0,     0,     0,  1057,     0,   286,
     2814       0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
     2815      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
     2816       0,   282,   283,     0,   284,     0,     0,     0,     0,     0,
     2817       0,     0,     0,     0,     0,     0,   294,     0,   379,     0,
     2818       0,   972,     0,     0,    45,    46,   296,   297,   298,   299,
     2819     285,     0,     0,     0,     0,     0,   286,     0,     0,     0,
     2820     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
     2821     292,   293,     0,     0,     0,     0,     0,     0,   282,   283,
     2822       0,   284,     0,     0,     0,     0,     0,     0,     0,     0,
     2823       0,     0,     0,   294,     0,   379,     0,   282,   283,     0,
     2824     284,    45,    46,   296,   297,   298,   299,   285,     0,     0,
     2825       0,     0,     0,   286,     0,     0,     0,   287,     0,     0,
     2826     288,   289,   290,   291,    41,    42,   285,   292,   293,     0,
     2827       0,     0,   286,     0,     0,     0,   287,     0,     0,   288,
     2828     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
     2829     294,     0,   379,     0,   282,   283,     0,   284,   709,    46,
     2830     296,   297,   298,   299,     0,     0,     0,     0,     0,   294,
     2831       0,   379,     0,   282,   283,     0,   284,   344,    46,   296,
     2832     297,   298,   299,   285,     0,     0,     0,     0,     0,   286,
     2833       0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
     2834      41,    42,   285,   292,   293,     0,     0,     0,   286,     0,
    28302835       0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
    2831       42,   285,   292,   293,     0,     0,     0,   286,     0,     0,
    2832        0,   287,     0,     0,   288,   289,   290,   291,    41,    42,
    2833        0,   292,   293,     0,     0,   294,     0,   379,     0,   282,
    2834      283,     0,   284,   709,    46,   296,   297,   298,   299,     0,
    2835        0,     0,     0,     0,   294,     0,   379,     0,   282,   283,
    2836        0,   284,   344,    46,   296,   297,   298,   299,   285,     0,
    2837        0,     0,     0,     0,   286,     0,     0,     0,   287,     0,
    2838        0,   288,   289,   290,   291,    41,    42,   285,   292,   293,
    2839        0,     0,     0,   286,     0,     0,     0,   287,     0,     0,
    2840      288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
    2841        0,   506,     0,     0,     0,   282,   283,     0,   284,    45,
    2842       46,   296,   297,   298,   299,     0,     0,     0,     0,     0,
    2843      294,     0,     0,     0,   282,   283,     0,   284,    45,    46,
    2844      296,   297,   298,   299,   285,     0,     0,     0,     0,     0,
    2845      286,     0,     0,     0,   287,     0,     0,   288,   289,   290,
    2846      291,    41,    42,   285,   292,   293,     0,     0,     0,   286,
    2847        0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
    2848       41,    42,     0,   292,   293,     0,     0,   511,     0,     0,
    2849        0,     0,     0,     0,     0,    45,    46,   296,   297,   298,
    2850      299,     0,     0,     0,     0,     0,   514,     0,     0,     0,
    2851        0,     0,     0,     0,    45,    46,   296,   297,   298,   299,
     2836      42,     0,   292,   293,     0,     0,   506,     0,     0,     0,
     2837     282,   283,     0,   284,    45,    46,   296,   297,   298,   299,
     2838       0,     0,     0,     0,     0,   294,     0,     0,     0,   282,
     2839     283,     0,   284,    45,    46,   296,   297,   298,   299,   285,
     2840       0,     0,     0,     0,     0,   286,     0,     0,     0,   287,
     2841       0,     0,   288,   289,   290,   291,    41,    42,   285,   292,
     2842     293,     0,     0,     0,   286,     0,     0,     0,   287,     0,
     2843       0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
     2844       0,     0,   511,     0,     0,     0,     0,     0,     0,     0,
     2845      45,    46,   296,   297,   298,   299,     0,     0,     0,     0,
     2846       0,   514,     0,     0,     0,     0,     0,     0,     0,    45,
     2847      46,   296,   297,   298,   299,     2,   206,     4,     5,     6,
     2848       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2849      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2850       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2851      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2852       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2853       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2854      35,     0,    36,    37,     0,   174,   175,    40,     0,     0,
     2855       0,     0,     0,     0,    41,    42,   205,     2,   206,     4,
     2856       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2857      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2858      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2859       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
     2860       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2861       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2862      34,     0,    35,     0,    36,     0,     0,   207,    39,   467,
    28522863       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
    28532864      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2854       22,    23,    24,    25,     0,     0,     0,     0,     0,     0,
     2865      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    28552866       0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
    28562867       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28572868       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2858        0,     0,     0,    34,     0,    35,     0,    36,    37,     0,
    2859      174,   175,    40,     0,     0,     0,     0,     0,     0,    41,
    2860       42,   205,     2,   206,     4,     5,     6,     7,     8,     9,
     2869       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
     2870      38,    39,     2,   206,     4,     5,     6,     7,     8,     9,
    28612871      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    28622872      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     
    28652875       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28662876       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
    2867        0,     0,   207,    39,   467,     2,   206,     4,     5,     6,
    2868        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2869       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2870        0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
    2871       31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2872        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2873        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2874       35,     0,    36,     0,     0,    38,    39,     2,   206,     4,
    2875        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2876       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2877       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2878        0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
    2879        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2880        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2881       34,     0,    35,     0,    36,     0,     0,   207,    39
     2877       0,     0,   207,    39
    28822878};
    28832879
    28842880#define yypact_value_is_default(yystate) \
    2885   ((yystate) == (-1338))
     2881  ((yystate) == (-1323))
    28862882
    28872883#define yytable_value_is_error(yytable_value) \
     
    28902886static const yytype_int16 yycheck[] =
    28912887{
    2892        0,     1,   239,    43,   185,   116,   534,     0,   204,   185,
    2893       43,   185,   185,   281,   185,    43,   521,     1,   601,   185,
    2894      185,   603,   168,   169,   105,   750,     0,     1,   219,   621,
    2895      349,   876,    32,   345,    49,   750,     0,   693,   603,    32,
    2896      156,   750,   513,    43,  1023,   757,   647,   572,   186,    49,
    2897     1325,   985,   186,   492,   189,     0,    49,   496,    32,  1022,
    2898     1023,   196,   156,    63,    32,  1402,    66,   601,    32,    69,
    2899       63,     0,    28,    66,   155,   187,    69,   109,   601,    39,
    2900       85,    43,   601,     0,   265,    69,    57,    32,   349,   265,
    2901      201,   265,   265,    43,   265,    69,    39,   601,   113,   265,
    2902      265,  1035,    63,    32,    51,   105,   364,   256,   113,   418,
    2903      368,   601,  1042,   113,    39,    32,   116,   117,    72,   696,
    2904       43,   109,    78,   111,   604,   601,   109,   876,   266,   438,
    2905      610,   146,   266,   268,   490,   106,  1473,   446,   109,    96,
    2906       39,   734,    72,   426,   427,   185,   146,   147,  1423,   261,
    2907      262,   111,   185,  1456,   147,   155,   156,   185,  1054,  1055,
    2908      160,    95,   109,   109,   110,   122,   109,   160,   111,    64,
    2909      482,   132,     0,     1,     0,    72,    82,    96,   132,    72,
    2910      636,   637,   907,   688,   284,   185,   186,  1490,   323,  1492,
    2911       83,    84,   907,   186,   209,   129,   331,   653,   907,   334,
    2912       82,   201,   132,   122,    32,   111,    32,   307,   308,   209,
    2913      109,   494,   111,  1117,   109,   719,   209,  1121,   111,   410,
    2914      117,   221,   876,   185,   239,   265,   294,   488,   221,   719,
    2915      513,   814,   265,    39,  1130,   185,   504,   265,    66,   239,
    2916       66,    69,    11,   719,   826,   345,   902,   218,    39,   605,
    2917     1229,   251,  1505,   609,   128,   711,   271,   131,   251,   259,
    2918      341,   826,   185,   398,   264,   265,   266,   402,   406,   418,
    2919      795,   271,   406,   266,   630,   109,   988,   251,   634,  1532,
    2920      814,   381,    39,   251,   603,   396,   116,   251,  1406,   438,
    2921      371,   814,   307,  1042,   294,   814,   579,   446,    44,    45,
    2922     1279,   272,   107,   109,   112,   111,   251,   307,   279,   621,
    2923      814,   256,    82,   424,   626,  1278,  1279,   433,   109,   430,
    2924      111,   109,   251,   323,   814,   926,   131,   256,   328,   112,
    2925      345,   908,   590,   116,   251,   328,   816,   228,   814,   433,
    2926      110,   341,   480,   131,   479,   345,   480,   803,   114,   349,
    2927      350,   934,   109,   935,   111,     3,   247,    70,   426,   427,
    2928       73,   110,  1292,    76,   364,    78,   116,     3,   368,   115,
    2929     1215,   371,    85,   682,   632,    49,   953,   348,    44,    45,
    2930      130,   130,  1500,    44,    45,    90,    91,  1505,   482,   116,
    2931       72,  1045,    72,   221,   365,   221,   396,    79,   369,    79,
    2932      934,    83,    84,    83,    84,    72,   406,  1525,   110,  1001,
    2933      526,   426,   427,   406,  1532,   934,    83,    84,   112,  1398,
    2934      125,   126,   116,   251,   424,   251,   426,   427,   130,   111,
    2935      430,   111,   526,   433,   746,  1398,   571,   572,   506,   113,
    2936     1505,   110,   109,   511,   525,   116,   514,   109,   114,   111,
    2937      550,   551,   552,   114,   454,     0,  1390,  1391,  1051,   130,
    2938     1525,   130,   464,   109,   969,   116,  1215,  1532,  1252,   737,
    2939     1254,  1255,   472,   418,    72,   591,    74,    75,     0,   494,
    2940      480,   132,   482,   109,   484,    83,    84,   480,   488,   418,
    2941      110,   484,   848,   438,   494,   109,   116,   591,   513,   212,
    2942      568,   446,   648,   109,   943,   111,   506,   826,   508,   438,
    2943      484,   511,   983,   513,   514,  1445,   114,   446,   131,  1101,
    2944      484,   521,  1452,   658,   350,   525,   526,   662,  1129,    72,
    2945     1010,  1011,   111,   682,   113,   209,    79,   119,   120,   484,
    2946       83,    84,  1119,  1292,   655,   657,    72,   805,    74,    75,
    2947      688,   130,   810,   482,   688,   484,   112,    83,    84,   708,
    2948      116,  1215,   116,   116,   579,   826,   279,   484,   111,   116,
    2949      116,   571,   572,  1503,   111,   110,   113,   130,   132,   579,
    2950      109,   116,  1087,   109,   940,   132,   132,  1092,   114,   109,
    2951      590,   591,   116,   130,   906,   595,  1476,   271,   109,   110,
    2952      111,   601,  1482,   603,  1181,  1182,   621,    72,   132,    74,
    2953       75,   626,     4,     5,     6,     7,     8,     9,    83,    84,
    2954      294,   621,  1502,   110,   117,   112,   626,  1507,   628,   116,
    2955      123,   124,   632,   307,   109,   635,   636,   637,    72,   352,
    2956      898,   354,    76,   116,   131,   132,   111,   473,   109,    83,
    2957       84,   622,   746,   653,  1308,   655,   484,   757,   484,   132,
    2958      795,     0,     1,   912,   745,   914,   116,   638,   110,   671,
    2959      116,   116,   863,   110,   591,   109,   112,    69,   939,    71,
    2960      116,   652,   132,   117,   118,   685,   132,   132,   688,  1001,
    2961       29,    30,   883,    32,   109,   811,  1445,   110,   116,  1292,
    2962      116,   110,   110,  1452,    43,   116,  1360,   116,   945,  1363,
    2963       49,   711,   712,   713,   132,   110,   132,   811,    57,   719,
    2964      720,   132,   116,   869,    63,   110,   907,    66,   109,   442,
    2965       69,   907,   116,   907,   907,   112,   907,   682,   132,   116,
    2966      132,   907,   907,    82,    83,   745,   746,    72,   132,    30,
    2967      750,   751,  1406,   682,  1503,   110,   112,  1411,    83,    84,
    2968      109,   116,   733,   708,    85,    86,    87,   106,    88,    89,
    2969      109,   909,   115,  1366,   109,   909,   111,   116,   913,   708,
    2970      454,  1309,   117,   118,  1509,  1439,    92,    93,   109,   791,
    2971      111,   132,   113,   114,  1509,   795,   109,   623,   110,   801,
    2972     1509,    82,    83,   803,   116,   805,    64,   807,   147,  1386,
    2973      810,   811,   906,   815,   814,   109,   155,   746,  1014,   112,
    2974      109,   160,   111,   132,   905,  1402,   826,   114,   117,   118,
    2975      115,   116,   506,    72,   508,    74,    75,   511,  1150,   114,
    2976      514,   109,   110,   111,    83,    84,   185,   186,    72,  1117,
    2977       74,    75,    76,  1121,  1122,   990,  1449,   114,  1451,    83,
    2978       84,   110,   201,   506,   109,   508,  1124,   116,   511,  1523,
    2979      209,   514,  1007,   699,   110,  1529,   876,   110,   111,   218,
    2980      116,    72,   221,    74,    75,   109,  1540,   713,   132,   228,
    2981     1544,  1037,    83,    84,   811,  1472,  1473,   109,   898,   111,
    2982      132,  1001,   876,    72,   243,   905,   906,   907,   247,   909,
    2983       79,  1504,   251,   252,    83,    84,   110,  1229,   109,    58,
    2984       59,   921,   116,   114,    44,    45,   265,   266,  1022,    82,
    2985      945,   876,   110,   272,   934,   935,   112,   110,   116,   939,
    2986      279,   109,  1042,   116,   944,   945,   110,   876,   109,  1087,
    2987     1085,   110,   116,  1087,  1092,   115,   116,   116,  1092,   876,
    2988      944,    72,   243,    74,    75,    76,   109,     1,   111,   969,
    2989      944,  1239,    83,    84,   117,   118,   110,   906,   110,   127,
    2990     1485,   807,   116,    82,   116,     3,  1001,   553,   554,   328,
    2991     1125,   110,    10,    11,    12,    13,    14,   116,  1109,   561,
    2992      562,  1001,    10,    11,    12,    13,    14,   110,   110,   348,
    2993      349,   685,   118,   116,   116,    49,   128,  1019,  1020,   110,
    2994      733,    39,  1022,  1023,    94,   116,   365,   555,   556,  1534,
    2995      369,    39,    10,    11,    12,    13,    14,   110,   109,   110,
    2996      111,   380,  1042,   116,     3,   109,   110,   111,   876,    67,
    2997      876,    10,    11,    12,    13,    14,  1150,   396,  1326,    67,
    2998      111,    39,  1330,   557,   558,   559,   560,   406,  1042,   131,
    2999      109,   105,    58,    59,    60,  1077,  1078,   109,   109,   113,
    3000       39,   109,  1082,   111,   109,   424,   111,  1087,   109,    67,
    3001      111,   430,  1092,   432,    72,   112,   112,  1042,    76,   380,
    3002      109,  1101,   111,   110,   110,    83,    84,   112,    67,  1109,
    3003      110,    72,   146,  1042,   110,    76,   944,   110,   110,     0,
    3004        1,   155,    83,    84,  1124,  1042,  1194,  1195,   467,  1197,
    3005     1211,   109,   109,   472,   111,   111,  1204,     0,  1206,   117,
    3006      118,   480,   112,   114,   116,   484,   131,   114,   109,   488,
    3007     1150,    32,   491,   110,   493,   109,   117,   118,   114,  1427,
    3008      112,     4,     5,     6,     7,     8,     9,   110,   112,    32,
    3009       72,   205,    74,    75,    76,   209,   112,   112,  1004,   112,
    3010       43,    83,    84,   130,  1278,    66,    49,   116,    69,   528,
    3011       33,   130,  1192,  1193,   533,    29,   130,   110,   110,     1,
    3012       63,   112,   110,    66,   114,   239,    69,   109,   112,  1193,
    3013      491,  1211,   493,   116,  1042,  1215,  1042,   115,   115,  1193,
    3014       72,  1150,    74,    75,    76,  1227,    69,   115,    71,  1229,
    3015      109,    83,    84,  1233,   110,   130,   132,   271,   110,   116,
    3016      274,  1215,   110,   110,   583,     3,   110,   921,   110,  1233,
    3017      116,   590,    10,    11,    12,    13,    14,  1259,   115,  1233,
    3018      294,   110,   601,   110,   603,  1267,  1268,  1269,   110,   110,
    3019     1215,  1382,   110,   307,   110,   156,    29,   110,  1278,  1279,
    3020      110,    39,  1519,   622,   147,   110,  1215,  1287,   110,   110,
    3021      110,   110,  1292,   130,  1362,   110,   131,   160,  1215,   638,
    3022     1229,   112,   116,   112,   643,   110,   110,   341,   116,    67,
    3023      110,   345,   130,   652,   109,   654,   655,   656,  1292,   116,
    3024      114,   112,   185,   186,   110,  1325,   110,   110,  1509,  1331,
    3025      364,   116,   112,  1509,   368,  1509,  1509,   371,  1509,   110,
    3026      221,  1325,   116,  1509,  1509,   110,   209,  1292,   116,   688,
    3027      110,  1325,   109,   692,   109,   694,   112,   109,   221,   698,
    3028      109,   109,   643,  1292,  1192,  1193,  1192,   706,   130,   112,
    3029      251,   132,  1510,   115,  1485,  1292,  1510,   464,   110,   110,
    3030      719,   720,  1382,   110,   128,   115,   115,  1215,   251,  1215,
    3031      114,   112,   426,   427,   733,    72,  1534,   132,  1398,    76,
    3032     1534,    49,   265,   110,   112,  1233,    83,    84,  1082,   112,
    3033     1381,   692,   116,   694,   110,    63,   110,   698,    66,   110,
    3034      454,    69,   112,  1423,   112,   112,   110,   112,    47,   112,
    3035      112,   132,   109,   467,   111,   132,   115,   132,   110,  1423,
    3036      117,   118,   115,   132,   110,  1445,   132,   115,   112,  1423,
    3037      252,   112,  1452,   112,  1454,   130,  1456,   112,   492,  1287,
    3038      494,  1287,   496,   112,  1292,   328,  1292,   112,   110,  1509,
    3039      110,  1445,   506,   112,   508,   814,  1509,   511,  1452,   513,
    3040      514,  1509,   112,   109,   109,  1485,   349,   826,   109,    60,
    3041     1490,   525,  1492,   110,   110,   109,   114,  1325,   132,   147,
    3042     1445,   112,   112,  1503,  1519,   110,   112,  1452,   110,  1509,
    3043     1510,    96,   160,    96,   109,   109,  1445,  1510,   115,  1519,
    3044       57,   110,   110,  1452,    55,   132,   110,    42,  1445,  1503,
    3045      869,   110,     0,     1,  1534,  1452,   875,   130,   186,   116,
    3046      671,  1534,   132,   406,   110,   579,     4,     5,     6,     7,
    3047        8,     9,   433,   110,   132,    96,   590,    96,  1503,   898,
    3048      132,   209,   110,   132,    32,   110,    97,   132,   907,   106,
    3049      909,   115,   109,   221,  1503,   110,   110,   916,    85,    86,
    3050       87,    49,   112,   112,   671,   132,  1503,   621,   869,   109,
    3051      132,   115,   626,   115,   875,  1423,   110,   110,   632,   132,
    3052      939,    69,   109,   484,   111,   110,   113,   114,   110,   667,
    3053     1058,    69,   563,    71,   564,   979,   565,  1445,   155,  1445,
    3054      959,   484,   567,  1215,  1452,   488,  1452,    72,   566,    74,
    3055       75,    76,  1473,  1368,   973,   916,  1544,   105,    83,    84,
    3056     1122,  1330,   981,  1302,  1073,   526,   985,   685,  1452,   685,
    3057      914,   685,  1092,   698,   973,    66,   922,   583,   869,   649,
    3058      791,   941,   193,   723,   109,   467,   111,   484,  1233,    -1,
    3059      801,    82,   117,   118,   733,  1503,    -1,  1503,   571,   147,
    3060      328,   218,   571,    -1,   815,   216,   571,   155,   156,   723,
    3061       -1,    -1,   973,    -1,    -1,   226,  1035,    -1,    -1,    -1,
    3062       -1,    -1,    -1,    -1,   791,    -1,   117,    -1,    -1,    -1,
    3063      591,   745,    -1,    -1,   801,    -1,    -1,    -1,   186,    -1,
    3064       -1,    -1,    -1,    -1,    -1,    -1,   528,    -1,   815,    -1,
    3065       -1,   533,    -1,   201,  1073,   272,   204,   205,   601,    -1,
    3066      603,   209,   279,    -1,    -1,    -1,    -1,    -1,  1087,   160,
    3067       -1,    -1,    -1,  1092,   635,   636,   637,    -1,   406,    -1,
    3068       -1,    -1,   230,   294,    -1,    -1,   234,    -1,   236,    -1,
    3069     1109,   805,   653,    -1,    -1,    -1,   810,   245,    -1,    -1,
    3070     1454,   583,  1456,   251,    -1,    -1,    -1,    -1,   256,    -1,
    3071      696,    -1,  1073,    -1,    -1,    -1,    -1,    -1,   266,    -1,
    3072       -1,    72,    -1,    74,    75,    76,   274,    -1,    -1,    -1,
    3073      221,   348,    83,    84,    -1,    -1,  1490,    -1,  1492,    -1,
    3074       -1,    -1,    -1,    -1,    -1,   688,    -1,    -1,   365,    -1,
    3075      711,    -1,   369,    -1,    -1,    -1,     0,    -1,   109,    -1,
    3076      111,    10,    11,    12,    13,    14,   117,   118,   259,  1188,
    3077       -1,    -1,   654,   264,   656,    -1,   719,   720,    -1,   130,
    3078       -1,    -1,    -1,    -1,   898,    -1,    -1,    -1,    32,    -1,
    3079       39,   905,  1211,   341,    -1,    -1,    -1,   345,    -1,    -1,
    3080       -1,    -1,   788,   351,    -1,    -1,    -1,   921,  1019,  1020,
    3081       -1,    -1,    -1,    -1,    -1,   432,   364,    -1,    67,    -1,
    3082      368,    -1,    -1,   371,   706,    69,    -1,  1188,    -1,   943,
    3083      944,   945,   443,  1252,    -1,  1254,  1255,    -1,    -1,    -1,
    3084       -1,    -1,   803,    -1,    10,    11,    12,    13,    14,    -1,
    3085      811,    -1,  1019,  1020,    -1,    -1,    -1,    -1,   469,   350,
    3086      109,    -1,   111,    -1,    -1,    -1,  1077,  1078,   117,   118,
    3087      418,   814,    -1,    39,    -1,    -1,    -1,    -1,    -1,   865,
    3088       -1,    -1,    -1,   826,    -1,   433,    -1,  1001,    -1,    -1,
    3089      438,    -1,    -1,    -1,    -1,   506,    -1,    -1,   446,    -1,
    3090      511,    67,    -1,   514,    -1,    -1,    -1,    -1,    -1,    -1,
    3091     1077,  1078,   156,    -1,    -1,   876,   464,    -1,    -1,   467,
    3092       -1,    -1,   908,    -1,    10,    11,    12,    13,    14,    -1,
    3093       -1,    -1,    -1,    -1,   482,    -1,   484,    -1,    -1,    -1,
    3094      431,    -1,    -1,   109,   492,   111,    -1,    -1,   496,    -1,
    3095       -1,   117,   118,    39,    -1,    -1,    -1,    -1,    -1,    -1,
    3096       -1,    -1,  1381,  1382,   907,    -1,   909,   953,  1082,    -1,
    3097       -1,  1390,  1391,   590,    -1,    -1,    -1,   525,   526,    -1,
    3098       -1,    67,   473,   944,    -1,    -1,   230,    -1,    -1,    -1,
    3099       -1,    -1,    -1,    -1,    -1,    -1,   939,    -1,    -1,    -1,
    3100       -1,    -1,   988,    -1,    -1,   622,    -1,   251,    -1,  1428,
    3101     1124,    -1,   256,    -1,    -1,    -1,    -1,     0,    -1,    -1,
    3102       -1,   638,    -1,   109,   572,   111,    -1,    -1,    -1,    -1,
    3103       -1,   117,   118,    -1,    72,   652,    74,    75,    76,    -1,
    3104       -1,    -1,   590,   591,    -1,    83,    84,    -1,  1259,    32,
    3105       -1,    -1,    -1,  1039,    -1,   603,  1267,  1268,  1269,   670,
    3106     1227,  1022,  1023,    -1,    -1,    -1,  1485,  1486,   679,    -1,
    3107       -1,   109,   683,   621,    -1,    -1,  1495,   959,   626,   117,
    3108      118,  1042,    -1,    -1,   632,    -1,    69,   635,   636,   637,
    3109     1509,  1510,  1259,    -1,    -1,    -1,    -1,  1211,    -1,   981,
    3110     1267,  1268,  1269,   985,   595,   653,    72,   351,    74,    75,
    3111       76,    -1,    -1,    -1,    -1,  1534,   733,    83,    84,  1233,
    3112     1331,    -1,    -1,   671,    -1,    -1,    10,    11,    12,    13,
    3113       14,    -1,   623,  1119,   682,    -1,    -1,   628,    -1,    -1,
    3114       -1,    -1,    -1,   109,  1087,   111,    -1,    -1,    -1,  1092,
    3115       -1,   117,   118,  1035,    -1,    39,    -1,    -1,    -1,    -1,
    3116      708,    -1,    -1,   711,  1331,    -1,    -1,    66,    -1,    -1,
    3117       -1,    -1,   720,   156,   418,   723,    -1,    -1,    -1,    -1,
    3118       -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,   433,
    3119       74,    75,    76,    -1,   438,  1181,  1182,   745,   746,    83,
    3120       84,    -1,   446,   751,    -1,    -1,    -1,    -1,   699,    -1,
    3121       -1,  1325,    -1,    -1,    -1,    -1,    -1,    -1,   117,    -1,
    3122      464,    -1,   713,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3123       -1,  1192,  1193,   117,   118,    -1,    -1,    -1,   482,    -1,
    3124      484,    -1,    -1,   791,    -1,    -1,    -1,    -1,    -1,    -1,
    3125       -1,    -1,    -1,   801,  1215,   803,    -1,   805,    -1,    -1,
    3126      808,   160,   810,   811,    -1,    -1,    -1,   815,   251,    -1,
    3127       -1,    -1,  1233,   256,    -1,    -1,    -1,   825,    -1,    -1,
    3128       -1,   898,   526,    -1,    -1,    -1,    -1,    -1,    -1,   900,
    3129       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3130       19,    20,    21,    22,    23,    24,    25,    26,    27,  1423,
    3131       -1,    30,    31,    32,    -1,    -1,   807,  1278,  1279,    -1,
    3132       39,     0,   221,    -1,    -1,    -1,  1287,    -1,   876,    -1,
    3133       -1,  1292,    -1,    -1,    72,    -1,    74,    75,    76,    -1,
    3134     1454,    -1,  1456,    -1,    -1,    83,    84,   591,    67,    -1,
    3135      898,    -1,    -1,    32,    -1,    74,    75,   905,   906,    -1,
    3136      259,   909,    -1,    -1,  1325,   264,    -1,    -1,   351,    -1,
    3137     1252,   109,  1254,  1255,    -1,    -1,  1490,    -1,  1492,   117,
    3138      118,    -1,    -1,    -1,    -1,    -1,    -1,   935,    -1,    -1,
    3139       69,   635,   636,   637,    -1,   943,   944,    -1,   117,   118,
    3140     1386,    -1,    -1,    -1,    -1,  1519,    -1,    -1,    -1,   653,
    3141       -1,    -1,    -1,    -1,    -1,    -1,  1402,    -1,    -1,    -1,
    3142       -1,    -1,    -1,    -1,    -1,    -1,    -1,   671,    -1,    -1,
    3143       -1,    -1,    -1,    -1,    -1,   418,    -1,  1398,   682,    -1,
    3144       -1,    -1,  1053,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3145      433,   350,    -1,  1001,    -1,   438,    -1,    -1,    -1,    -1,
    3146       -1,    -1,  1423,   446,   708,    -1,  1014,   711,    -1,    -1,
    3147       -1,  1019,  1020,    -1,  1022,  1023,    -1,   156,    -1,    -1,
    3148       -1,   464,    -1,    -1,  1445,    -1,  1472,  1473,    -1,    -1,
    3149       -1,  1452,    -1,    -1,  1042,    -1,    -1,    -1,    -1,   482,
    3150       -1,   484,   746,    -1,    -1,    -1,    -1,    -1,  1390,  1391,
    3151       -1,    -1,    -1,  1004,    -1,    -1,    10,    11,    12,    13,
    3152       14,    -1,    10,    11,    12,    13,    14,    -1,    -1,  1077,
    3153     1078,    -1,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3154       -1,    -1,  1503,   526,    -1,    39,  1428,   791,    -1,    -1,
    3155       -1,    39,    -1,    -1,    -1,    -1,    -1,   801,    -1,   803,
    3156       -1,    -1,    -1,    -1,   808,    -1,  1509,   811,    -1,    -1,
    3157       -1,   815,   251,    67,   473,    -1,  1124,   256,    72,    67,
    3158       74,    75,    76,    -1,    72,    -1,    74,    75,    76,    83,
    3159       84,    -1,    -1,    -1,  1211,    83,    84,    -1,    -1,    -1,
    3160       -1,    -1,  1150,    -1,  1486,    -1,    -1,    -1,   591,    -1,
    3161       -1,    -1,    -1,  1495,    -1,   109,    -1,   111,    -1,    -1,
    3162       -1,   109,    -1,   117,   118,    -1,    -1,    -1,    -1,   117,
    3163      118,    -1,   876,    -1,    -1,    -1,    -1,    72,    -1,    74,
    3164       75,    76,    -1,    -1,    -1,  1193,    -1,    -1,    83,    84,
    3165       -1,    -1,   635,   636,   637,    -1,    -1,    -1,    -1,    -1,
    3166       -1,    -1,   906,  1211,    -1,    -1,    -1,  1215,    -1,    -1,
    3167      653,    -1,   351,    -1,   109,    -1,   111,    -1,    -1,  1227,
    3168       -1,  1229,   117,   118,    -1,  1233,    66,    -1,   671,    -1,
    3169     1301,    -1,    -1,    -1,    -1,    75,   595,    -1,    -1,   682,
    3170       -1,  1192,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3171       -1,  1259,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1267,
    3172     1268,  1269,    -1,    -1,   623,   708,    -1,    -1,   711,   628,
    3173     1278,  1279,    -1,    -1,    -1,    -1,    -1,   117,     0,   418,
    3174       -1,    -1,    -1,    -1,  1292,    -1,    -1,    -1,    -1,    -1,
    3175       -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,    -1,   438,
    3176       -1,    -1,    -1,   746,  1381,    -1,    -1,   446,    -1,    -1,
    3177       32,    -1,    -1,    -1,    -1,  1019,  1020,  1325,  1022,  1023,
    3178      160,    -1,    -1,  1331,    -1,   464,    -1,    -1,    -1,    -1,
    3179       -1,    -1,    -1,    -1,    -1,    -1,  1287,    -1,  1042,    -1,
    3180      699,    -1,    -1,   482,    -1,   484,    -1,    69,   791,    -1,
    3181       -1,    -1,    -1,    -1,   713,    -1,    -1,    -1,   801,    -1,
    3182      803,    -1,    -1,    -1,    -1,   808,    -1,    -1,   811,    -1,
    3183       -1,    -1,   815,  1077,  1078,    -1,    -1,    -1,    -1,    -1,
    3184       -1,   221,  1453,    -1,  1455,    -1,    -1,   526,    -1,    -1,
    3185     1398,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
    3186       53,    -1,    55,    -1,    -1,    58,    59,    60,    -1,    62,
    3187       -1,    -1,    -1,    -1,    -1,  1423,    -1,    -1,  1489,   259,
    3188     1491,    39,    -1,    76,   264,    -1,    -1,    -1,    -1,    -1,
    3189       -1,    -1,    -1,   876,   156,    88,    89,  1445,    -1,   279,
    3190       -1,    -1,    -1,    -1,  1452,    -1,  1150,    -1,   807,    67,
    3191       -1,    -1,   591,    -1,    72,    -1,    74,    75,    76,    -1,
    3192       -1,    -1,  1533,   906,  1535,    83,    84,    -1,    -1,    -1,
    3193       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1548,  1549,    -1,
    3194       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1193,
    3195       -1,   109,    -1,   111,    -1,  1503,   635,   636,   637,   117,
    3196      118,    -1,  1510,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3197      350,  1215,    -1,    -1,   653,    -1,    -1,    -1,    -1,    -1,
    3198       -1,    -1,    -1,  1227,    -1,  1229,    -1,    -1,    -1,   251,
    3199       -1,    -1,   671,    -1,   256,    -1,    -1,    -1,    -1,    -1,
    3200       -1,    -1,    -1,   682,    -1,    -1,    -1,    -1,    -1,    10,
    3201       11,    12,    13,    14,    -1,  1259,    -1,    -1,    -1,    -1,
    3202       -1,    -1,    -1,  1267,  1268,  1269,    -1,    -1,    -1,   708,
    3203       -1,    -1,   711,    -1,  1278,  1279,  1019,  1020,    39,  1022,
    3204     1023,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1292,    -1,
    3205       -1,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1042,
    3206       -1,    -1,    -1,    -1,    -1,    -1,    67,   746,   448,    -1,
    3207       -1,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
    3208       -1,    -1,    83,    84,    -1,    -1,    -1,  1331,    -1,   351,
    3209       -1,    -1,    -1,   473,  1077,  1078,    26,    27,    28,    -1,
    3210       -1,    -1,    -1,    -1,    -1,  1004,    -1,    -1,   109,    -1,
    3211       -1,    -1,   791,    -1,    -1,    -1,   117,   118,    -1,    -1,
    3212       -1,    -1,   801,    -1,   803,    -1,    -1,    -1,    -1,   808,
    3213       -1,    -1,   811,    -1,    -1,    -1,   815,    -1,    97,    98,
    3214       99,   100,   101,   102,   103,   104,   105,   106,   107,    -1,
    3215       -1,   344,    -1,   346,  1398,    -1,   418,    -1,    -1,    -1,
    3216       -1,    -1,    -1,    -1,   357,   358,    -1,  1150,    98,    -1,
    3217      100,   433,   131,    -1,    -1,    -1,   438,    -1,    -1,    -1,
    3218       -1,    -1,    -1,    -1,   446,    -1,    -1,    -1,    -1,    -1,
    3219       -1,    -1,    -1,    -1,    -1,    -1,    -1,   876,    -1,    -1,
    3220       -1,  1445,   464,    -1,    -1,    -1,    -1,    -1,  1452,    -1,
    3221     1193,    -1,    -1,    -1,    -1,   595,    -1,    -1,    -1,    -1,
    3222      482,    -1,   484,    -1,    -1,    -1,    -1,   906,    -1,    -1,
    3223       -1,    -1,  1215,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3224       -1,    -1,    -1,   623,  1227,    -1,  1229,    -1,   628,    -1,
    3225       -1,   181,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1503,
    3226       -1,   191,   192,    -1,   526,    -1,   196,    -1,   198,   199,
    3227       -1,    -1,    -1,    -1,    -1,    -1,  1259,    -1,    -1,    -1,
    3228       -1,    -1,    -1,    -1,  1267,  1268,  1269,    -1,    -1,    -1,
    3229       -1,    -1,    -1,  1192,    -1,  1278,  1279,    -1,    -1,    -1,
    3230       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1292,
    3231       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   699,
    3232       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   591,
    3233       -1,    -1,    -1,   713,    -1,    -1,    -1,    -1,    -1,    -1,
    3234     1019,  1020,    -1,  1022,  1023,    -1,    -1,    -1,  1331,    -1,
    3235       -1,    -1,    -1,   733,    -1,    -1,    -1,    -1,    -1,    -1,
    3236       -1,    -1,    -1,  1042,     7,    -1,    -1,    10,    11,    12,
    3237       13,    14,    -1,   635,   636,   637,    -1,    -1,    -1,    -1,
    3238       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1287,    -1,
    3239       -1,   653,    -1,    -1,    37,    38,    39,    40,  1077,  1078,
    3240       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   671,
    3241       -1,    -1,    -1,    -1,    -1,  1398,    -1,    -1,    -1,    -1,
    3242      682,    -1,    -1,    66,    67,    -1,    -1,   807,    -1,    72,
    3243       -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
    3244       83,    84,    -1,    86,    87,    -1,   708,    -1,    -1,   711,
    3245       -1,    -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,
    3246       -1,    -1,  1445,    -1,    -1,    -1,   109,    -1,   111,  1452,
    3247       -1,  1150,    -1,    -1,   117,   118,   119,   120,   121,   122,
    3248       -1,    -1,    39,    -1,   746,    -1,    -1,    -1,    -1,    -1,
     2888       0,     1,   186,    43,   239,   185,   204,     0,    43,   219,
     2889      43,   116,   185,   521,   534,   185,     1,   875,   186,     0,
     2890       1,   185,   757,    51,   647,   603,   750,   185,     0,     1,
     2891     281,   621,    32,   750,  1041,     0,  1022,    43,   185,    32,
     2892     345,   185,   750,    43,   168,   169,   513,   349,   875,    49,
     2893     156,    32,   603,    32,     0,   693,    49,   349,   187,     0,
     2894      32,   572,    57,    63,   601,  1322,    66,    32,    43,    69,
     2895      63,     0,     1,    66,   696,    63,    69,  1399,   734,   492,
     2896       0,   109,   266,   496,    69,   265,    32,   601,    69,    39,
     2897      39,    32,   265,   490,    66,   265,   201,    69,   266,   601,
     2898      39,   265,    43,    32,   604,   105,   601,   265,    49,    49,
     2899     610,   106,    32,   113,   109,   418,   116,   117,   265,    82,
     2900      66,   265,    63,    63,    39,    66,    66,    39,    69,    69,
     2901     601,   984,   261,   262,   284,   438,    43,    66,    28,   601,
     2902      69,   105,    72,   446,   132,   185,   146,   147,  1470,   601,
     2903     185,    72,   185,    49,   147,   155,   156,   307,   308,   109,
     2904     160,   111,   111,  1420,    39,   787,    82,   160,    72,   364,
     2905     109,    39,   111,   368,  1021,  1022,    82,   482,    96,   185,
     2906     688,  1034,   906,  1116,   156,   185,   186,  1120,    78,   906,
     2907     156,   155,     0,   186,   110,   345,   488,   109,   906,   111,
     2908     410,   201,   132,    96,   122,   111,   147,   147,   605,   209,
     2909     185,   132,   609,   117,  1041,    64,   209,   113,   109,   160,
     2910     160,   221,   406,   218,    32,   265,   109,   110,   221,   122,
     2911     265,   381,   265,   630,   109,   256,   111,   634,   406,   239,
     2912    1226,   109,   864,   111,   185,   186,   186,   825,   719,   221,
     2913     146,   251,   987,   504,    57,    44,    45,   719,   251,   259,
     2914     109,   426,   427,   901,   264,   265,   266,   719,   209,   209,
     2915     251,   271,   251,   266,   825,   221,   813,   272,   185,   251,
     2916     221,   221,  1289,   794,   279,   907,   251,   109,   696,    85,
     2917    1276,   396,   221,  1502,   294,    49,   480,   636,   637,   813,
     2918     109,   603,   925,   106,  1453,   251,   109,   307,  1053,  1054,
     2919     251,   813,   480,   209,   653,   815,   621,   113,   813,   424,
     2920    1529,   626,   251,   323,   265,   430,   115,   433,   328,   494,
     2921     952,   251,    95,    44,    45,   328,   107,   112,  1487,   116,
     2922    1489,   341,   813,   239,   109,   345,   111,   109,   513,   349,
     2923     350,   813,   155,   348,  1212,   132,   934,     0,   110,   113,
     2924     131,   813,    44,    45,   364,   987,   129,  1473,   368,   131,
     2925     365,   371,   711,  1479,   369,   271,   116,   341,   130,   682,
     2926      72,    11,    74,    75,  1129,  1212,   228,   328,   328,    32,
     2927     130,    83,    84,  1499,  1050,   590,   396,   418,  1504,   114,
     2928     550,   551,   552,   114,   350,   247,   406,   371,   349,  1395,
     2929    1000,   307,   110,   406,   579,   218,  1038,   438,   116,   933,
     2930     526,   109,   114,   111,   424,   446,   426,   427,  1275,  1276,
     2931     430,   933,   114,   433,    72,  1442,   110,   632,   933,   110,
     2932      72,   746,  1449,   251,  1502,    83,    84,   110,   256,   345,
     2933     847,    83,    84,   116,   454,   209,   130,   119,   120,   130,
     2934     968,   433,  1289,   802,  1522,   406,   406,   433,   110,   272,
     2935     112,  1529,   472,   111,   116,   128,   279,   110,   131,   111,
     2936     480,   116,   482,   116,   484,   591,   737,   480,   488,   131,
     2937     132,   484,    70,  1500,   494,    73,  1118,   132,    76,   907,
     2938      78,    90,    91,   484,   688,  1128,   506,    85,   508,  1009,
     2939    1010,   511,   484,   513,   514,   982,   482,   271,   116,   484,
     2940     688,   521,  1100,   825,   648,   525,   526,   473,   657,   942,
     2941     426,   427,   130,   825,  1387,  1388,   125,   126,   484,   109,
     2942     294,   111,   939,   484,   952,   348,   110,   488,  1395,   116,
     2943     655,   116,   116,   307,   526,   484,  1178,  1179,    72,   116,
     2944     526,   525,   365,   130,   484,    72,   369,    74,    75,    83,
     2945      84,   571,   572,    88,    89,   132,    83,    84,  1086,   579,
     2946    1403,    72,     3,  1091,     4,     5,     6,     7,     8,     9,
     2947     590,   591,    83,    84,    72,   595,   116,   111,   494,     3,
     2948     905,   601,     1,   603,   111,    83,    84,   757,   251,   804,
     2949     418,   116,   132,   256,   809,  1442,     0,   513,   110,   591,
     2950     111,   621,  1449,     0,   116,   591,   626,   622,   628,   432,
     2951     438,   109,   632,  1289,   212,   635,   636,   637,   446,   111,
     2952     111,   113,   113,   638,   112,   109,   938,   111,   116,    69,
     2953     116,    71,   862,   653,   116,   655,   109,   652,   130,   130,
     2954     601,   682,   603,   635,   636,   637,   132,   109,   116,   111,
     2955     132,   591,   882,  1500,  1497,   116,   484,   623,   116,  1502,
     2956     116,   653,   131,   579,   132,   685,    72,   708,   688,   116,
     2957      76,   132,   116,   109,   132,  1000,   132,    83,    84,  1522,
     2958     454,   279,   897,    72,   810,   132,  1529,  1363,   132,   944,
     2959    1118,   711,   712,   713,    83,    84,   110,   109,   116,   719,
     2960     720,   116,   116,   109,   908,   621,   906,    92,    93,   110,
     2961     626,   117,   118,   906,   132,   116,   906,   132,   733,   711,
     2962     908,   109,   906,   110,   868,   745,   746,   688,   906,   116,
     2963     750,   751,   506,   699,   508,   109,   109,   511,   111,   906,
     2964     514,  1383,   906,   110,   117,   118,   294,   713,   112,   116,
     2965    1178,  1179,   116,   109,   352,   418,   354,  1399,   719,   720,
     2966     746,   745,  1506,   109,   112,   111,  1306,   590,   116,  1506,
     2967    1446,   109,  1448,   111,   794,   438,   109,   112,  1506,   117,
     2968     118,   116,   802,   446,   804,    72,   806,    74,    75,   809,
     2969     810,   110,   109,   813,   111,  1013,    83,    84,   110,   622,
     2970     117,   118,    72,   110,   116,   825,    76,   110,   112,   116,
     2971     802,   110,   116,    83,    84,   638,   110,   116,   810,   482,
     2972     110,   484,  1147,   112,   810,  1501,   116,  1469,  1470,   652,
     2973    1000,   115,   116,   252,    10,    11,    12,    13,    14,   109,
     2974     806,   111,   110,   111,   442,  1116,   109,   117,   118,  1120,
     2975    1121,   110,   813,   117,   682,   875,   110,   116,     3,   123,
     2976     124,   110,   116,    39,   825,    10,    11,    12,    13,    14,
     2977     810,  1041,    58,    59,   875,   110,   110,   897,   426,   427,
     2978     708,   116,  1086,   875,   904,   905,   906,  1091,   908,   110,
     2979     110,    67,  1036,   109,    39,    72,   116,   115,  1086,    76,
     2980     920,  1226,   109,  1091,   111,   109,    83,    84,  1123,   875,
     2981     733,   685,    64,   933,   934,   110,   115,   116,   938,   905,
     2982     904,   116,    67,   943,   944,    72,   875,    74,    75,    76,
     2983       0,     1,   109,    44,    45,   875,    83,    84,   943,   132,
     2984     117,   118,   943,   110,    66,   906,   109,   908,   968,   116,
     2985     109,   943,   111,   109,  1482,  1383,   553,   554,   506,    29,
     2986      30,   112,    32,   511,   132,  1236,   514,   506,   109,   508,
     2987     111,  1399,   511,    43,   911,   514,   913,   938,   114,    49,
     2988    1000,   555,   556,  1108,   114,   114,    72,    57,    74,    75,
     2989      76,   561,   562,    63,   943,   117,    66,    83,    84,    69,
     2990     132,  1021,  1022,  1531,   132,     4,     5,     6,     7,     8,
     2991       9,   109,    82,    83,   557,   558,   559,   560,    82,   682,
     2992     568,  1041,     4,     5,     6,     7,     8,     9,   944,  1021,
     2993    1022,    85,    86,    87,   109,  1021,   106,  1003,   160,   109,
     2994    1041,  1469,  1470,   109,   112,   708,   116,   875,   467,  1041,
     2995      82,    33,  1323,   118,   127,   109,  1327,   111,    94,   113,
     2996     114,  1081,   109,   110,   111,   128,  1086,   109,   110,   111,
     2997      69,  1091,    71,   131,   897,  1041,   111,   147,   109,   109,
     2998    1100,   110,   110,   746,  1000,   155,     3,    69,  1108,    71,
     2999     160,   112,  1041,    10,    11,    12,    13,    14,   112,   221,
     3000     112,  1041,   110,  1123,   109,   110,   111,   110,   110,   528,
     3001     110,   109,   110,   111,   533,   185,   186,    72,   109,    74,
     3002      75,    76,    39,   112,   111,  1086,   114,  1147,    83,    84,
     3003    1091,   201,   116,   132,   131,   733,   114,   259,   114,   209,
     3004     109,   112,   264,    58,    59,    60,   920,   110,   218,   110,
     3005      67,   221,   112,  1424,   109,   112,   111,   130,   228,   112,
     3006     112,  1147,   117,   118,   583,  1249,  1250,  1251,   130,  1189,
     3007    1190,   130,   116,   243,    29,   130,   110,   247,   110,   112,
     3008     115,   251,   252,   114,   112,  1190,   110,   116,  1208,  1190,
     3009     115,   109,  1212,   115,   110,   265,   266,  1189,  1190,   110,
     3010     130,   110,   272,   116,   110,   132,  1226,     3,   110,   279,
     3011    1230,  1212,   875,  1041,    10,    11,    12,    13,    14,   110,
     3012    1212,   116,   110,  1189,  1208,  1230,   110,   110,   350,  1230,
     3013     110,   110,   110,   110,     1,   654,   110,   656,  1230,   110,
     3014    1189,  1190,   905,    39,   110,   110,  1212,   110,    72,   110,
     3015      74,    75,    76,   115,  1379,  1275,  1276,    29,   328,    83,
     3016      84,  1516,   131,  1212,  1284,   110,   130,   116,   875,  1289,
     3017     112,    67,  1212,   112,   110,   110,   116,   110,   348,   349,
     3018     130,  1230,    49,  1275,  1276,   109,   109,   706,  1289,  1275,
     3019     116,   112,  1284,   117,   118,   365,   114,  1289,   110,   369,
     3020     110,   110,  1322,  1507,   112,   116,  1506,  1081,   110,   431,
     3021     380,   116,   116,  1506,    55,   110,  1506,  1322,  1284,  1507,
     3022     110,  1322,  1506,  1289,   112,   109,   396,  1531,  1506,   109,
     3023    1322,   109,   109,   109,   132,  1284,   406,   130,   105,  1506,
     3024    1289,   112,  1506,  1531,   110,   115,   113,   110,   110,  1289,
     3025     115,   473,   110,   128,   424,   115,    97,  1482,   114,  1379,
     3026     430,   112,   432,  1378,   132,   112,   116,   112,   110,    72,
     3027     110,    74,    75,  1322,   110,  1395,   110,   112,  1041,   146,
     3028      83,    84,   112,   112,  1212,  1208,   112,    72,   155,    74,
     3029      75,    76,   112,    72,   112,    74,    75,   467,    83,    84,
     3030    1420,    47,   472,  1395,    83,    84,   109,   132,   132,   132,
     3031     480,   114,   112,   132,   484,  1420,   132,   115,   488,  1420,
     3032     110,   491,  1442,   493,   109,   130,   115,   110,  1420,  1449,
     3033     109,  1451,   112,  1453,   115,   114,   112,  1044,   205,   112,
     3034     112,  1442,   209,   112,   110,   110,  1506,   109,  1449,   112,
     3035    1442,  1506,   193,  1506,   112,   109,   109,  1449,   528,    60,
     3036     110,  1289,  1482,   533,   132,   110,   114,  1487,   109,  1489,
     3037     112,  1420,   239,   595,   112,   216,  1442,   110,   112,   110,
     3038    1500,    96,    96,  1449,  1147,   226,  1506,  1507,   109,   109,
     3039     464,   115,   132,  1442,  1507,   130,  1516,   110,   110,  1500,
     3040    1449,   623,  1442,   110,   271,   110,   628,   274,  1500,  1449,
     3041     116,  1531,    42,   583,   132,   132,   110,   110,  1531,    66,
     3042     590,    96,    96,   132,   110,   110,   110,   294,    75,   132,
     3043     132,   601,   110,   603,  1500,   115,   112,   132,   115,   958,
     3044     307,   112,   109,   132,   110,  1506,    30,   115,   110,  1212,
     3045     132,  1500,   622,   294,   110,  1378,   110,   667,  1057,   563,
     3046    1500,   980,   978,  1226,   565,   984,  1212,  1365,   638,   564,
     3047     117,   464,   566,   643,   341,   567,  1470,   699,   345,  1541,
     3048    1299,  1327,   652,  1121,   654,   655,   656,  1072,  1449,   685,
     3049     685,   713,   913,   698,    66,  1091,   921,   364,    82,    83,
     3050    1516,   368,   583,   972,   371,  1212,   868,   723,   649,   940,
     3051      82,  1230,   484,   160,  1442,  1034,     0,     1,   688,   733,
     3052     571,  1449,   692,   571,   694,   571,  1289,    72,   698,    74,
     3053      75,    76,    -1,    -1,    -1,    -1,   706,    -1,    83,    84,
     3054      -1,    -1,    -1,  1191,  1192,   117,  1194,    -1,    32,   719,
     3055     720,    -1,    -1,  1201,    -1,  1203,    -1,    -1,    -1,   426,
     3056     427,    -1,    -1,   733,   109,    49,    -1,    10,    11,    12,
     3057      13,    14,  1500,    -1,   221,    -1,    -1,  1451,    -1,  1453,
     3058      -1,    -1,    -1,    -1,   806,    69,    -1,   454,   160,    -1,
     3059      85,    86,    87,    -1,    -1,    -1,    39,   671,  1305,    -1,
     3060     467,    -1,   443,    -1,    -1,    -1,    -1,    10,    11,    12,
     3061      13,    14,   259,  1487,   109,  1489,   111,   264,   113,   114,
     3062      -1,   105,    -1,    -1,    67,   492,    -1,   494,   469,   496,
     3063      -1,    -1,   279,    -1,    -1,    -1,    39,    -1,    -1,   506,
     3064      -1,   508,    -1,   813,   511,    -1,   513,   514,    -1,   221,
     3065    1357,    -1,    -1,  1360,    -1,   825,    -1,    -1,   525,   243,
     3066      -1,    -1,    -1,   147,    67,   506,   109,    -1,   111,    -1,
     3067     511,   155,   156,   514,   117,   118,    -1,    -1,   671,  1442,
     3068      -1,    -1,    -1,    -1,    -1,    -1,  1449,   259,    -1,    -1,
     3069      -1,    -1,   264,    -1,    -1,    -1,  1403,    -1,   868,    -1,
     3070      -1,  1408,   186,   350,   874,    -1,   109,    -1,   111,    -1,
     3071      -1,  1359,   579,    -1,   117,   118,   790,   201,    -1,    -1,
     3072     204,   205,    -1,   590,    -1,   209,   800,   897,    -1,  1436,
     3073    1249,  1250,  1251,    -1,    -1,    -1,   906,  1500,   908,    -1,
     3074     814,    -1,    -1,    -1,    -1,   915,   230,    -1,    -1,    -1,
     3075     234,    -1,   236,    -1,   621,    -1,    -1,    -1,    -1,   626,
     3076      -1,   245,    -1,    -1,    -1,   632,     0,   251,   938,    -1,
     3077      -1,    -1,   256,    -1,    -1,    -1,    -1,    -1,   350,    -1,
     3078      -1,  1003,   266,    -1,   431,    -1,    -1,    -1,   958,    -1,
     3079     274,    10,    11,    12,    13,    14,   380,   790,    32,    -1,
     3080      -1,   448,   972,    -1,    -1,    -1,    -1,   800,    -1,    -1,
     3081     980,    -1,    -1,  1520,   984,    -1,    -1,    -1,   685,  1526,
     3082      39,   814,    -1,    -1,    -1,    -1,   473,    -1,    -1,   670,
     3083    1537,    -1,   671,    -1,  1541,    69,    -1,    -1,   679,    -1,
     3084      -1,    -1,   683,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3085      -1,    72,    -1,    74,    75,    76,   723,   341,    -1,   431,
     3086      -1,   345,    83,    84,  1034,    -1,    -1,   351,  1387,  1388,
     3087      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,    -1,
     3088     364,    -1,    -1,    -1,   368,    -1,    -1,   371,   109,    -1,
     3089     109,    -1,   111,    -1,    -1,    -1,   117,   118,   117,   118,
     3090      -1,   473,  1072,    -1,    -1,    -1,  1425,   491,    -1,   493,
     3091      -1,    -1,    -1,    -1,    -1,    -1,  1086,    -1,    -1,    -1,
     3092      -1,  1091,   156,    97,    98,    99,   100,   101,   102,   103,
     3093     104,   105,   106,   107,   418,    -1,    -1,   804,  1108,    -1,
     3094      -1,    -1,   809,    -1,  1018,  1019,    -1,    -1,   595,   433,
     3095      -1,   790,    -1,    -1,   438,    -1,    -1,   131,    -1,    -1,
     3096      -1,   800,   446,    -1,  1483,    -1,    -1,  1189,    -1,    -1,
     3097      -1,    -1,    -1,  1492,    -1,   814,   623,    -1,    -1,    -1,
     3098     464,   628,    72,   467,    74,    75,    76,    -1,    -1,    -1,
     3099      -1,    -1,    -1,    83,    84,    -1,   230,    -1,   482,    -1,
     3100     484,    -1,  1076,  1077,    -1,    -1,    -1,    -1,   492,    -1,
     3101      -1,    -1,   496,    -1,    -1,  1185,    -1,   251,    -1,   109,
     3102      -1,   111,   256,   595,    -1,  1018,  1019,   117,   118,    -1,
     3103     897,    -1,    -1,    -1,    -1,    -1,    -1,   904,  1208,    -1,
     3104      -1,   525,   526,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3105      -1,   623,   699,   920,    -1,    -1,   628,    -1,   899,   643,
     3106      -1,    -1,  1284,     0,    -1,    -1,   713,    -1,    -1,    -1,
     3107      -1,    -1,    -1,    -1,    -1,   942,   943,   944,    -1,  1249,
     3108    1250,  1251,    -1,  1076,  1077,    -1,   733,    -1,   572,    72,
     3109      -1,    74,    75,    76,    -1,    32,    -1,    -1,    -1,    -1,
     3110      83,    84,    -1,    -1,    -1,    -1,   590,   591,   692,    -1,
     3111     694,    -1,    -1,    -1,   698,    -1,    -1,   351,    72,   603,
     3112      74,    75,    76,    -1,    -1,    -1,   109,   699,   111,    83,
     3113      84,    -1,    69,  1000,   117,   118,    -1,   621,    -1,    -1,
     3114      -1,   713,   626,    -1,    -1,    -1,    -1,    -1,   632,    -1,
     3115    1224,   635,   636,   637,    -1,   109,    -1,   111,    -1,   806,
     3116      -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,   653,
     3117      -1,    -1,    -1,    26,    27,    28,    -1,    -1,    -1,  1018,
     3118    1019,    -1,  1256,    -1,   418,    -1,    -1,   671,    -1,    -1,
     3119    1264,  1265,  1266,    -1,    -1,    -1,    -1,    -1,   682,   433,
     3120      -1,    -1,    -1,    -1,   438,    -1,    -1,    -1,  1378,  1379,
     3121      -1,  1052,   446,    -1,  1081,    -1,    -1,  1387,  1388,   156,
     3122      -1,    -1,    -1,    -1,   708,    -1,    -1,   711,    -1,    -1,
     3123     464,  1224,    -1,    -1,   806,    -1,   720,  1076,  1077,   723,
     3124      -1,    -1,    -1,    -1,    -1,    98,    -1,   100,   482,    -1,
     3125     484,    -1,    -1,    -1,  1328,  1425,  1123,    -1,    -1,    -1,
     3126      -1,   745,   746,  1256,    -1,    -1,    -1,   751,    -1,    -1,
     3127      -1,  1264,  1265,  1266,    -1,    -1,    -1,    -1,    -1,    -1,
     3128      -1,    -1,    -1,    -1,   868,    -1,    -1,    -1,    -1,    -1,
     3129     874,    -1,   526,    -1,    -1,    -1,    -1,    26,    27,    28,
     3130      -1,    -1,    -1,    -1,    -1,    -1,   790,    -1,    -1,    -1,
     3131      -1,    -1,  1482,  1483,   251,    -1,   800,    -1,   802,   256,
     3132     804,    -1,  1492,   807,    -1,   809,   810,    -1,   181,    -1,
     3133     814,   915,    -1,    -1,    -1,  1328,  1506,  1507,   191,   192,
     3134     824,  1208,    -1,   196,    -1,   198,   199,    -1,    -1,    -1,
     3135      -1,    -1,    -1,    -1,    -1,    -1,  1003,   591,    -1,    -1,
     3136      -1,  1531,    -1,  1230,    -1,    -1,    -1,    -1,    -1,    98,
     3137      -1,   100,    -1,    -1,    -1,     0,    -1,    -1,    -1,    -1,
     3138      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   972,    -1,
     3139      -1,   875,    -1,    -1,    -1,    -1,   125,    -1,    -1,    -1,
     3140      -1,   635,   636,   637,    -1,    -1,    -1,    32,    -1,    -1,
     3141      -1,    -1,    -1,   897,   351,    -1,    -1,  1256,    -1,   653,
     3142     904,   905,    -1,    -1,   908,  1264,  1265,  1266,    -1,    -1,
     3143      -1,  1003,    -1,    -1,    -1,    -1,    -1,   671,    -1,    -1,
     3144      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,   682,    -1,
     3145     934,    -1,   181,    -1,    -1,  1322,    -1,  1298,   942,   943,
     3146     189,    -1,   191,   192,    -1,    -1,    -1,   196,    -1,   198,
     3147     199,    -1,    -1,    -1,   708,    -1,    -1,   711,    -1,    -1,
     3148      -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,  1072,  1328,
     3149      -1,    -1,    -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,
     3150      -1,   438,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   446,
     3151      -1,    -1,   746,    -1,    -1,    -1,  1000,    10,    11,    12,
     3152      13,    14,    -1,    -1,    -1,    -1,    -1,   464,    -1,  1013,
     3153      -1,   156,    -1,    -1,  1018,  1019,    -1,  1021,  1022,   268,
     3154      -1,    -1,  1189,    -1,    -1,   482,    39,   484,    -1,    -1,
     3155      -1,    -1,    -1,  1420,    -1,    -1,   790,  1041,    -1,    -1,
     3156      -1,    -1,    -1,    -1,    -1,    -1,   800,    -1,   802,    -1,
     3157      -1,    -1,    -1,   807,    67,    -1,   810,    -1,    -1,    72,
     3158     814,    74,    75,    76,  1451,    -1,  1453,    -1,    -1,   526,
     3159      83,    84,  1076,  1077,    -1,    -1,    -1,    -1,    -1,    -1,
     3160      -1,  1185,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1450,
     3161      -1,  1452,    -1,    -1,    -1,    -1,   109,  1189,   111,    -1,
     3162    1487,    -1,  1489,    -1,   117,   118,   251,    -1,    -1,    -1,
     3163      -1,   256,    -1,    -1,    -1,    -1,    -1,  1284,    -1,  1123,
     3164      -1,   875,    -1,    -1,    -1,  1486,    -1,  1488,    -1,  1516,
     3165      -1,    -1,    -1,    -1,   591,    -1,    -1,    -1,    -1,    -1,
     3166      -1,    -1,    -1,  1147,    -1,    -1,    -1,    -1,    -1,     0,
     3167      -1,   905,    -1,    -1,    -1,    -1,    -1,   189,    -1,    -1,
     3168      -1,    -1,    -1,    -1,   196,    -1,    -1,    -1,    -1,  1530,
     3169      -1,  1532,    -1,    -1,    -1,    -1,    -1,    -1,   635,   636,
     3170     637,    32,    -1,    -1,  1545,  1546,  1190,    -1,    -1,    -1,
     3171      -1,    -1,  1284,    -1,    -1,    -1,   653,    -1,    -1,    -1,
     3172      -1,    -1,   575,   576,  1208,    -1,   351,    -1,  1212,    -1,
     3173      -1,    -1,    -1,    -1,   671,    -1,    -1,    -1,    69,    -1,
     3174    1224,    -1,  1226,    -1,    -1,   682,  1230,    -1,    -1,    -1,
     3175      -1,   604,    -1,    -1,   607,   608,   268,   610,    -1,   612,
     3176     613,    -1,    -1,    -1,   617,   618,    -1,    -1,    -1,    -1,
     3177      -1,   708,  1256,    -1,   711,    -1,    -1,    -1,    -1,    -1,
     3178    1264,  1265,  1266,    -1,  1018,  1019,    -1,  1021,  1022,    -1,
     3179      -1,  1275,  1276,   418,    -1,    -1,    -1,    -1,    10,    11,
     3180      12,    13,    14,    -1,    -1,  1289,    -1,  1041,   433,   746,
     3181      -1,   323,    -1,   438,    -1,    -1,    -1,    -1,    -1,   331,
     3182      -1,   446,   334,    -1,    -1,   156,    -1,    39,    -1,    -1,
     3183      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1322,   464,
     3184      -1,    -1,  1076,  1077,  1328,    -1,   575,   576,    -1,    -1,
     3185      -1,    -1,    -1,   790,    -1,    67,    -1,   482,    -1,   484,
     3186      72,    -1,    -1,   800,    76,   802,    -1,    -1,    -1,    -1,
     3187     807,    83,    84,   810,    -1,   604,    -1,   814,   607,   608,
     3188      -1,   610,    -1,   612,   613,    -1,   398,    -1,   617,   618,
     3189     402,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,
     3190      -1,   526,   755,   756,    -1,   117,   118,    -1,    -1,    -1,
     3191      -1,  1395,    -1,  1147,    -1,    -1,    -1,    -1,    -1,    -1,
     3192     251,    -1,    -1,    -1,    -1,   256,    -1,    -1,    -1,    -1,
     3193      -1,    -1,    -1,    -1,    -1,    -1,  1420,    -1,   875,    -1,
    32493194      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3250       -1,    -1,    -1,    -1,    -1,    -1,    -1,   700,    -1,   702,
    3251       67,    -1,    -1,    -1,  1193,    72,   709,   710,    -1,    76,
    3252     1503,   714,    -1,    -1,    -1,    -1,    83,    84,    -1,   791,
    3253       -1,    -1,    -1,   726,    -1,    -1,  1215,    -1,   731,   801,
    3254       -1,   803,    -1,    -1,    -1,    -1,   808,    -1,  1227,   811,
    3255     1229,    -1,   109,   815,    -1,    -1,    -1,    -1,    -1,    -1,
    3256      117,   118,    -1,    -1,    -1,    -1,   759,    -1,    -1,    -1,
     3195      -1,    -1,    -1,    -1,    -1,    -1,  1190,    -1,  1442,    -1,
     3196      -1,    -1,    -1,    -1,    -1,  1449,   591,   479,   905,    -1,
     3197      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1212,    -1,
    32573198      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3258     1259,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1267,  1268,
    3259     1269,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1278,
    3260     1279,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3261       -1,    -1,    -1,  1292,   876,    -1,    -1,    -1,    -1,    -1,
    3262       -1,    -1,    -1,    -1,  1004,    -1,    -1,    -1,    -1,    -1,
    3263       -1,    -1,     7,    -1,    -1,    10,    11,    12,    13,    14,
    3264       -1,    -1,    -1,    -1,   906,   575,   576,    -1,    -1,    -1,
    3265       -1,    -1,  1331,    -1,    -1,    -1,    -1,    -1,    49,    -1,
    3266       -1,    -1,    37,    38,    39,    40,   859,   860,   861,   862,
    3267       -1,   864,    -1,    -1,   604,    66,    -1,   607,   608,    -1,
    3268      610,    -1,   612,   613,    -1,    -1,   879,   617,   618,    -1,
    3269       -1,    66,    67,    -1,    -1,    -1,    -1,    72,    -1,    -1,
    3270      893,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3271       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,  1398,
    3272       -1,    -1,   113,    -1,    -1,    -1,   117,    -1,    -1,    -1,
    3273       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3274      933,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
    3275       -1,    -1,    -1,    -1,    -1,   146,    -1,  1019,  1020,    -1,
    3276     1022,  1023,    -1,    -1,    -1,   156,  1445,    -1,    -1,   160,
    3277       -1,    -1,    -1,  1452,    -1,    -1,    -1,    -1,    -1,    -1,
    3278     1042,    -1,    -1,    -1,    -1,   978,    -1,    -1,    -1,    -1,
    3279       -1,   984,    -1,    -1,    -1,    -1,   989,    -1,    -1,    -1,
    3280       -1,   994,    -1,   996,    -1,    -1,    -1,  1000,    -1,  1002,
    3281     1003,    -1,  1192,  1006,    -1,  1077,  1078,    -1,   209,    -1,
    3282       -1,    -1,  1015,    -1,  1503,   755,   756,    -1,    -1,    -1,
    3283      221,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3284     1033,  1034,    -1,    -1,    -1,    -1,    -1,    -1,   239,    10,
    3285       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3286       21,    22,    23,    24,    25,    26,    27,  1060,    -1,    -1,
    3287     1063,    -1,    -1,   264,    -1,    -1,    -1,    -1,    39,    -1,
    3288      271,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1150,    -1,
    3289       -1,    -1,    26,    27,    28,    -1,    -1,    -1,    -1,    -1,
    3290       -1,    -1,    -1,   294,    -1,    -1,    67,  1287,    -1,    -1,
    3291       -1,    -1,    -1,  1106,    -1,    -1,   307,    -1,    -1,  1112,
    3292     1113,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3293       -1,  1193,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1132,
    3294       -1,    -1,    -1,  1136,    -1,    -1,    -1,    -1,  1141,    -1,
    3295       -1,    -1,    -1,  1215,   345,    -1,    -1,    -1,    -1,   350,
    3296       -1,  1154,    -1,    -1,    98,  1227,   100,  1229,    -1,    -1,
    3297       -1,    -1,    -1,    -1,  1167,    -1,  1169,  1170,  1171,  1172,
    3298       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   918,    -1,
    3299       -1,   125,  1185,    -1,  1187,    -1,    -1,  1259,  1191,    -1,
    3300       -1,    -1,    -1,    -1,    -1,  1267,  1268,  1269,    -1,    -1,
    3301       -1,    -1,    -1,    -1,    -1,    -1,  1278,  1279,    -1,    -1,
    3302       66,    -1,    -1,    -1,    -1,    -1,    -1,  1220,  1221,    75,
    3303     1292,    77,    -1,    79,    -1,   426,   427,    -1,    -1,    -1,
    3304       86,    -1,   433,    -1,    -1,    -1,    -1,   181,    -1,    -1,
    3305       -1,    -1,    -1,    -1,    -1,   189,    -1,   191,   192,    -1,
    3306       -1,    -1,   196,   454,   198,   199,    -1,    -1,    -1,  1331,
    3307       -1,   117,    -1,   119,   120,   121,    -1,  1270,  1271,    -1,
    3308       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1280,    -1,    -1,
    3309       -1,   482,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3310       -1,    -1,    -1,   494,    -1,    -1,    -1,    -1,    -1,    -1,
    3311       -1,    -1,    -1,    -1,   160,   506,    -1,   508,    -1,    -1,
    3312      511,    -1,   513,   514,    -1,    -1,    -1,    -1,    -1,    -1,
    3313       -1,    -1,    -1,    -1,   268,   526,  1398,    -1,    -1,    -1,
    3314       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1341,  1079,
    3315     1343,  1344,  1345,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3316       -1,    -1,  1355,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3317       -1,  1364,    -1,    -1,    -1,   221,    -1,   223,   224,   225,
    3318       -1,    -1,    -1,  1445,    -1,    -1,    -1,    -1,   579,    -1,
    3319     1452,    -1,    -1,    -1,    -1,    -1,  1389,    -1,    -1,    -1,
    3320      591,    -1,    -1,    -1,   595,    -1,    -1,    -1,    -1,    -1,
    3321       -1,    -1,    -1,   259,    -1,    -1,    -1,    -1,   264,    -1,
    3322       -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,
    3323      621,    -1,    -1,   279,    -1,   626,    -1,    -1,    -1,  1432,
    3324     1433,  1503,    -1,    -1,   635,   636,   637,    -1,    -1,    -1,
    3325       -1,    -1,  1445,    -1,    -1,    -1,    -1,    -1,    -1,  1452,
    3326       -1,    -1,   653,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3327       -1,    91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3328     1210,   101,   328,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3329       -1,  1484,    -1,    -1,   685,  1488,    -1,    -1,    -1,    -1,
    3330       -1,    -1,    -1,    -1,   350,    -1,    -1,    -1,    -1,   355,
    3331      356,    -1,    -1,    -1,    -1,    -1,    -1,   363,    -1,    -1,
    3332      711,    -1,   713,  1516,    -1,  1518,    -1,    -1,    -1,    -1,
    3333       -1,    -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,    -1,
     3199    1224,    -1,  1226,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3200      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    -1,
     3201     635,   636,   637,    -1,    -1,    -1,  1500,    -1,    -1,    -1,
     3202     351,    -1,  1256,  1507,    -1,    -1,   755,   756,   653,    -1,
     3203    1264,  1265,  1266,    39,    -1,    -1,    -1,    -1,    -1,    -1,
     3204      -1,  1275,  1276,    -1,    -1,    -1,   671,    -1,    -1,    -1,
     3205      -1,    -1,    -1,    -1,    -1,  1289,    -1,   682,    -1,   571,
     3206     572,    67,    -1,    -1,   917,    -1,    72,    -1,    74,    75,
     3207      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,
     3208      -1,  1018,  1019,   708,  1021,  1022,   711,   418,    -1,    -1,
     3209      -1,    -1,    -1,    -1,  1328,    -1,    -1,    -1,    -1,    -1,
     3210      -1,    -1,   433,   109,  1041,   111,    -1,   438,    -1,    -1,
     3211      -1,   117,   118,    -1,    -1,   446,    -1,    -1,    -1,    -1,
     3212      -1,   746,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3213      -1,    -1,    -1,   464,    -1,    -1,    -1,    -1,    -1,  1076,
     3214    1077,    -1,    -1,    -1,    -1,    -1,   658,    -1,    -1,    -1,
     3215     662,   482,    -1,   484,    -1,    -1,    -1,    -1,    -1,    -1,
     3216      -1,  1395,    -1,    -1,    -1,   790,    -1,    -1,    -1,    -1,
     3217      -1,    -1,    -1,    -1,    -1,   800,    -1,   802,    -1,    -1,
     3218      -1,    -1,   807,   912,    -1,   810,    -1,    -1,   917,   814,
     3219      -1,    -1,    -1,    -1,    -1,   526,    53,    -1,    55,    -1,
     3220      -1,    58,    59,    60,    -1,    62,    -1,    -1,  1442,    -1,
     3221    1147,    -1,    -1,    -1,    -1,  1449,    -1,    -1,    -1,    76,
     3222      -1,    -1,    -1,    -1,    -1,  1078,    -1,    -1,    -1,    -1,
     3223      -1,    88,    89,    -1,    10,    11,    12,    13,    14,    -1,
    33343224      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3335       -1,   171,    -1,  1546,  1547,   746,    -1,    -1,    -1,    -1,
    3336      406,  1554,  1555,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3337       -1,    -1,    -1,    -1,   194,    -1,    -1,    -1,   424,    37,
    3338       38,    -1,    40,   429,    -1,   431,    -1,    -1,   208,    -1,
    3339       -1,    -1,    -1,    -1,    -1,    -1,    -1,   217,    -1,    -1,
    3340       -1,    -1,   448,    -1,    -1,   451,   452,   227,    66,    -1,
    3341       -1,    -1,   803,   459,    72,    -1,   807,    -1,    76,    -1,
    3342      811,    79,    80,    81,    82,    83,    84,   473,    86,    87,
    3343       -1,    -1,   252,    -1,   480,    -1,    -1,   257,    -1,    -1,
    3344       -1,   575,   576,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3345      270,   109,    -1,   111,    -1,    -1,   276,    -1,   278,   117,
    3346      118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,    -1,
    3347      604,    -1,   130,   607,   608,   295,   610,    -1,   612,   613,
    3348       -1,    -1,    -1,   617,   618,    10,    11,    12,    13,    14,
     3225     875,    -1,    -1,  1190,    -1,    -1,    -1,    -1,    -1,    -1,
     3226     591,    -1,    -1,    39,    -1,    -1,  1500,    -1,    -1,    -1,
     3227      -1,    -1,    -1,    -1,    -1,  1212,    -1,    -1,    -1,    -1,
     3228     905,    -1,   794,    -1,    -1,    -1,    -1,  1224,    -1,  1226,
     3229      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
     3230      76,    -1,    -1,    -1,   635,   636,   637,    83,    84,    -1,
     3231      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1256,
     3232      -1,    -1,   653,    -1,    -1,    -1,    -1,  1264,  1265,  1266,
     3233      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,  1275,  1276,
     3234     671,   117,   118,    -1,    -1,   282,    -1,   284,   285,  1078,
     3235      -1,   682,  1289,    -1,  1207,   292,   293,    -1,    -1,    -1,
     3236      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3237     307,   308,    -1,    -1,    -1,    -1,    -1,   708,    -1,    -1,
     3238     711,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3239      -1,  1328,    -1,  1018,  1019,    -1,  1021,  1022,    -1,    -1,
     3240     912,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,    -1,
     3241      -1,    -1,    -1,    -1,    -1,   746,  1041,    10,    11,    12,
     3242      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3243      23,    24,    25,    26,    27,    28,    -1,    30,    31,    32,
     3244      -1,    -1,    -1,    -1,   381,    -1,    39,    -1,    -1,    -1,
     3245      -1,  1076,  1077,    -1,    -1,    -1,    -1,    -1,  1395,   790,
     3246      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   800,
     3247      -1,   802,    -1,    -1,    67,    -1,   807,   989,  1207,   810,
     3248      -1,    74,    75,   814,    -1,    78,    -1,   344,    -1,   346,
     3249      -1,    -1,    -1,    -1,  1006,    -1,    -1,    -1,    -1,    -1,
     3250     357,   358,    -1,    -1,    -1,  1442,    -1,    -1,    -1,    -1,
     3251      37,    38,  1449,    40,    -1,    -1,   109,    -1,   111,    -1,
     3252      -1,    -1,  1147,    -1,   117,   118,    -1,    -1,    -1,    -1,
     3253      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
     3254      -1,    -1,    -1,    -1,   875,    72,    -1,    -1,    -1,    76,
     3255      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3256      87,    -1,    -1,  1500,    -1,  1190,    -1,    -1,    -1,    -1,
     3257      -1,    -1,  1084,    -1,   905,    -1,    -1,    -1,    -1,    -1,
     3258      -1,    -1,   109,    -1,   111,    -1,    -1,  1212,    -1,    -1,
     3259     117,   118,   119,   120,   121,   122,    -1,    -1,    -1,  1224,
     3260      -1,  1226,     7,   130,    -1,    10,    11,    12,    13,    14,
     3261      -1,    -1,  1124,   550,   551,   552,   553,   554,   555,   556,
     3262     557,   558,   559,   560,   561,   562,   563,   564,   565,   566,
     3263     567,  1256,    37,    38,    39,    40,    -1,    -1,    -1,  1264,
     3264    1265,  1266,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3265    1275,  1276,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3266      -1,    66,    67,    -1,  1289,    -1,    -1,    72,    -1,    -1,
     3267      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3268      -1,    86,    87,    -1,    -1,    -1,    -1,  1018,  1019,    -1,
     3269    1021,  1022,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3270      -1,    -1,    -1,  1328,   109,    -1,   111,    -1,    -1,    -1,
     3271    1041,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
     3272       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3273      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3274      23,    24,    25,    26,    27,  1076,  1077,    30,    31,    32,
     3275      33,    -1,    -1,    36,    37,    38,    39,    40,    -1,   696,
     3276      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3277    1395,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3278      -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,
     3279      -1,    74,    75,    76,    49,    -1,    79,    80,    81,    82,
     3280      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3281      -1,    66,    -1,    -1,    -1,    -1,  1147,  1442,    -1,    -1,
     3282     757,    -1,    -1,    -1,  1449,    -1,   109,    -1,   111,    -1,
     3283      -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
     3284      -1,    -1,    -1,   700,    -1,   702,    -1,    -1,    -1,   132,
     3285     787,    -1,   709,   710,    -1,    -1,    -1,   714,   113,  1190,
     3286      -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,   726,
     3287      -1,    -1,    -1,    -1,   731,  1500,    -1,    -1,    -1,    -1,
     3288      -1,  1212,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3289      -1,   146,    -1,  1224,    -1,  1226,    -1,    -1,    -1,    -1,
     3290      -1,   156,   759,    -1,    -1,   160,    -1,    -1,    -1,    -1,
     3291      -1,    -1,    -1,    -1,    -1,    -1,     7,    -1,    -1,    10,
     3292      11,    12,    13,    14,    -1,  1256,    -1,    -1,    -1,    -1,
     3293      -1,    -1,    -1,  1264,  1265,  1266,    -1,    -1,    -1,    -1,
     3294      -1,    -1,    -1,    -1,  1275,  1276,    37,    38,    39,    40,
     3295      -1,    -1,    -1,    -1,   209,    -1,    -1,    -1,  1289,    -1,
     3296      -1,    -1,    -1,    -1,    -1,    -1,   221,    -1,    -1,    -1,
     3297     907,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,
     3298      -1,    72,    -1,    -1,   239,    76,    -1,    -1,    79,    80,
     3299      81,    82,    83,    84,    -1,    86,    87,  1328,    -1,    -1,
     3300      -1,   858,   859,   860,   861,    -1,   863,    -1,    -1,   264,
     3301      -1,    -1,    -1,    -1,    -1,   952,   271,    -1,   109,    -1,
     3302     111,   878,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
     3303     121,   122,    -1,    -1,    -1,   892,    -1,    -1,    -1,   294,
     3304      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3305     987,    -1,   307,    -1,    -1,    -1,    -1,    -1,    -1,    66,
     3306      -1,    -1,    -1,  1000,  1395,    -1,    -1,    -1,    75,    -1,
     3307      77,    -1,    79,    -1,    -1,   932,    -1,    -1,    -1,    86,
     3308      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3309     345,    -1,    -1,    -1,    -1,   350,    -1,    -1,    -1,    -1,
     3310      -1,    -1,    -1,    -1,  1041,    -1,    -1,    -1,    -1,    -1,
     3311     117,  1442,   119,   120,   121,    -1,    -1,    -1,  1449,    -1,
     3312     977,    -1,    -1,    -1,    -1,    -1,   983,    -1,    -1,    -1,
     3313      -1,   988,    -1,    -1,    -1,    -1,   993,    -1,   995,    -1,
     3314      -1,    -1,   999,    -1,  1001,  1002,    -1,    -1,  1005,    -1,
     3315      -1,    -1,    -1,   160,    -1,    -1,    -1,  1014,    -1,    -1,
     3316      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1500,
     3317      -1,   426,   427,    -1,    -1,  1032,  1033,    -1,   433,    -1,
     3318      -1,  1118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3319      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   454,
     3320      -1,    -1,  1059,    -1,    -1,  1062,    -1,    -1,    -1,    -1,
     3321      -1,    -1,    -1,    -1,   221,    -1,   223,   224,   225,    -1,
     3322      -1,    -1,    -1,    -1,    -1,    -1,    -1,   482,    -1,    -1,
     3323      -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,   494,
     3324      -1,  1178,  1179,    -1,    -1,    -1,    -1,    -1,  1105,    -1,
     3325      -1,   506,   259,   508,  1111,  1112,   511,   264,   513,   514,
     3326      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3327      -1,   526,   279,    -1,  1131,    -1,    -1,  1134,    -1,    -1,
     3328      -1,  1138,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3329      -1,    -1,    -1,    72,  1151,    74,    75,    76,    -1,    -1,
     3330      -1,    -1,    -1,    -1,    83,    84,    -1,  1164,    -1,  1166,
     3331    1167,  1168,  1169,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3332      -1,   328,    -1,    -1,   579,  1182,    -1,  1184,    -1,    -1,
     3333     109,  1188,    -1,    -1,    -1,    -1,   591,    -1,   117,   118,
     3334     595,    -1,    -1,   350,    -1,    -1,    -1,    -1,   355,   356,
     3335      -1,    -1,    -1,    -1,    -1,    -1,   363,    -1,    -1,    -1,
     3336    1217,  1218,    -1,    -1,    -1,    -1,   621,    -1,    -1,    -1,
     3337      -1,   626,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3338     635,   636,   637,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3339      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   653,   406,
     3340      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3341    1267,  1268,    -1,    -1,    -1,    -1,    -1,   424,    -1,    -1,
     3342    1277,    -1,   429,    -1,   431,    -1,    -1,    -1,    -1,    -1,
     3343     685,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3344      -1,   448,    -1,    -1,   451,   452,  1383,    -1,    -1,    -1,
     3345      -1,    -1,   459,    -1,    -1,    -1,   711,    -1,   713,    -1,
     3346      -1,    -1,  1399,    -1,    -1,    -1,   473,    -1,    -1,    -1,
     3347      -1,    -1,    -1,   480,    -1,    -1,    -1,    -1,    -1,    -1,
     3348      -1,  1338,    -1,  1340,  1341,  1342,    -1,    -1,    -1,    -1,
     3349      -1,   746,    -1,    -1,    -1,  1352,    44,    -1,    -1,    -1,
     3350      -1,    -1,    -1,    -1,  1361,    10,    11,    12,    13,    14,
    33493351      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3350       25,    26,    27,    28,    -1,    -1,    -1,    -1,    -1,    -1,
    3351       -1,    -1,    -1,    -1,    39,   906,    -1,    -1,   338,    -1,
    3352       -1,    -1,    -1,   343,    -1,    -1,    -1,    -1,    -1,    -1,
    3353      921,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3354       -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,   595,
    3355       -1,    -1,   372,    78,   945,    -1,   376,   377,    -1,   379,
    3356       -1,    -1,    -1,    -1,    -1,    -1,   386,   387,    -1,   389,
    3357      390,    -1,   392,    -1,   394,    -1,    -1,   623,    -1,    -1,
    3358       -1,    -1,   628,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3359       -1,   411,    -1,    -1,    37,    38,    -1,    40,    -1,   419,
     3352      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,  1386,
     3353      -1,    -1,  1469,  1470,    39,    -1,    -1,    10,    11,    12,
     3354      13,    14,    -1,    91,    -1,    -1,    -1,   802,    -1,    -1,
     3355      -1,   806,    -1,   101,    -1,   810,    -1,    -1,    -1,    -1,
     3356      -1,    -1,    67,    -1,    -1,    -1,    39,    72,    -1,    74,
     3357      75,    76,  1429,  1430,    -1,    -1,    -1,    -1,    83,    84,
     3358      -1,    -1,    -1,    -1,    -1,  1442,    -1,    -1,   595,    -1,
     3359      -1,    -1,  1449,    -1,    67,    -1,    -1,    -1,    -1,    72,
     3360      -1,    74,    75,    76,   109,    -1,   111,    -1,    -1,   157,
     3361      83,    84,   117,   118,    -1,    -1,   623,    -1,    -1,    -1,
     3362      -1,   628,    -1,   171,  1481,    -1,    -1,    -1,  1485,    -1,
     3363      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
     3364      -1,    -1,    -1,    -1,   117,   118,   194,    -1,    -1,    -1,
     3365     905,    -1,    -1,    -1,    -1,    -1,  1513,    -1,  1515,    -1,
     3366     208,    -1,    -1,    -1,    -1,   920,    -1,    -1,    -1,   217,
     3367      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   227,
     3368      -1,    -1,    -1,    -1,    -1,    -1,  1543,  1544,    -1,   944,
     3369      -1,    -1,   699,    -1,  1551,  1552,    -1,    -1,    -1,    -1,
     3370      -1,    -1,    -1,    -1,   252,    -1,   713,    -1,    -1,   257,
    33603371      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3361     1001,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3362       -1,   755,   756,    66,   444,    -1,    -1,    -1,    -1,    72,
    3363       -1,  1022,  1023,    76,    -1,    -1,    79,    80,    81,    82,
    3364       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    3365      470,    -1,    -1,   699,    -1,    -1,   476,    -1,    -1,    -1,
    3366       -1,   481,    -1,    -1,    -1,    -1,   109,   713,   111,    -1,
    3367       -1,   114,    -1,    -1,   117,   118,   119,   120,   121,   122,
    3368       -1,    -1,    -1,    -1,    -1,    -1,    -1,   733,    -1,    -1,
    3369       -1,  1082,    -1,    -1,    -1,    -1,    -1,   517,    -1,    -1,
     3372      -1,    -1,   270,    -1,    -1,    -1,   733,    -1,   276,    -1,
     3373     278,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3374      -1,    -1,    -1,    -1,    -1,  1000,    -1,   295,    10,    11,
     3375      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3376      22,    23,    24,    25,    26,    27,  1021,  1022,    30,    31,
     3377      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
     3378      -1,    -1,    -1,    -1,    -1,    -1,    -1,   794,    -1,    -1,
     3379     338,    -1,    -1,    -1,    -1,   343,    -1,    -1,    -1,   806,
     3380      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
     3381      72,    -1,    74,    75,    76,    -1,    -1,    -1,   825,    -1,
     3382      -1,    83,    84,    -1,   372,    -1,  1081,    -1,   376,   377,
     3383      -1,   379,    -1,    -1,    -1,    -1,    -1,    -1,   386,   387,
     3384      -1,   389,   390,    -1,   392,    -1,   394,   109,    -1,   111,
     3385      -1,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,
     3386      -1,    -1,    -1,   411,    -1,    -1,    -1,    -1,    -1,    -1,
     3387      -1,   419,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,
     3388     156,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3389      -1,    -1,  1147,    -1,    -1,    -1,   444,    -1,    -1,    -1,
     3390      -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
     3391      14,    -1,    -1,   189,    -1,    -1,    -1,    -1,    -1,    -1,
     3392     196,    -1,   470,    -1,    -1,    -1,    -1,    -1,   476,    -1,
     3393      -1,   938,    -1,   481,  1189,    39,    10,    11,    12,    13,
     3394      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3395      24,    25,    26,    27,    28,    -1,    30,    31,    32,    -1,
     3396      -1,   968,    -1,    67,    -1,    39,    -1,    -1,    72,   517,
     3397      -1,  1226,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
     3398      84,    -1,    -1,    -1,   532,    -1,    -1,    -1,    -1,    -1,
     3399      -1,    -1,   268,    67,    -1,    -1,  1003,    -1,    72,    -1,
     3400      74,    75,    76,    -1,    78,   109,    -1,  1014,    -1,    83,
     3401      84,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
     3402    1275,  1276,    -1,   571,    -1,    -1,    -1,    -1,    -1,  1284,
     3403      -1,    -1,   580,    -1,    -1,   109,    -1,   111,   146,   587,
     3404      -1,    -1,    -1,   117,   118,   593,    -1,   323,   156,    -1,
     3405      -1,    -1,    -1,    -1,   602,   331,   332,    -1,   334,   335,
     3406     168,   169,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,
     3407      -1,    -1,    -1,   349,    -1,    -1,    -1,    -1,    -1,  1086,
    33703408      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3371       -1,    -1,   532,    -1,     0,    -1,    -1,     3,     4,     5,
     3409      -1,    -1,   368,  1100,   642,   371,     3,     4,     5,     6,
     3410       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3411      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3412      27,    -1,   398,    30,    31,    32,   402,    -1,    -1,    -1,
     3413     678,   239,    39,    -1,    -1,    -1,    -1,    -1,   686,    -1,
     3414    1395,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
     3415      -1,    -1,    -1,    -1,    -1,   263,    -1,   433,    -1,    -1,
     3416      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,   717,
     3417      -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,   727,
     3418     728,    76,  1189,    -1,    79,    80,    81,    82,    83,    84,
     3419      -1,    86,    87,    -1,    -1,    -1,  1451,    -1,  1453,    -1,
     3420      -1,    -1,    -1,   479,   111,    -1,   482,    -1,    -1,    -1,
     3421     117,   118,   760,    -1,   109,    -1,   111,   765,    -1,   114,
     3422      -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
     3423      -1,    -1,  1487,    -1,  1489,    -1,    -1,    -1,    -1,    -1,
     3424      -1,    -1,    -1,    -1,    -1,   521,    -1,    -1,    -1,   525,
     3425     526,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3426      -1,  1516,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3427      -1,    -1,   380,    -1,    -1,    -1,    -1,  1284,    -1,    -1,
     3428      -1,   829,    -1,    -1,    -1,    -1,    -1,    -1,   836,    -1,
     3429      -1,    -1,    -1,    -1,    -1,   571,   572,    -1,    -1,    -1,
     3430      -1,   849,    -1,   851,    -1,    -1,    -1,    -1,    -1,    -1,
     3431      -1,    -1,    -1,    -1,   590,   591,    -1,   865,    -1,    -1,
     3432      -1,    -1,    -1,   871,    -1,   601,    -1,   603,   604,    -1,
     3433      -1,    -1,    -1,    -1,   610,   883,    -1,    -1,   886,    -1,
     3434      -1,    -1,    -1,    -1,   620,   621,    -1,    -1,    -1,    -1,
     3435     626,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   635,
     3436     636,   637,    -1,    -1,    -1,    -1,   474,    -1,    -1,    -1,
     3437      -1,    -1,    -1,    -1,    -1,    -1,    -1,   653,    -1,    -1,
     3438      -1,    -1,   658,   659,    -1,    -1,   662,   663,    -1,    -1,
     3439      -1,    -1,    -1,   669,    -1,    -1,    -1,    -1,    -1,    -1,
     3440      -1,    -1,    -1,    -1,    -1,   513,    -1,    -1,    -1,    -1,
     3441      -1,    -1,   688,    -1,    -1,   963,    -1,    -1,   526,    -1,
     3442      -1,    -1,    -1,   531,    -1,    -1,   534,    -1,    -1,    -1,
     3443      -1,    -1,    -1,    -1,    -1,   711,   712,    -1,    -1,   547,
     3444      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3445     998,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3446      -1,   569,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,
     3447     746,   579,    -1,    -1,   750,   751,    -1,    -1,   586,    -1,
     3448      -1,    -1,    -1,   591,    -1,    -1,    -1,    -1,    -1,    -1,
     3449      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3450      20,    21,    22,    23,    24,    25,    26,    27,  1056,    -1,
     3451      30,    31,    32,    -1,  1062,    -1,    -1,    -1,   794,    39,
     3452      -1,    -1,    -1,    -1,  1531,    -1,   802,    -1,    -1,    -1,
     3453      -1,    -1,   640,   809,   810,    -1,    -1,   813,    -1,   815,
     3454     648,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1096,   825,
     3455      -1,    -1,    72,  1101,    74,    75,    76,    -1,    -1,    -1,
     3456      -1,  1109,    -1,    83,    84,    -1,    10,    11,    12,    13,
     3457      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3458      24,    25,    26,    27,    28,    -1,    -1,    -1,    -1,   109,
     3459      -1,   111,    -1,    -1,  1142,    39,    -1,   117,   118,    -1,
     3460      -1,    -1,    -1,    -1,    -1,    -1,  1154,    -1,    -1,  1157,
     3461      -1,  1159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3462      -1,   897,    -1,    67,    -1,  1173,  1174,    -1,   904,   905,
     3463     906,    -1,   908,    -1,    78,    -1,   912,    -1,   746,    -1,
     3464     748,    -1,    -1,    -1,    -1,    -1,    -1,  1195,    -1,    -1,
     3465     758,    -1,    -1,    -1,    -1,    -1,   764,   933,   934,    -1,
     3466      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3467      20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
     3468      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3469      -1,    -1,   968,    -1,  1242,    -1,    -1,    -1,   806,   807,
     3470      -1,    -1,   810,    -1,    -1,    -1,    -1,    -1,    37,    38,
     3471      -1,    40,    -1,   989,   990,    -1,   824,    67,    -1,    -1,
     3472      -1,    -1,    -1,    -1,  1000,    -1,    -1,    -1,    78,    -1,
     3473    1006,  1007,    -1,  1009,  1010,  1011,    -1,    66,    -1,    -1,
     3474      -1,    -1,    -1,    72,    -1,  1021,  1022,    76,    -1,    -1,
     3475      79,    80,    81,    82,    83,    84,   864,    86,    87,    -1,
     3476     868,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1317,
     3477      -1,  1319,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3478     109,    -1,   111,  1331,    -1,  1333,    -1,   116,   117,   118,
     3479     119,   120,   121,   122,    -1,    -1,    -1,   905,    -1,    -1,
     3480      -1,    -1,  1350,    -1,    -1,    -1,    -1,    -1,  1084,    -1,
     3481    1086,    -1,    -1,    -1,    -1,  1091,    -1,    -1,  1366,  1367,
     3482      -1,    -1,    -1,    -1,  1100,    -1,    -1,    -1,    -1,  1377,
     3483      -1,    -1,  1380,    -1,    -1,    -1,   944,    -1,    -1,    -1,
     3484      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1123,  1124,  1125,
     3485      -1,    -1,    -1,  1401,    -1,    -1,    -1,    -1,    -1,    -1,
     3486      -1,    -1,  1410,    -1,   972,  1413,    -1,  1415,  1416,  1417,
     3487     978,  1147,    -1,    -1,   982,    37,    38,    -1,    40,    -1,
     3488      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3489      -1,    -1,    -1,    -1,    -1,  1003,    -1,    -1,    -1,    -1,
     3490      -1,    -1,    -1,    -1,    66,    -1,  1014,  1455,    -1,  1457,
     3491      72,  1459,    74,    75,    76,    -1,    -1,    79,    80,    81,
     3492      82,    83,    84,    -1,    86,    87,  1474,    -1,  1036,    -1,
     3493    1038,    -1,  1208,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3494      -1,    -1,    -1,    -1,    -1,  1053,  1054,   109,    -1,   111,
     3495    1226,   113,   114,    -1,    -1,   117,   118,   119,   120,   121,
     3496     122,    -1,    -1,    -1,    -1,    -1,  1074,    -1,    -1,    -1,
     3497      -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
     3498       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3499      19,    20,    21,    22,    23,    24,    25,    26,    27,  1275,
     3500    1276,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
     3501      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3502      -1,  1129,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3503      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1147,
     3504      69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,
     3505      -1,    -1,    -1,    -1,  1162,  1163,    -1,     3,     4,     5,
    33723506       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    33733507      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3374       26,    27,    -1,    -1,    30,    31,    32,    33,    -1,   795,
    3375       36,   571,    -1,    39,    40,    -1,    -1,    -1,    -1,  1150,
    3376      580,   807,    -1,    -1,    -1,    -1,    -1,   587,    -1,    -1,
    3377       -1,    -1,    -1,   593,    -1,    -1,    -1,    -1,    64,   913,
    3378      826,    67,   602,    69,   918,    71,    72,    -1,    74,    75,
    3379       76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,
    3380       -1,  1192,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3381       -1,    -1,    -1,    -1,    -1,   155,   156,    -1,    -1,    -1,
    3382       -1,    -1,   642,   109,    -1,   111,    -1,    -1,    -1,    -1,
    3383       -1,   117,   118,    -1,    -1,    -1,    -1,    -1,  1229,    -1,
    3384       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   189,
    3385       -1,    -1,    -1,    -1,    -1,    -1,   196,    -1,   678,    -1,
    3386       -1,    -1,    -1,    -1,    -1,    -1,   686,    -1,    -1,    10,
    3387       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3388       21,    22,    23,    24,    25,    26,    27,  1278,  1279,    30,
    3389       31,    32,    -1,   939,    -1,    -1,  1287,   717,    39,    -1,
    3390       -1,    -1,    -1,    -1,    -1,    -1,    -1,   727,   728,    -1,
     3508      26,    27,   111,    -1,    30,    31,    32,    33,   117,   118,
     3509      36,    37,    38,    39,    40,    41,    -1,    43,    -1,    -1,
     3510      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
     3511      -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,  1395,
     3512      66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
     3513      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3514      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    33913515      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3392       -1,    -1,    -1,   969,    -1,    -1,    67,    -1,   268,    -1,
    3393       -1,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
    3394      760,    -1,    83,    84,    -1,  1079,   766,    -1,    -1,    -1,
    3395       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1004,    -1,
    3396       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,  1015,
    3397      111,    -1,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,
    3398       -1,    -1,    -1,   323,    -1,    -1,    -1,    -1,    -1,    -1,
    3399       -1,   331,   332,    -1,   334,   335,    -1,    -1,    -1,    -1,
    3400       -1,    -1,    -1,    -1,    -1,   345,    -1,  1398,    -1,   349,
    3401      830,    -1,    -1,    -1,    -1,    -1,    -1,   837,    -1,    -1,
    3402       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   368,    -1,
    3403      850,   371,   852,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3404       -1,  1087,    -1,    -1,    -1,    -1,   866,    -1,    -1,    -1,
    3405       -1,    -1,   872,    -1,    -1,  1101,    -1,    -1,   398,    -1,
    3406       -1,    -1,   402,  1454,   884,  1456,    -1,   887,    -1,    -1,
    3407       -1,    -1,    -1,    -1,    -1,    -1,  1210,    -1,    -1,    -1,
     3516      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
     3517      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
     3518      -1,   127,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,
     3519      -1,    -1,    -1,    -1,    -1,  1303,    -1,    -1,  1306,    -1,
     3520      -1,    -1,    -1,    -1,    -1,    -1,  1482,    -1,    -1,    -1,
    34083521      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3409       -1,    -1,    -1,   433,    -1,    -1,    -1,    -1,    -1,  1490,
    3410       -1,  1492,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3411       -1,    -1,   282,    -1,   284,   285,    -1,    -1,    -1,    -1,
    3412       -1,    -1,   292,   293,    -1,    -1,    -1,    -1,  1519,    -1,
    3413       -1,    -1,    -1,    -1,    -1,    -1,    -1,   307,   308,   479,
    3414       -1,    -1,   482,    -1,   964,    -1,  1192,    -1,    -1,    -1,
    3415       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3416       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3417       -1,    30,    31,    32,    -1,   345,    -1,    -1,    -1,   999,
    3418       39,   521,    -1,    -1,    -1,   525,   526,    -1,    -1,    -1,
    34193522      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3420       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3421       -1,   381,    -1,    72,    -1,    74,    75,    76,    -1,    78,
    3422       -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,
    3423       -1,   571,   572,    -1,    -1,    -1,    -1,  1057,    -1,    -1,
    3424       -1,  1287,    -1,  1063,    -1,    -1,   146,    -1,    -1,    -1,
    3425      590,   591,   111,    -1,    -1,    -1,   156,    -1,   117,   118,
    3426       -1,   601,    -1,   603,   604,    -1,    -1,    -1,   168,   169,
    3427      610,    -1,    -1,    -1,    -1,    -1,    -1,  1097,    -1,    -1,
    3428      620,   621,  1102,    -1,    -1,    -1,   626,    -1,    -1,    -1,
    3429     1110,    -1,    -1,    -1,    -1,   635,   636,   637,    -1,    -1,
     3523    1506,  1507,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34303524      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3431       -1,    -1,    -1,   653,    -1,    -1,    -1,    -1,   658,   659,
    3432       -1,    -1,   662,   663,    -1,  1145,    -1,    -1,    -1,   669,
    3433       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1157,    -1,   239,
    3434     1160,    -1,  1162,    -1,    -1,    -1,    -1,    -1,   688,    -1,
    3435       -1,    -1,    -1,    -1,    -1,    -1,  1176,  1177,    -1,    -1,
    3436       -1,    -1,    -1,   263,    -1,    -1,    -1,    -1,    -1,    -1,
    3437       -1,   711,   712,    -1,    -1,    -1,    -1,    -1,  1198,    -1,
    3438      550,   551,   552,   553,   554,   555,   556,   557,   558,   559,
    3439      560,   561,   562,   563,   564,   565,   566,   567,    -1,    -1,
    3440       -1,    -1,    -1,    -1,    -1,   745,   746,    -1,    -1,    -1,
    3441      750,   751,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3442       -1,    -1,    -1,    -1,    -1,  1245,    -1,    -1,    -1,    -1,
    3443       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3444       20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
    3445       30,    31,    32,    -1,    -1,   795,    -1,    -1,    -1,    39,
    3446       -1,    -1,    -1,   803,    -1,    -1,    -1,    -1,    -1,    -1,
    3447      810,   811,    -1,    -1,   814,    -1,   816,    -1,    -1,    -1,
    3448      380,    -1,    -1,    -1,    -1,    -1,   826,    67,  1534,    -1,
    3449       -1,    -1,    72,    -1,    74,    75,    76,    -1,    78,    -1,
    3450     1320,    -1,  1322,    83,    84,    -1,    -1,    -1,    -1,    -1,
    3451       -1,    -1,    -1,    -1,    -1,    -1,  1336,    -1,  1338,    -1,
    3452       -1,    -1,    -1,    -1,    -1,    -1,   696,    -1,    -1,   109,
    3453       -1,   111,    -1,  1353,    -1,    -1,    -1,   117,   118,    -1,
    3454       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1369,
    3455     1370,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   898,    -1,
    3456     1380,    -1,    -1,  1383,    -1,   905,   906,   907,    -1,   909,
    3457       -1,    -1,    -1,   913,   474,    -1,    -1,    -1,    -1,    -1,
    3458       -1,    -1,    -1,    -1,  1404,    -1,    -1,   757,    -1,    -1,
    3459       -1,    -1,    -1,  1413,   934,   935,  1416,    -1,  1418,  1419,
    3460     1420,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3461       -1,    -1,    -1,   513,    -1,    -1,    -1,    -1,   788,    -1,
    3462       -1,    -1,    -1,    -1,    -1,    -1,   526,    -1,    -1,   969,
    3463       -1,   531,    -1,    -1,   534,    -1,    -1,    -1,  1458,    -1,
    3464     1460,    -1,  1462,    -1,    -1,    -1,    -1,   547,    -1,    -1,
    3465      990,   991,    -1,    -1,    -1,    -1,    -1,  1477,    -1,    -1,
    3466       -1,  1001,    -1,    -1,    -1,    -1,    -1,  1007,  1008,   569,
    3467     1010,  1011,  1012,    -1,    -1,    -1,    -1,    -1,    -1,   579,
    3468       -1,    -1,  1022,  1023,    -1,    -1,   586,    -1,    -1,    -1,
    3469       -1,   591,    -1,    -1,     3,     4,     5,     6,     7,     8,
     3525      -1,    -1,    -1,    -1,    -1,  1531,     3,     4,     5,     6,
     3526       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3527      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3528      27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,
     3529      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
     3530      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3531      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
     3532      67,    -1,    69,    39,    71,    72,    -1,    74,    75,    76,
     3533      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3534      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3535      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
     3536      -1,    -1,   109,    -1,   111,    -1,    -1,    83,    84,    -1,
     3537     117,   118,   119,   120,   121,   122,     4,     5,     6,     7,
     3538       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3539      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3540      -1,    -1,    30,    31,    32,    -1,    -1,    -1,  1516,    37,
     3541      38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
     3542      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3543      27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,
     3544      -1,    69,    39,    71,    72,    -1,    74,    75,    76,    -1,
     3545      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3546      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3547      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     3548      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,   116,   117,
     3549     118,   119,   120,   121,   122,     4,     5,     6,     7,     8,
    34703550       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    34713551      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3472       -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
    3473       39,    40,    -1,    -1,    -1,    -1,    -1,    -1,   908,    -1,
    3474      640,    -1,    -1,    -1,    -1,  1085,    -1,  1087,   648,    -1,
    3475       -1,    -1,  1092,    -1,    -1,    64,    -1,    -1,    67,    -1,
    3476       69,  1101,    71,    72,    -1,    74,    75,    76,    -1,    -1,
    3477       -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,
    3478       -1,    -1,    -1,   953,  1124,  1125,  1126,    -1,    -1,    -1,
    3479       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3480      109,    -1,   111,    -1,    -1,    -1,   115,    -1,   117,   118,
    3481     1150,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   988,    -1,
    3482       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3483       -1,  1001,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
    3484       -1,    40,    -1,    -1,    -1,    -1,   746,    -1,   748,    -1,
    3485       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   758,    -1,
    3486       -1,    -1,    -1,    -1,   764,    -1,    -1,    66,    -1,    -1,
    3487       -1,  1211,  1042,    72,    -1,    74,    75,    76,    -1,    -1,
    3488       79,    80,    81,    82,    83,    84,    -1,    86,    87,  1229,
    3489       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3490       -1,    -1,    -1,    -1,    -1,    -1,    -1,   807,   808,    -1,
    3491      109,   811,   111,    -1,   113,   114,    -1,    -1,   117,   118,
    3492      119,   120,   121,   122,    -1,   825,    -1,    -1,    -1,    -1,
    3493       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1278,  1279,
    3494       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1119,
    3495       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3496       -1,    -1,    -1,    -1,    -1,   865,    -1,    -1,    -1,   869,
    3497       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3498        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3499       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3500       23,    24,    25,    26,    27,    -1,   906,    30,    31,    32,
    3501       33,  1181,  1182,    36,    -1,    -1,    39,    40,    -1,    -1,
    3502       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3503       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3504       -1,    64,    -1,    -1,    67,   945,    69,    -1,    71,    72,
    3505       -1,    74,    75,    76,    -1,    -1,    -1,    -1,  1398,    -1,
    3506       83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3507       -1,    -1,    -1,   973,    -1,    -1,    -1,    37,    38,   979,
    3508       40,    -1,    -1,   983,    -1,    -1,   109,    -1,   111,    -1,
    3509       -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,
    3510       -1,    -1,    -1,    -1,  1004,    -1,    66,    -1,    -1,    -1,
    3511       -1,    -1,    72,    -1,    -1,  1015,    76,    -1,    -1,    79,
    3512       80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
    3513       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1037,    -1,  1039,
    3514       -1,    -1,    -1,    37,    38,  1485,    40,    -1,    -1,   109,
    3515       -1,   111,    -1,    -1,  1054,  1055,   116,   117,   118,   119,
    3516      120,   121,   122,    -1,    -1,    -1,    -1,    -1,    -1,  1509,
    3517     1510,    -1,    66,    -1,    -1,  1075,    -1,    -1,    72,    -1,
    3518       -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3519       84,    -1,    86,    87,  1534,    -1,    -1,    -1,    -1,    -1,
    3520       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3521       -1,    -1,    -1,    -1,    -1,   109,  1386,   111,    -1,    -1,
    3522      114,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
    3523     1130,    -1,  1402,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3524       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3525     1150,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3526       -1,    -1,    -1,    -1,    -1,  1165,  1166,    -1,    -1,    -1,
    3527       -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3528       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3529       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3530       32,    33,  1472,  1473,    36,    37,    38,    39,    40,    41,
    3531       -1,    43,    -1,    -1,    46,    47,    48,    49,    50,    51,
    3532       52,    53,    -1,    -1,    -1,    57,    -1,    -1,    -1,    61,
    3533       62,    -1,    64,    -1,    66,    67,    -1,    69,    -1,    71,
    3534       72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
    3535       82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
    3536       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3537       -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
    3538       -1,    -1,   114,    -1,    -1,   117,   118,   119,   120,   121,
    3539      122,    -1,    -1,    -1,    -1,   127,    -1,    -1,    -1,    -1,
    3540      132,    -1,    -1,    -1,    -1,    -1,  1306,    -1,    -1,  1309,
    3541        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3542       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3543       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3544       33,    -1,    -1,    36,    37,    38,    39,    40,    10,    11,
    3545       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3546       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3547       32,    -1,    -1,    66,    67,    -1,    69,    39,    71,    72,
    3548       -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
    3549       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    3550       -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
    3551       72,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
    3552       -1,    83,    84,    -1,   117,   118,   119,   120,   121,   122,
    3553       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   132,
    3554       -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
    3555        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3556       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3557       -1,    30,    31,    32,    33,    -1,    -1,    36,    37,    38,
    3558       39,    40,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3559       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3560       25,    26,    27,    28,    -1,    -1,    -1,    66,    67,    -1,
    3561       69,    -1,    71,    72,    39,    74,    75,    76,    -1,  1519,
     3552      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
     3553      39,    40,    10,    11,    12,    13,    14,    15,    16,    17,
     3554      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3555      -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,
     3556      69,    39,    71,    72,    -1,    74,    75,    76,    -1,    -1,
    35623557      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3563       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3564       -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3565      109,    -1,   111,    78,    -1,    -1,    -1,    -1,   117,   118,
     3558      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3559      -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,
     3560     109,    -1,   111,    -1,    -1,    -1,    -1,   116,   117,   118,
    35663561     119,   120,   121,   122,     4,     5,     6,     7,     8,     9,
    35673562      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     
    35703565      40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    35713566      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3572       -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,    69,
     3567      -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,
    35733568      39,    71,    72,    -1,    74,    75,    76,    -1,    -1,    79,
    35743569      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
    35753570      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3576       -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,
     3571      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
    35773572      -1,   111,    -1,    -1,    -1,    -1,   116,   117,   118,   119,
    35783573     120,   121,   122,     4,     5,     6,     7,     8,     9,    10,
     
    35803575      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    35813576      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
    3582       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3583       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3584       30,    31,    32,    -1,    -1,    66,    67,    -1,    69,    39,
     3577      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3578      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3579      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
    35853580      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    35863581      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3587       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    3588       -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,    -1,
    3589      111,    -1,    -1,    -1,    -1,   116,   117,   118,   119,   120,
     3582      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3583      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3584     111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
    35903585     121,   122,     4,     5,     6,     7,     8,     9,    10,    11,
    35913586      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     
    35993594      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36003595      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
    3601       -1,    -1,    -1,    -1,   116,   117,   118,   119,   120,   121,
     3596      -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,
    36023597     122,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    36033598      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     
    36233618      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36243619      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3625       -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     4,
     3620      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     0,
     3621      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
     3622      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3623      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3624      31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,    40,
     3625      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3626      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3627      -1,    -1,    -1,    64,    -1,    -1,    67,    -1,    69,    -1,
     3628      71,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
     3629      -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,
     3630      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3631      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3632     111,    -1,    -1,    -1,    -1,    -1,   117,   118,     3,     4,
    36263633       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    36273634      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3628       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3629       -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     3635      25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
     3636      -1,    36,    -1,    -1,    39,    40,    -1,    -1,    -1,    -1,
     3637      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3638      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,
     3639      -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,
     3640      75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,
    36303641      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36313642      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3632       -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
    3633       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3634       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3643      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3644     115,    -1,   117,   118,     3,     4,     5,     6,     7,     8,
     3645       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3646      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3647      -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
     3648      39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36353649      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3636       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3637       -1,    -1,   117,   118,   119,   120,   121,   122,     4,     5,
    3638        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3639       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3640       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    3641       -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,
     3650      -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,
     3651      69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
     3652      -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,
    36423653      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36433654      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3644       66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
    3645       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3646       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3647       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3648       -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
    3649       -1,   117,   118,   119,   120,   121,   122,     3,     4,     5,
    3650        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3651       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3652       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    3653       -1,    -1,    -1,    39,    -1,    10,    11,    12,    13,    14,
    3654       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3655       25,    26,    27,    -1,    -1,    30,    31,    32,    33,    34,
    3656       35,    67,    -1,    69,    39,    71,    72,    -1,    74,    75,
    3657       76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,
    3658       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3659       -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
    3660       75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
    3661       -1,   117,   118,     3,     4,     5,     6,     7,     8,     9,
    3662       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3663       20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
    3664       30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,
     3655     109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
     3656       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3657      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3658      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3659      -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    10,    11,
     3660      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3661      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3662      32,    33,    34,    35,    67,    -1,    69,    39,    71,    72,
     3663      -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
     3664      83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3665      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
     3666      -1,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
     3667      -1,    -1,    -1,    -1,   117,   118,     3,     4,     5,     6,
     3668       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3669      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3670      27,    28,    -1,    30,    31,    32,    33,    -1,    -1,    36,
     3671      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36653672      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36663673      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3667       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
    3668       -1,    71,    -1,    -1,    74,    75,    -1,    -1,    78,     3,
     3674      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
     3675      -1,    78,     4,     5,     6,     7,     8,     9,    10,    11,
     3676      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3677      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3678      32,    -1,    -1,    -1,   111,    -1,    -1,    39,    -1,    -1,
     3679     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3680      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3681      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
     3682      72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
     3683      -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3684      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3685      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
     3686      -1,    -1,    -1,    -1,    -1,   117,   118,     4,     5,     6,
     3687       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3688      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3689      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3690      -1,    -1,    39,    -1,    -1,    -1,    -1,    10,    11,    12,
     3691      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3692      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3693      67,    -1,    69,    -1,    71,    -1,    39,    74,    75,    -1,
    36693694       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    36703695      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3671       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    33,
    3672       -1,   111,    36,    -1,    -1,    39,    -1,   117,   118,    -1,
     3696      24,    25,    26,    27,    67,    -1,    30,    31,    32,    -1,
     3697      -1,    74,    75,   110,   111,    39,    -1,    -1,    -1,    -1,
     3698     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3699      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3700      -1,    -1,    -1,    67,    -1,    69,   109,    71,   111,    -1,
     3701      74,    75,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,
     3702      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3703      -1,    -1,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3704      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
     3705      -1,    -1,    -1,   117,   118,     4,     5,     6,     7,     8,
     3706       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3707      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3708      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
     3709      39,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
     3710      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3711      26,    27,    -1,    -1,    30,    31,    32,    -1,    67,    -1,
     3712      69,    -1,    71,    39,    40,    74,    75,    -1,    -1,    -1,
     3713      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3714      -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,
     3715      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
     3716      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
     3717       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3718      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3719      24,    25,    26,    27,    -1,   111,    30,    31,    32,   115,
     3720      -1,   117,   118,    -1,    -1,    39,    -1,    -1,    -1,    -1,
    36733721      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36743722      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36753723      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
    3676       74,    75,     3,     4,     5,     6,     7,     8,     9,    10,
     3724      74,    75,    -1,     4,     5,     6,     7,     8,     9,    10,
    36773725      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    36783726      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     
    36883736      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36893737      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3690       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    3691       -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
    3692       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3693       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3694       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
    3695      118,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3696       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3697       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3698       -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,
    3699       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3700       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3701       -1,    30,    31,    32,    67,    -1,    69,    -1,    71,    -1,
    3702       39,    74,    75,    -1,     4,     5,     6,     7,     8,     9,
    3703       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3704       20,    21,    22,    23,    24,    25,    26,    27,    67,    -1,
    3705       30,    31,    32,    -1,    -1,    74,    75,   110,   111,    39,
    3706       -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,
    3707       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3708       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
    3709      109,    71,   111,    -1,    74,    75,    -1,    -1,   117,   118,
    3710       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3711       -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,
    3712       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3713       -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,     4,
     3738      -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,     4,
    37143739       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    37153740      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    37163741      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3717       -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    10,    11,
    3718       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3719       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3720       32,    -1,    67,    -1,    69,    -1,    71,    39,    40,    74,
    3721       75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3742      -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,   117,
     3743     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37223744      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3723       -1,    96,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
    3724       -1,    -1,    74,    75,    -1,    -1,   111,    -1,    -1,    -1,
    3725       -1,    -1,   117,   118,     4,     5,     6,     7,     8,     9,
    3726       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3727       20,    21,    22,    23,    24,    25,    26,    27,    -1,   111,
    3728       30,    31,    32,   115,    -1,   117,   118,    -1,    -1,    39,
     3745      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
     3746      75,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3747      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3748      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
     3749      39,    40,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3750      -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
     3751      -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,
     3752      -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
     3753      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    37293754      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37303755      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3731       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
    3732       -1,    71,    -1,    -1,    74,    75,    -1,     4,     5,     6,
    3733        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3734       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3735       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3736       -1,   111,    39,    -1,    -1,    -1,    -1,   117,   118,    -1,
    3737       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3738       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3739       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
    3740        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3741       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3742       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3743       -1,    -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,
    3744      117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3745       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3746       -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
    3747       74,    75,    -1,     4,     5,     6,     7,     8,     9,    10,
    3748       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3749       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3750       31,    32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,
    3751       -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
    3752       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3753       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
    3754       71,    -1,    -1,    74,    75,    10,    11,    12,    13,    14,
     3756     109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
     3757     119,   120,   121,   122,    10,    11,    12,    13,    14,    15,
     3758      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3759      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3760      -1,    37,    38,    39,    40,    10,    11,    12,    13,    14,
    37553761      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    37563762      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3757       -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
    3758      111,    -1,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,
    3759       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3760       -1,    66,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
    3761       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3762       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3763       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3764       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
    3765       -1,    -1,   117,   118,   119,   120,   121,   122,    10,    11,
    3766       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3767       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3768       32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    10,
    3769       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3770       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3771       31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,    -1,
    3772       72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
    3773       82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
    3774       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3775       -1,    72,    -1,    74,    75,    76,    -1,   109,   110,   111,
    3776       -1,    -1,    83,    84,    -1,   117,   118,   119,   120,   121,
    3777      122,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3778       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3779      111,    30,    31,    32,    -1,    -1,   117,   118,    37,    38,
    3780       39,    40,    10,    11,    12,    13,    14,    15,    16,    17,
    3781       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3782       -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,
    3783       -1,    39,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
    3784       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3785       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3786       -1,    -1,    -1,    -1,    72,    -1,    74,    75,    -1,    -1,
    3787      109,    -1,   111,    -1,    -1,    83,    84,    -1,   117,   118,
    3788      119,   120,   121,   122,    10,    11,    12,    13,    14,    15,
    3789       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3790       26,    27,    -1,   111,    30,    31,    32,    -1,    -1,   117,
    3791      118,    37,    38,    39,    40,    10,    11,    12,    13,    14,
    3792       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3793       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3794       66,    67,    -1,    -1,    39,    40,    72,    -1,    74,    75,
     3763      66,    67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,
    37953764      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    37963765      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3797       -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
    3798       75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3766      -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
     3767      75,    76,    -1,   109,   110,   111,    -1,    -1,    83,    84,
    37993768      -1,   117,   118,   119,   120,   121,   122,    10,    11,    12,
    38003769      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    38013770      23,    24,    25,    26,    27,    -1,   111,    30,    31,    32,
    3802      115,    -1,   117,   118,    37,    38,    39,    40,    10,    11,
     3771      -1,    -1,   117,   118,    37,    38,    39,    40,    10,    11,
    38033772      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    38043773      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3805       32,    -1,    -1,    66,    67,    -1,    -1,    39,    40,    72,
     3774      32,    -1,    -1,    66,    67,    -1,    -1,    39,    -1,    72,
    38063775      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
    38073776      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    38083777      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
    3809       -1,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
    3810       -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
     3778      72,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
     3779      -1,    83,    84,    -1,   117,   118,   119,   120,   121,   122,
    38113780      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    38123781      20,    21,    22,    23,    24,    25,    26,    27,    -1,   111,
    3813       30,    31,    32,   115,    -1,   117,   118,    37,    38,    39,
    3814       40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    10,    11,
    3815       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3816       22,    23,    24,    25,    26,    27,    66,    67,    30,    31,
    3817       32,    -1,    72,    -1,    74,    75,    76,    39,    -1,    79,
     3782      30,    31,    32,    -1,    -1,   117,   118,    37,    38,    39,
     3783      40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3784      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3785      -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,
     3786      39,    40,    72,    -1,    74,    75,    76,    -1,    -1,    79,
    38183787      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3788      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3789      -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,
     3790      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,
     3791     120,   121,   122,    10,    11,    12,    13,    14,    15,    16,
     3792      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3793      27,    -1,   111,    30,    31,    32,   115,    -1,   117,   118,
     3794      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
     3795      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3796      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
     3797      67,    -1,    -1,    39,    40,    72,    -1,    74,    75,    76,
     3798      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3799      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3800      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
     3801      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3802     117,   118,   119,   120,   121,   122,    10,    11,    12,    13,
     3803      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3804      24,    25,    26,    27,    -1,   111,    30,    31,    32,   115,
     3805      -1,   117,   118,    37,    38,    39,    40,    -1,    -1,    -1,
     3806      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
     3807      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3808      26,    27,    66,    67,    30,    31,    32,    -1,    72,    -1,
     3809      74,    75,    76,    39,    -1,    79,    80,    81,    82,    83,
     3810      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    38193811      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3820       -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,   109,
    3821       -1,   111,    74,    75,    -1,    -1,    -1,   117,   118,   119,
    3822      120,   121,   122,     3,     4,     5,     6,     7,     8,     9,
    3823       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3824       20,    21,    22,    23,    24,    25,    26,    27,    -1,   111,
    3825       30,    31,    32,    -1,    -1,   117,   118,    -1,    -1,    39,
    3826       -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3812      -1,    67,    -1,    -1,    -1,   109,    -1,   111,    74,    75,
     3813      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     3,
     3814       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3815      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3816      24,    25,    26,    27,    -1,   111,    30,    31,    32,    -1,
     3817      -1,   117,   118,    -1,    -1,    39,    -1,    -1,    -1,    10,
     3818      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3819      21,    22,    23,    24,    25,    26,    27,    28,    -1,    30,
     3820      31,    32,    -1,    67,    -1,    69,    -1,    71,    39,    -1,
     3821      74,    75,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
     3822      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3823      23,    24,    25,    26,    27,    -1,    67,    30,    31,    32,
     3824      -1,    72,    -1,    74,    75,    76,    39,    78,    -1,    -1,
     3825     114,    -1,    83,    84,    -1,    10,    11,    12,    13,    14,
     3826      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3827      25,    26,    27,    28,    67,    30,    31,    32,    -1,    72,
     3828     111,    74,    75,    76,    39,    -1,   117,   118,    -1,    -1,
     3829      83,    84,    -1,    10,    11,    12,    13,    14,    15,    16,
    38273830      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3828       27,    -1,    -1,    30,    31,    32,    -1,    67,    -1,    69,
    3829       -1,    71,    39,    -1,    74,    75,    -1,    -1,    -1,    -1,
    3830       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3831       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3832       67,    30,    31,    32,    -1,    72,    -1,    74,    75,    76,
    3833       39,    -1,    -1,    -1,   114,    -1,    83,    84,    -1,    10,
    3834       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3835       21,    22,    23,    24,    25,    26,    27,    -1,    67,    30,
    3836       31,    32,   109,    72,   111,    74,    75,    76,    39,    -1,
    3837      117,   118,    -1,    -1,    83,    84,    -1,    10,    11,    12,
    3838       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3839       23,    24,    25,    26,    27,    28,    67,    30,    31,    32,
    3840      109,    72,   111,    74,    75,    76,    39,    -1,   117,   118,
    3841       -1,    -1,    83,    84,    -1,    10,    11,    12,    13,    14,
    3842       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3843       25,    26,    27,    28,    67,    30,    31,    32,   109,    -1,
    3844      111,    74,    75,    -1,    39,    78,   117,   118,    10,    11,
    3845       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3846       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3847       32,    -1,    67,    -1,    -1,    -1,   109,    39,   111,    74,
    3848       75,    -1,    -1,    78,   117,   118,    10,    11,    12,    13,
     3831      27,    -1,    67,    30,    31,    32,   109,    -1,   111,    74,
     3832      75,    -1,    39,    78,   117,   118,    10,    11,    12,    13,
    38493833      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3850       24,    25,    26,    27,    -1,    67,    30,    31,    32,    -1,
    3851       -1,    -1,    74,    75,    -1,    39,   111,    -1,    -1,    -1,
     3834      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3835      67,    -1,    -1,    -1,    -1,    39,   111,    74,    75,    -1,
    38523836      -1,    -1,   117,   118,    10,    11,    12,    13,    14,    15,
    38533837      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3854       26,    27,    -1,    67,    30,    31,    32,    -1,    -1,   111,
    3855       74,    75,    -1,    39,    -1,   117,   118,    10,    11,    12,
    3856       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3857       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3858       -1,    67,    -1,    -1,    -1,    -1,    39,   111,    74,    75,
    3859       -1,    -1,    -1,   117,   118,    10,    11,    12,    13,    14,
     3838      26,    27,    -1,    67,    30,    31,    32,    -1,    -1,    -1,
     3839      74,    75,    -1,    39,   111,    -1,    -1,    -1,    -1,    -1,
     3840     117,   118,    10,    11,    12,    13,    14,    15,    16,    17,
     3841      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3842      -1,    67,    30,    31,    32,    -1,    -1,   111,    74,    75,
     3843      -1,    39,    -1,   117,   118,    10,    11,    12,    13,    14,
    38603844      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3861       25,    26,    27,    -1,    67,    30,    31,    32,    -1,    -1,
    3862       -1,    74,    75,    -1,    39,   111,    -1,    -1,    -1,    -1,
     3845      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    67,
     3846      -1,    -1,    -1,    -1,    39,   111,    74,    75,    -1,    -1,
    38633847      -1,   117,   118,    10,    11,    12,    13,    14,    15,    16,
    38643848      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3865       27,    -1,    67,    30,    31,    32,    -1,    -1,   111,    74,
    3866       75,    -1,    39,    -1,   117,   118,     4,     5,     6,     7,
    3867        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3868       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3869       67,    -1,    30,    31,    32,    -1,   111,    74,    75,    -1,
    3870       -1,    39,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
     3849      27,    -1,    67,    30,    31,    32,    -1,    -1,    -1,    74,
     3850      75,    -1,    39,   111,    -1,    -1,    -1,    -1,    -1,   117,
     3851     118,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3852      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3853      67,    30,    31,    32,    -1,    -1,   111,    74,    75,    -1,
     3854      39,    -1,   117,   118,     4,     5,     6,     7,     8,     9,
     3855      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3856      20,    21,    22,    23,    24,    25,    26,    27,    67,    -1,
     3857      30,    31,    32,    -1,   111,    74,    75,    -1,    -1,    39,
     3858     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38713859      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3872       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3873       -1,    69,    -1,    71,   111,    -1,    74,    75,    -1,    -1,
    3874      117,   118,    37,    38,    -1,    40,    41,    -1,    43,    -1,
    3875       -1,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
    3876       -1,    56,    57,    -1,    -1,    -1,    61,    62,    -1,    64,
    3877       -1,    66,   110,    -1,    -1,    -1,    -1,    72,    -1,    -1,
    3878       -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3879       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3880       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3881       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
    3882       -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
    3883       37,    38,   127,    40,    41,    -1,    43,   132,    -1,    46,
    3884       47,    48,    49,    50,    51,    52,    53,    -1,    -1,    -1,
     3860      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
     3861      -1,    71,    -1,    -1,    74,    75,    -1,    -1,   117,   118,
     3862      37,    38,    -1,    40,    41,    -1,    43,    -1,    -1,    46,
     3863      47,    48,    49,    50,    51,    52,    53,    -1,    -1,    56,
    38853864      57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,
    3886       -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
     3865     110,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
    38873866      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    38883867      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38893868      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38903869      -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,
    3891      117,   118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,
    3892      127,    -1,    -1,    -1,    -1,   132,     4,     5,     6,     7,
    3893        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3894       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3895       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
    3896       -1,    39,    -1,    37,    38,    -1,    40,    41,    -1,    43,
    3897       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
    3898       -1,    -1,    56,    57,    -1,    -1,    -1,    61,    62,    67,
    3899       64,    69,    66,    71,    -1,    -1,    74,    75,    72,    -1,
    3900       -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3901       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    96,    -1,
     3870     117,   118,   119,   120,   121,   122,    -1,    -1,    37,    38,
     3871     127,    40,    41,    -1,    43,   132,    -1,    46,    47,    48,
     3872      49,    50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,
     3873      -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
     3874      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
     3875      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    39023876      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3903       -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3904      114,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
    3905       -1,    37,    38,   127,    40,    41,    -1,    43,    44,    45,
     3877      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3878     109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
     3879     119,   120,   121,   122,    -1,    -1,    -1,    -1,   127,    -1,
     3880      -1,    -1,    -1,   132,     4,     5,     6,     7,     8,     9,
     3881      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3882      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3883      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3884      -1,    37,    38,    -1,    40,    41,    -1,    43,    44,    45,
    39063885      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
    3907       -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
    3908       66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
     3886      56,    57,    -1,    -1,    -1,    61,    62,    67,    64,    69,
     3887      66,    71,    -1,    -1,    74,    75,    72,    -1,    -1,    -1,
    39093888      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3910       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3889      86,    87,    -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,
    39113890      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39123891      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
    39133892      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    37,
    3914       38,   127,    40,    41,    -1,    43,    -1,    -1,    46,    47,
     3893      38,   127,    40,    41,    -1,    43,    44,    45,    46,    47,
    39153894      48,    49,    50,    51,    52,    53,    -1,    -1,    -1,    57,
    39163895      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,
    39173896      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
    39183897      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3919       -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,
     3898      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39203899      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39213900      -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,
    3922      118,   119,   120,   121,   122,    66,    -1,    -1,    -1,   127,
    3923       -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
    3924       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3925       -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,
    3926       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    3927      111,    -1,    37,    38,    -1,    40,   117,   118,   119,   120,
    3928      121,   122,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,
     3901     118,   119,   120,   121,   122,    -1,    -1,    37,    38,   127,
     3902      40,    41,    -1,    43,    -1,    -1,    46,    47,    48,    49,
     3903      50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,
     3904      -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
     3905      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     3906      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3907      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
     3908      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3909      -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,   119,
     3910     120,   121,   122,    66,    -1,    -1,    -1,   127,    -1,    72,
     3911      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
     3912      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3913      -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
     3914      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
     3915      -1,   114,    -1,    -1,   117,   118,   119,   120,   121,   122,
     3916      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
     3917      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3918      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
     3919      -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3920      -1,    -1,    -1,   109,    -1,   111,    -1,    37,    38,    -1,
     3921      40,   117,   118,   119,   120,   121,   122,    66,    -1,    -1,
     3922      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
     3923      79,    80,    81,    82,    83,    84,    66,    86,    87,    -1,
     3924      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     3925      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3926     109,    -1,   111,    -1,    37,    38,    -1,    40,   117,   118,
     3927     119,   120,   121,   122,    -1,    -1,    -1,    -1,    -1,   109,
     3928      -1,   111,    -1,    37,    38,    -1,    40,   117,   118,   119,
     3929     120,   121,   122,    66,    -1,    -1,    -1,    -1,    -1,    72,
     3930      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
     3931      83,    84,    66,    86,    87,    -1,    -1,    -1,    72,    -1,
    39293932      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3930       84,    66,    86,    87,    -1,    -1,    -1,    72,    -1,    -1,
    3931       -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3932       -1,    86,    87,    -1,    -1,   109,    -1,   111,    -1,    37,
    3933       38,    -1,    40,   117,   118,   119,   120,   121,   122,    -1,
    3934       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    37,    38,
    3935       -1,    40,   117,   118,   119,   120,   121,   122,    66,    -1,
    3936       -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
    3937       -1,    79,    80,    81,    82,    83,    84,    66,    86,    87,
    3938       -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3939       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3940       -1,   109,    -1,    -1,    -1,    37,    38,    -1,    40,   117,
    3941      118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,    -1,
    3942      109,    -1,    -1,    -1,    37,    38,    -1,    40,   117,   118,
    3943      119,   120,   121,   122,    66,    -1,    -1,    -1,    -1,    -1,
    3944       72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
    3945       82,    83,    84,    66,    86,    87,    -1,    -1,    -1,    72,
    3946       -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
    3947       83,    84,    -1,    86,    87,    -1,    -1,   109,    -1,    -1,
    3948       -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,
    3949      122,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
    3950       -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
     3933      84,    -1,    86,    87,    -1,    -1,   109,    -1,    -1,    -1,
     3934      37,    38,    -1,    40,   117,   118,   119,   120,   121,   122,
     3935      -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    37,
     3936      38,    -1,    40,   117,   118,   119,   120,   121,   122,    66,
     3937      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
     3938      -1,    -1,    79,    80,    81,    82,    83,    84,    66,    86,
     3939      87,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
     3940      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3941      -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3942     117,   118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,
     3943      -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,
     3944     118,   119,   120,   121,   122,     4,     5,     6,     7,     8,
     3945       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3946      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3947      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3948      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3949      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3950      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3951      69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
     3952      -1,    -1,    -1,    -1,    83,    84,     3,     4,     5,     6,
     3953       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3954      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3955      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3956      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3957      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3958      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3959      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,     3,
    39513960       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    39523961      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3953       24,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,
     3962      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    39543963      -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,
    39553964      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39563965      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3957       -1,    -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
    3958       74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
    3959       84,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3966      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
     3967      74,    75,     4,     5,     6,     7,     8,     9,    10,    11,
    39603968      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    39613969      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     
    39643972      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39653973      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
    3966       -1,    -1,    74,    75,     3,     4,     5,     6,     7,     8,
    3967        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3968       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3969       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
    3970       39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3971       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3972       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3973       69,    -1,    71,    -1,    -1,    74,    75,     4,     5,     6,
    3974        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3975       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3976       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3977       -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3978       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3979       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3980       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75
     3974      -1,    -1,    74,    75
    39813975};
    39823976
     
    39893983      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
    39903984      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
    3991       76,    83,    84,   109,   111,   117,   118,   137,   140,   151,
    3992      200,   214,   215,   216,   217,   218,   219,   220,   221,   222,
    3993      223,   224,   225,   226,   227,   228,   229,   230,   231,   233,
    3994      234,   235,   236,   237,   238,   239,   241,   242,   243,   244,
    3995      245,   246,   248,   256,   257,   284,   285,   286,   294,   297,
    3996      303,   304,   306,   308,   309,   315,   320,   324,   325,   326,
    3997      327,   328,   329,   330,   331,   351,   368,   369,   370,   371,
    3998       72,   139,   140,   151,   217,   219,   227,   229,   238,   242,
    3999      244,   285,    82,   109,   313,   314,   315,   313,   313,    72,
    4000       74,    75,    76,   138,   139,   274,   275,   295,   296,    74,
    4001       75,   275,   109,   306,    11,   201,   109,   151,   320,   325,
    4002      326,   327,   329,   330,   331,   112,   134,   111,   220,   227,
    4003      229,   324,   328,   367,   368,   371,   372,   135,   107,   131,
    4004      278,   114,   135,   175,    74,    75,   137,   273,   135,   135,
    4005      135,   116,   135,    74,    75,   109,   151,   310,   319,   320,
    4006      321,   322,   323,   324,   328,   332,   333,   334,   335,   336,
    4007      342,     3,    28,    78,   240,     3,     5,    74,   111,   151,
    4008      219,   230,   234,   236,   245,   286,   324,   328,   371,   217,
    4009      219,   229,   238,   242,   244,   285,   324,   328,    33,   235,
    4010      235,   230,   236,   135,   235,   230,   235,   230,    75,   109,
    4011      114,   275,   286,   114,   275,   235,   230,   116,   135,   135,
    4012        0,   134,   109,   175,   313,   313,   134,   111,   227,   229,
    4013      369,   273,   273,   131,   229,   109,   151,   310,   320,   324,
    4014      111,   151,   371,   307,   232,   315,   109,   291,   109,   109,
     3985      76,    83,    84,   109,   111,   117,   118,   137,   140,   150,
     3986     199,   213,   214,   215,   216,   217,   218,   219,   220,   221,
     3987     222,   223,   224,   225,   226,   227,   228,   229,   230,   232,
     3988     233,   234,   235,   236,   237,   238,   240,   241,   242,   243,
     3989     244,   245,   247,   255,   256,   283,   284,   285,   293,   296,
     3990     302,   303,   305,   307,   308,   314,   319,   323,   324,   325,
     3991     326,   327,   328,   329,   330,   350,   367,   368,   369,   370,
     3992      72,   139,   140,   150,   216,   218,   226,   228,   237,   241,
     3993     243,   284,    82,   109,   312,   313,   314,   312,   312,    72,
     3994      74,    75,    76,   138,   139,   273,   274,   294,   295,    74,
     3995      75,   274,   109,   305,    11,   200,   109,   150,   319,   324,
     3996     325,   326,   328,   329,   330,   112,   134,   111,   219,   226,
     3997     228,   323,   327,   366,   367,   370,   371,   135,   107,   131,
     3998     277,   114,   135,   174,    74,    75,   137,   272,   135,   135,
     3999     135,   116,   135,    74,    75,   109,   150,   309,   318,   319,
     4000     320,   321,   322,   323,   327,   331,   332,   333,   334,   335,
     4001     341,     3,    28,    78,   239,     3,     5,    74,   111,   150,
     4002     218,   229,   233,   235,   244,   285,   323,   327,   370,   216,
     4003     218,   228,   237,   241,   243,   284,   323,   327,    33,   234,
     4004     234,   229,   235,   135,   234,   229,   234,   229,    75,   109,
     4005     114,   274,   285,   114,   274,   234,   229,   116,   135,   135,
     4006       0,   134,   109,   174,   312,   312,   134,   111,   226,   228,
     4007     368,   272,   272,   131,   228,   109,   150,   309,   319,   323,
     4008     111,   150,   370,   306,   231,   314,   109,   290,   109,   109,
    40154009      51,   109,    37,    38,    40,    66,    72,    76,    79,    80,
    40164010      81,    82,    86,    87,   109,   111,   119,   120,   121,   122,
    4017      136,   140,   141,   142,   143,   144,   150,   151,   152,   153,
    4018      154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
    4019      164,   166,   169,   227,   277,   293,   367,   372,   229,   110,
    4020      110,   110,   110,   110,   110,   110,    74,    75,   111,   227,
    4021      273,   351,   369,   111,   117,   151,   166,   219,   220,   226,
    4022      229,   233,   234,   238,   241,   242,   244,   263,   264,   268,
    4023      269,   270,   271,   285,   351,   363,   364,   365,   366,   371,
    4024      372,   112,   109,   324,   328,   371,   109,   116,   132,   111,
    4025      114,   151,   166,   279,   279,   115,   134,   116,   132,   109,
    4026      116,   132,   116,   132,   116,   132,   313,   132,   320,   321,
    4027      322,   323,   333,   334,   335,   336,   229,   319,   332,    64,
    4028      312,   111,   313,   350,   351,   313,   313,   175,   134,   109,
    4029      313,   350,   313,   313,   229,   310,   109,   109,   228,   229,
    4030      227,   229,   112,   134,   227,   367,   372,   175,   134,   273,
    4031      278,   219,   234,   324,   328,   175,   134,   295,   229,   238,
    4032      132,   229,   229,   293,   249,   247,   259,   275,   258,   229,
    4033      295,   132,   132,   306,   134,   139,   272,     3,   135,   209,
    4034      210,   224,   226,   229,   134,   312,   109,   312,   166,   320,
    4035      229,   109,   134,   273,   114,    33,    34,    35,   227,   287,
    4036      288,   290,   134,   128,   131,   292,   134,   230,   235,   236,
    4037      273,   316,   317,   318,   109,   141,   109,   150,   109,   150,
    4038      153,   109,   150,   109,   109,   150,   150,   111,   166,   171,
    4039      175,   227,   276,   367,   371,   112,   134,    82,    85,    86,
     4011     136,   140,   141,   142,   143,   144,   149,   150,   151,   152,
     4012     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
     4013     163,   165,   168,   226,   276,   292,   366,   371,   228,   110,
     4014     110,   110,   110,   110,   110,   110,    74,    75,   111,   226,
     4015     272,   350,   368,   111,   117,   150,   165,   218,   219,   225,
     4016     228,   232,   233,   237,   240,   241,   243,   262,   263,   267,
     4017     268,   269,   270,   284,   350,   362,   363,   364,   365,   370,
     4018     371,   112,   109,   323,   327,   370,   109,   116,   132,   111,
     4019     114,   150,   165,   278,   278,   115,   134,   116,   132,   109,
     4020     116,   132,   116,   132,   116,   132,   312,   132,   319,   320,
     4021     321,   322,   332,   333,   334,   335,   228,   318,   331,    64,
     4022     311,   111,   312,   349,   350,   312,   312,   174,   134,   109,
     4023     312,   349,   312,   312,   228,   309,   109,   109,   227,   228,
     4024     226,   228,   112,   134,   226,   366,   371,   174,   134,   272,
     4025     277,   218,   233,   323,   327,   174,   134,   294,   228,   237,
     4026     132,   228,   228,   292,   248,   246,   258,   274,   257,   228,
     4027     294,   132,   132,   305,   134,   139,   271,     3,   135,   208,
     4028     209,   223,   225,   228,   134,   311,   109,   311,   165,   319,
     4029     228,   109,   134,   272,   114,    33,    34,    35,   226,   286,
     4030     287,   289,   134,   128,   131,   291,   134,   229,   234,   235,
     4031     272,   315,   316,   317,   109,   141,   109,   149,   109,   149,
     4032     152,   109,   149,   109,   109,   149,   149,   111,   165,   170,
     4033     174,   226,   275,   366,   370,   112,   134,    82,    85,    86,
    40404034      87,   109,   111,   113,   114,    97,    98,    99,   100,   101,
    4041      102,   103,   104,   105,   106,   107,   131,   168,   153,   153,
     4035     102,   103,   104,   105,   106,   107,   131,   167,   152,   152,
    40424036     117,   123,   124,   119,   120,    88,    89,    90,    91,   125,
    40434037     126,    92,    93,   118,   127,   128,    94,    95,   129,   131,
    4044      374,   109,   151,   346,   347,   348,   349,   350,   110,   116,
    4045      109,   350,   351,   109,   350,   351,   134,   109,   227,   369,
    4046      112,   134,   135,   111,   227,   229,   362,   363,   371,   372,
    4047      135,   109,   111,   151,   320,   337,   338,   339,   340,   341,
    4048      342,   343,   344,   345,   351,   352,   353,   354,   355,   356,
    4049      357,   151,   371,   229,   135,   135,   151,   227,   229,   364,
    4050      273,   227,   351,   364,   273,   109,   134,   134,   134,   112,
    4051      134,    72,   111,   113,   140,   275,   279,   280,   281,   282,
    4052      283,   134,   134,   134,   134,   134,   134,   310,   110,   110,
    4053      110,   110,   110,   110,   110,   319,   332,   109,   278,   112,
    4054      209,   134,   310,   171,   277,   171,   277,   310,   111,   209,
    4055      312,   175,   134,   209,   110,    40,   111,   115,   227,   250,
    4056      251,   252,   367,   114,   116,   373,   131,   260,   114,   229,
    4057      265,   266,   267,   270,   271,   110,   116,   175,   134,   117,
    4058      166,   134,   226,   229,   264,   363,   371,   304,   305,   109,
    4059      151,   337,   110,   116,   374,   275,   287,   109,   114,   275,
    4060      277,   287,   110,   116,   109,   141,   110,   130,   276,   276,
    4061      276,   146,   166,   277,   276,   112,   134,   110,   116,   110,
    4062      109,   151,   350,   358,   359,   360,   361,   110,   116,   166,
    4063      111,   139,   145,   146,   134,    79,   111,   139,   145,   166,
    4064      153,   153,   153,   154,   154,   155,   155,   156,   156,   156,
    4065      156,   157,   157,   158,   159,   160,   161,   162,   130,   171,
    4066      166,   134,   347,   348,   349,   229,   346,   313,   313,   166,
    4067      277,   134,   272,   134,   227,   351,   364,   229,   233,   112,
    4068      112,   134,   371,   112,   109,   134,   320,   338,   339,   340,
    4069      343,   353,   354,   355,   112,   134,   229,   337,   341,   352,
    4070      109,   313,   356,   374,   313,   313,   374,   109,   313,   356,
    4071      313,   313,   313,   313,   351,   227,   362,   372,   273,   112,
    4072      116,   112,   116,   374,   227,   364,   374,   261,   262,   263,
    4073      264,   261,   261,   273,   166,   134,   111,   275,   130,   116,
    4074      373,   279,   111,   130,   283,    29,   211,   212,   273,   261,
    4075      139,   310,   139,   312,   109,   350,   351,   109,   350,   351,
    4076      142,   351,   175,   265,   110,   110,   110,   110,   112,   175,
    4077      209,   175,   114,   251,   252,   112,   134,   109,   130,   151,
    4078      253,   255,   319,   320,   332,   358,   116,   132,   116,   132,
    4079      275,   249,   275,   115,   164,   165,   259,   135,   135,   139,
    4080      224,   135,   135,   261,   109,   151,   371,   135,   115,   229,
    4081      288,   289,   135,   134,   134,   109,   135,   110,   317,   171,
    4082      172,   130,   132,   111,   141,   202,   203,   204,   110,   116,
    4083      110,   110,   110,   110,   111,   166,   359,   360,   361,   229,
    4084      358,   313,   313,   114,   153,   169,   166,   167,   170,   116,
    4085      135,   134,   110,   116,   166,   134,   115,   164,   130,   265,
    4086      110,   110,   110,   346,   265,   110,   261,   227,   364,   111,
    4087      117,   151,   166,   166,   229,   343,   265,   110,   110,   110,
    4088      110,   110,   110,   110,     7,   229,   337,   341,   352,   134,
    4089      134,   374,   134,   134,   110,   135,   135,   135,   135,   278,
    4090      135,   164,   165,   166,   311,   134,   279,   281,   115,   134,
    4091      213,   275,    40,    41,    43,    46,    47,    48,    49,    50,
    4092       51,    52,    53,    57,    61,    62,    72,   111,   127,   172,
    4093      173,   174,   175,   176,   177,   179,   180,   192,   194,   195,
    4094      200,   214,   309,    29,   135,   131,   278,   134,   134,   110,
    4095      135,   175,   249,   132,   132,   320,   165,   229,   254,   255,
    4096      254,   275,   313,   115,   260,   373,   110,   116,   112,   112,
    4097      135,   229,   116,   374,   291,   110,   287,   217,   219,   227,
    4098      299,   300,   301,   302,   293,   110,   110,   130,   165,   109,
    4099      110,   130,   116,   139,   112,   110,   110,   110,   358,   280,
    4100      116,   135,   170,   112,    79,   139,   147,   148,   149,   146,
    4101      135,   147,   164,   169,   135,   109,   350,   351,   135,   135,
    4102      134,   135,   135,   135,   166,   110,   135,   109,   350,   351,
    4103      109,   356,   109,   356,   351,   228,     7,   117,   135,   166,
    4104      265,   265,   264,   268,   268,   269,   116,   116,   110,   110,
    4105      112,    96,   122,   135,   135,   147,   279,   166,   116,   132,
    4106      214,   218,   229,   233,   109,   109,   173,   109,   109,    72,
    4107      132,    72,   132,    72,   117,   172,   109,   175,   167,   167,
    4108      130,   112,   144,   132,   135,   134,   135,   213,   110,   166,
    4109      265,   265,   313,   110,   115,   253,   115,   134,   110,   134,
    4110      135,   310,   115,   134,   135,   135,   110,   114,   202,   112,
    4111      165,   132,   202,   204,   110,   109,   350,   351,   373,   167,
    4112      112,   135,   116,   135,    85,   113,   112,   135,   110,   134,
    4113      110,   110,   112,   112,   112,   135,   110,   134,   134,   134,
    4114      166,   166,   135,   112,   135,   135,   135,   135,   134,   134,
    4115      165,   165,   112,   112,   135,   135,   275,   229,   171,   171,
    4116       47,   171,   134,   132,   132,   132,   171,   132,   171,    58,
    4117       59,    60,   196,   197,   198,   132,    63,   132,   313,   114,
    4118      177,   115,   132,   135,   135,    96,   270,   271,   110,   300,
    4119      116,   132,   116,   132,   115,   298,   130,   141,   110,   110,
    4120      130,   134,   115,   112,   148,   112,   111,   148,   111,   148,
    4121      112,   265,   112,   265,   265,   265,   135,   135,   112,   112,
    4122      110,   110,   112,   116,    96,   264,    96,   135,   112,   112,
    4123      110,   110,   109,   110,   172,   193,   214,   132,   110,   109,
    4124      109,   175,   198,    58,    59,   166,   173,   145,   110,   110,
    4125      114,   134,   134,   299,   141,   205,   109,   132,   205,   265,
    4126      134,   134,   135,   135,   135,   135,   112,   112,   134,   135,
    4127      112,   173,    44,    45,   114,   183,   184,   185,   171,   173,
    4128      135,   110,   172,   114,   185,    96,   134,    96,   134,   109,
    4129      109,   132,   115,   134,   273,   310,   115,   116,   130,   165,
    4130      110,   135,   147,   147,   110,   110,   110,   110,   268,    42,
    4131      165,   181,   182,   311,   130,   134,   173,   183,   110,   132,
    4132      173,   132,   134,   110,   134,   110,   134,    96,   134,    96,
    4133      134,   132,   299,   141,   139,   206,   110,   132,   110,   135,
    4134      135,   173,    96,   116,   130,   135,   207,   208,   214,   132,
    4135      172,   172,   207,   175,   199,   227,   367,   175,   199,   110,
    4136      134,   110,   134,   115,   110,   116,   112,   112,   165,   181,
    4137      184,   186,   187,   134,   132,   184,   188,   189,   135,   109,
    4138      151,   310,   358,   139,   135,   175,   199,   175,   199,   109,
    4139      132,   139,   173,   178,   115,   184,   214,   172,    56,   178,
    4140      191,   115,   184,   110,   229,   110,   135,   135,   293,   173,
    4141      178,   132,   190,   191,   178,   191,   175,   175,   110,   110,
    4142      110,   190,   135,   135,   175,   175,   135,   135
     4038     373,   109,   150,   345,   346,   347,   348,   349,   110,   116,
     4039     109,   349,   350,   109,   349,   350,   134,   109,   226,   368,
     4040     112,   134,   135,   111,   226,   228,   361,   362,   370,   371,
     4041     135,   109,   111,   150,   319,   336,   337,   338,   339,   340,
     4042     341,   342,   343,   344,   350,   351,   352,   353,   354,   355,
     4043     356,   150,   370,   228,   135,   135,   150,   226,   228,   363,
     4044     272,   226,   350,   363,   272,   109,   134,   134,   134,   112,
     4045     134,    72,   111,   113,   140,   274,   278,   279,   280,   281,
     4046     282,   134,   134,   134,   134,   134,   134,   309,   110,   110,
     4047     110,   110,   110,   110,   110,   318,   331,   109,   277,   112,
     4048     208,   134,   309,   170,   276,   170,   276,   309,   111,   208,
     4049     311,   174,   134,   208,   110,    40,   111,   115,   226,   249,
     4050     250,   251,   366,   114,   116,   372,   131,   259,   114,   228,
     4051     264,   265,   266,   269,   270,   110,   116,   174,   134,   117,
     4052     165,   134,   225,   228,   263,   362,   370,   303,   304,   109,
     4053     150,   336,   110,   116,   373,   274,   286,   109,   114,   274,
     4054     276,   286,   110,   116,   109,   141,   110,   130,   275,   275,
     4055     275,   146,   165,   276,   275,   112,   134,   110,   116,   110,
     4056     109,   150,   349,   357,   358,   359,   360,   110,   116,   165,
     4057     111,   139,   145,   146,   134,   111,   139,   145,   165,   152,
     4058     152,   152,   153,   153,   154,   154,   155,   155,   155,   155,
     4059     156,   156,   157,   158,   159,   160,   161,   130,   170,   165,
     4060     134,   346,   347,   348,   228,   345,   312,   312,   165,   276,
     4061     134,   271,   134,   226,   350,   363,   228,   232,   112,   112,
     4062     134,   370,   112,   109,   134,   319,   337,   338,   339,   342,
     4063     352,   353,   354,   112,   134,   228,   336,   340,   351,   109,
     4064     312,   355,   373,   312,   312,   373,   109,   312,   355,   312,
     4065     312,   312,   312,   350,   226,   361,   371,   272,   112,   116,
     4066     112,   116,   373,   226,   363,   373,   260,   261,   262,   263,
     4067     260,   260,   272,   165,   134,   111,   274,   130,   116,   372,
     4068     278,   111,   130,   282,    29,   210,   211,   272,   260,   139,
     4069     309,   139,   311,   109,   349,   350,   109,   349,   350,   142,
     4070     350,   174,   264,   110,   110,   110,   110,   112,   174,   208,
     4071     174,   114,   250,   251,   112,   134,   109,   130,   150,   252,
     4072     254,   318,   319,   331,   357,   116,   132,   116,   132,   274,
     4073     248,   274,   115,   163,   164,   258,   135,   135,   139,   223,
     4074     135,   135,   260,   109,   150,   370,   135,   115,   228,   287,
     4075     288,   135,   134,   134,   109,   135,   110,   316,   170,   171,
     4076     130,   132,   111,   141,   201,   202,   203,   110,   116,   110,
     4077     110,   110,   110,   111,   165,   358,   359,   360,   228,   357,
     4078     312,   312,   114,   152,   168,   165,   166,   169,   116,   135,
     4079     134,   110,   116,   165,   134,   115,   163,   130,   264,   110,
     4080     110,   110,   345,   264,   110,   260,   226,   363,   111,   117,
     4081     150,   165,   165,   228,   342,   264,   110,   110,   110,   110,
     4082     110,   110,   110,     7,   228,   336,   340,   351,   134,   134,
     4083     373,   134,   134,   110,   135,   135,   135,   135,   277,   135,
     4084     163,   164,   165,   310,   134,   278,   280,   115,   134,   212,
     4085     274,    40,    41,    43,    46,    47,    48,    49,    50,    51,
     4086      52,    53,    57,    61,    62,    72,   111,   127,   171,   172,
     4087     173,   174,   175,   176,   178,   179,   191,   193,   194,   199,
     4088     213,   308,    29,   135,   131,   277,   134,   134,   110,   135,
     4089     174,   248,   132,   132,   319,   164,   228,   253,   254,   253,
     4090     274,   312,   115,   259,   372,   110,   116,   112,   112,   135,
     4091     228,   116,   373,   290,   110,   286,   216,   218,   226,   298,
     4092     299,   300,   301,   292,   110,   110,   130,   164,   109,   110,
     4093     130,   116,   139,   112,   110,   110,   110,   357,   279,   116,
     4094     135,   169,   112,   139,   147,   148,   146,   135,   147,   163,
     4095     168,   135,   109,   349,   350,   135,   135,   134,   135,   135,
     4096     135,   165,   110,   135,   109,   349,   350,   109,   355,   109,
     4097     355,   350,   227,     7,   117,   135,   165,   264,   264,   263,
     4098     267,   267,   268,   116,   116,   110,   110,   112,    96,   122,
     4099     135,   135,   147,   278,   165,   116,   132,   213,   217,   228,
     4100     232,   109,   109,   172,   109,   109,    72,   132,    72,   132,
     4101      72,   117,   171,   109,   174,   166,   166,   130,   112,   144,
     4102     132,   135,   134,   135,   212,   110,   165,   264,   264,   312,
     4103     110,   115,   252,   115,   134,   110,   134,   135,   309,   115,
     4104     134,   135,   135,   110,   114,   201,   112,   164,   132,   201,
     4105     203,   110,   109,   349,   350,   372,   166,   112,   135,    85,
     4106     113,   116,   135,   112,   135,   110,   134,   110,   110,   112,
     4107     112,   112,   135,   110,   134,   134,   134,   165,   165,   135,
     4108     112,   135,   135,   135,   135,   134,   134,   164,   164,   112,
     4109     112,   135,   135,   274,   228,   170,   170,    47,   170,   134,
     4110     132,   132,   132,   170,   132,   170,    58,    59,    60,   195,
     4111     196,   197,   132,    63,   132,   312,   114,   176,   115,   132,
     4112     135,   135,    96,   269,   270,   110,   299,   116,   132,   116,
     4113     132,   115,   297,   130,   141,   110,   110,   130,   134,   115,
     4114     112,   111,   148,   111,   148,   148,   112,   112,   264,   112,
     4115     264,   264,   264,   135,   135,   112,   112,   110,   110,   112,
     4116     116,    96,   263,    96,   135,   112,   112,   110,   110,   109,
     4117     110,   171,   192,   213,   132,   110,   109,   109,   174,   197,
     4118      58,    59,   165,   172,   145,   110,   110,   114,   134,   134,
     4119     298,   141,   204,   109,   132,   204,   264,   134,   134,   135,
     4120     135,   135,   135,   112,   112,   134,   135,   112,   172,    44,
     4121      45,   114,   182,   183,   184,   170,   172,   135,   110,   171,
     4122     114,   184,    96,   134,    96,   134,   109,   109,   132,   115,
     4123     134,   272,   309,   115,   116,   130,   164,   110,   135,   147,
     4124     147,   110,   110,   110,   110,   267,    42,   164,   180,   181,
     4125     310,   130,   134,   172,   182,   110,   132,   172,   132,   134,
     4126     110,   134,   110,   134,    96,   134,    96,   134,   132,   298,
     4127     141,   139,   205,   110,   132,   110,   135,   135,   172,    96,
     4128     116,   130,   135,   206,   207,   213,   132,   171,   171,   206,
     4129     174,   198,   226,   366,   174,   198,   110,   134,   110,   134,
     4130     115,   110,   116,   112,   112,   164,   180,   183,   185,   186,
     4131     134,   132,   183,   187,   188,   135,   109,   150,   309,   357,
     4132     139,   135,   174,   198,   174,   198,   109,   132,   139,   172,
     4133     177,   115,   183,   213,   171,    56,   177,   190,   115,   183,
     4134     110,   228,   110,   135,   135,   292,   172,   177,   132,   189,
     4135     190,   177,   190,   174,   174,   110,   110,   110,   189,   135,
     4136     135,   174,   174,   135,   135
    41434137};
    41444138
     
    49774971
    49784972/* Line 1806 of yacc.c  */
    4979 #line 302 "parser.yy"
     4973#line 300 "parser.yy"
    49804974    { typedefTable.enterScope(); }
    49814975    break;
     
    49844978
    49854979/* Line 1806 of yacc.c  */
    4986 #line 306 "parser.yy"
     4980#line 304 "parser.yy"
    49874981    { typedefTable.leaveScope(); }
    49884982    break;
     
    49914985
    49924986/* Line 1806 of yacc.c  */
     4987#line 311 "parser.yy"
     4988    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
     4989    break;
     4990
     4991  case 5:
     4992
     4993/* Line 1806 of yacc.c  */
     4994#line 312 "parser.yy"
     4995    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
     4996    break;
     4997
     4998  case 6:
     4999
     5000/* Line 1806 of yacc.c  */
    49935001#line 313 "parser.yy"
    4994     { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
    4995     break;
    4996 
    4997   case 5:
    4998 
    4999 /* Line 1806 of yacc.c  */
    5000 #line 314 "parser.yy"
    5001     { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    5002     break;
    5003 
    5004   case 6:
    5005 
    5006 /* Line 1806 of yacc.c  */
    5007 #line 315 "parser.yy"
    50085002    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
    50095003    break;
     
    50125006
    50135007/* Line 1806 of yacc.c  */
    5014 #line 340 "parser.yy"
     5008#line 338 "parser.yy"
    50155009    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
    50165010    break;
     
    50195013
    50205014/* Line 1806 of yacc.c  */
     5015#line 342 "parser.yy"
     5016    { (yyval.str) = (yyvsp[(1) - (1)].tok); }
     5017    break;
     5018
     5019  case 18:
     5020
     5021/* Line 1806 of yacc.c  */
    50215022#line 344 "parser.yy"
    5022     { (yyval.str) = (yyvsp[(1) - (1)].tok); }
    5023     break;
    5024 
    5025   case 18:
    5026 
    5027 /* Line 1806 of yacc.c  */
    5028 #line 346 "parser.yy"
    50295023    {
    50305024                        appendStr( (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].tok) );                                            // append 2nd juxtaposed string to 1st
     
    50375031
    50385032/* Line 1806 of yacc.c  */
     5033#line 355 "parser.yy"
     5034    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     5035    break;
     5036
     5037  case 20:
     5038
     5039/* Line 1806 of yacc.c  */
    50395040#line 357 "parser.yy"
    50405041    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    50415042    break;
    50425043
    5043   case 20:
     5044  case 21:
    50445045
    50455046/* Line 1806 of yacc.c  */
    50465047#line 359 "parser.yy"
    5047     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    5048     break;
    5049 
    5050   case 21:
     5048    { (yyval.en) = (yyvsp[(2) - (3)].en); }
     5049    break;
     5050
     5051  case 22:
    50515052
    50525053/* Line 1806 of yacc.c  */
    50535054#line 361 "parser.yy"
    5054     { (yyval.en) = (yyvsp[(2) - (3)].en); }
    5055     break;
    5056 
    5057   case 22:
    5058 
    5059 /* Line 1806 of yacc.c  */
    5060 #line 363 "parser.yy"
    50615055    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
    50625056    break;
     
    50655059
    50665060/* Line 1806 of yacc.c  */
     5061#line 371 "parser.yy"
     5062    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
     5063    break;
     5064
     5065  case 25:
     5066
     5067/* Line 1806 of yacc.c  */
    50675068#line 373 "parser.yy"
    5068     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
    5069     break;
    5070 
    5071   case 25:
    5072 
    5073 /* Line 1806 of yacc.c  */
    5074 #line 375 "parser.yy"
    50755069    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
    50765070    break;
     
    50795073
    50805074/* Line 1806 of yacc.c  */
     5075#line 377 "parser.yy"
     5076    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
     5077    break;
     5078
     5079  case 27:
     5080
     5081/* Line 1806 of yacc.c  */
    50815082#line 379 "parser.yy"
    5082     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    5083     break;
    5084 
    5085   case 27:
     5083    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
     5084    break;
     5085
     5086  case 28:
    50865087
    50875088/* Line 1806 of yacc.c  */
    50885089#line 381 "parser.yy"
    5089     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    5090     break;
    5091 
    5092   case 28:
     5090    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
     5091    break;
     5092
     5093  case 29:
    50935094
    50945095/* Line 1806 of yacc.c  */
    50955096#line 383 "parser.yy"
    5096     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_constantInteger( *(yyvsp[(3) - (3)].tok) ) ) ); }
    5097     break;
    5098 
    5099   case 29:
     5097    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
     5098    break;
     5099
     5100  case 30:
    51005101
    51015102/* Line 1806 of yacc.c  */
    51025103#line 385 "parser.yy"
    5103     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    5104     break;
    5105 
    5106   case 30:
     5104    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
     5105    break;
     5106
     5107  case 31:
    51075108
    51085109/* Line 1806 of yacc.c  */
    51095110#line 387 "parser.yy"
    5110     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    5111     break;
    5112 
    5113   case 31:
     5111    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
     5112    break;
     5113
     5114  case 32:
    51145115
    51155116/* Line 1806 of yacc.c  */
    51165117#line 389 "parser.yy"
    5117     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
    5118     break;
    5119 
    5120   case 32:
     5118    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
     5119    break;
     5120
     5121  case 33:
    51215122
    51225123/* Line 1806 of yacc.c  */
    51235124#line 391 "parser.yy"
    5124     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
    5125     break;
    5126 
    5127   case 33:
    5128 
    5129 /* Line 1806 of yacc.c  */
    5130 #line 393 "parser.yy"
    5131     { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
    5132     break;
    5133 
    5134   case 34:
    5135 
    5136 /* Line 1806 of yacc.c  */
    5137 #line 395 "parser.yy"
    51385125    {
    51395126                        Token fn;
    5140                         fn.str = new std::string( "?{}" );                      // location undefined - use location of '{'?
     5127                        fn.str = new std::string( "?{}" ); // location undefined - use location of '{'?
    51415128                        (yyval.en) = new ExpressionNode( new ConstructorExpr( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_last( (yyvsp[(3) - (4)].en) ) ) ) );
    51425129                }
    51435130    break;
    51445131
     5132  case 35:
     5133
     5134/* Line 1806 of yacc.c  */
     5135#line 401 "parser.yy"
     5136    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     5137    break;
     5138
    51455139  case 36:
    51465140
    51475141/* Line 1806 of yacc.c  */
    5148 #line 405 "parser.yy"
    5149     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    5150     break;
    5151 
    5152   case 37:
    5153 
    5154 /* Line 1806 of yacc.c  */
    5155 #line 410 "parser.yy"
     5142#line 406 "parser.yy"
    51565143    { (yyval.en) = 0; }
    51575144    break;
    51585145
     5146  case 39:
     5147
     5148/* Line 1806 of yacc.c  */
     5149#line 412 "parser.yy"
     5150    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     5151    break;
     5152
    51595153  case 40:
    51605154
    51615155/* Line 1806 of yacc.c  */
    5162 #line 416 "parser.yy"
    5163     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     5156#line 417 "parser.yy"
     5157    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    51645158    break;
    51655159
     
    51675161
    51685162/* Line 1806 of yacc.c  */
     5163#line 421 "parser.yy"
     5164    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
     5165    break;
     5166
     5167  case 42:
     5168
     5169/* Line 1806 of yacc.c  */
    51695170#line 423 "parser.yy"
    5170     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    5171     break;
    5172 
    5173   case 42:
     5171    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
     5172    break;
     5173
     5174  case 43:
    51745175
    51755176/* Line 1806 of yacc.c  */
    51765177#line 425 "parser.yy"
    5177     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
    5178     break;
    5179 
    5180   case 43:
     5178    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
     5179    break;
     5180
     5181  case 44:
    51815182
    51825183/* Line 1806 of yacc.c  */
    51835184#line 427 "parser.yy"
    5184     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
    5185     break;
    5186 
    5187   case 44:
    5188 
    5189 /* Line 1806 of yacc.c  */
    5190 #line 429 "parser.yy"
    5191     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
    5192     break;
    5193 
    5194   case 45:
    5195 
    5196 /* Line 1806 of yacc.c  */
    5197 #line 431 "parser.yy"
    51985185    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
    51995186    break;
    52005187
     5188  case 46:
     5189
     5190/* Line 1806 of yacc.c  */
     5191#line 435 "parser.yy"
     5192    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     5193    break;
     5194
     5195  case 47:
     5196
     5197/* Line 1806 of yacc.c  */
     5198#line 437 "parser.yy"
     5199    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     5200    break;
     5201
     5202  case 48:
     5203
     5204/* Line 1806 of yacc.c  */
     5205#line 439 "parser.yy"
     5206    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
     5207    break;
     5208
    52015209  case 49:
    52025210
    52035211/* Line 1806 of yacc.c  */
    52045212#line 444 "parser.yy"
    5205     { (yyval.en) = (yyvsp[(1) - (1)].en); }
    5206     break;
    5207 
    5208   case 50:
    5209 
    5210 /* Line 1806 of yacc.c  */
    5211 #line 446 "parser.yy"
    5212     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    5213     break;
    5214 
    5215   case 51:
    5216 
    5217 /* Line 1806 of yacc.c  */
    5218 #line 448 "parser.yy"
    5219     { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    5220     break;
    5221 
    5222   case 52:
    5223 
    5224 /* Line 1806 of yacc.c  */
    5225 #line 453 "parser.yy"
    52265213    {
    52275214                        switch ( (yyvsp[(1) - (2)].op) ) {
     
    52385225    break;
    52395226
     5227  case 50:
     5228
     5229/* Line 1806 of yacc.c  */
     5230#line 457 "parser.yy"
     5231    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
     5232    break;
     5233
     5234  case 51:
     5235
     5236/* Line 1806 of yacc.c  */
     5237#line 459 "parser.yy"
     5238    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
     5239    break;
     5240
     5241  case 52:
     5242
     5243/* Line 1806 of yacc.c  */
     5244#line 461 "parser.yy"
     5245    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
     5246    break;
     5247
    52405248  case 53:
    52415249
    52425250/* Line 1806 of yacc.c  */
    5243 #line 466 "parser.yy"
    5244     { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
     5251#line 463 "parser.yy"
     5252    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52455253    break;
    52465254
     
    52485256
    52495257/* Line 1806 of yacc.c  */
    5250 #line 468 "parser.yy"
    5251     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
     5258#line 465 "parser.yy"
     5259    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52525260    break;
    52535261
     
    52555263
    52565264/* Line 1806 of yacc.c  */
    5257 #line 470 "parser.yy"
    5258     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
     5265#line 467 "parser.yy"
     5266    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52595267    break;
    52605268
     
    52625270
    52635271/* Line 1806 of yacc.c  */
    5264 #line 472 "parser.yy"
    5265     { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     5272#line 469 "parser.yy"
     5273    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52665274    break;
    52675275
     
    52695277
    52705278/* Line 1806 of yacc.c  */
    5271 #line 474 "parser.yy"
    5272     { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
     5279#line 471 "parser.yy"
     5280    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
    52735281    break;
    52745282
     
    52765284
    52775285/* Line 1806 of yacc.c  */
    5278 #line 476 "parser.yy"
    5279     { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     5286#line 473 "parser.yy"
     5287    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
    52805288    break;
    52815289
     
    52835291
    52845292/* Line 1806 of yacc.c  */
    5285 #line 478 "parser.yy"
    5286     { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
     5293#line 475 "parser.yy"
     5294    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
    52875295    break;
    52885296
     
    52905298
    52915299/* Line 1806 of yacc.c  */
    5292 #line 480 "parser.yy"
    5293     { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
     5300#line 477 "parser.yy"
     5301    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
    52945302    break;
    52955303
     
    52975305
    52985306/* Line 1806 of yacc.c  */
    5299 #line 482 "parser.yy"
    5300     { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
     5307#line 483 "parser.yy"
     5308    { (yyval.op) = OperKinds::PointTo; }
    53015309    break;
    53025310
     
    53055313/* Line 1806 of yacc.c  */
    53065314#line 484 "parser.yy"
    5307     { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
     5315    { (yyval.op) = OperKinds::AddressOf; }
    53085316    break;
    53095317
     
    53115319
    53125320/* Line 1806 of yacc.c  */
    5313 #line 486 "parser.yy"
    5314     { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
     5321#line 490 "parser.yy"
     5322    { (yyval.op) = OperKinds::UnPlus; }
    53155323    break;
    53165324
     
    53185326
    53195327/* Line 1806 of yacc.c  */
     5328#line 491 "parser.yy"
     5329    { (yyval.op) = OperKinds::UnMinus; }
     5330    break;
     5331
     5332  case 65:
     5333
     5334/* Line 1806 of yacc.c  */
    53205335#line 492 "parser.yy"
    5321     { (yyval.op) = OperKinds::PointTo; }
    5322     break;
    5323 
    5324   case 65:
     5336    { (yyval.op) = OperKinds::Neg; }
     5337    break;
     5338
     5339  case 66:
    53255340
    53265341/* Line 1806 of yacc.c  */
    53275342#line 493 "parser.yy"
    5328     { (yyval.op) = OperKinds::AddressOf; }
    5329     break;
    5330 
    5331   case 66:
     5343    { (yyval.op) = OperKinds::BitNeg; }
     5344    break;
     5345
     5346  case 68:
    53325347
    53335348/* Line 1806 of yacc.c  */
    53345349#line 499 "parser.yy"
    5335     { (yyval.op) = OperKinds::UnPlus; }
    5336     break;
    5337 
    5338   case 67:
    5339 
    5340 /* Line 1806 of yacc.c  */
    5341 #line 500 "parser.yy"
    5342     { (yyval.op) = OperKinds::UnMinus; }
    5343     break;
    5344 
    5345   case 68:
     5350    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     5351    break;
     5352
     5353  case 69:
    53465354
    53475355/* Line 1806 of yacc.c  */
    53485356#line 501 "parser.yy"
    5349     { (yyval.op) = OperKinds::Neg; }
    5350     break;
    5351 
    5352   case 69:
    5353 
    5354 /* Line 1806 of yacc.c  */
    5355 #line 502 "parser.yy"
    5356     { (yyval.op) = OperKinds::BitNeg; }
     5357    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    53575358    break;
    53585359
     
    53605361
    53615362/* Line 1806 of yacc.c  */
    5362 #line 508 "parser.yy"
    5363     { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     5363#line 507 "parser.yy"
     5364    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53645365    break;
    53655366
     
    53675368
    53685369/* Line 1806 of yacc.c  */
    5369 #line 510 "parser.yy"
    5370     { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    5371     break;
    5372 
    5373   case 74:
    5374 
    5375 /* Line 1806 of yacc.c  */
    5376 #line 516 "parser.yy"
    5377     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5370#line 509 "parser.yy"
     5371    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5372    break;
     5373
     5374  case 73:
     5375
     5376/* Line 1806 of yacc.c  */
     5377#line 511 "parser.yy"
     5378    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53785379    break;
    53795380
     
    53815382
    53825383/* Line 1806 of yacc.c  */
    5383 #line 518 "parser.yy"
    5384     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5384#line 517 "parser.yy"
     5385    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53855386    break;
    53865387
     
    53885389
    53895390/* Line 1806 of yacc.c  */
    5390 #line 520 "parser.yy"
    5391     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5391#line 519 "parser.yy"
     5392    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53925393    break;
    53935394
     
    53955396
    53965397/* Line 1806 of yacc.c  */
    5397 #line 526 "parser.yy"
    5398     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5398#line 525 "parser.yy"
     5399    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53995400    break;
    54005401
     
    54025403
    54035404/* Line 1806 of yacc.c  */
    5404 #line 528 "parser.yy"
    5405     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5405#line 527 "parser.yy"
     5406    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54065407    break;
    54075408
     
    54095410
    54105411/* Line 1806 of yacc.c  */
    5411 #line 534 "parser.yy"
    5412     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5412#line 533 "parser.yy"
     5413    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54135414    break;
    54145415
     
    54165417
    54175418/* Line 1806 of yacc.c  */
    5418 #line 536 "parser.yy"
    5419     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5419#line 535 "parser.yy"
     5420    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5421    break;
     5422
     5423  case 83:
     5424
     5425/* Line 1806 of yacc.c  */
     5426#line 537 "parser.yy"
     5427    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54205428    break;
    54215429
     
    54235431
    54245432/* Line 1806 of yacc.c  */
    5425 #line 542 "parser.yy"
    5426     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5427     break;
    5428 
    5429   case 85:
    5430 
    5431 /* Line 1806 of yacc.c  */
    5432 #line 544 "parser.yy"
    5433     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5433#line 539 "parser.yy"
     5434    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54345435    break;
    54355436
     
    54375438
    54385439/* Line 1806 of yacc.c  */
    5439 #line 546 "parser.yy"
    5440     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5440#line 545 "parser.yy"
     5441    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54415442    break;
    54425443
     
    54445445
    54455446/* Line 1806 of yacc.c  */
    5446 #line 548 "parser.yy"
    5447     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5447#line 547 "parser.yy"
     5448    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54485449    break;
    54495450
     
    54515452
    54525453/* Line 1806 of yacc.c  */
    5453 #line 554 "parser.yy"
    5454     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5455     break;
    5456 
    5457   case 90:
    5458 
    5459 /* Line 1806 of yacc.c  */
    5460 #line 556 "parser.yy"
    5461     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5462     break;
    5463 
    5464   case 92:
    5465 
    5466 /* Line 1806 of yacc.c  */
    5467 #line 562 "parser.yy"
     5454#line 553 "parser.yy"
    54685455    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54695456    break;
    54705457
    5471   case 94:
    5472 
    5473 /* Line 1806 of yacc.c  */
    5474 #line 568 "parser.yy"
     5458  case 91:
     5459
     5460/* Line 1806 of yacc.c  */
     5461#line 559 "parser.yy"
    54755462    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54765463    break;
    54775464
    5478   case 96:
    5479 
    5480 /* Line 1806 of yacc.c  */
    5481 #line 574 "parser.yy"
     5465  case 93:
     5466
     5467/* Line 1806 of yacc.c  */
     5468#line 565 "parser.yy"
    54825469    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54835470    break;
    54845471
    5485   case 98:
    5486 
    5487 /* Line 1806 of yacc.c  */
    5488 #line 580 "parser.yy"
     5472  case 95:
     5473
     5474/* Line 1806 of yacc.c  */
     5475#line 571 "parser.yy"
    54895476    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
    54905477    break;
    54915478
     5479  case 97:
     5480
     5481/* Line 1806 of yacc.c  */
     5482#line 577 "parser.yy"
     5483    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
     5484    break;
     5485
     5486  case 99:
     5487
     5488/* Line 1806 of yacc.c  */
     5489#line 583 "parser.yy"
     5490    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     5491    break;
     5492
    54925493  case 100:
    54935494
    54945495/* Line 1806 of yacc.c  */
    54955496#line 586 "parser.yy"
    5496     { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
    5497     break;
    5498 
    5499   case 102:
    5500 
    5501 /* Line 1806 of yacc.c  */
    5502 #line 592 "parser.yy"
     5497    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
     5498    break;
     5499
     5500  case 101:
     5501
     5502/* Line 1806 of yacc.c  */
     5503#line 588 "parser.yy"
    55035504    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    55045505    break;
    55055506
    5506   case 103:
    5507 
    5508 /* Line 1806 of yacc.c  */
    5509 #line 595 "parser.yy"
    5510     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
    5511     break;
    5512 
    55135507  case 104:
    55145508
    55155509/* Line 1806 of yacc.c  */
    5516 #line 597 "parser.yy"
    5517     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    5518     break;
    5519 
    5520   case 107:
    5521 
    5522 /* Line 1806 of yacc.c  */
    5523 #line 608 "parser.yy"
     5510#line 599 "parser.yy"
    55245511    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    55255512    break;
    55265513
     5514  case 105:
     5515
     5516/* Line 1806 of yacc.c  */
     5517#line 601 "parser.yy"
     5518    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); }
     5519    break;
     5520
     5521  case 106:
     5522
     5523/* Line 1806 of yacc.c  */
     5524#line 606 "parser.yy"
     5525    { (yyval.en) = nullptr; }
     5526    break;
     5527
    55275528  case 108:
    55285529
    55295530/* Line 1806 of yacc.c  */
    5530 #line 610 "parser.yy"
    5531     { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); }
     5531#line 611 "parser.yy"
     5532    { (yyval.op) = OperKinds::Assign; }
    55325533    break;
    55335534
     
    55355536
    55365537/* Line 1806 of yacc.c  */
     5538#line 612 "parser.yy"
     5539    { (yyval.op) = OperKinds::AtAssn; }
     5540    break;
     5541
     5542  case 110:
     5543
     5544/* Line 1806 of yacc.c  */
     5545#line 613 "parser.yy"
     5546    { (yyval.op) = OperKinds::MulAssn; }
     5547    break;
     5548
     5549  case 111:
     5550
     5551/* Line 1806 of yacc.c  */
     5552#line 614 "parser.yy"
     5553    { (yyval.op) = OperKinds::DivAssn; }
     5554    break;
     5555
     5556  case 112:
     5557
     5558/* Line 1806 of yacc.c  */
    55375559#line 615 "parser.yy"
    5538     { (yyval.en) = nullptr; }
    5539     break;
    5540 
    5541   case 111:
     5560    { (yyval.op) = OperKinds::ModAssn; }
     5561    break;
     5562
     5563  case 113:
     5564
     5565/* Line 1806 of yacc.c  */
     5566#line 616 "parser.yy"
     5567    { (yyval.op) = OperKinds::PlusAssn; }
     5568    break;
     5569
     5570  case 114:
     5571
     5572/* Line 1806 of yacc.c  */
     5573#line 617 "parser.yy"
     5574    { (yyval.op) = OperKinds::MinusAssn; }
     5575    break;
     5576
     5577  case 115:
     5578
     5579/* Line 1806 of yacc.c  */
     5580#line 618 "parser.yy"
     5581    { (yyval.op) = OperKinds::LSAssn; }
     5582    break;
     5583
     5584  case 116:
     5585
     5586/* Line 1806 of yacc.c  */
     5587#line 619 "parser.yy"
     5588    { (yyval.op) = OperKinds::RSAssn; }
     5589    break;
     5590
     5591  case 117:
    55425592
    55435593/* Line 1806 of yacc.c  */
    55445594#line 620 "parser.yy"
    5545     { (yyval.op) = OperKinds::Assign; }
    5546     break;
    5547 
    5548   case 112:
     5595    { (yyval.op) = OperKinds::AndAssn; }
     5596    break;
     5597
     5598  case 118:
    55495599
    55505600/* Line 1806 of yacc.c  */
    55515601#line 621 "parser.yy"
    5552     { (yyval.op) = OperKinds::AtAssn; }
    5553     break;
    5554 
    5555   case 113:
     5602    { (yyval.op) = OperKinds::ERAssn; }
     5603    break;
     5604
     5605  case 119:
    55565606
    55575607/* Line 1806 of yacc.c  */
    55585608#line 622 "parser.yy"
    5559     { (yyval.op) = OperKinds::MulAssn; }
    5560     break;
    5561 
    5562   case 114:
    5563 
    5564 /* Line 1806 of yacc.c  */
    5565 #line 623 "parser.yy"
    5566     { (yyval.op) = OperKinds::DivAssn; }
    5567     break;
    5568 
    5569   case 115:
    5570 
    5571 /* Line 1806 of yacc.c  */
    5572 #line 624 "parser.yy"
    5573     { (yyval.op) = OperKinds::ModAssn; }
    5574     break;
    5575 
    5576   case 116:
    5577 
    5578 /* Line 1806 of yacc.c  */
    5579 #line 625 "parser.yy"
    5580     { (yyval.op) = OperKinds::PlusAssn; }
    5581     break;
    5582 
    5583   case 117:
    5584 
    5585 /* Line 1806 of yacc.c  */
    5586 #line 626 "parser.yy"
    5587     { (yyval.op) = OperKinds::MinusAssn; }
    5588     break;
    5589 
    5590   case 118:
    5591 
    5592 /* Line 1806 of yacc.c  */
    5593 #line 627 "parser.yy"
    5594     { (yyval.op) = OperKinds::LSAssn; }
    5595     break;
    5596 
    5597   case 119:
    5598 
    5599 /* Line 1806 of yacc.c  */
    5600 #line 628 "parser.yy"
    5601     { (yyval.op) = OperKinds::RSAssn; }
     5609    { (yyval.op) = OperKinds::OrAssn; }
    56025610    break;
    56035611
     
    56065614/* Line 1806 of yacc.c  */
    56075615#line 629 "parser.yy"
    5608     { (yyval.op) = OperKinds::AndAssn; }
     5616    { (yyval.en) = new ExpressionNode( build_tuple() ); }
    56095617    break;
    56105618
     
    56125620
    56135621/* Line 1806 of yacc.c  */
    5614 #line 630 "parser.yy"
    5615     { (yyval.op) = OperKinds::ERAssn; }
     5622#line 631 "parser.yy"
     5623    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
    56165624    break;
    56175625
     
    56195627
    56205628/* Line 1806 of yacc.c  */
    5621 #line 631 "parser.yy"
    5622     { (yyval.op) = OperKinds::OrAssn; }
     5629#line 633 "parser.yy"
     5630    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
    56235631    break;
    56245632
     
    56265634
    56275635/* Line 1806 of yacc.c  */
    5628 #line 638 "parser.yy"
    5629     { (yyval.en) = new ExpressionNode( build_tuple() ); }
    5630     break;
    5631 
    5632   case 124:
    5633 
    5634 /* Line 1806 of yacc.c  */
    5635 #line 640 "parser.yy"
    5636     { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
     5636#line 635 "parser.yy"
     5637    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
    56375638    break;
    56385639
     
    56405641
    56415642/* Line 1806 of yacc.c  */
    5642 #line 642 "parser.yy"
    5643     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
    5644     break;
    5645 
    5646   case 126:
    5647 
    5648 /* Line 1806 of yacc.c  */
    5649 #line 644 "parser.yy"
    5650     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
     5643#line 641 "parser.yy"
     5644    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     5645    break;
     5646
     5647  case 127:
     5648
     5649/* Line 1806 of yacc.c  */
     5650#line 647 "parser.yy"
     5651    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    56515652    break;
    56525653
     
    56545655
    56555656/* Line 1806 of yacc.c  */
    5656 #line 650 "parser.yy"
    5657     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    5658     break;
    5659 
    5660   case 130:
    5661 
    5662 /* Line 1806 of yacc.c  */
    5663 #line 656 "parser.yy"
    5664     { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5665     break;
    5666 
    5667   case 131:
     5657#line 652 "parser.yy"
     5658    { (yyval.en) = 0; }
     5659    break;
     5660
     5661  case 132:
    56685662
    56695663/* Line 1806 of yacc.c  */
    56705664#line 661 "parser.yy"
    5671     { (yyval.en) = 0; }
    5672     break;
    5673 
    5674   case 135:
    5675 
    5676 /* Line 1806 of yacc.c  */
    5677 #line 670 "parser.yy"
    56785665    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56795666    break;
    56805667
    5681   case 141:
    5682 
    5683 /* Line 1806 of yacc.c  */
    5684 #line 677 "parser.yy"
     5668  case 138:
     5669
     5670/* Line 1806 of yacc.c  */
     5671#line 668 "parser.yy"
    56855672    {
    56865673                        Token fn;
    5687                         fn.str = new string( "^?{}" );                          // location undefined
     5674                        fn.str = new std::string( "^?{}" ); // location undefined
    56885675                        (yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_last( (yyvsp[(4) - (6)].en) ) ) ) ) );
    56895676                }
    56905677    break;
    56915678
    5692   case 142:
    5693 
    5694 /* Line 1806 of yacc.c  */
    5695 #line 687 "parser.yy"
     5679  case 139:
     5680
     5681/* Line 1806 of yacc.c  */
     5682#line 678 "parser.yy"
    56965683    {
    56975684                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    56995686    break;
    57005687
     5688  case 140:
     5689
     5690/* Line 1806 of yacc.c  */
     5691#line 685 "parser.yy"
     5692    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
     5693    break;
     5694
     5695  case 141:
     5696
     5697/* Line 1806 of yacc.c  */
     5698#line 692 "parser.yy"
     5699    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
     5700    break;
     5701
    57015702  case 143:
    57025703
    57035704/* Line 1806 of yacc.c  */
    5704 #line 694 "parser.yy"
    5705     { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
     5705#line 698 "parser.yy"
     5706    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    57065707    break;
    57075708
     
    57095710
    57105711/* Line 1806 of yacc.c  */
    5711 #line 701 "parser.yy"
    5712     { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
    5713     break;
    5714 
    5715   case 146:
    5716 
    5717 /* Line 1806 of yacc.c  */
    5718 #line 707 "parser.yy"
    5719     { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    5720     break;
    5721 
    5722   case 147:
    5723 
    5724 /* Line 1806 of yacc.c  */
    5725 #line 712 "parser.yy"
     5712#line 703 "parser.yy"
    57265713    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57275714    break;
    57285715
    5729   case 148:
    5730 
    5731 /* Line 1806 of yacc.c  */
    5732 #line 714 "parser.yy"
     5716  case 145:
     5717
     5718/* Line 1806 of yacc.c  */
     5719#line 705 "parser.yy"
    57335720    {   // mark all fields in list
    57345721                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    57385725    break;
    57395726
     5727  case 146:
     5728
     5729/* Line 1806 of yacc.c  */
     5730#line 711 "parser.yy"
     5731    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5732    break;
     5733
    57405734  case 149:
    57415735
    57425736/* Line 1806 of yacc.c  */
    5743 #line 720 "parser.yy"
    5744     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5737#line 718 "parser.yy"
     5738    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     5739    break;
     5740
     5741  case 150:
     5742
     5743/* Line 1806 of yacc.c  */
     5744#line 723 "parser.yy"
     5745    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
     5746    break;
     5747
     5748  case 151:
     5749
     5750/* Line 1806 of yacc.c  */
     5751#line 729 "parser.yy"
     5752    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
    57455753    break;
    57465754
     
    57485756
    57495757/* Line 1806 of yacc.c  */
    5750 #line 727 "parser.yy"
    5751     { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     5758#line 731 "parser.yy"
     5759    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
    57525760    break;
    57535761
     
    57555763
    57565764/* Line 1806 of yacc.c  */
    5757 #line 732 "parser.yy"
    5758     { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
     5765#line 733 "parser.yy"
     5766    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    57595767    break;
    57605768
     
    57625770
    57635771/* Line 1806 of yacc.c  */
    5764 #line 738 "parser.yy"
    5765     { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
    5766     break;
    5767 
    5768   case 155:
    5769 
    5770 /* Line 1806 of yacc.c  */
    5771 #line 740 "parser.yy"
    5772     { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
    5773     break;
    5774 
    5775   case 156:
    5776 
    5777 /* Line 1806 of yacc.c  */
    5778 #line 742 "parser.yy"
    5779     { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    5780     break;
    5781 
    5782   case 157:
    5783 
    5784 /* Line 1806 of yacc.c  */
    5785 #line 744 "parser.yy"
     5772#line 735 "parser.yy"
    57865773    {
    57875774                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    57955782    break;
    57965783
    5797   case 158:
    5798 
    5799 /* Line 1806 of yacc.c  */
    5800 #line 754 "parser.yy"
     5784  case 155:
     5785
     5786/* Line 1806 of yacc.c  */
     5787#line 745 "parser.yy"
    58015788    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    58025789    break;
    58035790
    5804   case 159:
    5805 
    5806 /* Line 1806 of yacc.c  */
    5807 #line 756 "parser.yy"
     5791  case 156:
     5792
     5793/* Line 1806 of yacc.c  */
     5794#line 747 "parser.yy"
    58085795    {
    58095796                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    58125799    break;
    58135800
     5801  case 157:
     5802
     5803/* Line 1806 of yacc.c  */
     5804#line 757 "parser.yy"
     5805    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     5806    break;
     5807
     5808  case 158:
     5809
     5810/* Line 1806 of yacc.c  */
     5811#line 759 "parser.yy"
     5812    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5813    break;
     5814
    58145815  case 160:
    58155816
    58165817/* Line 1806 of yacc.c  */
     5818#line 764 "parser.yy"
     5819    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
     5820    break;
     5821
     5822  case 161:
     5823
     5824/* Line 1806 of yacc.c  */
    58175825#line 766 "parser.yy"
    5818     { (yyval.en) = (yyvsp[(1) - (1)].en); }
    5819     break;
    5820 
    5821   case 161:
    5822 
    5823 /* Line 1806 of yacc.c  */
    5824 #line 768 "parser.yy"
    5825     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5826    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
     5827    break;
     5828
     5829  case 162:
     5830
     5831/* Line 1806 of yacc.c  */
     5832#line 770 "parser.yy"
     5833    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    58265834    break;
    58275835
     
    58295837
    58305838/* Line 1806 of yacc.c  */
    5831 #line 773 "parser.yy"
    5832     { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
    5833     break;
    5834 
    5835   case 164:
    5836 
    5837 /* Line 1806 of yacc.c  */
    5838 #line 775 "parser.yy"
    5839     { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
     5839#line 771 "parser.yy"
     5840    { (yyval.sn) = new StatementNode( build_default() ); }
    58405841    break;
    58415842
     
    58435844
    58445845/* Line 1806 of yacc.c  */
    5845 #line 779 "parser.yy"
    5846     { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
     5846#line 777 "parser.yy"
     5847    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
    58475848    break;
    58485849
     
    58505851
    58515852/* Line 1806 of yacc.c  */
    5852 #line 780 "parser.yy"
    5853     { (yyval.sn) = new StatementNode( build_default() ); }
    5854     break;
    5855 
    5856   case 168:
     5853#line 781 "parser.yy"
     5854    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     5855    break;
     5856
     5857  case 167:
    58575858
    58585859/* Line 1806 of yacc.c  */
    58595860#line 786 "parser.yy"
    5860     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
     5861    { (yyval.sn) = 0; }
    58615862    break;
    58625863
     
    58645865
    58655866/* Line 1806 of yacc.c  */
    5866 #line 790 "parser.yy"
     5867#line 792 "parser.yy"
    58675868    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    58685869    break;
     
    58715872
    58725873/* Line 1806 of yacc.c  */
    5873 #line 795 "parser.yy"
     5874#line 794 "parser.yy"
     5875    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
     5876    break;
     5877
     5878  case 171:
     5879
     5880/* Line 1806 of yacc.c  */
     5881#line 799 "parser.yy"
    58745882    { (yyval.sn) = 0; }
    58755883    break;
    58765884
    5877   case 172:
    5878 
    5879 /* Line 1806 of yacc.c  */
    5880 #line 801 "parser.yy"
    5881     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    5882     break;
    5883 
    58845885  case 173:
    58855886
    58865887/* Line 1806 of yacc.c  */
    5887 #line 803 "parser.yy"
    5888     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
     5888#line 805 "parser.yy"
     5889    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58895890    break;
    58905891
     
    58925893
    58935894/* Line 1806 of yacc.c  */
    5894 #line 808 "parser.yy"
     5895#line 807 "parser.yy"
     5896    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
     5897    break;
     5898
     5899  case 175:
     5900
     5901/* Line 1806 of yacc.c  */
     5902#line 809 "parser.yy"
     5903    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     5904    break;
     5905
     5906  case 176:
     5907
     5908/* Line 1806 of yacc.c  */
     5909#line 811 "parser.yy"
     5910    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
     5911    break;
     5912
     5913  case 177:
     5914
     5915/* Line 1806 of yacc.c  */
     5916#line 816 "parser.yy"
     5917    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
     5918    break;
     5919
     5920  case 179:
     5921
     5922/* Line 1806 of yacc.c  */
     5923#line 822 "parser.yy"
    58955924    { (yyval.sn) = 0; }
    58965925    break;
    58975926
    5898   case 176:
    5899 
    5900 /* Line 1806 of yacc.c  */
    5901 #line 814 "parser.yy"
    5902     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    5903     break;
    5904 
    5905   case 177:
    5906 
    5907 /* Line 1806 of yacc.c  */
    5908 #line 816 "parser.yy"
    5909     { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    5910     break;
    5911 
    5912   case 178:
    5913 
    5914 /* Line 1806 of yacc.c  */
    5915 #line 818 "parser.yy"
    5916     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    5917     break;
    5918 
    5919   case 179:
    5920 
    5921 /* Line 1806 of yacc.c  */
    5922 #line 820 "parser.yy"
    5923     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
    5924     break;
    5925 
    59265927  case 180:
    59275928
    59285929/* Line 1806 of yacc.c  */
    5929 #line 825 "parser.yy"
     5930#line 824 "parser.yy"
     5931    { (yyval.sn) = 0; }
     5932    break;
     5933
     5934  case 181:
     5935
     5936/* Line 1806 of yacc.c  */
     5937#line 829 "parser.yy"
     5938    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     5939    break;
     5940
     5941  case 182:
     5942
     5943/* Line 1806 of yacc.c  */
     5944#line 831 "parser.yy"
     5945    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
     5946    break;
     5947
     5948  case 183:
     5949
     5950/* Line 1806 of yacc.c  */
     5951#line 833 "parser.yy"
     5952    { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
     5953    break;
     5954
     5955  case 184:
     5956
     5957/* Line 1806 of yacc.c  */
     5958#line 838 "parser.yy"
     5959    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     5960    break;
     5961
     5962  case 185:
     5963
     5964/* Line 1806 of yacc.c  */
     5965#line 840 "parser.yy"
     5966    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     5967    break;
     5968
     5969  case 186:
     5970
     5971/* Line 1806 of yacc.c  */
     5972#line 845 "parser.yy"
     5973    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
     5974    break;
     5975
     5976  case 187:
     5977
     5978/* Line 1806 of yacc.c  */
     5979#line 849 "parser.yy"
     5980    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
     5981    break;
     5982
     5983  case 188:
     5984
     5985/* Line 1806 of yacc.c  */
     5986#line 852 "parser.yy"
     5987    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
     5988    break;
     5989
     5990  case 189:
     5991
     5992/* Line 1806 of yacc.c  */
     5993#line 856 "parser.yy"
     5994    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
     5995    break;
     5996
     5997  case 190:
     5998
     5999/* Line 1806 of yacc.c  */
     6000#line 859 "parser.yy"
    59306001    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    59316002    break;
    59326003
    5933   case 182:
    5934 
    5935 /* Line 1806 of yacc.c  */
    5936 #line 831 "parser.yy"
    5937     { (yyval.sn) = 0; }
    5938     break;
    5939 
    5940   case 183:
    5941 
    5942 /* Line 1806 of yacc.c  */
    5943 #line 833 "parser.yy"
    5944     { (yyval.sn) = 0; }
    5945     break;
    5946 
    5947   case 184:
    5948 
    5949 /* Line 1806 of yacc.c  */
    5950 #line 838 "parser.yy"
    5951     { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    5952     break;
    5953 
    5954   case 185:
    5955 
    5956 /* Line 1806 of yacc.c  */
    5957 #line 840 "parser.yy"
    5958     { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
    5959     break;
    5960 
    5961   case 186:
    5962 
    5963 /* Line 1806 of yacc.c  */
    5964 #line 842 "parser.yy"
    5965     { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
    5966     break;
    5967 
    5968   case 187:
    5969 
    5970 /* Line 1806 of yacc.c  */
    5971 #line 847 "parser.yy"
    5972     { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    5973     break;
    5974 
    5975   case 188:
    5976 
    5977 /* Line 1806 of yacc.c  */
    5978 #line 849 "parser.yy"
    5979     { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    5980     break;
    5981 
    5982   case 189:
    5983 
    5984 /* Line 1806 of yacc.c  */
    5985 #line 854 "parser.yy"
    5986     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
    5987     break;
    5988 
    5989   case 190:
    5990 
    5991 /* Line 1806 of yacc.c  */
    5992 #line 858 "parser.yy"
    5993     { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    5994     break;
    5995 
    59966004  case 191:
    59976005
    59986006/* Line 1806 of yacc.c  */
    5999 #line 861 "parser.yy"
    6000     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
     6007#line 863 "parser.yy"
     6008    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
    60016009    break;
    60026010
     
    60056013/* Line 1806 of yacc.c  */
    60066014#line 865 "parser.yy"
    6007     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
     6015    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
    60086016    break;
    60096017
     
    60116019
    60126020/* Line 1806 of yacc.c  */
    6013 #line 868 "parser.yy"
    6014     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
     6021#line 867 "parser.yy"
     6022    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    60156023    break;
    60166024
     
    60186026
    60196027/* Line 1806 of yacc.c  */
    6020 #line 872 "parser.yy"
    6021     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
     6028#line 869 "parser.yy"
     6029    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    60226030    break;
    60236031
     
    60256033
    60266034/* Line 1806 of yacc.c  */
    6027 #line 874 "parser.yy"
    6028     { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
     6035#line 871 "parser.yy"
     6036    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    60296037    break;
    60306038
     
    60336041/* Line 1806 of yacc.c  */
    60346042#line 876 "parser.yy"
    6035     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     6043    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
    60366044    break;
    60376045
     
    60406048/* Line 1806 of yacc.c  */
    60416049#line 878 "parser.yy"
    6042     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     6050    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
    60436051    break;
    60446052
     
    60476055/* Line 1806 of yacc.c  */
    60486056#line 880 "parser.yy"
    6049     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    6050     break;
    6051 
    6052   case 199:
    6053 
    6054 /* Line 1806 of yacc.c  */
    6055 #line 885 "parser.yy"
    6056     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
     6057    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
    60576058    break;
    60586059
     
    60616062/* Line 1806 of yacc.c  */
    60626063#line 887 "parser.yy"
    6063     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
     6064    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    60646065    break;
    60656066
     
    60686069/* Line 1806 of yacc.c  */
    60696070#line 889 "parser.yy"
    6070     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
     6071    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     6072    break;
     6073
     6074  case 202:
     6075
     6076/* Line 1806 of yacc.c  */
     6077#line 891 "parser.yy"
     6078    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    60716079    break;
    60726080
     
    60746082
    60756083/* Line 1806 of yacc.c  */
    6076 #line 896 "parser.yy"
    6077     { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     6084#line 893 "parser.yy"
     6085    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    60786086    break;
    60796087
     
    60826090/* Line 1806 of yacc.c  */
    60836091#line 898 "parser.yy"
    6084     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     6092    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    60856093    break;
    60866094
     
    60896097/* Line 1806 of yacc.c  */
    60906098#line 900 "parser.yy"
    6091     { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     6099    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    60926100    break;
    60936101
     
    60966104/* Line 1806 of yacc.c  */
    60976105#line 902 "parser.yy"
    6098     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     6106    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    60996107    break;
    61006108
     
    61026110
    61036111/* Line 1806 of yacc.c  */
    6104 #line 907 "parser.yy"
    6105     { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     6112#line 904 "parser.yy"
     6113    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    61066114    break;
    61076115
     
    61106118/* Line 1806 of yacc.c  */
    61116119#line 909 "parser.yy"
    6112     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    6113     break;
    6114 
    6115   case 209:
    6116 
    6117 /* Line 1806 of yacc.c  */
    6118 #line 911 "parser.yy"
    6119     { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    6120     break;
    6121 
    6122   case 210:
    6123 
    6124 /* Line 1806 of yacc.c  */
    6125 #line 913 "parser.yy"
    6126     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    6127     break;
    6128 
    6129   case 211:
    6130 
    6131 /* Line 1806 of yacc.c  */
    6132 #line 918 "parser.yy"
    61336120    {
    61346121                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
     
    61366123    break;
    61376124
    6138   case 213:
    6139 
    6140 /* Line 1806 of yacc.c  */
    6141 #line 931 "parser.yy"
     6125  case 210:
     6126
     6127/* Line 1806 of yacc.c  */
     6128#line 922 "parser.yy"
    61426129    {
    61436130                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61466133    break;
    61476134
    6148   case 214:
    6149 
    6150 /* Line 1806 of yacc.c  */
    6151 #line 936 "parser.yy"
     6135  case 211:
     6136
     6137/* Line 1806 of yacc.c  */
     6138#line 927 "parser.yy"
    61526139    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    61536140    break;
    61546141
    6155   case 215:
    6156 
    6157 /* Line 1806 of yacc.c  */
    6158 #line 938 "parser.yy"
     6142  case 212:
     6143
     6144/* Line 1806 of yacc.c  */
     6145#line 929 "parser.yy"
    61596146    {
    61606147                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61636150    break;
    61646151
     6152  case 214:
     6153
     6154/* Line 1806 of yacc.c  */
     6155#line 938 "parser.yy"
     6156    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
     6157    break;
     6158
     6159  case 215:
     6160
     6161/* Line 1806 of yacc.c  */
     6162#line 940 "parser.yy"
     6163    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
     6164    break;
     6165
     6166  case 216:
     6167
     6168/* Line 1806 of yacc.c  */
     6169#line 942 "parser.yy"
     6170    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
     6171    break;
     6172
    61656173  case 217:
    61666174
    61676175/* Line 1806 of yacc.c  */
    6168 #line 947 "parser.yy"
    6169     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
     6176#line 944 "parser.yy"
     6177    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
    61706178    break;
    61716179
     
    61736181
    61746182/* Line 1806 of yacc.c  */
    6175 #line 949 "parser.yy"
    6176     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
     6183#line 946 "parser.yy"
     6184    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
    61776185    break;
    61786186
     
    61816189/* Line 1806 of yacc.c  */
    61826190#line 951 "parser.yy"
    6183     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
     6191    { (yyval.flag) = false; }
    61846192    break;
    61856193
     
    61886196/* Line 1806 of yacc.c  */
    61896197#line 953 "parser.yy"
    6190     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
     6198    { (yyval.flag) = true; }
    61916199    break;
    61926200
     
    61946202
    61956203/* Line 1806 of yacc.c  */
    6196 #line 955 "parser.yy"
    6197     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
    6198     break;
    6199 
    6200   case 222:
    6201 
    6202 /* Line 1806 of yacc.c  */
    6203 #line 960 "parser.yy"
    6204     { (yyval.flag) = false; }
    6205     break;
    6206 
    6207   case 223:
    6208 
    6209 /* Line 1806 of yacc.c  */
    6210 #line 962 "parser.yy"
    6211     { (yyval.flag) = true; }
     6204#line 958 "parser.yy"
     6205    { (yyval.en) = 0; }
    62126206    break;
    62136207
     
    62156209
    62166210/* Line 1806 of yacc.c  */
    6217 #line 967 "parser.yy"
     6211#line 965 "parser.yy"
     6212    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     6213    break;
     6214
     6215  case 225:
     6216
     6217/* Line 1806 of yacc.c  */
     6218#line 970 "parser.yy"
     6219    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
     6220    break;
     6221
     6222  case 226:
     6223
     6224/* Line 1806 of yacc.c  */
     6225#line 972 "parser.yy"
     6226    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
     6227    break;
     6228
     6229  case 227:
     6230
     6231/* Line 1806 of yacc.c  */
     6232#line 977 "parser.yy"
    62186233    { (yyval.en) = 0; }
    62196234    break;
    62206235
    6221   case 227:
    6222 
    6223 /* Line 1806 of yacc.c  */
    6224 #line 974 "parser.yy"
    6225     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    6226     break;
    6227 
    62286236  case 228:
    62296237
    62306238/* Line 1806 of yacc.c  */
    62316239#line 979 "parser.yy"
    6232     { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
     6240    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    62336241    break;
    62346242
     
    62376245/* Line 1806 of yacc.c  */
    62386246#line 981 "parser.yy"
    6239     { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
     6247    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    62406248    break;
    62416249
     
    62446252/* Line 1806 of yacc.c  */
    62456253#line 986 "parser.yy"
    6246     { (yyval.en) = 0; }
    6247     break;
    6248 
    6249   case 231:
    6250 
    6251 /* Line 1806 of yacc.c  */
    6252 #line 988 "parser.yy"
    6253     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    6254     break;
    6255 
    6256   case 232:
    6257 
    6258 /* Line 1806 of yacc.c  */
    6259 #line 990 "parser.yy"
    6260     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    6261     break;
    6262 
    6263   case 233:
    6264 
    6265 /* Line 1806 of yacc.c  */
    6266 #line 995 "parser.yy"
    62676254    {
    62686255                        (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
     
    62716258    break;
    62726259
    6273   case 234:
    6274 
    6275 /* Line 1806 of yacc.c  */
    6276 #line 1000 "parser.yy"
     6260  case 231:
     6261
     6262/* Line 1806 of yacc.c  */
     6263#line 991 "parser.yy"
    62776264    {
    62786265                        (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
     
    62816268    break;
    62826269
     6270  case 232:
     6271
     6272/* Line 1806 of yacc.c  */
     6273#line 1001 "parser.yy"
     6274    { (yyval.decl) = 0; }
     6275    break;
     6276
    62836277  case 235:
    62846278
    62856279/* Line 1806 of yacc.c  */
    6286 #line 1010 "parser.yy"
     6280#line 1008 "parser.yy"
     6281    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     6282    break;
     6283
     6284  case 236:
     6285
     6286/* Line 1806 of yacc.c  */
     6287#line 1013 "parser.yy"
    62876288    { (yyval.decl) = 0; }
    62886289    break;
    62896290
    6290   case 238:
    6291 
    6292 /* Line 1806 of yacc.c  */
    6293 #line 1017 "parser.yy"
     6291  case 239:
     6292
     6293/* Line 1806 of yacc.c  */
     6294#line 1020 "parser.yy"
    62946295    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62956296    break;
    62966297
    6297   case 239:
    6298 
    6299 /* Line 1806 of yacc.c  */
    6300 #line 1022 "parser.yy"
    6301     { (yyval.decl) = 0; }
    6302     break;
    6303 
    6304   case 242:
    6305 
    6306 /* Line 1806 of yacc.c  */
    6307 #line 1029 "parser.yy"
    6308     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    6309     break;
    6310 
    6311   case 247:
    6312 
    6313 /* Line 1806 of yacc.c  */
    6314 #line 1043 "parser.yy"
     6298  case 244:
     6299
     6300/* Line 1806 of yacc.c  */
     6301#line 1034 "parser.yy"
    63156302    {}
    63166303    break;
    63176304
    6318   case 248:
    6319 
    6320 /* Line 1806 of yacc.c  */
    6321 #line 1044 "parser.yy"
     6305  case 245:
     6306
     6307/* Line 1806 of yacc.c  */
     6308#line 1035 "parser.yy"
    63226309    {}
    63236310    break;
    63246311
    6325   case 256:
    6326 
    6327 /* Line 1806 of yacc.c  */
    6328 #line 1073 "parser.yy"
     6312  case 253:
     6313
     6314/* Line 1806 of yacc.c  */
     6315#line 1064 "parser.yy"
    63296316    {
    63306317                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63336320    break;
    63346321
    6335   case 257:
    6336 
    6337 /* Line 1806 of yacc.c  */
    6338 #line 1080 "parser.yy"
     6322  case 254:
     6323
     6324/* Line 1806 of yacc.c  */
     6325#line 1071 "parser.yy"
    63396326    {
    63406327                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63436330    break;
    63446331
    6345   case 258:
    6346 
    6347 /* Line 1806 of yacc.c  */
    6348 #line 1085 "parser.yy"
     6332  case 255:
     6333
     6334/* Line 1806 of yacc.c  */
     6335#line 1076 "parser.yy"
    63496336    {
    63506337                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    63536340    break;
    63546341
    6355   case 259:
    6356 
    6357 /* Line 1806 of yacc.c  */
    6358 #line 1095 "parser.yy"
     6342  case 256:
     6343
     6344/* Line 1806 of yacc.c  */
     6345#line 1086 "parser.yy"
    63596346    {
    63606347                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63636350    break;
    63646351
    6365   case 260:
    6366 
    6367 /* Line 1806 of yacc.c  */
    6368 #line 1100 "parser.yy"
     6352  case 257:
     6353
     6354/* Line 1806 of yacc.c  */
     6355#line 1091 "parser.yy"
    63696356    {
    63706357                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63736360    break;
    63746361
    6375   case 261:
    6376 
    6377 /* Line 1806 of yacc.c  */
    6378 #line 1105 "parser.yy"
     6362  case 258:
     6363
     6364/* Line 1806 of yacc.c  */
     6365#line 1096 "parser.yy"
    63796366    {
    63806367                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    63836370    break;
    63846371
    6385   case 262:
    6386 
    6387 /* Line 1806 of yacc.c  */
    6388 #line 1113 "parser.yy"
     6372  case 259:
     6373
     6374/* Line 1806 of yacc.c  */
     6375#line 1104 "parser.yy"
    63896376    {
    63906377                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63936380    break;
    63946381
    6395   case 263:
    6396 
    6397 /* Line 1806 of yacc.c  */
    6398 #line 1118 "parser.yy"
     6382  case 260:
     6383
     6384/* Line 1806 of yacc.c  */
     6385#line 1109 "parser.yy"
    63996386    {
    64006387                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64036390    break;
    64046391
    6405   case 264:
    6406 
    6407 /* Line 1806 of yacc.c  */
    6408 #line 1123 "parser.yy"
     6392  case 261:
     6393
     6394/* Line 1806 of yacc.c  */
     6395#line 1114 "parser.yy"
    64096396    {
    64106397                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64136400    break;
    64146401
    6415   case 265:
    6416 
    6417 /* Line 1806 of yacc.c  */
    6418 #line 1128 "parser.yy"
     6402  case 262:
     6403
     6404/* Line 1806 of yacc.c  */
     6405#line 1119 "parser.yy"
    64196406    {
    64206407                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64236410    break;
    64246411
    6425   case 266:
    6426 
    6427 /* Line 1806 of yacc.c  */
    6428 #line 1133 "parser.yy"
     6412  case 263:
     6413
     6414/* Line 1806 of yacc.c  */
     6415#line 1124 "parser.yy"
    64296416    {
    64306417                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    64336420    break;
    64346421
    6435   case 267:
    6436 
    6437 /* Line 1806 of yacc.c  */
    6438 #line 1141 "parser.yy"
     6422  case 264:
     6423
     6424/* Line 1806 of yacc.c  */
     6425#line 1132 "parser.yy"
    64396426    {
    64406427                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    64426429    break;
    64436430
    6444   case 268:
    6445 
    6446 /* Line 1806 of yacc.c  */
    6447 #line 1164 "parser.yy"
     6431  case 265:
     6432
     6433/* Line 1806 of yacc.c  */
     6434#line 1155 "parser.yy"
    64486435    {
    64496436                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64516438    break;
    64526439
    6453   case 269:
    6454 
    6455 /* Line 1806 of yacc.c  */
    6456 #line 1168 "parser.yy"
     6440  case 266:
     6441
     6442/* Line 1806 of yacc.c  */
     6443#line 1159 "parser.yy"
    64576444    {
    64586445                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64606447    break;
    64616448
    6462   case 270:
     6449  case 267:
     6450
     6451/* Line 1806 of yacc.c  */
     6452#line 1166 "parser.yy"
     6453    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     6454    break;
     6455
     6456  case 268:
     6457
     6458/* Line 1806 of yacc.c  */
     6459#line 1170 "parser.yy"
     6460    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
     6461    break;
     6462
     6463  case 269:
    64636464
    64646465/* Line 1806 of yacc.c  */
    64656466#line 1175 "parser.yy"
    6466     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    6467     break;
    6468 
    6469   case 271:
    6470 
    6471 /* Line 1806 of yacc.c  */
    6472 #line 1179 "parser.yy"
    6473     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    6474     break;
    6475 
    6476   case 272:
    6477 
    6478 /* Line 1806 of yacc.c  */
    6479 #line 1184 "parser.yy"
    64806467    {
    64816468                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64846471    break;
    64856472
    6486   case 273:
    6487 
    6488 /* Line 1806 of yacc.c  */
    6489 #line 1189 "parser.yy"
     6473  case 270:
     6474
     6475/* Line 1806 of yacc.c  */
     6476#line 1180 "parser.yy"
    64906477    {
    64916478                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64946481    break;
    64956482
    6496   case 274:
    6497 
    6498 /* Line 1806 of yacc.c  */
    6499 #line 1194 "parser.yy"
     6483  case 271:
     6484
     6485/* Line 1806 of yacc.c  */
     6486#line 1185 "parser.yy"
    65006487    {
    65016488                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    65046491    break;
    65056492
    6506   case 275:
    6507 
    6508 /* Line 1806 of yacc.c  */
    6509 #line 1205 "parser.yy"
     6493  case 272:
     6494
     6495/* Line 1806 of yacc.c  */
     6496#line 1196 "parser.yy"
    65106497    {
    65116498                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65146501    break;
    65156502
    6516   case 276:
    6517 
    6518 /* Line 1806 of yacc.c  */
    6519 #line 1210 "parser.yy"
     6503  case 273:
     6504
     6505/* Line 1806 of yacc.c  */
     6506#line 1201 "parser.yy"
    65206507    {
    65216508                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65246511    break;
    65256512
    6526   case 277:
    6527 
    6528 /* Line 1806 of yacc.c  */
    6529 #line 1215 "parser.yy"
     6513  case 274:
     6514
     6515/* Line 1806 of yacc.c  */
     6516#line 1206 "parser.yy"
    65306517    {
    65316518                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65346521    break;
    65356522
    6536   case 278:
    6537 
    6538 /* Line 1806 of yacc.c  */
    6539 #line 1220 "parser.yy"
     6523  case 275:
     6524
     6525/* Line 1806 of yacc.c  */
     6526#line 1211 "parser.yy"
    65406527    {
    65416528                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65446531    break;
    65456532
    6546   case 279:
    6547 
    6548 /* Line 1806 of yacc.c  */
    6549 #line 1225 "parser.yy"
     6533  case 276:
     6534
     6535/* Line 1806 of yacc.c  */
     6536#line 1216 "parser.yy"
    65506537    {
    65516538                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65546541    break;
    65556542
    6556   case 280:
    6557 
    6558 /* Line 1806 of yacc.c  */
    6559 #line 1234 "parser.yy"
     6543  case 277:
     6544
     6545/* Line 1806 of yacc.c  */
     6546#line 1225 "parser.yy"
    65606547    {
    65616548                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    65646551    break;
    65656552
    6566   case 281:
    6567 
    6568 /* Line 1806 of yacc.c  */
    6569 #line 1239 "parser.yy"
     6553  case 278:
     6554
     6555/* Line 1806 of yacc.c  */
     6556#line 1230 "parser.yy"
    65706557    {
    65716558                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    65746561    break;
    65756562
    6576   case 286:
    6577 
    6578 /* Line 1806 of yacc.c  */
    6579 #line 1256 "parser.yy"
     6563  case 283:
     6564
     6565/* Line 1806 of yacc.c  */
     6566#line 1247 "parser.yy"
    65806567    {
    65816568                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65846571    break;
    65856572
    6586   case 287:
    6587 
    6588 /* Line 1806 of yacc.c  */
    6589 #line 1261 "parser.yy"
     6573  case 284:
     6574
     6575/* Line 1806 of yacc.c  */
     6576#line 1252 "parser.yy"
    65906577    {
    65916578                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65946581    break;
    65956582
     6583  case 293:
     6584
     6585/* Line 1806 of yacc.c  */
     6586#line 1274 "parser.yy"
     6587    { (yyval.decl) = 0; }
     6588    break;
     6589
    65966590  case 296:
    65976591
    65986592/* Line 1806 of yacc.c  */
    6599 #line 1283 "parser.yy"
    6600     { (yyval.decl) = 0; }
     6593#line 1286 "parser.yy"
     6594    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66016595    break;
    66026596
     
    66046598
    66056599/* Line 1806 of yacc.c  */
    6606 #line 1295 "parser.yy"
    6607     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6600#line 1297 "parser.yy"
     6601    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     6602    break;
     6603
     6604  case 300:
     6605
     6606/* Line 1806 of yacc.c  */
     6607#line 1299 "parser.yy"
     6608    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     6609    break;
     6610
     6611  case 301:
     6612
     6613/* Line 1806 of yacc.c  */
     6614#line 1301 "parser.yy"
     6615    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    66086616    break;
    66096617
     
    66116619
    66126620/* Line 1806 of yacc.c  */
    6613 #line 1306 "parser.yy"
    6614     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     6621#line 1303 "parser.yy"
     6622    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    66156623    break;
    66166624
     
    66186626
    66196627/* Line 1806 of yacc.c  */
    6620 #line 1308 "parser.yy"
    6621     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     6628#line 1305 "parser.yy"
     6629    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    66226630    break;
    66236631
     
    66256633
    66266634/* Line 1806 of yacc.c  */
    6627 #line 1310 "parser.yy"
    6628     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    6629     break;
    6630 
    6631   case 305:
    6632 
    6633 /* Line 1806 of yacc.c  */
    6634 #line 1312 "parser.yy"
    6635     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    6636     break;
    6637 
    6638   case 306:
    6639 
    6640 /* Line 1806 of yacc.c  */
    6641 #line 1314 "parser.yy"
    6642     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    6643     break;
    6644 
    6645   case 307:
    6646 
    6647 /* Line 1806 of yacc.c  */
    6648 #line 1316 "parser.yy"
     6635#line 1307 "parser.yy"
    66496636    {
    66506637                        typedefTable.enterScope();
     
    66526639    break;
    66536640
    6654   case 308:
    6655 
    6656 /* Line 1806 of yacc.c  */
    6657 #line 1320 "parser.yy"
     6641  case 305:
     6642
     6643/* Line 1806 of yacc.c  */
     6644#line 1311 "parser.yy"
    66586645    {
    66596646                        typedefTable.leaveScope();
     
    66626649    break;
    66636650
     6651  case 307:
     6652
     6653/* Line 1806 of yacc.c  */
     6654#line 1320 "parser.yy"
     6655    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6656    break;
     6657
     6658  case 308:
     6659
     6660/* Line 1806 of yacc.c  */
     6661#line 1322 "parser.yy"
     6662    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6663    break;
     6664
    66646665  case 310:
    66656666
    66666667/* Line 1806 of yacc.c  */
    6667 #line 1329 "parser.yy"
     6668#line 1333 "parser.yy"
    66686669    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66696670    break;
     
    66726673
    66736674/* Line 1806 of yacc.c  */
    6674 #line 1331 "parser.yy"
     6675#line 1338 "parser.yy"
     6676    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     6677    break;
     6678
     6679  case 312:
     6680
     6681/* Line 1806 of yacc.c  */
     6682#line 1340 "parser.yy"
     6683    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     6684    break;
     6685
     6686  case 313:
     6687
     6688/* Line 1806 of yacc.c  */
     6689#line 1342 "parser.yy"
     6690    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     6691    break;
     6692
     6693  case 314:
     6694
     6695/* Line 1806 of yacc.c  */
     6696#line 1344 "parser.yy"
     6697    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     6698    break;
     6699
     6700  case 315:
     6701
     6702/* Line 1806 of yacc.c  */
     6703#line 1347 "parser.yy"
     6704    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
     6705    break;
     6706
     6707  case 316:
     6708
     6709/* Line 1806 of yacc.c  */
     6710#line 1349 "parser.yy"
     6711    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     6712    break;
     6713
     6714  case 317:
     6715
     6716/* Line 1806 of yacc.c  */
     6717#line 1352 "parser.yy"
     6718    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
     6719    break;
     6720
     6721  case 318:
     6722
     6723/* Line 1806 of yacc.c  */
     6724#line 1354 "parser.yy"
     6725    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     6726    break;
     6727
     6728  case 319:
     6729
     6730/* Line 1806 of yacc.c  */
     6731#line 1359 "parser.yy"
     6732    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     6733    break;
     6734
     6735  case 320:
     6736
     6737/* Line 1806 of yacc.c  */
     6738#line 1361 "parser.yy"
     6739    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     6740    break;
     6741
     6742  case 321:
     6743
     6744/* Line 1806 of yacc.c  */
     6745#line 1363 "parser.yy"
     6746    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     6747    break;
     6748
     6749  case 322:
     6750
     6751/* Line 1806 of yacc.c  */
     6752#line 1365 "parser.yy"
     6753    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     6754    break;
     6755
     6756  case 323:
     6757
     6758/* Line 1806 of yacc.c  */
     6759#line 1367 "parser.yy"
     6760    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
     6761    break;
     6762
     6763  case 324:
     6764
     6765/* Line 1806 of yacc.c  */
     6766#line 1369 "parser.yy"
     6767    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
     6768    break;
     6769
     6770  case 325:
     6771
     6772/* Line 1806 of yacc.c  */
     6773#line 1371 "parser.yy"
     6774    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
     6775    break;
     6776
     6777  case 326:
     6778
     6779/* Line 1806 of yacc.c  */
     6780#line 1373 "parser.yy"
     6781    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
     6782    break;
     6783
     6784  case 327:
     6785
     6786/* Line 1806 of yacc.c  */
     6787#line 1375 "parser.yy"
     6788    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     6789    break;
     6790
     6791  case 328:
     6792
     6793/* Line 1806 of yacc.c  */
     6794#line 1377 "parser.yy"
     6795    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     6796    break;
     6797
     6798  case 329:
     6799
     6800/* Line 1806 of yacc.c  */
     6801#line 1379 "parser.yy"
     6802    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
     6803    break;
     6804
     6805  case 330:
     6806
     6807/* Line 1806 of yacc.c  */
     6808#line 1381 "parser.yy"
     6809    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
     6810    break;
     6811
     6812  case 331:
     6813
     6814/* Line 1806 of yacc.c  */
     6815#line 1383 "parser.yy"
     6816    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     6817    break;
     6818
     6819  case 333:
     6820
     6821/* Line 1806 of yacc.c  */
     6822#line 1390 "parser.yy"
     6823    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6824    break;
     6825
     6826  case 334:
     6827
     6828/* Line 1806 of yacc.c  */
     6829#line 1392 "parser.yy"
     6830    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6831    break;
     6832
     6833  case 335:
     6834
     6835/* Line 1806 of yacc.c  */
     6836#line 1394 "parser.yy"
    66756837    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66766838    break;
    66776839
    6678   case 313:
    6679 
    6680 /* Line 1806 of yacc.c  */
    6681 #line 1342 "parser.yy"
     6840  case 336:
     6841
     6842/* Line 1806 of yacc.c  */
     6843#line 1396 "parser.yy"
     6844    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     6845    break;
     6846
     6847  case 338:
     6848
     6849/* Line 1806 of yacc.c  */
     6850#line 1402 "parser.yy"
     6851    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6852    break;
     6853
     6854  case 340:
     6855
     6856/* Line 1806 of yacc.c  */
     6857#line 1409 "parser.yy"
     6858    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6859    break;
     6860
     6861  case 341:
     6862
     6863/* Line 1806 of yacc.c  */
     6864#line 1411 "parser.yy"
    66826865    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66836866    break;
    66846867
    6685   case 314:
    6686 
    6687 /* Line 1806 of yacc.c  */
    6688 #line 1347 "parser.yy"
    6689     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    6690     break;
    6691 
    6692   case 315:
    6693 
    6694 /* Line 1806 of yacc.c  */
    6695 #line 1349 "parser.yy"
    6696     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    6697     break;
    6698 
    6699   case 316:
    6700 
    6701 /* Line 1806 of yacc.c  */
    6702 #line 1351 "parser.yy"
    6703     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    6704     break;
    6705 
    6706   case 317:
    6707 
    6708 /* Line 1806 of yacc.c  */
    6709 #line 1353 "parser.yy"
    6710     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    6711     break;
    6712 
    6713   case 318:
    6714 
    6715 /* Line 1806 of yacc.c  */
    6716 #line 1356 "parser.yy"
    6717     { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
    6718     break;
    6719 
    6720   case 319:
    6721 
    6722 /* Line 1806 of yacc.c  */
    6723 #line 1358 "parser.yy"
    6724     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    6725     break;
    6726 
    6727   case 320:
    6728 
    6729 /* Line 1806 of yacc.c  */
    6730 #line 1361 "parser.yy"
    6731     { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
    6732     break;
    6733 
    6734   case 321:
    6735 
    6736 /* Line 1806 of yacc.c  */
    6737 #line 1363 "parser.yy"
    6738     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    6739     break;
    6740 
    6741   case 322:
    6742 
    6743 /* Line 1806 of yacc.c  */
    6744 #line 1368 "parser.yy"
    6745     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    6746     break;
    6747 
    6748   case 323:
    6749 
    6750 /* Line 1806 of yacc.c  */
    6751 #line 1370 "parser.yy"
    6752     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    6753     break;
    6754 
    6755   case 324:
    6756 
    6757 /* Line 1806 of yacc.c  */
    6758 #line 1372 "parser.yy"
    6759     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    6760     break;
    6761 
    6762   case 325:
    6763 
    6764 /* Line 1806 of yacc.c  */
    6765 #line 1374 "parser.yy"
    6766     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    6767     break;
    6768 
    6769   case 326:
    6770 
    6771 /* Line 1806 of yacc.c  */
    6772 #line 1376 "parser.yy"
    6773     { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
    6774     break;
    6775 
    6776   case 327:
    6777 
    6778 /* Line 1806 of yacc.c  */
    6779 #line 1378 "parser.yy"
    6780     { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
    6781     break;
    6782 
    6783   case 328:
    6784 
    6785 /* Line 1806 of yacc.c  */
    6786 #line 1380 "parser.yy"
    6787     { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
    6788     break;
    6789 
    6790   case 329:
    6791 
    6792 /* Line 1806 of yacc.c  */
    6793 #line 1382 "parser.yy"
    6794     { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
    6795     break;
    6796 
    6797   case 330:
    6798 
    6799 /* Line 1806 of yacc.c  */
    6800 #line 1384 "parser.yy"
    6801     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    6802     break;
    6803 
    6804   case 331:
    6805 
    6806 /* Line 1806 of yacc.c  */
    6807 #line 1386 "parser.yy"
    6808     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    6809     break;
    6810 
    6811   case 332:
    6812 
    6813 /* Line 1806 of yacc.c  */
    6814 #line 1388 "parser.yy"
    6815     { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
    6816     break;
    6817 
    6818   case 333:
    6819 
    6820 /* Line 1806 of yacc.c  */
    6821 #line 1390 "parser.yy"
    6822     { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
    6823     break;
    6824 
    6825   case 334:
    6826 
    6827 /* Line 1806 of yacc.c  */
    6828 #line 1392 "parser.yy"
    6829     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    6830     break;
    6831 
    6832   case 336:
    6833 
    6834 /* Line 1806 of yacc.c  */
    6835 #line 1399 "parser.yy"
     6868  case 342:
     6869
     6870/* Line 1806 of yacc.c  */
     6871#line 1413 "parser.yy"
     6872    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     6873    break;
     6874
     6875  case 343:
     6876
     6877/* Line 1806 of yacc.c  */
     6878#line 1418 "parser.yy"
     6879    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     6880    break;
     6881
     6882  case 344:
     6883
     6884/* Line 1806 of yacc.c  */
     6885#line 1420 "parser.yy"
     6886    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     6887    break;
     6888
     6889  case 345:
     6890
     6891/* Line 1806 of yacc.c  */
     6892#line 1422 "parser.yy"
     6893    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     6894    break;
     6895
     6896  case 346:
     6897
     6898/* Line 1806 of yacc.c  */
     6899#line 1424 "parser.yy"
     6900    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     6901    break;
     6902
     6903  case 348:
     6904
     6905/* Line 1806 of yacc.c  */
     6906#line 1430 "parser.yy"
    68366907    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68376908    break;
    68386909
    6839   case 337:
    6840 
    6841 /* Line 1806 of yacc.c  */
    6842 #line 1401 "parser.yy"
     6910  case 349:
     6911
     6912/* Line 1806 of yacc.c  */
     6913#line 1432 "parser.yy"
    68436914    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68446915    break;
    68456916
    6846   case 338:
    6847 
    6848 /* Line 1806 of yacc.c  */
    6849 #line 1403 "parser.yy"
     6917  case 350:
     6918
     6919/* Line 1806 of yacc.c  */
     6920#line 1434 "parser.yy"
    68506921    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68516922    break;
    68526923
    6853   case 339:
    6854 
    6855 /* Line 1806 of yacc.c  */
    6856 #line 1405 "parser.yy"
    6857     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    6858     break;
    6859 
    6860   case 341:
    6861 
    6862 /* Line 1806 of yacc.c  */
    6863 #line 1411 "parser.yy"
    6864     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6865     break;
    6866 
    6867   case 343:
    6868 
    6869 /* Line 1806 of yacc.c  */
    6870 #line 1418 "parser.yy"
     6924  case 352:
     6925
     6926/* Line 1806 of yacc.c  */
     6927#line 1440 "parser.yy"
    68716928    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68726929    break;
    68736930
    6874   case 344:
    6875 
    6876 /* Line 1806 of yacc.c  */
    6877 #line 1420 "parser.yy"
     6931  case 353:
     6932
     6933/* Line 1806 of yacc.c  */
     6934#line 1442 "parser.yy"
    68786935    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68796936    break;
    68806937
    6881   case 345:
    6882 
    6883 /* Line 1806 of yacc.c  */
    6884 #line 1422 "parser.yy"
    6885     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    6886     break;
    6887 
    6888   case 346:
    6889 
    6890 /* Line 1806 of yacc.c  */
    6891 #line 1427 "parser.yy"
    6892     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    6893     break;
    6894 
    6895   case 347:
    6896 
    6897 /* Line 1806 of yacc.c  */
    6898 #line 1429 "parser.yy"
    6899     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    6900     break;
    6901 
    6902   case 348:
    6903 
    6904 /* Line 1806 of yacc.c  */
    6905 #line 1431 "parser.yy"
    6906     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    6907     break;
    6908 
    6909   case 349:
    6910 
    6911 /* Line 1806 of yacc.c  */
    6912 #line 1433 "parser.yy"
    6913     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    6914     break;
    6915 
    6916   case 351:
    6917 
    6918 /* Line 1806 of yacc.c  */
    6919 #line 1439 "parser.yy"
     6938  case 355:
     6939
     6940/* Line 1806 of yacc.c  */
     6941#line 1448 "parser.yy"
    69206942    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69216943    break;
    69226944
    6923   case 352:
    6924 
    6925 /* Line 1806 of yacc.c  */
    6926 #line 1441 "parser.yy"
     6945  case 356:
     6946
     6947/* Line 1806 of yacc.c  */
     6948#line 1450 "parser.yy"
    69276949    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69286950    break;
    69296951
    6930   case 353:
    6931 
    6932 /* Line 1806 of yacc.c  */
    6933 #line 1443 "parser.yy"
     6952  case 357:
     6953
     6954/* Line 1806 of yacc.c  */
     6955#line 1452 "parser.yy"
    69346956    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69356957    break;
    69366958
    6937   case 355:
    6938 
    6939 /* Line 1806 of yacc.c  */
    6940 #line 1449 "parser.yy"
    6941     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6942     break;
    6943 
    6944   case 356:
    6945 
    6946 /* Line 1806 of yacc.c  */
    6947 #line 1451 "parser.yy"
     6959  case 358:
     6960
     6961/* Line 1806 of yacc.c  */
     6962#line 1457 "parser.yy"
     6963    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     6964    break;
     6965
     6966  case 359:
     6967
     6968/* Line 1806 of yacc.c  */
     6969#line 1459 "parser.yy"
     6970    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6971    break;
     6972
     6973  case 360:
     6974
     6975/* Line 1806 of yacc.c  */
     6976#line 1461 "parser.yy"
    69486977    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69496978    break;
    69506979
    6951   case 358:
    6952 
    6953 /* Line 1806 of yacc.c  */
    6954 #line 1457 "parser.yy"
    6955     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6956     break;
    6957 
    6958   case 359:
    6959 
    6960 /* Line 1806 of yacc.c  */
    6961 #line 1459 "parser.yy"
    6962     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6963     break;
    6964 
    6965   case 360:
    6966 
    6967 /* Line 1806 of yacc.c  */
    6968 #line 1461 "parser.yy"
    6969     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6970     break;
    6971 
    6972   case 361:
    6973 
    6974 /* Line 1806 of yacc.c  */
    6975 #line 1466 "parser.yy"
    6976     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    6977     break;
    6978 
    6979   case 362:
    6980 
    6981 /* Line 1806 of yacc.c  */
    6982 #line 1468 "parser.yy"
    6983     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6984     break;
    6985 
    69866980  case 363:
    69876981
    69886982/* Line 1806 of yacc.c  */
    6989 #line 1470 "parser.yy"
    6990     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6991     break;
    6992 
    6993   case 366:
    6994 
    6995 /* Line 1806 of yacc.c  */
    6996 #line 1480 "parser.yy"
    6997     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
    6998     break;
    6999 
    7000   case 367:
    7001 
    7002 /* Line 1806 of yacc.c  */
    7003 #line 1482 "parser.yy"
     6983#line 1471 "parser.yy"
     6984    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); }
     6985    break;
     6986
     6987  case 364:
     6988
     6989/* Line 1806 of yacc.c  */
     6990#line 1473 "parser.yy"
    70046991    {
    70056992                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
    7006                         (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), nullptr, nullptr, false );
     6993                        (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, false );
    70076994                }
    70086995    break;
    70096996
     6997  case 365:
     6998
     6999/* Line 1806 of yacc.c  */
     7000#line 1478 "parser.yy"
     7001    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7002    break;
     7003
     7004  case 366:
     7005
     7006/* Line 1806 of yacc.c  */
     7007#line 1480 "parser.yy"
     7008    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
     7009    break;
     7010
     7011  case 367:
     7012
     7013/* Line 1806 of yacc.c  */
     7014#line 1482 "parser.yy"
     7015    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     7016    break;
     7017
    70107018  case 368:
    70117019
    70127020/* Line 1806 of yacc.c  */
    7013 #line 1487 "parser.yy"
    7014     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7021#line 1484 "parser.yy"
     7022    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    70157023    break;
    70167024
     
    70197027/* Line 1806 of yacc.c  */
    70207028#line 1489 "parser.yy"
    7021     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
     7029    { (yyval.aggKey) = DeclarationNode::Struct; }
    70227030    break;
    70237031
     
    70267034/* Line 1806 of yacc.c  */
    70277035#line 1491 "parser.yy"
    7028     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     7036    { (yyval.aggKey) = DeclarationNode::Union; }
    70297037    break;
    70307038
     
    70327040
    70337041/* Line 1806 of yacc.c  */
    7034 #line 1493 "parser.yy"
    7035     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7042#line 1496 "parser.yy"
     7043    { (yyval.decl) = 0; }
    70367044    break;
    70377045
     
    70407048/* Line 1806 of yacc.c  */
    70417049#line 1498 "parser.yy"
    7042     { (yyval.aggKey) = DeclarationNode::Struct; }
    7043     break;
    7044 
    7045   case 373:
    7046 
    7047 /* Line 1806 of yacc.c  */
    7048 #line 1500 "parser.yy"
    7049     { (yyval.aggKey) = DeclarationNode::Union; }
     7050    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    70507051    break;
    70517052
     
    70537054
    70547055/* Line 1806 of yacc.c  */
    7055 #line 1505 "parser.yy"
    7056     { (yyval.decl) = 0; }
    7057     break;
    7058 
    7059   case 375:
     7056#line 1504 "parser.yy"
     7057    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
     7058    break;
     7059
     7060  case 376:
    70607061
    70617062/* Line 1806 of yacc.c  */
    70627063#line 1507 "parser.yy"
    7063     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    7064     break;
    7065 
    7066   case 377:
    7067 
    7068 /* Line 1806 of yacc.c  */
    7069 #line 1513 "parser.yy"
    7070     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    7071     break;
    7072 
    7073   case 379:
    7074 
    7075 /* Line 1806 of yacc.c  */
    7076 #line 1516 "parser.yy"
    70777064    {   // mark all fields in list
    70787065                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    70827069    break;
    70837070
     7071  case 378:
     7072
     7073/* Line 1806 of yacc.c  */
     7074#line 1517 "parser.yy"
     7075    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     7076    break;
     7077
     7078  case 379:
     7079
     7080/* Line 1806 of yacc.c  */
     7081#line 1519 "parser.yy"
     7082    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     7083    break;
     7084
     7085  case 380:
     7086
     7087/* Line 1806 of yacc.c  */
     7088#line 1521 "parser.yy"
     7089    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     7090    break;
     7091
    70847092  case 381:
    70857093
    70867094/* Line 1806 of yacc.c  */
    70877095#line 1526 "parser.yy"
    7088     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     7096    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    70897097    break;
    70907098
     
    70937101/* Line 1806 of yacc.c  */
    70947102#line 1528 "parser.yy"
    7095     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     7103    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    70967104    break;
    70977105
     
    70997107
    71007108/* Line 1806 of yacc.c  */
    7101 #line 1530 "parser.yy"
    7102     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     7109#line 1533 "parser.yy"
     7110    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    71037111    break;
    71047112
     
    71077115/* Line 1806 of yacc.c  */
    71087116#line 1535 "parser.yy"
    7109     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7117    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    71107118    break;
    71117119
     
    71137121
    71147122/* Line 1806 of yacc.c  */
    7115 #line 1537 "parser.yy"
    7116     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     7123#line 1538 "parser.yy"
     7124    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71177125    break;
    71187126
     
    71207128
    71217129/* Line 1806 of yacc.c  */
    7122 #line 1542 "parser.yy"
    7123     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    7124     break;
    7125 
    7126   case 387:
    7127 
    7128 /* Line 1806 of yacc.c  */
    7129 #line 1544 "parser.yy"
    7130     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     7130#line 1541 "parser.yy"
     7131    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71317132    break;
    71327133
     
    71357136/* Line 1806 of yacc.c  */
    71367137#line 1547 "parser.yy"
    7137     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     7138    { (yyval.en) = 0; }
    71387139    break;
    71397140
     
    71417142
    71427143/* Line 1806 of yacc.c  */
    7143 #line 1550 "parser.yy"
    7144     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    7145     break;
    7146 
    7147   case 391:
    7148 
    7149 /* Line 1806 of yacc.c  */
    7150 #line 1556 "parser.yy"
    7151     { (yyval.en) = 0; }
     7144#line 1549 "parser.yy"
     7145    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     7146    break;
     7147
     7148  case 390:
     7149
     7150/* Line 1806 of yacc.c  */
     7151#line 1554 "parser.yy"
     7152    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71527153    break;
    71537154
     
    71557156
    71567157/* Line 1806 of yacc.c  */
    7157 #line 1558 "parser.yy"
    7158     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     7158#line 1563 "parser.yy"
     7159    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    71597160    break;
    71607161
     
    71627163
    71637164/* Line 1806 of yacc.c  */
    7164 #line 1563 "parser.yy"
    7165     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7166     break;
    7167 
    7168   case 395:
    7169 
    7170 /* Line 1806 of yacc.c  */
    7171 #line 1572 "parser.yy"
    7172     { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
    7173     break;
    7174 
    7175   case 396:
    7176 
    7177 /* Line 1806 of yacc.c  */
    7178 #line 1574 "parser.yy"
     7165#line 1565 "parser.yy"
    71797166    {
    71807167                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    71837170    break;
    71847171
     7172  case 394:
     7173
     7174/* Line 1806 of yacc.c  */
     7175#line 1570 "parser.yy"
     7176    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7177    break;
     7178
     7179  case 395:
     7180
     7181/* Line 1806 of yacc.c  */
     7182#line 1572 "parser.yy"
     7183    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     7184    break;
     7185
     7186  case 396:
     7187
     7188/* Line 1806 of yacc.c  */
     7189#line 1577 "parser.yy"
     7190    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     7191    break;
     7192
    71857193  case 397:
    71867194
    71877195/* Line 1806 of yacc.c  */
    71887196#line 1579 "parser.yy"
    7189     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7197    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    71907198    break;
    71917199
     
    71937201
    71947202/* Line 1806 of yacc.c  */
    7195 #line 1581 "parser.yy"
    7196     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     7203#line 1584 "parser.yy"
     7204    { (yyval.en) = 0; }
    71977205    break;
    71987206
     
    72017209/* Line 1806 of yacc.c  */
    72027210#line 1586 "parser.yy"
    7203     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     7211    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    72047212    break;
    72057213
     
    72077215
    72087216/* Line 1806 of yacc.c  */
    7209 #line 1588 "parser.yy"
    7210     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    7211     break;
    7212 
    7213   case 401:
    7214 
    7215 /* Line 1806 of yacc.c  */
    72167217#line 1593 "parser.yy"
    7217     { (yyval.en) = 0; }
    7218     break;
    7219 
    7220   case 402:
    7221 
    7222 /* Line 1806 of yacc.c  */
    7223 #line 1595 "parser.yy"
    7224     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7225     break;
    7226 
    7227   case 403:
    7228 
    7229 /* Line 1806 of yacc.c  */
    7230 #line 1602 "parser.yy"
    72317218    { (yyval.decl) = 0; }
    72327219    break;
    72337220
    7234   case 407:
    7235 
    7236 /* Line 1806 of yacc.c  */
    7237 #line 1610 "parser.yy"
     7221  case 404:
     7222
     7223/* Line 1806 of yacc.c  */
     7224#line 1601 "parser.yy"
    72387225    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72397226    break;
    72407227
     7228  case 405:
     7229
     7230/* Line 1806 of yacc.c  */
     7231#line 1603 "parser.yy"
     7232    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7233    break;
     7234
     7235  case 406:
     7236
     7237/* Line 1806 of yacc.c  */
     7238#line 1605 "parser.yy"
     7239    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7240    break;
     7241
    72417242  case 408:
    72427243
    72437244/* Line 1806 of yacc.c  */
    7244 #line 1612 "parser.yy"
     7245#line 1613 "parser.yy"
     7246    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7247    break;
     7248
     7249  case 409:
     7250
     7251/* Line 1806 of yacc.c  */
     7252#line 1615 "parser.yy"
     7253    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7254    break;
     7255
     7256  case 410:
     7257
     7258/* Line 1806 of yacc.c  */
     7259#line 1617 "parser.yy"
     7260    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     7261    break;
     7262
     7263  case 412:
     7264
     7265/* Line 1806 of yacc.c  */
     7266#line 1623 "parser.yy"
     7267    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7268    break;
     7269
     7270  case 413:
     7271
     7272/* Line 1806 of yacc.c  */
     7273#line 1628 "parser.yy"
     7274    { (yyval.decl) = 0; }
     7275    break;
     7276
     7277  case 416:
     7278
     7279/* Line 1806 of yacc.c  */
     7280#line 1635 "parser.yy"
    72457281    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72467282    break;
    72477283
    7248   case 409:
    7249 
    7250 /* Line 1806 of yacc.c  */
    7251 #line 1614 "parser.yy"
    7252     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7253     break;
    7254 
    7255   case 411:
    7256 
    7257 /* Line 1806 of yacc.c  */
    7258 #line 1622 "parser.yy"
     7284  case 419:
     7285
     7286/* Line 1806 of yacc.c  */
     7287#line 1642 "parser.yy"
    72597288    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72607289    break;
    72617290
    7262   case 412:
    7263 
    7264 /* Line 1806 of yacc.c  */
    7265 #line 1624 "parser.yy"
     7291  case 420:
     7292
     7293/* Line 1806 of yacc.c  */
     7294#line 1644 "parser.yy"
    72667295    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72677296    break;
    72687297
    7269   case 413:
    7270 
    7271 /* Line 1806 of yacc.c  */
    7272 #line 1626 "parser.yy"
    7273     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    7274     break;
    7275 
    7276   case 415:
    7277 
    7278 /* Line 1806 of yacc.c  */
    7279 #line 1632 "parser.yy"
    7280     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7281     break;
    7282 
    7283   case 416:
    7284 
    7285 /* Line 1806 of yacc.c  */
    7286 #line 1637 "parser.yy"
    7287     { (yyval.decl) = 0; }
    7288     break;
    7289 
    7290   case 419:
    7291 
    7292 /* Line 1806 of yacc.c  */
    7293 #line 1644 "parser.yy"
    7294     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7295     break;
    7296 
    72977298  case 422:
    72987299
    72997300/* Line 1806 of yacc.c  */
    7300 #line 1651 "parser.yy"
    7301     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7301#line 1653 "parser.yy"
     7302    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    73027303    break;
    73037304
     
    73057306
    73067307/* Line 1806 of yacc.c  */
    7307 #line 1653 "parser.yy"
    7308     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7309     break;
    7310 
    7311   case 425:
    7312 
    7313 /* Line 1806 of yacc.c  */
    7314 #line 1662 "parser.yy"
     7308#line 1656 "parser.yy"
    73157309    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    73167310    break;
    73177311
    7318   case 426:
    7319 
    7320 /* Line 1806 of yacc.c  */
    7321 #line 1665 "parser.yy"
    7322     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7323     break;
    7324 
    7325   case 427:
    7326 
    7327 /* Line 1806 of yacc.c  */
    7328 #line 1667 "parser.yy"
     7312  case 424:
     7313
     7314/* Line 1806 of yacc.c  */
     7315#line 1658 "parser.yy"
    73297316    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    73307317    break;
    73317318
    7332   case 432:
    7333 
    7334 /* Line 1806 of yacc.c  */
    7335 #line 1677 "parser.yy"
     7319  case 429:
     7320
     7321/* Line 1806 of yacc.c  */
     7322#line 1668 "parser.yy"
    73367323    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73377324    break;
    73387325
    7339   case 434:
    7340 
    7341 /* Line 1806 of yacc.c  */
    7342 #line 1683 "parser.yy"
     7326  case 431:
     7327
     7328/* Line 1806 of yacc.c  */
     7329#line 1674 "parser.yy"
    73437330    {
    73447331                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73477334    break;
    73487335
    7349   case 435:
    7350 
    7351 /* Line 1806 of yacc.c  */
    7352 #line 1688 "parser.yy"
     7336  case 432:
     7337
     7338/* Line 1806 of yacc.c  */
     7339#line 1679 "parser.yy"
    73537340    {
    73547341                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73577344    break;
    73587345
    7359   case 437:
     7346  case 434:
     7347
     7348/* Line 1806 of yacc.c  */
     7349#line 1688 "parser.yy"
     7350    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7351    break;
     7352
     7353  case 435:
    73607354
    73617355/* Line 1806 of yacc.c  */
    73627356#line 1697 "parser.yy"
     7357    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     7358    break;
     7359
     7360  case 436:
     7361
     7362/* Line 1806 of yacc.c  */
     7363#line 1699 "parser.yy"
     7364    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     7365    break;
     7366
     7367  case 448:
     7368
     7369/* Line 1806 of yacc.c  */
     7370#line 1724 "parser.yy"
    73637371    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73647372    break;
    73657373
    7366   case 438:
    7367 
    7368 /* Line 1806 of yacc.c  */
    7369 #line 1706 "parser.yy"
    7370     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    7371     break;
    7372 
    7373   case 439:
    7374 
    7375 /* Line 1806 of yacc.c  */
    7376 #line 1708 "parser.yy"
    7377     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    7378     break;
    7379 
    7380   case 451:
    7381 
    7382 /* Line 1806 of yacc.c  */
    7383 #line 1733 "parser.yy"
     7374  case 452:
     7375
     7376/* Line 1806 of yacc.c  */
     7377#line 1732 "parser.yy"
    73847378    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73857379    break;
    73867380
     7381  case 453:
     7382
     7383/* Line 1806 of yacc.c  */
     7384#line 1737 "parser.yy"
     7385    { (yyval.in) = 0; }
     7386    break;
     7387
     7388  case 454:
     7389
     7390/* Line 1806 of yacc.c  */
     7391#line 1739 "parser.yy"
     7392    { (yyval.in) = (yyvsp[(2) - (2)].in); }
     7393    break;
     7394
    73877395  case 455:
    73887396
    73897397/* Line 1806 of yacc.c  */
    73907398#line 1741 "parser.yy"
    7391     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7399    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    73927400    break;
    73937401
     
    73957403
    73967404/* Line 1806 of yacc.c  */
     7405#line 1745 "parser.yy"
     7406    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     7407    break;
     7408
     7409  case 457:
     7410
     7411/* Line 1806 of yacc.c  */
    73977412#line 1746 "parser.yy"
     7413    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     7414    break;
     7415
     7416  case 458:
     7417
     7418/* Line 1806 of yacc.c  */
     7419#line 1751 "parser.yy"
    73987420    { (yyval.in) = 0; }
    73997421    break;
    74007422
    7401   case 457:
    7402 
    7403 /* Line 1806 of yacc.c  */
    7404 #line 1748 "parser.yy"
    7405     { (yyval.in) = (yyvsp[(2) - (2)].in); }
    7406     break;
    7407 
    7408   case 458:
    7409 
    7410 /* Line 1806 of yacc.c  */
    7411 #line 1750 "parser.yy"
    7412     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    7413     break;
    7414 
    7415   case 459:
     7423  case 460:
     7424
     7425/* Line 1806 of yacc.c  */
     7426#line 1753 "parser.yy"
     7427    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     7428    break;
     7429
     7430  case 461:
    74167431
    74177432/* Line 1806 of yacc.c  */
    74187433#line 1754 "parser.yy"
    7419     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    7420     break;
    7421 
    7422   case 460:
    7423 
    7424 /* Line 1806 of yacc.c  */
    7425 #line 1755 "parser.yy"
    7426     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    7427     break;
    7428 
    7429   case 461:
    7430 
    7431 /* Line 1806 of yacc.c  */
    7432 #line 1760 "parser.yy"
    7433     { (yyval.in) = 0; }
    7434     break;
    7435 
    7436   case 463:
    7437 
    7438 /* Line 1806 of yacc.c  */
    7439 #line 1762 "parser.yy"
    7440     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     7434    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
     7435    break;
     7436
     7437  case 462:
     7438
     7439/* Line 1806 of yacc.c  */
     7440#line 1756 "parser.yy"
     7441    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    74417442    break;
    74427443
     
    74447445
    74457446/* Line 1806 of yacc.c  */
    7446 #line 1763 "parser.yy"
    7447     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
    7448     break;
    7449 
    7450   case 465:
    7451 
    7452 /* Line 1806 of yacc.c  */
    7453 #line 1765 "parser.yy"
    7454     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     7447#line 1772 "parser.yy"
     7448    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
     7449    break;
     7450
     7451  case 466:
     7452
     7453/* Line 1806 of yacc.c  */
     7454#line 1778 "parser.yy"
     7455    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
    74557456    break;
    74567457
     
    74587459
    74597460/* Line 1806 of yacc.c  */
    7460 #line 1781 "parser.yy"
    7461     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
     7461#line 1784 "parser.yy"
     7462    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
     7463    break;
     7464
     7465  case 468:
     7466
     7467/* Line 1806 of yacc.c  */
     7468#line 1787 "parser.yy"
     7469    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74627470    break;
    74637471
     
    74657473
    74667474/* Line 1806 of yacc.c  */
    7467 #line 1787 "parser.yy"
    7468     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
     7475#line 1789 "parser.yy"
     7476    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74697477    break;
    74707478
     
    74727480
    74737481/* Line 1806 of yacc.c  */
     7482#line 1791 "parser.yy"
     7483    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
     7484    break;
     7485
     7486  case 471:
     7487
     7488/* Line 1806 of yacc.c  */
    74747489#line 1793 "parser.yy"
    7475     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    7476     break;
    7477 
    7478   case 471:
    7479 
    7480 /* Line 1806 of yacc.c  */
    7481 #line 1796 "parser.yy"
    7482     { (yyval.en) = (yyvsp[(3) - (5)].en); }
    7483     break;
    7484 
    7485   case 472:
    7486 
    7487 /* Line 1806 of yacc.c  */
    7488 #line 1798 "parser.yy"
    7489     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     7490    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    74907491    break;
    74917492
     
    74937494
    74947495/* Line 1806 of yacc.c  */
    7495 #line 1800 "parser.yy"
    7496     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
     7496#line 1817 "parser.yy"
     7497    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74977498    break;
    74987499
     
    75007501
    75017502/* Line 1806 of yacc.c  */
    7502 #line 1802 "parser.yy"
    7503     { (yyval.en) = (yyvsp[(4) - (6)].en); }
    7504     break;
    7505 
    7506   case 476:
    7507 
    7508 /* Line 1806 of yacc.c  */
    7509 #line 1826 "parser.yy"
     7503#line 1819 "parser.yy"
     7504    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7505    break;
     7506
     7507  case 475:
     7508
     7509/* Line 1806 of yacc.c  */
     7510#line 1821 "parser.yy"
     7511    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     7512    break;
     7513
     7514  case 477:
     7515
     7516/* Line 1806 of yacc.c  */
     7517#line 1827 "parser.yy"
    75107518    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75117519    break;
    75127520
    7513   case 477:
    7514 
    7515 /* Line 1806 of yacc.c  */
    7516 #line 1828 "parser.yy"
     7521  case 478:
     7522
     7523/* Line 1806 of yacc.c  */
     7524#line 1829 "parser.yy"
    75177525    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75187526    break;
    75197527
    7520   case 478:
    7521 
    7522 /* Line 1806 of yacc.c  */
    7523 #line 1830 "parser.yy"
    7524     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7525     break;
    7526 
    7527   case 480:
    7528 
    7529 /* Line 1806 of yacc.c  */
    7530 #line 1836 "parser.yy"
    7531     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7528  case 479:
     7529
     7530/* Line 1806 of yacc.c  */
     7531#line 1834 "parser.yy"
     7532    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    75327533    break;
    75337534
     
    75357536
    75367537/* Line 1806 of yacc.c  */
    7537 #line 1838 "parser.yy"
    7538     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7538#line 1840 "parser.yy"
     7539    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    75397540    break;
    75407541
     
    75427543
    75437544/* Line 1806 of yacc.c  */
    7544 #line 1843 "parser.yy"
    7545     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    7546     break;
    7547 
    7548   case 484:
    7549 
    7550 /* Line 1806 of yacc.c  */
    7551 #line 1849 "parser.yy"
    7552     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     7545#line 1845 "parser.yy"
     7546    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     7547    break;
     7548
     7549  case 483:
     7550
     7551/* Line 1806 of yacc.c  */
     7552#line 1847 "parser.yy"
     7553    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    75537554    break;
    75547555
     
    75567557
    75577558/* Line 1806 of yacc.c  */
    7558 #line 1854 "parser.yy"
    7559     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     7559#line 1853 "parser.yy"
     7560    { (yyval.tclass) = DeclarationNode::Otype; }
    75607561    break;
    75617562
     
    75637564
    75647565/* Line 1806 of yacc.c  */
    7565 #line 1856 "parser.yy"
    7566     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     7566#line 1855 "parser.yy"
     7567    { (yyval.tclass) = DeclarationNode::Ftype; }
     7568    break;
     7569
     7570  case 487:
     7571
     7572/* Line 1806 of yacc.c  */
     7573#line 1857 "parser.yy"
     7574    { (yyval.tclass) = DeclarationNode::Dtype; }
    75677575    break;
    75687576
     
    75717579/* Line 1806 of yacc.c  */
    75727580#line 1862 "parser.yy"
    7573     { (yyval.tclass) = DeclarationNode::Otype; }
     7581    { (yyval.decl) = 0; }
    75747582    break;
    75757583
     
    75787586/* Line 1806 of yacc.c  */
    75797587#line 1864 "parser.yy"
    7580     { (yyval.tclass) = DeclarationNode::Ftype; }
     7588    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    75817589    break;
    75827590
     
    75847592
    75857593/* Line 1806 of yacc.c  */
    7586 #line 1866 "parser.yy"
    7587     { (yyval.tclass) = DeclarationNode::Dtype; }
    7588     break;
    7589 
    7590   case 491:
    7591 
    7592 /* Line 1806 of yacc.c  */
    7593 #line 1871 "parser.yy"
    7594     { (yyval.decl) = 0; }
    7595     break;
    7596 
    7597   case 492:
    7598 
    7599 /* Line 1806 of yacc.c  */
    7600 #line 1873 "parser.yy"
    7601     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    7602     break;
    7603 
    7604   case 493:
    7605 
    7606 /* Line 1806 of yacc.c  */
    7607 #line 1878 "parser.yy"
     7594#line 1869 "parser.yy"
    76087595    {
    76097596                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    76127599    break;
    76137600
    7614   case 494:
    7615 
    7616 /* Line 1806 of yacc.c  */
    7617 #line 1883 "parser.yy"
     7601  case 491:
     7602
     7603/* Line 1806 of yacc.c  */
     7604#line 1874 "parser.yy"
    76187605    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    76197606    break;
    76207607
     7608  case 492:
     7609
     7610/* Line 1806 of yacc.c  */
     7611#line 1876 "parser.yy"
     7612    { (yyval.decl) = 0; }
     7613    break;
     7614
     7615  case 493:
     7616
     7617/* Line 1806 of yacc.c  */
     7618#line 1881 "parser.yy"
     7619    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
     7620    break;
     7621
    76217622  case 495:
    76227623
    76237624/* Line 1806 of yacc.c  */
    7624 #line 1885 "parser.yy"
    7625     { (yyval.decl) = 0; }
     7625#line 1884 "parser.yy"
     7626    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
    76267627    break;
    76277628
     
    76297630
    76307631/* Line 1806 of yacc.c  */
    7631 #line 1890 "parser.yy"
    7632     { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
     7632#line 1886 "parser.yy"
     7633    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     7634    break;
     7635
     7636  case 497:
     7637
     7638/* Line 1806 of yacc.c  */
     7639#line 1891 "parser.yy"
     7640    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76337641    break;
    76347642
     
    76377645/* Line 1806 of yacc.c  */
    76387646#line 1893 "parser.yy"
    7639     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
     7647    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    76407648    break;
    76417649
     
    76447652/* Line 1806 of yacc.c  */
    76457653#line 1895 "parser.yy"
    7646     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     7654    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    76477655    break;
    76487656
     
    76517659/* Line 1806 of yacc.c  */
    76527660#line 1900 "parser.yy"
    7653     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7661    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    76547662    break;
    76557663
     
    76587666/* Line 1806 of yacc.c  */
    76597667#line 1902 "parser.yy"
    7660     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     7668    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    76617669    break;
    76627670
     
    76647672
    76657673/* Line 1806 of yacc.c  */
    7666 #line 1904 "parser.yy"
    7667     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    7668     break;
    7669 
    7670   case 503:
    7671 
    7672 /* Line 1806 of yacc.c  */
    7673 #line 1909 "parser.yy"
    7674     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    7675     break;
    7676 
    7677   case 504:
    7678 
    7679 /* Line 1806 of yacc.c  */
    7680 #line 1911 "parser.yy"
    7681     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    7682     break;
    7683 
    7684   case 505:
    7685 
    7686 /* Line 1806 of yacc.c  */
    7687 #line 1916 "parser.yy"
     7674#line 1907 "parser.yy"
    76887675    {
    76897676                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    76927679    break;
    76937680
    7694   case 506:
    7695 
    7696 /* Line 1806 of yacc.c  */
    7697 #line 1921 "parser.yy"
     7681  case 503:
     7682
     7683/* Line 1806 of yacc.c  */
     7684#line 1912 "parser.yy"
    76987685    {
    76997686                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    77027689    break;
    77037690
    7704   case 507:
    7705 
    7706 /* Line 1806 of yacc.c  */
    7707 #line 1929 "parser.yy"
     7691  case 504:
     7692
     7693/* Line 1806 of yacc.c  */
     7694#line 1920 "parser.yy"
    77087695    {
    77097696                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    77127699    break;
    77137700
    7714   case 508:
    7715 
    7716 /* Line 1806 of yacc.c  */
    7717 #line 1934 "parser.yy"
     7701  case 505:
     7702
     7703/* Line 1806 of yacc.c  */
     7704#line 1925 "parser.yy"
    77187705    {
    77197706                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    77227709    break;
    77237710
    7724   case 509:
    7725 
    7726 /* Line 1806 of yacc.c  */
    7727 #line 1939 "parser.yy"
     7711  case 506:
     7712
     7713/* Line 1806 of yacc.c  */
     7714#line 1930 "parser.yy"
    77287715    {
    77297716                        typedefTable.leaveTrait();
     
    77337720    break;
    77347721
     7722  case 508:
     7723
     7724/* Line 1806 of yacc.c  */
     7725#line 1940 "parser.yy"
     7726    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     7727    break;
     7728
    77357729  case 511:
    77367730
    77377731/* Line 1806 of yacc.c  */
    7738 #line 1949 "parser.yy"
    7739     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    7740     break;
    7741 
    7742   case 514:
    7743 
    7744 /* Line 1806 of yacc.c  */
    7745 #line 1959 "parser.yy"
     7732#line 1950 "parser.yy"
    77467733    {
    77477734                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77507737    break;
    77517738
    7752   case 515:
    7753 
    7754 /* Line 1806 of yacc.c  */
    7755 #line 1964 "parser.yy"
     7739  case 512:
     7740
     7741/* Line 1806 of yacc.c  */
     7742#line 1955 "parser.yy"
    77567743    {
    77577744                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77607747    break;
    77617748
    7762   case 516:
    7763 
    7764 /* Line 1806 of yacc.c  */
    7765 #line 1969 "parser.yy"
     7749  case 513:
     7750
     7751/* Line 1806 of yacc.c  */
     7752#line 1960 "parser.yy"
    77667753    {
    77677754                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    77707757    break;
    77717758
    7772   case 517:
    7773 
    7774 /* Line 1806 of yacc.c  */
    7775 #line 1977 "parser.yy"
     7759  case 514:
     7760
     7761/* Line 1806 of yacc.c  */
     7762#line 1968 "parser.yy"
    77767763    {
    77777764                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77807767    break;
    77817768
    7782   case 518:
    7783 
    7784 /* Line 1806 of yacc.c  */
    7785 #line 1982 "parser.yy"
     7769  case 515:
     7770
     7771/* Line 1806 of yacc.c  */
     7772#line 1973 "parser.yy"
    77867773    {
    77877774                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77907777    break;
    77917778
     7779  case 516:
     7780
     7781/* Line 1806 of yacc.c  */
     7782#line 1983 "parser.yy"
     7783    {}
     7784    break;
     7785
     7786  case 517:
     7787
     7788/* Line 1806 of yacc.c  */
     7789#line 1985 "parser.yy"
     7790    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);    }
     7791    break;
     7792
    77927793  case 519:
    77937794
    77947795/* Line 1806 of yacc.c  */
    7795 #line 1992 "parser.yy"
     7796#line 1991 "parser.yy"
     7797    { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     7798    break;
     7799
     7800  case 520:
     7801
     7802/* Line 1806 of yacc.c  */
     7803#line 1996 "parser.yy"
     7804    { (yyval.decl) = 0; }
     7805    break;
     7806
     7807  case 524:
     7808
     7809/* Line 1806 of yacc.c  */
     7810#line 2004 "parser.yy"
    77967811    {}
    77977812    break;
    77987813
    7799   case 520:
    7800 
    7801 /* Line 1806 of yacc.c  */
    7802 #line 1994 "parser.yy"
    7803     { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);    }
    7804     break;
    7805 
    7806   case 522:
    7807 
    7808 /* Line 1806 of yacc.c  */
    7809 #line 2000 "parser.yy"
    7810     { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    7811     break;
    7812 
    7813   case 523:
    7814 
    7815 /* Line 1806 of yacc.c  */
    7816 #line 2005 "parser.yy"
    7817     { (yyval.decl) = 0; }
    7818     break;
    7819 
    7820   case 527:
    7821 
    7822 /* Line 1806 of yacc.c  */
    7823 #line 2013 "parser.yy"
    7824     {}
    7825     break;
    7826 
    7827   case 528:
    7828 
    7829 /* Line 1806 of yacc.c  */
    7830 #line 2015 "parser.yy"
     7814  case 525:
     7815
     7816/* Line 1806 of yacc.c  */
     7817#line 2006 "parser.yy"
    78317818    {
    78327819                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
    7833                         linkage = LinkageSpec::linkageCheck( (yyvsp[(2) - (2)].tok) );
     7820                        linkage = LinkageSpec::fromString( *(yyvsp[(2) - (2)].tok) );
    78347821                }
    78357822    break;
    78367823
    7837   case 529:
    7838 
    7839 /* Line 1806 of yacc.c  */
    7840 #line 2020 "parser.yy"
     7824  case 526:
     7825
     7826/* Line 1806 of yacc.c  */
     7827#line 2011 "parser.yy"
    78417828    {
    78427829                        linkage = linkageStack.top();
     
    78467833    break;
    78477834
    7848   case 530:
    7849 
    7850 /* Line 1806 of yacc.c  */
    7851 #line 2026 "parser.yy"
     7835  case 527:
     7836
     7837/* Line 1806 of yacc.c  */
     7838#line 2017 "parser.yy"
    78527839    {   // mark all fields in list
    78537840                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    78577844    break;
    78587845
    7859   case 532:
    7860 
    7861 /* Line 1806 of yacc.c  */
    7862 #line 2041 "parser.yy"
     7846  case 529:
     7847
     7848/* Line 1806 of yacc.c  */
     7849#line 2032 "parser.yy"
    78637850    {
    78647851                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78687855    break;
    78697856
    7870   case 533:
    7871 
    7872 /* Line 1806 of yacc.c  */
    7873 #line 2047 "parser.yy"
     7857  case 530:
     7858
     7859/* Line 1806 of yacc.c  */
     7860#line 2038 "parser.yy"
    78747861    {
    78757862                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78797866    break;
    78807867
    7881   case 534:
    7882 
    7883 /* Line 1806 of yacc.c  */
    7884 #line 2056 "parser.yy"
     7868  case 531:
     7869
     7870/* Line 1806 of yacc.c  */
     7871#line 2047 "parser.yy"
    78857872    {
    78867873                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78907877    break;
    78917878
    7892   case 535:
    7893 
    7894 /* Line 1806 of yacc.c  */
    7895 #line 2062 "parser.yy"
     7879  case 532:
     7880
     7881/* Line 1806 of yacc.c  */
     7882#line 2053 "parser.yy"
    78967883    {
    78977884                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79017888    break;
    79027889
    7903   case 536:
    7904 
    7905 /* Line 1806 of yacc.c  */
    7906 #line 2068 "parser.yy"
     7890  case 533:
     7891
     7892/* Line 1806 of yacc.c  */
     7893#line 2059 "parser.yy"
    79077894    {
    79087895                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79127899    break;
    79137900
    7914   case 537:
    7915 
    7916 /* Line 1806 of yacc.c  */
    7917 #line 2074 "parser.yy"
     7901  case 534:
     7902
     7903/* Line 1806 of yacc.c  */
     7904#line 2065 "parser.yy"
    79187905    {
    79197906                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79237910    break;
    79247911
    7925   case 538:
    7926 
    7927 /* Line 1806 of yacc.c  */
    7928 #line 2080 "parser.yy"
     7912  case 535:
     7913
     7914/* Line 1806 of yacc.c  */
     7915#line 2071 "parser.yy"
    79297916    {
    79307917                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79347921    break;
    79357922
    7936   case 539:
    7937 
    7938 /* Line 1806 of yacc.c  */
    7939 #line 2088 "parser.yy"
     7923  case 536:
     7924
     7925/* Line 1806 of yacc.c  */
     7926#line 2079 "parser.yy"
    79407927    {
    79417928                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79457932    break;
    79467933
    7947   case 540:
    7948 
    7949 /* Line 1806 of yacc.c  */
    7950 #line 2094 "parser.yy"
     7934  case 537:
     7935
     7936/* Line 1806 of yacc.c  */
     7937#line 2085 "parser.yy"
    79517938    {
    79527939                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79567943    break;
    79577944
    7958   case 541:
    7959 
    7960 /* Line 1806 of yacc.c  */
    7961 #line 2102 "parser.yy"
     7945  case 538:
     7946
     7947/* Line 1806 of yacc.c  */
     7948#line 2093 "parser.yy"
    79627949    {
    79637950                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79677954    break;
    79687955
    7969   case 542:
    7970 
    7971 /* Line 1806 of yacc.c  */
    7972 #line 2108 "parser.yy"
     7956  case 539:
     7957
     7958/* Line 1806 of yacc.c  */
     7959#line 2099 "parser.yy"
    79737960    {
    79747961                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79787965    break;
    79797966
     7967  case 543:
     7968
     7969/* Line 1806 of yacc.c  */
     7970#line 2114 "parser.yy"
     7971    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     7972    break;
     7973
     7974  case 545:
     7975
     7976/* Line 1806 of yacc.c  */
     7977#line 2119 "parser.yy"
     7978    { delete (yyvsp[(3) - (5)].str); }
     7979    break;
     7980
    79807981  case 546:
    79817982
    79827983/* Line 1806 of yacc.c  */
    7983 #line 2123 "parser.yy"
    7984     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    7985     break;
    7986 
    7987   case 548:
    7988 
    7989 /* Line 1806 of yacc.c  */
    7990 #line 2128 "parser.yy"
    7991     { delete (yyvsp[(3) - (5)].str); }
     7984#line 2124 "parser.yy"
     7985    { (yyval.decl) = 0; }
    79927986    break;
    79937987
     
    79957989
    79967990/* Line 1806 of yacc.c  */
    7997 #line 2133 "parser.yy"
     7991#line 2131 "parser.yy"
     7992    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7993    break;
     7994
     7995  case 550:
     7996
     7997/* Line 1806 of yacc.c  */
     7998#line 2137 "parser.yy"
    79987999    { (yyval.decl) = 0; }
    79998000    break;
    80008001
    8001   case 552:
    8002 
    8003 /* Line 1806 of yacc.c  */
    8004 #line 2140 "parser.yy"
    8005     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    8006     break;
    8007 
    8008   case 553:
    8009 
    8010 /* Line 1806 of yacc.c  */
    8011 #line 2146 "parser.yy"
    8012     { (yyval.decl) = 0; }
     8002  case 555:
     8003
     8004/* Line 1806 of yacc.c  */
     8005#line 2148 "parser.yy"
     8006    { delete (yyvsp[(3) - (4)].en); }
     8007    break;
     8008
     8009  case 556:
     8010
     8011/* Line 1806 of yacc.c  */
     8012#line 2152 "parser.yy"
     8013    { delete (yyvsp[(1) - (1)].tok); }
     8014    break;
     8015
     8016  case 557:
     8017
     8018/* Line 1806 of yacc.c  */
     8019#line 2153 "parser.yy"
     8020    { delete (yyvsp[(1) - (1)].decl); }
    80138021    break;
    80148022
     
    80168024
    80178025/* Line 1806 of yacc.c  */
    8018 #line 2157 "parser.yy"
    8019     { delete (yyvsp[(3) - (4)].en); }
     8026#line 2154 "parser.yy"
     8027    { delete (yyvsp[(1) - (1)].decl); }
    80208028    break;
    80218029
     
    80238031
    80248032/* Line 1806 of yacc.c  */
    8025 #line 2161 "parser.yy"
    8026     { delete (yyvsp[(1) - (1)].tok); }
     8033#line 2155 "parser.yy"
     8034    { delete (yyvsp[(1) - (1)].decl); }
    80278035    break;
    80288036
     
    80308038
    80318039/* Line 1806 of yacc.c  */
    8032 #line 2162 "parser.yy"
    8033     { delete (yyvsp[(1) - (1)].decl); }
    8034     break;
    8035 
    8036   case 561:
    8037 
    8038 /* Line 1806 of yacc.c  */
    8039 #line 2163 "parser.yy"
    8040     { delete (yyvsp[(1) - (1)].decl); }
     8040#line 2190 "parser.yy"
     8041    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80418042    break;
    80428043
     
    80448045
    80458046/* Line 1806 of yacc.c  */
    8046 #line 2164 "parser.yy"
    8047     { delete (yyvsp[(1) - (1)].decl); }
     8047#line 2193 "parser.yy"
     8048    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80488049    break;
    80498050
     
    80518052
    80528053/* Line 1806 of yacc.c  */
    8053 #line 2199 "parser.yy"
     8054#line 2195 "parser.yy"
    80548055    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80558056    break;
    80568057
    8057   case 565:
    8058 
    8059 /* Line 1806 of yacc.c  */
    8060 #line 2202 "parser.yy"
    8061     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8062     break;
    8063 
    8064   case 566:
    8065 
    8066 /* Line 1806 of yacc.c  */
    8067 #line 2204 "parser.yy"
    8068     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8069     break;
    8070 
    8071   case 567:
    8072 
    8073 /* Line 1806 of yacc.c  */
    8074 #line 2209 "parser.yy"
     8058  case 564:
     8059
     8060/* Line 1806 of yacc.c  */
     8061#line 2200 "parser.yy"
    80758062    {
    80768063                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    80798066    break;
    80808067
     8068  case 565:
     8069
     8070/* Line 1806 of yacc.c  */
     8071#line 2205 "parser.yy"
     8072    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8073    break;
     8074
     8075  case 566:
     8076
     8077/* Line 1806 of yacc.c  */
     8078#line 2210 "parser.yy"
     8079    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8080    break;
     8081
     8082  case 567:
     8083
     8084/* Line 1806 of yacc.c  */
     8085#line 2212 "parser.yy"
     8086    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8087    break;
     8088
    80818089  case 568:
    80828090
     
    80908098/* Line 1806 of yacc.c  */
    80918099#line 2219 "parser.yy"
     8100    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8101    break;
     8102
     8103  case 570:
     8104
     8105/* Line 1806 of yacc.c  */
     8106#line 2221 "parser.yy"
     8107    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8108    break;
     8109
     8110  case 571:
     8111
     8112/* Line 1806 of yacc.c  */
     8113#line 2223 "parser.yy"
     8114    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8115    break;
     8116
     8117  case 572:
     8118
     8119/* Line 1806 of yacc.c  */
     8120#line 2225 "parser.yy"
     8121    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8122    break;
     8123
     8124  case 573:
     8125
     8126/* Line 1806 of yacc.c  */
     8127#line 2230 "parser.yy"
     8128    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8129    break;
     8130
     8131  case 574:
     8132
     8133/* Line 1806 of yacc.c  */
     8134#line 2232 "parser.yy"
     8135    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8136    break;
     8137
     8138  case 575:
     8139
     8140/* Line 1806 of yacc.c  */
     8141#line 2241 "parser.yy"
     8142    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8143    break;
     8144
     8145  case 577:
     8146
     8147/* Line 1806 of yacc.c  */
     8148#line 2244 "parser.yy"
     8149    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8150    break;
     8151
     8152  case 578:
     8153
     8154/* Line 1806 of yacc.c  */
     8155#line 2249 "parser.yy"
     8156    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8157    break;
     8158
     8159  case 579:
     8160
     8161/* Line 1806 of yacc.c  */
     8162#line 2251 "parser.yy"
     8163    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8164    break;
     8165
     8166  case 580:
     8167
     8168/* Line 1806 of yacc.c  */
     8169#line 2253 "parser.yy"
     8170    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8171    break;
     8172
     8173  case 581:
     8174
     8175/* Line 1806 of yacc.c  */
     8176#line 2258 "parser.yy"
    80928177    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80938178    break;
    80948179
    8095   case 570:
    8096 
    8097 /* Line 1806 of yacc.c  */
    8098 #line 2221 "parser.yy"
     8180  case 582:
     8181
     8182/* Line 1806 of yacc.c  */
     8183#line 2260 "parser.yy"
    80998184    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8100     break;
    8101 
    8102   case 571:
    8103 
    8104 /* Line 1806 of yacc.c  */
    8105 #line 2223 "parser.yy"
    8106     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8107     break;
    8108 
    8109   case 572:
    8110 
    8111 /* Line 1806 of yacc.c  */
    8112 #line 2228 "parser.yy"
    8113     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8114     break;
    8115 
    8116   case 573:
    8117 
    8118 /* Line 1806 of yacc.c  */
    8119 #line 2230 "parser.yy"
    8120     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8121     break;
    8122 
    8123   case 574:
    8124 
    8125 /* Line 1806 of yacc.c  */
    8126 #line 2232 "parser.yy"
    8127     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8128     break;
    8129 
    8130   case 575:
    8131 
    8132 /* Line 1806 of yacc.c  */
    8133 #line 2234 "parser.yy"
    8134     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8135     break;
    8136 
    8137   case 576:
    8138 
    8139 /* Line 1806 of yacc.c  */
    8140 #line 2239 "parser.yy"
    8141     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8142     break;
    8143 
    8144   case 577:
    8145 
    8146 /* Line 1806 of yacc.c  */
    8147 #line 2241 "parser.yy"
    8148     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8149     break;
    8150 
    8151   case 578:
    8152 
    8153 /* Line 1806 of yacc.c  */
    8154 #line 2250 "parser.yy"
    8155     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8156     break;
    8157 
    8158   case 580:
    8159 
    8160 /* Line 1806 of yacc.c  */
    8161 #line 2253 "parser.yy"
    8162     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8163     break;
    8164 
    8165   case 581:
    8166 
    8167 /* Line 1806 of yacc.c  */
    8168 #line 2258 "parser.yy"
    8169     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8170     break;
    8171 
    8172   case 582:
    8173 
    8174 /* Line 1806 of yacc.c  */
    8175 #line 2260 "parser.yy"
    8176     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81778185    break;
    81788186
     
    81888196/* Line 1806 of yacc.c  */
    81898197#line 2267 "parser.yy"
    8190     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8198    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81918199    break;
    81928200
     
    81958203/* Line 1806 of yacc.c  */
    81968204#line 2269 "parser.yy"
    8197     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8205    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81988206    break;
    81998207
     
    82058213    break;
    82068214
    8207   case 587:
    8208 
    8209 /* Line 1806 of yacc.c  */
    8210 #line 2276 "parser.yy"
    8211     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8212     break;
    8213 
    8214   case 588:
    8215 
    8216 /* Line 1806 of yacc.c  */
    8217 #line 2278 "parser.yy"
    8218     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8219     break;
    8220 
    8221   case 589:
    8222 
    8223 /* Line 1806 of yacc.c  */
    8224 #line 2280 "parser.yy"
     8215  case 590:
     8216
     8217/* Line 1806 of yacc.c  */
     8218#line 2286 "parser.yy"
     8219    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     8220    break;
     8221
     8222  case 591:
     8223
     8224/* Line 1806 of yacc.c  */
     8225#line 2288 "parser.yy"
     8226    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     8227    break;
     8228
     8229  case 592:
     8230
     8231/* Line 1806 of yacc.c  */
     8232#line 2290 "parser.yy"
    82258233    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82268234    break;
     
    82308238/* Line 1806 of yacc.c  */
    82318239#line 2295 "parser.yy"
    8232     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     8240    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82338241    break;
    82348242
     
    82378245/* Line 1806 of yacc.c  */
    82388246#line 2297 "parser.yy"
    8239     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     8247    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82408248    break;
    82418249
     
    82518259/* Line 1806 of yacc.c  */
    82528260#line 2304 "parser.yy"
    8253     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8261    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82548262    break;
    82558263
     
    82588266/* Line 1806 of yacc.c  */
    82598267#line 2306 "parser.yy"
    8260     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8268    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82618269    break;
    82628270
     
    82718279
    82728280/* Line 1806 of yacc.c  */
    8273 #line 2313 "parser.yy"
    8274     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8275     break;
    8276 
    8277   case 600:
    8278 
    8279 /* Line 1806 of yacc.c  */
    8280 #line 2315 "parser.yy"
    8281     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8281#line 2323 "parser.yy"
     8282    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82828283    break;
    82838284
     
    82858286
    82868287/* Line 1806 of yacc.c  */
    8287 #line 2317 "parser.yy"
     8288#line 2326 "parser.yy"
     8289    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8290    break;
     8291
     8292  case 602:
     8293
     8294/* Line 1806 of yacc.c  */
     8295#line 2328 "parser.yy"
     8296    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8297    break;
     8298
     8299  case 604:
     8300
     8301/* Line 1806 of yacc.c  */
     8302#line 2334 "parser.yy"
    82888303    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82898304    break;
    82908305
    8291   case 602:
    8292 
    8293 /* Line 1806 of yacc.c  */
    8294 #line 2332 "parser.yy"
    8295     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8296     break;
    8297 
    8298   case 604:
    8299 
    8300 /* Line 1806 of yacc.c  */
    8301 #line 2335 "parser.yy"
    8302     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8303     break;
    8304 
    83058306  case 605:
    83068307
    83078308/* Line 1806 of yacc.c  */
    8308 #line 2337 "parser.yy"
    8309     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8309#line 2339 "parser.yy"
     8310    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8311    break;
     8312
     8313  case 606:
     8314
     8315/* Line 1806 of yacc.c  */
     8316#line 2341 "parser.yy"
     8317    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83108318    break;
    83118319
     
    83218329/* Line 1806 of yacc.c  */
    83228330#line 2348 "parser.yy"
    8323     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8331    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83248332    break;
    83258333
     
    83288336/* Line 1806 of yacc.c  */
    83298337#line 2350 "parser.yy"
    8330     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8338    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83318339    break;
    83328340
     
    83358343/* Line 1806 of yacc.c  */
    83368344#line 2352 "parser.yy"
     8345    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8346    break;
     8347
     8348  case 611:
     8349
     8350/* Line 1806 of yacc.c  */
     8351#line 2354 "parser.yy"
    83378352    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83388353    break;
    83398354
    8340   case 611:
    8341 
    8342 /* Line 1806 of yacc.c  */
    8343 #line 2357 "parser.yy"
    8344     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8345     break;
    8346 
    83478355  case 612:
    83488356
    83498357/* Line 1806 of yacc.c  */
    83508358#line 2359 "parser.yy"
    8351     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8359    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83528360    break;
    83538361
     
    83568364/* Line 1806 of yacc.c  */
    83578365#line 2361 "parser.yy"
    8358     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8366    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83598367    break;
    83608368
     
    83698377
    83708378/* Line 1806 of yacc.c  */
    8371 #line 2368 "parser.yy"
     8379#line 2373 "parser.yy"
     8380    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8381    break;
     8382
     8383  case 617:
     8384
     8385/* Line 1806 of yacc.c  */
     8386#line 2376 "parser.yy"
     8387    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8388    break;
     8389
     8390  case 618:
     8391
     8392/* Line 1806 of yacc.c  */
     8393#line 2378 "parser.yy"
     8394    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8395    break;
     8396
     8397  case 619:
     8398
     8399/* Line 1806 of yacc.c  */
     8400#line 2383 "parser.yy"
     8401    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8402    break;
     8403
     8404  case 620:
     8405
     8406/* Line 1806 of yacc.c  */
     8407#line 2385 "parser.yy"
     8408    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8409    break;
     8410
     8411  case 621:
     8412
     8413/* Line 1806 of yacc.c  */
     8414#line 2387 "parser.yy"
     8415    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8416    break;
     8417
     8418  case 622:
     8419
     8420/* Line 1806 of yacc.c  */
     8421#line 2392 "parser.yy"
     8422    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8423    break;
     8424
     8425  case 623:
     8426
     8427/* Line 1806 of yacc.c  */
     8428#line 2394 "parser.yy"
     8429    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8430    break;
     8431
     8432  case 624:
     8433
     8434/* Line 1806 of yacc.c  */
     8435#line 2396 "parser.yy"
     8436    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8437    break;
     8438
     8439  case 625:
     8440
     8441/* Line 1806 of yacc.c  */
     8442#line 2398 "parser.yy"
     8443    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8444    break;
     8445
     8446  case 626:
     8447
     8448/* Line 1806 of yacc.c  */
     8449#line 2403 "parser.yy"
    83728450    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83738451    break;
    83748452
    8375   case 616:
    8376 
    8377 /* Line 1806 of yacc.c  */
    8378 #line 2370 "parser.yy"
     8453  case 627:
     8454
     8455/* Line 1806 of yacc.c  */
     8456#line 2405 "parser.yy"
    83798457    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8380     break;
    8381 
    8382   case 617:
    8383 
    8384 /* Line 1806 of yacc.c  */
    8385 #line 2372 "parser.yy"
    8386     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8387     break;
    8388 
    8389   case 618:
    8390 
    8391 /* Line 1806 of yacc.c  */
    8392 #line 2382 "parser.yy"
    8393     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8394     break;
    8395 
    8396   case 620:
    8397 
    8398 /* Line 1806 of yacc.c  */
    8399 #line 2385 "parser.yy"
    8400     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8401     break;
    8402 
    8403   case 621:
    8404 
    8405 /* Line 1806 of yacc.c  */
    8406 #line 2387 "parser.yy"
    8407     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8408     break;
    8409 
    8410   case 622:
    8411 
    8412 /* Line 1806 of yacc.c  */
    8413 #line 2392 "parser.yy"
    8414     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8415     break;
    8416 
    8417   case 623:
    8418 
    8419 /* Line 1806 of yacc.c  */
    8420 #line 2394 "parser.yy"
    8421     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8422     break;
    8423 
    8424   case 624:
    8425 
    8426 /* Line 1806 of yacc.c  */
    8427 #line 2396 "parser.yy"
    8428     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8429     break;
    8430 
    8431   case 625:
    8432 
    8433 /* Line 1806 of yacc.c  */
    8434 #line 2401 "parser.yy"
    8435     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8436     break;
    8437 
    8438   case 626:
    8439 
    8440 /* Line 1806 of yacc.c  */
    8441 #line 2403 "parser.yy"
    8442     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8443     break;
    8444 
    8445   case 627:
    8446 
    8447 /* Line 1806 of yacc.c  */
    8448 #line 2405 "parser.yy"
    8449     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84508458    break;
    84518459
     
    84608468
    84618469/* Line 1806 of yacc.c  */
    8462 #line 2412 "parser.yy"
    8463     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8464     break;
    8465 
    8466   case 630:
    8467 
    8468 /* Line 1806 of yacc.c  */
    8469 #line 2414 "parser.yy"
    8470     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8470#line 2438 "parser.yy"
     8471    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84718472    break;
    84728473
     
    84748475
    84758476/* Line 1806 of yacc.c  */
    8476 #line 2416 "parser.yy"
    8477     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8477#line 2441 "parser.yy"
     8478    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84788479    break;
    84798480
     
    84818482
    84828483/* Line 1806 of yacc.c  */
    8483 #line 2447 "parser.yy"
     8484#line 2443 "parser.yy"
    84848485    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84858486    break;
    84868487
    8487   case 634:
    8488 
    8489 /* Line 1806 of yacc.c  */
    8490 #line 2450 "parser.yy"
    8491     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8492     break;
    8493 
    8494   case 635:
    8495 
    8496 /* Line 1806 of yacc.c  */
    8497 #line 2452 "parser.yy"
    8498     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8499     break;
    8500 
    8501   case 636:
    8502 
    8503 /* Line 1806 of yacc.c  */
    8504 #line 2457 "parser.yy"
     8488  case 633:
     8489
     8490/* Line 1806 of yacc.c  */
     8491#line 2448 "parser.yy"
    85058492    {
    85068493                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    85098496    break;
    85108497
    8511   case 637:
    8512 
    8513 /* Line 1806 of yacc.c  */
    8514 #line 2462 "parser.yy"
     8498  case 634:
     8499
     8500/* Line 1806 of yacc.c  */
     8501#line 2453 "parser.yy"
    85158502    {
    85168503                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    85198506    break;
    85208507
     8508  case 635:
     8509
     8510/* Line 1806 of yacc.c  */
     8511#line 2461 "parser.yy"
     8512    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8513    break;
     8514
     8515  case 636:
     8516
     8517/* Line 1806 of yacc.c  */
     8518#line 2463 "parser.yy"
     8519    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8520    break;
     8521
     8522  case 637:
     8523
     8524/* Line 1806 of yacc.c  */
     8525#line 2465 "parser.yy"
     8526    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8527    break;
     8528
    85218529  case 638:
    85228530
    85238531/* Line 1806 of yacc.c  */
    85248532#line 2470 "parser.yy"
     8533    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8534    break;
     8535
     8536  case 639:
     8537
     8538/* Line 1806 of yacc.c  */
     8539#line 2472 "parser.yy"
     8540    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8541    break;
     8542
     8543  case 640:
     8544
     8545/* Line 1806 of yacc.c  */
     8546#line 2477 "parser.yy"
     8547    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8548    break;
     8549
     8550  case 641:
     8551
     8552/* Line 1806 of yacc.c  */
     8553#line 2479 "parser.yy"
     8554    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8555    break;
     8556
     8557  case 643:
     8558
     8559/* Line 1806 of yacc.c  */
     8560#line 2494 "parser.yy"
     8561    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8562    break;
     8563
     8564  case 644:
     8565
     8566/* Line 1806 of yacc.c  */
     8567#line 2496 "parser.yy"
     8568    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8569    break;
     8570
     8571  case 645:
     8572
     8573/* Line 1806 of yacc.c  */
     8574#line 2501 "parser.yy"
     8575    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8576    break;
     8577
     8578  case 646:
     8579
     8580/* Line 1806 of yacc.c  */
     8581#line 2503 "parser.yy"
     8582    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8583    break;
     8584
     8585  case 647:
     8586
     8587/* Line 1806 of yacc.c  */
     8588#line 2505 "parser.yy"
    85258589    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85268590    break;
    85278591
    8528   case 639:
    8529 
    8530 /* Line 1806 of yacc.c  */
    8531 #line 2472 "parser.yy"
     8592  case 648:
     8593
     8594/* Line 1806 of yacc.c  */
     8595#line 2507 "parser.yy"
    85328596    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85338597    break;
    85348598
    8535   case 640:
    8536 
    8537 /* Line 1806 of yacc.c  */
    8538 #line 2474 "parser.yy"
     8599  case 649:
     8600
     8601/* Line 1806 of yacc.c  */
     8602#line 2509 "parser.yy"
    85398603    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85408604    break;
    85418605
    8542   case 641:
    8543 
    8544 /* Line 1806 of yacc.c  */
    8545 #line 2479 "parser.yy"
    8546     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8547     break;
    8548 
    8549   case 642:
    8550 
    8551 /* Line 1806 of yacc.c  */
    8552 #line 2481 "parser.yy"
     8606  case 651:
     8607
     8608/* Line 1806 of yacc.c  */
     8609#line 2515 "parser.yy"
    85538610    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85548611    break;
    85558612
    8556   case 643:
    8557 
    8558 /* Line 1806 of yacc.c  */
    8559 #line 2486 "parser.yy"
    8560     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8561     break;
    8562 
    8563   case 644:
    8564 
    8565 /* Line 1806 of yacc.c  */
    8566 #line 2488 "parser.yy"
     8613  case 652:
     8614
     8615/* Line 1806 of yacc.c  */
     8616#line 2517 "parser.yy"
     8617    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8618    break;
     8619
     8620  case 653:
     8621
     8622/* Line 1806 of yacc.c  */
     8623#line 2519 "parser.yy"
     8624    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8625    break;
     8626
     8627  case 654:
     8628
     8629/* Line 1806 of yacc.c  */
     8630#line 2524 "parser.yy"
     8631    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8632    break;
     8633
     8634  case 655:
     8635
     8636/* Line 1806 of yacc.c  */
     8637#line 2526 "parser.yy"
    85678638    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8568     break;
    8569 
    8570   case 646:
    8571 
    8572 /* Line 1806 of yacc.c  */
    8573 #line 2503 "parser.yy"
    8574     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8575     break;
    8576 
    8577   case 647:
    8578 
    8579 /* Line 1806 of yacc.c  */
    8580 #line 2505 "parser.yy"
    8581     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8582     break;
    8583 
    8584   case 648:
    8585 
    8586 /* Line 1806 of yacc.c  */
    8587 #line 2510 "parser.yy"
    8588     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8589     break;
    8590 
    8591   case 649:
    8592 
    8593 /* Line 1806 of yacc.c  */
    8594 #line 2512 "parser.yy"
    8595     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8596     break;
    8597 
    8598   case 650:
    8599 
    8600 /* Line 1806 of yacc.c  */
    8601 #line 2514 "parser.yy"
    8602     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8603     break;
    8604 
    8605   case 651:
    8606 
    8607 /* Line 1806 of yacc.c  */
    8608 #line 2516 "parser.yy"
    8609     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8610     break;
    8611 
    8612   case 652:
    8613 
    8614 /* Line 1806 of yacc.c  */
    8615 #line 2518 "parser.yy"
    8616     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8617     break;
    8618 
    8619   case 654:
    8620 
    8621 /* Line 1806 of yacc.c  */
    8622 #line 2524 "parser.yy"
    8623     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8624     break;
    8625 
    8626   case 655:
    8627 
    8628 /* Line 1806 of yacc.c  */
    8629 #line 2526 "parser.yy"
    8630     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86318639    break;
    86328640
     
    86418649
    86428650/* Line 1806 of yacc.c  */
    8643 #line 2533 "parser.yy"
    8644     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     8651#line 2534 "parser.yy"
     8652    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86458653    break;
    86468654
     
    86488656
    86498657/* Line 1806 of yacc.c  */
    8650 #line 2535 "parser.yy"
     8658#line 2536 "parser.yy"
     8659    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     8660    break;
     8661
     8662  case 660:
     8663
     8664/* Line 1806 of yacc.c  */
     8665#line 2542 "parser.yy"
     8666    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     8667    break;
     8668
     8669  case 661:
     8670
     8671/* Line 1806 of yacc.c  */
     8672#line 2544 "parser.yy"
     8673    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     8674    break;
     8675
     8676  case 662:
     8677
     8678/* Line 1806 of yacc.c  */
     8679#line 2546 "parser.yy"
     8680    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     8681    break;
     8682
     8683  case 663:
     8684
     8685/* Line 1806 of yacc.c  */
     8686#line 2548 "parser.yy"
     8687    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     8688    break;
     8689
     8690  case 665:
     8691
     8692/* Line 1806 of yacc.c  */
     8693#line 2563 "parser.yy"
     8694    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8695    break;
     8696
     8697  case 666:
     8698
     8699/* Line 1806 of yacc.c  */
     8700#line 2565 "parser.yy"
     8701    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8702    break;
     8703
     8704  case 667:
     8705
     8706/* Line 1806 of yacc.c  */
     8707#line 2570 "parser.yy"
     8708    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8709    break;
     8710
     8711  case 668:
     8712
     8713/* Line 1806 of yacc.c  */
     8714#line 2572 "parser.yy"
     8715    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8716    break;
     8717
     8718  case 669:
     8719
     8720/* Line 1806 of yacc.c  */
     8721#line 2574 "parser.yy"
     8722    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8723    break;
     8724
     8725  case 670:
     8726
     8727/* Line 1806 of yacc.c  */
     8728#line 2576 "parser.yy"
     8729    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8730    break;
     8731
     8732  case 671:
     8733
     8734/* Line 1806 of yacc.c  */
     8735#line 2578 "parser.yy"
     8736    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8737    break;
     8738
     8739  case 673:
     8740
     8741/* Line 1806 of yacc.c  */
     8742#line 2584 "parser.yy"
     8743    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8744    break;
     8745
     8746  case 674:
     8747
     8748/* Line 1806 of yacc.c  */
     8749#line 2586 "parser.yy"
     8750    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8751    break;
     8752
     8753  case 675:
     8754
     8755/* Line 1806 of yacc.c  */
     8756#line 2588 "parser.yy"
     8757    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8758    break;
     8759
     8760  case 676:
     8761
     8762/* Line 1806 of yacc.c  */
     8763#line 2593 "parser.yy"
     8764    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8765    break;
     8766
     8767  case 677:
     8768
     8769/* Line 1806 of yacc.c  */
     8770#line 2595 "parser.yy"
    86518771    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8652     break;
    8653 
    8654   case 659:
    8655 
    8656 /* Line 1806 of yacc.c  */
    8657 #line 2537 "parser.yy"
    8658     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8659     break;
    8660 
    8661   case 660:
    8662 
    8663 /* Line 1806 of yacc.c  */
    8664 #line 2543 "parser.yy"
    8665     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8666     break;
    8667 
    8668   case 661:
    8669 
    8670 /* Line 1806 of yacc.c  */
    8671 #line 2545 "parser.yy"
    8672     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    8673     break;
    8674 
    8675   case 663:
    8676 
    8677 /* Line 1806 of yacc.c  */
    8678 #line 2551 "parser.yy"
    8679     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    8680     break;
    8681 
    8682   case 664:
    8683 
    8684 /* Line 1806 of yacc.c  */
    8685 #line 2553 "parser.yy"
    8686     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    8687     break;
    8688 
    8689   case 665:
    8690 
    8691 /* Line 1806 of yacc.c  */
    8692 #line 2555 "parser.yy"
    8693     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    8694     break;
    8695 
    8696   case 666:
    8697 
    8698 /* Line 1806 of yacc.c  */
    8699 #line 2557 "parser.yy"
    8700     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    8701     break;
    8702 
    8703   case 668:
    8704 
    8705 /* Line 1806 of yacc.c  */
    8706 #line 2572 "parser.yy"
    8707     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8708     break;
    8709 
    8710   case 669:
    8711 
    8712 /* Line 1806 of yacc.c  */
    8713 #line 2574 "parser.yy"
    8714     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8715     break;
    8716 
    8717   case 670:
    8718 
    8719 /* Line 1806 of yacc.c  */
    8720 #line 2579 "parser.yy"
    8721     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8722     break;
    8723 
    8724   case 671:
    8725 
    8726 /* Line 1806 of yacc.c  */
    8727 #line 2581 "parser.yy"
    8728     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8729     break;
    8730 
    8731   case 672:
    8732 
    8733 /* Line 1806 of yacc.c  */
    8734 #line 2583 "parser.yy"
    8735     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8736     break;
    8737 
    8738   case 673:
    8739 
    8740 /* Line 1806 of yacc.c  */
    8741 #line 2585 "parser.yy"
    8742     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8743     break;
    8744 
    8745   case 674:
    8746 
    8747 /* Line 1806 of yacc.c  */
    8748 #line 2587 "parser.yy"
    8749     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8750     break;
    8751 
    8752   case 676:
    8753 
    8754 /* Line 1806 of yacc.c  */
    8755 #line 2593 "parser.yy"
    8756     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8757     break;
    8758 
    8759   case 677:
    8760 
    8761 /* Line 1806 of yacc.c  */
    8762 #line 2595 "parser.yy"
    8763     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87648772    break;
    87658773
     
    87718779    break;
    87728780
    8773   case 679:
    8774 
    8775 /* Line 1806 of yacc.c  */
    8776 #line 2602 "parser.yy"
    8777     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    8778     break;
    8779 
    87808781  case 680:
    87818782
    87828783/* Line 1806 of yacc.c  */
    87838784#line 2604 "parser.yy"
     8785    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8786    break;
     8787
     8788  case 682:
     8789
     8790/* Line 1806 of yacc.c  */
     8791#line 2615 "parser.yy"
     8792    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8793    break;
     8794
     8795  case 683:
     8796
     8797/* Line 1806 of yacc.c  */
     8798#line 2618 "parser.yy"
     8799    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     8800    break;
     8801
     8802  case 684:
     8803
     8804/* Line 1806 of yacc.c  */
     8805#line 2620 "parser.yy"
     8806    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     8807    break;
     8808
     8809  case 685:
     8810
     8811/* Line 1806 of yacc.c  */
     8812#line 2623 "parser.yy"
     8813    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     8814    break;
     8815
     8816  case 686:
     8817
     8818/* Line 1806 of yacc.c  */
     8819#line 2625 "parser.yy"
     8820    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     8821    break;
     8822
     8823  case 687:
     8824
     8825/* Line 1806 of yacc.c  */
     8826#line 2627 "parser.yy"
     8827    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     8828    break;
     8829
     8830  case 689:
     8831
     8832/* Line 1806 of yacc.c  */
     8833#line 2641 "parser.yy"
     8834    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8835    break;
     8836
     8837  case 690:
     8838
     8839/* Line 1806 of yacc.c  */
     8840#line 2643 "parser.yy"
     8841    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8842    break;
     8843
     8844  case 691:
     8845
     8846/* Line 1806 of yacc.c  */
     8847#line 2648 "parser.yy"
     8848    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8849    break;
     8850
     8851  case 692:
     8852
     8853/* Line 1806 of yacc.c  */
     8854#line 2650 "parser.yy"
     8855    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8856    break;
     8857
     8858  case 693:
     8859
     8860/* Line 1806 of yacc.c  */
     8861#line 2652 "parser.yy"
     8862    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8863    break;
     8864
     8865  case 694:
     8866
     8867/* Line 1806 of yacc.c  */
     8868#line 2654 "parser.yy"
     8869    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8870    break;
     8871
     8872  case 695:
     8873
     8874/* Line 1806 of yacc.c  */
     8875#line 2656 "parser.yy"
     8876    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8877    break;
     8878
     8879  case 697:
     8880
     8881/* Line 1806 of yacc.c  */
     8882#line 2662 "parser.yy"
     8883    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8884    break;
     8885
     8886  case 698:
     8887
     8888/* Line 1806 of yacc.c  */
     8889#line 2664 "parser.yy"
     8890    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8891    break;
     8892
     8893  case 699:
     8894
     8895/* Line 1806 of yacc.c  */
     8896#line 2666 "parser.yy"
     8897    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8898    break;
     8899
     8900  case 700:
     8901
     8902/* Line 1806 of yacc.c  */
     8903#line 2671 "parser.yy"
    87848904    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87858905    break;
    87868906
    8787   case 681:
    8788 
    8789 /* Line 1806 of yacc.c  */
    8790 #line 2606 "parser.yy"
     8907  case 701:
     8908
     8909/* Line 1806 of yacc.c  */
     8910#line 2673 "parser.yy"
    87918911    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87928912    break;
    87938913
    8794   case 683:
    8795 
    8796 /* Line 1806 of yacc.c  */
    8797 #line 2613 "parser.yy"
    8798     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8799     break;
    8800 
    8801   case 685:
    8802 
    8803 /* Line 1806 of yacc.c  */
    8804 #line 2624 "parser.yy"
    8805     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8806     break;
    8807 
    8808   case 686:
    8809 
    8810 /* Line 1806 of yacc.c  */
    8811 #line 2627 "parser.yy"
     8914  case 704:
     8915
     8916/* Line 1806 of yacc.c  */
     8917#line 2683 "parser.yy"
     8918    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     8919    break;
     8920
     8921  case 707:
     8922
     8923/* Line 1806 of yacc.c  */
     8924#line 2693 "parser.yy"
     8925    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8926    break;
     8927
     8928  case 708:
     8929
     8930/* Line 1806 of yacc.c  */
     8931#line 2695 "parser.yy"
     8932    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8933    break;
     8934
     8935  case 709:
     8936
     8937/* Line 1806 of yacc.c  */
     8938#line 2697 "parser.yy"
     8939    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8940    break;
     8941
     8942  case 710:
     8943
     8944/* Line 1806 of yacc.c  */
     8945#line 2699 "parser.yy"
     8946    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8947    break;
     8948
     8949  case 711:
     8950
     8951/* Line 1806 of yacc.c  */
     8952#line 2701 "parser.yy"
     8953    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8954    break;
     8955
     8956  case 712:
     8957
     8958/* Line 1806 of yacc.c  */
     8959#line 2703 "parser.yy"
     8960    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8961    break;
     8962
     8963  case 713:
     8964
     8965/* Line 1806 of yacc.c  */
     8966#line 2710 "parser.yy"
     8967    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8968    break;
     8969
     8970  case 714:
     8971
     8972/* Line 1806 of yacc.c  */
     8973#line 2712 "parser.yy"
     8974    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8975    break;
     8976
     8977  case 715:
     8978
     8979/* Line 1806 of yacc.c  */
     8980#line 2714 "parser.yy"
     8981    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8982    break;
     8983
     8984  case 716:
     8985
     8986/* Line 1806 of yacc.c  */
     8987#line 2716 "parser.yy"
     8988    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8989    break;
     8990
     8991  case 717:
     8992
     8993/* Line 1806 of yacc.c  */
     8994#line 2718 "parser.yy"
     8995    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8996    break;
     8997
     8998  case 718:
     8999
     9000/* Line 1806 of yacc.c  */
     9001#line 2720 "parser.yy"
     9002    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9003    break;
     9004
     9005  case 719:
     9006
     9007/* Line 1806 of yacc.c  */
     9008#line 2722 "parser.yy"
     9009    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9010    break;
     9011
     9012  case 720:
     9013
     9014/* Line 1806 of yacc.c  */
     9015#line 2724 "parser.yy"
     9016    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9017    break;
     9018
     9019  case 721:
     9020
     9021/* Line 1806 of yacc.c  */
     9022#line 2726 "parser.yy"
     9023    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     9024    break;
     9025
     9026  case 722:
     9027
     9028/* Line 1806 of yacc.c  */
     9029#line 2728 "parser.yy"
     9030    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9031    break;
     9032
     9033  case 723:
     9034
     9035/* Line 1806 of yacc.c  */
     9036#line 2733 "parser.yy"
    88129037    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    88139038    break;
    88149039
    8815   case 687:
    8816 
    8817 /* Line 1806 of yacc.c  */
    8818 #line 2629 "parser.yy"
    8819     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    8820     break;
    8821 
    8822   case 688:
    8823 
    8824 /* Line 1806 of yacc.c  */
    8825 #line 2632 "parser.yy"
     9040  case 724:
     9041
     9042/* Line 1806 of yacc.c  */
     9043#line 2735 "parser.yy"
    88269044    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    88279045    break;
    88289046
    8829   case 689:
    8830 
    8831 /* Line 1806 of yacc.c  */
    8832 #line 2634 "parser.yy"
    8833     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    8834     break;
    8835 
    8836   case 690:
    8837 
    8838 /* Line 1806 of yacc.c  */
    8839 #line 2636 "parser.yy"
    8840     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    8841     break;
    8842 
    8843   case 692:
    8844 
    8845 /* Line 1806 of yacc.c  */
    8846 #line 2650 "parser.yy"
    8847     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8848     break;
    8849 
    8850   case 693:
    8851 
    8852 /* Line 1806 of yacc.c  */
    8853 #line 2652 "parser.yy"
    8854     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8855     break;
    8856 
    8857   case 694:
    8858 
    8859 /* Line 1806 of yacc.c  */
    8860 #line 2657 "parser.yy"
    8861     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8862     break;
    8863 
    8864   case 695:
    8865 
    8866 /* Line 1806 of yacc.c  */
    8867 #line 2659 "parser.yy"
    8868     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8869     break;
    8870 
    8871   case 696:
    8872 
    8873 /* Line 1806 of yacc.c  */
    8874 #line 2661 "parser.yy"
    8875     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8876     break;
    8877 
    8878   case 697:
    8879 
    8880 /* Line 1806 of yacc.c  */
    8881 #line 2663 "parser.yy"
    8882     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8883     break;
    8884 
    8885   case 698:
    8886 
    8887 /* Line 1806 of yacc.c  */
    8888 #line 2665 "parser.yy"
    8889     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8890     break;
    8891 
    8892   case 700:
    8893 
    8894 /* Line 1806 of yacc.c  */
    8895 #line 2671 "parser.yy"
    8896     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8897     break;
    8898 
    8899   case 701:
    8900 
    8901 /* Line 1806 of yacc.c  */
    8902 #line 2673 "parser.yy"
    8903     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8904     break;
    8905 
    8906   case 702:
    8907 
    8908 /* Line 1806 of yacc.c  */
    8909 #line 2675 "parser.yy"
    8910     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8911     break;
    8912 
    8913   case 703:
    8914 
    8915 /* Line 1806 of yacc.c  */
    8916 #line 2680 "parser.yy"
    8917     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8918     break;
    8919 
    8920   case 704:
    8921 
    8922 /* Line 1806 of yacc.c  */
    8923 #line 2682 "parser.yy"
    8924     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8925     break;
    8926 
    8927   case 707:
    8928 
    8929 /* Line 1806 of yacc.c  */
    8930 #line 2692 "parser.yy"
     9047  case 725:
     9048
     9049/* Line 1806 of yacc.c  */
     9050#line 2740 "parser.yy"
     9051    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     9052    break;
     9053
     9054  case 726:
     9055
     9056/* Line 1806 of yacc.c  */
     9057#line 2742 "parser.yy"
     9058    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     9059    break;
     9060
     9061  case 728:
     9062
     9063/* Line 1806 of yacc.c  */
     9064#line 2769 "parser.yy"
    89319065    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89329066    break;
    89339067
    8934   case 710:
    8935 
    8936 /* Line 1806 of yacc.c  */
    8937 #line 2702 "parser.yy"
     9068  case 732:
     9069
     9070/* Line 1806 of yacc.c  */
     9071#line 2780 "parser.yy"
    89389072    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89399073    break;
    89409074
    8941   case 711:
    8942 
    8943 /* Line 1806 of yacc.c  */
    8944 #line 2704 "parser.yy"
     9075  case 733:
     9076
     9077/* Line 1806 of yacc.c  */
     9078#line 2782 "parser.yy"
    89459079    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89469080    break;
    89479081
    8948   case 712:
    8949 
    8950 /* Line 1806 of yacc.c  */
    8951 #line 2706 "parser.yy"
     9082  case 734:
     9083
     9084/* Line 1806 of yacc.c  */
     9085#line 2784 "parser.yy"
    89529086    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89539087    break;
    89549088
    8955   case 713:
    8956 
    8957 /* Line 1806 of yacc.c  */
    8958 #line 2708 "parser.yy"
     9089  case 735:
     9090
     9091/* Line 1806 of yacc.c  */
     9092#line 2786 "parser.yy"
    89599093    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89609094    break;
    89619095
    8962   case 714:
    8963 
    8964 /* Line 1806 of yacc.c  */
    8965 #line 2710 "parser.yy"
     9096  case 736:
     9097
     9098/* Line 1806 of yacc.c  */
     9099#line 2788 "parser.yy"
    89669100    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89679101    break;
    89689102
    8969   case 715:
    8970 
    8971 /* Line 1806 of yacc.c  */
    8972 #line 2712 "parser.yy"
     9103  case 737:
     9104
     9105/* Line 1806 of yacc.c  */
     9106#line 2790 "parser.yy"
    89739107    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89749108    break;
    89759109
    8976   case 716:
    8977 
    8978 /* Line 1806 of yacc.c  */
    8979 #line 2719 "parser.yy"
     9110  case 738:
     9111
     9112/* Line 1806 of yacc.c  */
     9113#line 2797 "parser.yy"
    89809114    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89819115    break;
    89829116
    8983   case 717:
    8984 
    8985 /* Line 1806 of yacc.c  */
    8986 #line 2721 "parser.yy"
     9117  case 739:
     9118
     9119/* Line 1806 of yacc.c  */
     9120#line 2799 "parser.yy"
     9121    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9122    break;
     9123
     9124  case 740:
     9125
     9126/* Line 1806 of yacc.c  */
     9127#line 2801 "parser.yy"
    89879128    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89889129    break;
    89899130
    8990   case 718:
    8991 
    8992 /* Line 1806 of yacc.c  */
    8993 #line 2723 "parser.yy"
     9131  case 741:
     9132
     9133/* Line 1806 of yacc.c  */
     9134#line 2803 "parser.yy"
     9135    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9136    break;
     9137
     9138  case 742:
     9139
     9140/* Line 1806 of yacc.c  */
     9141#line 2805 "parser.yy"
    89949142    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89959143    break;
    89969144
    8997   case 719:
    8998 
    8999 /* Line 1806 of yacc.c  */
    9000 #line 2725 "parser.yy"
    9001     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    9002     break;
    9003 
    9004   case 720:
    9005 
    9006 /* Line 1806 of yacc.c  */
    9007 #line 2727 "parser.yy"
     9145  case 743:
     9146
     9147/* Line 1806 of yacc.c  */
     9148#line 2807 "parser.yy"
    90089149    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90099150    break;
    90109151
    9011   case 721:
    9012 
    9013 /* Line 1806 of yacc.c  */
    9014 #line 2729 "parser.yy"
    9015     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9016     break;
    9017 
    9018   case 722:
    9019 
    9020 /* Line 1806 of yacc.c  */
    9021 #line 2731 "parser.yy"
    9022     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9023     break;
    9024 
    9025   case 723:
    9026 
    9027 /* Line 1806 of yacc.c  */
    9028 #line 2733 "parser.yy"
    9029     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9030     break;
    9031 
    9032   case 724:
    9033 
    9034 /* Line 1806 of yacc.c  */
    9035 #line 2735 "parser.yy"
    9036     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    9037     break;
    9038 
    9039   case 725:
    9040 
    9041 /* Line 1806 of yacc.c  */
    9042 #line 2737 "parser.yy"
    9043     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9044     break;
    9045 
    9046   case 726:
    9047 
    9048 /* Line 1806 of yacc.c  */
    9049 #line 2742 "parser.yy"
    9050     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    9051     break;
    9052 
    9053   case 727:
    9054 
    9055 /* Line 1806 of yacc.c  */
    9056 #line 2744 "parser.yy"
    9057     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    9058     break;
    9059 
    9060   case 728:
    9061 
    9062 /* Line 1806 of yacc.c  */
    9063 #line 2749 "parser.yy"
    9064     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    9065     break;
    9066 
    9067   case 729:
    9068 
    9069 /* Line 1806 of yacc.c  */
    9070 #line 2751 "parser.yy"
    9071     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    9072     break;
    9073 
    9074   case 731:
    9075 
    9076 /* Line 1806 of yacc.c  */
    9077 #line 2778 "parser.yy"
    9078     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    9079     break;
    9080 
    9081   case 735:
    9082 
    9083 /* Line 1806 of yacc.c  */
    9084 #line 2789 "parser.yy"
    9085     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9086     break;
    9087 
    9088   case 736:
    9089 
    9090 /* Line 1806 of yacc.c  */
    9091 #line 2791 "parser.yy"
    9092     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9093     break;
    9094 
    9095   case 737:
    9096 
    9097 /* Line 1806 of yacc.c  */
    9098 #line 2793 "parser.yy"
    9099     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9100     break;
    9101 
    9102   case 738:
    9103 
    9104 /* Line 1806 of yacc.c  */
    9105 #line 2795 "parser.yy"
    9106     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9107     break;
    9108 
    9109   case 739:
    9110 
    9111 /* Line 1806 of yacc.c  */
    9112 #line 2797 "parser.yy"
    9113     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9114     break;
    9115 
    9116   case 740:
    9117 
    9118 /* Line 1806 of yacc.c  */
    9119 #line 2799 "parser.yy"
    9120     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9121     break;
    9122 
    9123   case 741:
    9124 
    9125 /* Line 1806 of yacc.c  */
    9126 #line 2806 "parser.yy"
    9127     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    9128     break;
    9129 
    9130   case 742:
    9131 
    9132 /* Line 1806 of yacc.c  */
    9133 #line 2808 "parser.yy"
    9134     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    9135     break;
    9136 
    9137   case 743:
    9138 
    9139 /* Line 1806 of yacc.c  */
    9140 #line 2810 "parser.yy"
    9141     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9142     break;
    9143 
    91449152  case 744:
    91459153
    91469154/* Line 1806 of yacc.c  */
    91479155#line 2812 "parser.yy"
    9148     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9156    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    91499157    break;
    91509158
     
    91529160
    91539161/* Line 1806 of yacc.c  */
    9154 #line 2814 "parser.yy"
    9155     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9162#line 2817 "parser.yy"
     9163    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    91569164    break;
    91579165
     
    91599167
    91609168/* Line 1806 of yacc.c  */
    9161 #line 2816 "parser.yy"
    9162     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9169#line 2819 "parser.yy"
     9170    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    91639171    break;
    91649172
     
    91679175/* Line 1806 of yacc.c  */
    91689176#line 2821 "parser.yy"
    9169     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    9170     break;
    9171 
    9172   case 748:
    9173 
    9174 /* Line 1806 of yacc.c  */
    9175 #line 2826 "parser.yy"
    9176     { (yyval.decl) = DeclarationNode::newFunction( nullptr, DeclarationNode::newTuple( nullptr ), (yyvsp[(4) - (5)].decl), nullptr ); }
    9177     break;
    9178 
    9179   case 749:
    9180 
    9181 /* Line 1806 of yacc.c  */
    9182 #line 2828 "parser.yy"
    9183     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
     9177    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    91849178    break;
    91859179
     
    91879181
    91889182/* Line 1806 of yacc.c  */
    9189 #line 2830 "parser.yy"
    9190     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    9191     break;
    9192 
    9193   case 753:
    9194 
    9195 /* Line 1806 of yacc.c  */
    9196 #line 2854 "parser.yy"
     9183#line 2845 "parser.yy"
    91979184    { (yyval.en) = 0; }
    91989185    break;
    91999186
    9200   case 754:
    9201 
    9202 /* Line 1806 of yacc.c  */
    9203 #line 2856 "parser.yy"
     9187  case 751:
     9188
     9189/* Line 1806 of yacc.c  */
     9190#line 2847 "parser.yy"
    92049191    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    92059192    break;
     
    92089195
    92099196/* Line 1806 of yacc.c  */
    9210 #line 9211 "Parser/parser.cc"
     9197#line 9198 "Parser/parser.cc"
    92119198      default: break;
    92129199    }
     
    94399426
    94409427/* Line 2067 of yacc.c  */
    9441 #line 2859 "parser.yy"
     9428#line 2850 "parser.yy"
    94429429
    94439430// ----end of grammar----
     
    94469433
    94479434void yyerror( const char * ) {
    9448         cout << "Error ";
     9435        std::cout << "Error ";
    94499436        if ( yyfilename ) {
    9450                 cout << "in file " << yyfilename << " ";
     9437                std::cout << "in file " << yyfilename << " ";
    94519438        } // if
    9452         cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << endl;
     9439        std::cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << std::endl;
    94539440}
    94549441
  • src/Parser/parser.h

    r7756647 rac9ca967  
    262262
    263263/* Line 2068 of yacc.c  */
    264 #line 116 "parser.yy"
     264#line 115 "parser.yy"
    265265
    266266        Token tok;
  • src/Parser/parser.yy

    r7756647 rac9ca967  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Oct  5 14:10:46 2016
    13 // Update Count     : 2002
     12// Last Modified On : Mon Sep 12 17:29:45 2016
     13// Update Count     : 1969
    1414//
    1515
     
    5454#include "TypeData.h"
    5555#include "LinkageSpec.h"
    56 using namespace std;
    5756
    5857extern DeclarationNode * parseTree;
     
    6059extern TypedefTable typedefTable;
    6160
    62 stack< LinkageSpec::Spec > linkageStack;
    63 
    64 void appendStr( string *to, string *from ) {
     61std::stack< LinkageSpec::Spec > linkageStack;
     62
     63void appendStr( std::string *to, std::string *from ) {
    6564        // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
    6665        to->insert( to->length() - 1, from->substr( 1, from->length() - 2 ) );
     
    196195%type<decl> field_declaration field_declaration_list field_declarator field_declaring_list
    197196%type<en> field field_list
    198 %type<tok> field_name
    199197
    200198%type<decl> external_function_definition function_definition function_array function_declarator function_no_ptr function_ptr
     
    361359                { $$ = $2; }
    362360        | '(' compound_statement ')'                                            // GCC, lambda expression
    363                 { $$ = new ExpressionNode( build_valexpr( $2 ) ); }
     361        { $$ = new ExpressionNode( build_valexpr( $2 ) ); }
    364362        ;
    365363
     
    380378        | postfix_expression '.' '[' push field_list pop ']' // CFA, tuple field selector
    381379                { $$ = new ExpressionNode( build_fieldSel( $1, build_tuple( $5 ) ) ); }
    382         | postfix_expression '.' INTEGERconstant
    383                 { $$ = new ExpressionNode( build_fieldSel( $1, build_constantInteger( *$3 ) ) ); }
    384380        | postfix_expression ARROW no_attr_identifier
    385381                { $$ = new ExpressionNode( build_pfieldSel( $1, build_varref( $3 ) ) ); }
     
    395391                {
    396392                        Token fn;
    397                         fn.str = new std::string( "?{}" );                      // location undefined - use location of '{'?
     393                        fn.str = new std::string( "?{}" ); // location undefined - use location of '{'?
    398394                        $$ = new ExpressionNode( new ConstructorExpr( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $1 )->set_last( $3 ) ) ) );
    399395                }
     
    418414
    419415field:                                                                                                  // CFA, tuple field selector
    420         field_name
     416        no_attr_identifier
     417                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    421418                // ambiguity with .0 so space required after field-selection, e.g.
    422419                //   struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;
    423                 { $$ = new ExpressionNode( build_varref( $1 ) ); }
    424         | field_name '.' field
     420        | no_attr_identifier '.' field
    425421                { $$ = new ExpressionNode( build_fieldSel( $3, build_varref( $1 ) ) ); }
    426         | field_name '.' '[' push field_list pop ']'
     422        | no_attr_identifier '.' '[' push field_list pop ']'
    427423                { $$ = new ExpressionNode( build_fieldSel( $5, build_varref( $1 ) ) ); }
    428         | field_name ARROW field
     424        | no_attr_identifier ARROW field
    429425                { $$ = new ExpressionNode( build_pfieldSel( $3, build_varref( $1 ) ) ); }
    430         | field_name ARROW '[' push field_list pop ']'
     426        | no_attr_identifier ARROW '[' push field_list pop ']'
    431427                { $$ = new ExpressionNode( build_pfieldSel( $5, build_varref( $1 ) ) ); }
    432         ;
    433 
    434 field_name:
    435         no_attr_identifier
    436         | INTEGERconstant
    437428        ;
    438429
     
    677668                {
    678669                        Token fn;
    679                         fn.str = new string( "^?{}" );                          // location undefined
     670                        fn.str = new std::string( "^?{}" ); // location undefined
    680671                        $$ = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $2 )->set_last( $4 ) ) ) ) );
    681672                }
     
    907898                { $$ = new StatementNode( build_catch( $5, $8 ) ); }
    908899        | handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop
    909                 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $6, $9 ) ) ); }
     900        { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $6, $9 ) ) ); }
    910901        | CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
    911902                { $$ = new StatementNode( build_catch( $5, $8 ) ); }
     
    979970                { $$ = new ExpressionNode( build_asmexpr( 0, $1, $3 ) ); }
    980971        | '[' constant_expression ']' string_literal '(' constant_expression ')'
    981                 { $$ = new ExpressionNode( build_asmexpr( $2, $4, $6 ) ); }
     972        { $$ = new ExpressionNode( build_asmexpr( $2, $4, $6 ) ); }
    982973        ;
    983974
     
    14781469aggregate_name:
    14791470        aggregate_key '{' field_declaration_list '}'
    1480                 { $$ = DeclarationNode::newAggregate( $1, nullptr, nullptr, $3, true ); }
     1471                { $$ = DeclarationNode::newAggregate( $1, 0, 0, $3, true ); }
    14811472        | aggregate_key no_attr_identifier_or_type_name
    14821473                {
    14831474                        typedefTable.makeTypedef( *$2 );
    1484                         $$ = DeclarationNode::newAggregate( $1, $2, nullptr, nullptr, false );
     1475                        $$ = DeclarationNode::newAggregate( $1, $2, 0, 0, false );
    14851476                }
    14861477        | aggregate_key no_attr_identifier_or_type_name
    14871478                { typedefTable.makeTypedef( *$2 ); }
    14881479                '{' field_declaration_list '}'
    1489                 { $$ = DeclarationNode::newAggregate( $1, $2, nullptr, $5, true ); }
     1480                { $$ = DeclarationNode::newAggregate( $1, $2, 0, $5, true ); }
    14901481        | aggregate_key '(' type_name_list ')' '{' field_declaration_list '}' // CFA
    1491                 { $$ = DeclarationNode::newAggregate( $1, nullptr, $3, $6, false ); }
     1482                { $$ = DeclarationNode::newAggregate( $1, 0, $3, $6, false ); }
    14921483        | aggregate_key typegen_name                                            // CFA, S/R conflict
    14931484                { $$ = $2; }
     
    15701561enum_name:
    15711562        enum_key '{' enumerator_list comma_opt '}'
    1572                 { $$ = DeclarationNode::newEnum( nullptr, $3 ); }
     1563                { $$ = DeclarationNode::newEnum( 0, $3 ); }
    15731564        | enum_key no_attr_identifier_or_type_name
    15741565                {
     
    20152006                {
    20162007                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
    2017                         linkage = LinkageSpec::linkageCheck( $2 );
     2008                        linkage = LinkageSpec::fromString( *$2 );
    20182009                }
    20192010          '{' external_definition_list_opt '}'                          // C++-style linkage specifier
     
    25312522abstract_function:
    25322523        '(' push parameter_type_list_opt pop ')'                        // empty parameter list OBSOLESCENT (see 3)
    2533                 { $$ = DeclarationNode::newFunction( nullptr, nullptr, $3, nullptr ); }
     2524                { $$ = DeclarationNode::newFunction( 0, 0, $3, 0 ); }
    25342525        | '(' abstract_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
    25352526                { $$ = $2->addParamList( $6 ); }
     
    26002591abstract_parameter_function:
    26012592        '(' push parameter_type_list_opt pop ')'                        // empty parameter list OBSOLESCENT (see 3)
    2602                 { $$ = DeclarationNode::newFunction( nullptr, nullptr, $3, nullptr ); }
     2593                { $$ = DeclarationNode::newFunction( 0, 0, $3, 0 ); }
    26032594        | '(' abstract_parameter_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
    26042595                { $$ = $2->addParamList( $6 ); }
     
    28042795                // empty (void) function return type.
    28052796        '[' ']' type_specifier
    2806                 { $$ = $3->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     2797                { $$ = $3->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    28072798        | '[' ']' multi_array_dimension type_specifier
    2808                 { $$ = $4->addNewArray( $3 )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     2799                { $$ = $4->addNewArray( $3 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    28092800        | multi_array_dimension type_specifier
    28102801                { $$ = $2->addNewArray( $1 ); }
    28112802        | '[' ']' new_abstract_ptr
    2812                 { $$ = $3->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     2803                { $$ = $3->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    28132804        | '[' ']' multi_array_dimension new_abstract_ptr
    2814                 { $$ = $4->addNewArray( $3 )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     2805                { $$ = $4->addNewArray( $3 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    28152806        | multi_array_dimension new_abstract_ptr
    28162807                { $$ = $2->addNewArray( $1 ); }
     
    28242815new_abstract_function:                                                                  // CFA
    28252816        '[' ']' '(' new_parameter_type_list_opt ')'
    2826                 { $$ = DeclarationNode::newFunction( nullptr, DeclarationNode::newTuple( nullptr ), $4, nullptr ); }
     2817                { $$ = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), $4, 0 ); }
    28272818        | new_abstract_tuple '(' push new_parameter_type_list_opt pop ')'
    2828                 { $$ = DeclarationNode::newFunction( nullptr, $1, $4, nullptr ); }
     2819                { $$ = DeclarationNode::newFunction( 0, $1, $4, 0 ); }
    28292820        | new_function_return '(' push new_parameter_type_list_opt pop ')'
    2830                 { $$ = DeclarationNode::newFunction( nullptr, $1, $4, nullptr ); }
     2821                { $$ = DeclarationNode::newFunction( 0, $1, $4, 0 ); }
    28312822        ;
    28322823
     
    28632854
    28642855void yyerror( const char * ) {
    2865         cout << "Error ";
     2856        std::cout << "Error ";
    28662857        if ( yyfilename ) {
    2867                 cout << "in file " << yyfilename << " ";
     2858                std::cout << "in file " << yyfilename << " ";
    28682859        } // if
    2869         cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << endl;
     2860        std::cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << std::endl;
    28702861}
    28712862
  • src/SynTree/FunctionDecl.cc

    r7756647 rac9ca967  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Oct  1 23:06:32 2016
    13 // Update Count     : 21
     12// Last Modified On : Thu Aug 18 23:50:14 2016
     13// Update Count     : 20
    1414//
    1515
     
    6060        } // if
    6161        if ( get_linkage() != LinkageSpec::Cforall ) {
    62                 os << LinkageSpec::linkageName( get_linkage() ) << " ";
     62                os << LinkageSpec::toString( get_linkage() ) << " ";
    6363        } // if
    6464        if ( get_isInline() ) {
  • src/SynTree/ObjectDecl.cc

    r7756647 rac9ca967  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Oct  1 23:05:56 2016
    13 // Update Count     : 32
     12// Last Modified On : Thu Aug 18 23:50:33 2016
     13// Update Count     : 31
    1414//
    1515
     
    4444
    4545        if ( get_linkage() != LinkageSpec::Cforall ) {
    46                 os << LinkageSpec::linkageName( get_linkage() ) << " ";
     46                os << LinkageSpec::toString( get_linkage() ) << " ";
    4747        } // if
    4848
Note: See TracChangeset for help on using the changeset viewer.