Changeset 353d168 for src


Ignore:
Timestamp:
Aug 19, 2015, 3:59:45 PM (10 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
830c21a
Parents:
18997b9 (diff), 4aa0858 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'override-autogen' into ctor

Conflicts:

src/Parser/ParseNode.h

Location:
src
Files:
43 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cc

    r18997b9 r353d168  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 15 14:47:42 2015
    13 // Update Count     : 177
     12// Last Modified On : Wed Aug 12 14:33:52 2015
     13// Update Count     : 222
    1414//
    1515
     
    5252        }
    5353
    54         CodeGenerator::CodeGenerator( std::ostream &os ) : indent(*this), cur_indent( 0 ), insideFunction( false ), output( os ) { }
     54        CodeGenerator::CodeGenerator( std::ostream &os ) : indent( *this), cur_indent( 0 ), insideFunction( false ), output( os ) { }
    5555
    5656        CodeGenerator::CodeGenerator( std::ostream &os, std::string init, int indentation, bool infunp )
    57                         : indent(*this), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
     57                        : indent( *this), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
    5858                //output << std::string( init );
    5959        }
    6060
    6161        CodeGenerator::CodeGenerator( std::ostream &os, char *init, int indentation, bool infunp )
    62                         : indent(*this), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
     62                        : indent( *this ), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
    6363                //output << std::string( init );
    6464        }
     
    9191                // acceptAll( functionDecl->get_oldDecls(), *this );
    9292                if ( functionDecl->get_statements() ) {
    93                         functionDecl->get_statements()->accept(*this );
     93                        functionDecl->get_statements()->accept( *this );
    9494                } // if
    9595        }
     
    121121                        for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
    122122                                output << indent;
    123                                 (*i)->accept(*this );
     123                                (*i)->accept( *this );
    124124                                output << ";" << endl;
    125125                        }
     
    159159                                if ( obj->get_init() ) {
    160160                                        output << " = ";
    161                                         obj->get_init()->accept(*this );
     161                                        obj->get_init()->accept( *this );
    162162                                } // if
    163163                                output << "," << endl;
     
    186186        }
    187187
     188        void CodeGenerator::printDesignators( std::list< Expression * > & designators ) {
     189                typedef std::list< Expression * > DesignatorList;
     190                if ( designators.size() == 0 ) return;
     191                for ( DesignatorList::iterator iter = designators.begin(); iter != designators.end(); ++iter ) {
     192                        if ( NameExpr * nm = dynamic_cast< NameExpr * >( *iter ) ) {
     193                                // if expression is a name, then initializing aggregate member
     194                                output << ".";
     195                                (*iter)->accept( *this );
     196                        } else {
     197                                // if not a simple name, it has to be a constant expression, i.e. an array designator
     198                                output << "[";
     199                                (*iter)->accept( *this );
     200                                output << "]";
     201                        }
     202                }
     203                output << " = ";
     204        }
     205
    188206        void CodeGenerator::visit( SingleInit *init ) {
     207                printDesignators( init->get_designators() );
    189208                init->get_value()->accept( *this );
    190209        }
    191210
    192211        void CodeGenerator::visit( ListInit *init ) {
     212                printDesignators( init->get_designators() );
    193213                output << "{ ";
    194214                genCommaList( init->begin_initializers(), init->end_initializers() );
     
    452472        void CodeGenerator::visit( TypeExpr *typeExpr ) {}
    453473
     474        void CodeGenerator::visit( AsmExpr *asmExpr ) {
     475                if ( asmExpr->get_inout() ) {
     476                        output << "[ ";
     477                        asmExpr->get_inout()->accept( *this );
     478                        output << " ] ";
     479                } // if
     480                asmExpr->get_constraint()->accept( *this );
     481                output << " ( ";
     482                asmExpr->get_operand()->accept( *this );
     483                output << " )";
     484        }
     485
    454486        //*** Statements
    455487        void CodeGenerator::visit( CompoundStmt *compoundStmt ) {
     
    459491                cur_indent += CodeGenerator::tabsize;
    460492
    461                 for ( std::list<Statement *>::iterator i = ks.begin(); i != ks.end();  i++) {
     493                for ( std::list<Statement *>::iterator i = ks.begin(); i != ks.end();  i++ ) {
    462494                        output << indent << printLabels( (*i)->get_labels() );
    463                         (*i)->accept(*this );
     495                        (*i)->accept( *this );
    464496
    465497                        output << endl;
     
    485517        }
    486518
     519        void CodeGenerator::visit( AsmStmt *asmStmt ) {
     520                output << "asm ";
     521                if ( asmStmt->get_voltile() ) output << "volatile ";
     522                if ( ! asmStmt->get_gotolabels().empty()  ) output << "goto ";
     523                output << "( ";
     524                if ( asmStmt->get_instruction() ) asmStmt->get_instruction()->accept( *this );
     525                output << " : ";
     526                genCommaList( asmStmt->get_output().begin(), asmStmt->get_output().end() );
     527                output << " : ";
     528                genCommaList( asmStmt->get_input().begin(), asmStmt->get_input().end() );
     529                output << " : ";
     530                genCommaList( asmStmt->get_clobber().begin(), asmStmt->get_clobber().end() );
     531                if ( ! asmStmt->get_gotolabels().empty() ) {
     532                        output << " : ";
     533                        for ( std::list<Label>::iterator begin = asmStmt->get_gotolabels().begin();; ) {
     534                                output << *begin++;
     535                                if ( begin == asmStmt->get_gotolabels().end() ) break;
     536                                output << ", ";
     537                        } // for
     538                } // if
     539                output << " );" ;
     540        }
     541
    487542        void CodeGenerator::visit( IfStmt *ifStmt ) {
    488                 output << "if (";
    489                 ifStmt->get_condition()->accept(*this );
    490                 output << ") ";
    491 
    492                 ifStmt->get_thenPart()->accept(*this );
     543                output << "if ( ";
     544                ifStmt->get_condition()->accept( *this );
     545                output << " ) ";
     546
     547                ifStmt->get_thenPart()->accept( *this );
    493548
    494549                if ( ifStmt->get_elsePart() != 0) {
    495550                        output << " else ";
    496                         ifStmt->get_elsePart()->accept(*this );
     551                        ifStmt->get_elsePart()->accept( *this );
    497552                } // if
    498553        }
    499554
    500555        void CodeGenerator::visit( SwitchStmt *switchStmt ) {
    501                 output << "switch (" ;
    502                 switchStmt->get_condition()->accept(*this );
    503                 output << ") ";
     556                output << "switch ( " ;
     557                switchStmt->get_condition()->accept( *this );
     558                output << " ) ";
    504559               
    505560                output << "{" << std::endl;
     
    519574                } else {
    520575                        output << "case ";
    521                         caseStmt->get_condition()->accept(*this );
     576                        caseStmt->get_condition()->accept( *this );
    522577                } // if
    523578                output << ":\n";
     
    528583                for ( std::list<Statement *>::iterator i = sts.begin(); i != sts.end();  i++) {
    529584                        output << indent << printLabels( (*i)->get_labels() )  ;
    530                         (*i)->accept(*this );
     585                        (*i)->accept( *this );
    531586                        output << endl;
    532587                }
     
    572627                else {
    573628                        output << "while (" ;
    574                         whileStmt->get_condition()->accept(*this );
     629                        whileStmt->get_condition()->accept( *this );
    575630                        output << ")";
    576631                } // if
     
    584639                if ( whileStmt->get_isDoWhile() ) {
    585640                        output << " while (" ;
    586                         whileStmt->get_condition()->accept(*this );
     641                        whileStmt->get_condition()->accept( *this );
    587642                        output << ");";
    588643                } // if
  • src/CodeGen/CodeGenerator.h

    r18997b9 r353d168  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Jun 11 13:24:23 2015
    13 // Update Count     : 23
     12// Last Modified On : Wed Aug 12 14:27:14 2015
     13// Update Count     : 27
    1414//
    1515
     
    6565                virtual void visit( TupleExpr *tupleExpr );
    6666                virtual void visit( TypeExpr *typeExpr );
     67                virtual void visit( AsmExpr * );
    6768
    6869                //*** Statements
    6970                virtual void visit( CompoundStmt * );
    7071                virtual void visit( ExprStmt * );
     72                virtual void visit( AsmStmt * );
    7173                virtual void visit( IfStmt * );
    7274                virtual void visit( SwitchStmt * );
     
    9395                std::ostream &output;
    9496
     97                void printDesignators( std::list< Expression * > & );
    9598                static std::string printLabels ( std::list < Label > & );
    9699                void handleStorageClass( Declaration *decl );
  • src/ControlStruct/LabelFixer.cc

    r18997b9 r353d168  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 08 12:36:46 2015
    13 // Update Count     : 145
     12// Last Modified On : Tue Jul 28 13:32:43 2015
     13// Update Count     : 156
    1414//
    1515
     
    2727
    2828namespace ControlStruct {
    29         LabelFixer::Entry::Entry( Statement *to, Statement *from ) : definition ( to ) {
    30                 if ( from != 0 ) {
    31                         UsageLoc loc; loc.stmt = from;
    32                         usage.push_back( loc );
    33                 }
    34         }
    35 
    36         LabelFixer::Entry::Entry( Statement *to, Expression *from ) : definition ( to ) {
    37                 if ( from != 0 ) {
    38                         UsageLoc loc; loc.expr = from;
    39                         usage.push_back( loc );
    40                 }
    41         }
    42 
    43 
    4429        bool LabelFixer::Entry::insideLoop() {
    4530                return ( dynamic_cast< ForStmt * > ( definition ) ||
    4631                        dynamic_cast< WhileStmt * > ( definition )  );
    47         }
    48 
    49         void LabelFixer::Entry::UsageLoc::accept( Visitor & visitor ) {
    50                 if ( dynamic_cast< Statement * >( stmt ) ) {
    51                         stmt->accept( visitor );
    52                 } else {
    53                         expr->accept( visitor );
    54                 }
    5532        }
    5633
     
    7754        // prune to at most one label definition for each statement
    7855        void LabelFixer::visit( Statement *stmt ) {
    79                 currentStatement = stmt;
    8056                std::list< Label > &labels = stmt->get_labels();
    8157
     
    8359                        // only remember one label for each statement
    8460                        Label current = setLabelsDef( labels, stmt );
    85                         labels.clear();
    86                         labels.push_front( current );
    8761                } // if
    8862        }
     
    130104                        }       else {
    131105                                // used previously, but undefined until now -> link with this entry
    132                                 Entry * oldEntry = labelTable[ *i ];
    133                                 e->add_uses( *oldEntry );
     106                                delete labelTable[ *i ];
    134107                                labelTable[ *i ] = e;
    135108                        } // if
     
    141114        }
    142115
    143         // Remember all uses of a label.
     116        // A label was used, add it ot the table if it isn't already there
    144117        template< typename UsageNode >
    145118        void LabelFixer::setLabelsUsg( Label orgValue, UsageNode *use ) {
    146119                assert( use != 0 );
    147120
    148                 if ( labelTable.find( orgValue ) != labelTable.end() ) {
    149                         // the label has been defined or used before
    150                         labelTable[ orgValue ]->add_use( use );
    151                 } else {
    152                         labelTable[ orgValue ] = new Entry( 0, use );
     121                // add label with an unknown origin
     122                if ( labelTable.find( orgValue ) == labelTable.end() ) {
     123                        labelTable[ orgValue ] = new Entry( 0 );
    153124                }
    154125        }
    155126
    156         class LabelGetter : public Visitor {
    157                 public:
    158                 LabelGetter( Label &label ) : label( label ) {}
    159 
    160                 virtual void visit( BranchStmt * branchStmt ) {
    161                         label = branchStmt->get_target();
    162                 }
    163 
    164                 virtual void visit( UntypedExpr * untyped ) {
    165                         NameExpr * name = dynamic_cast< NameExpr * >( untyped->get_function() );
    166                         assert( name );
    167                         assert( name->get_name() == "&&" );
    168                         NameExpr * arg = dynamic_cast< NameExpr * >( untyped->get_args().front() );
    169                         assert( arg );
    170                         label = arg->get_name();
    171                 }               
    172 
    173                 private:
    174                         Label &label;
    175         };
    176 
    177         class LabelSetter : public Visitor {
    178                 public:
    179                 LabelSetter( Label label ) : label( label ) {}
    180 
    181                 virtual void visit( BranchStmt * branchStmt ) {
    182                         branchStmt->set_target( label );
    183                 }
    184 
    185                 virtual void visit( UntypedExpr * untyped ) {
    186                         NameExpr * name = dynamic_cast< NameExpr * >( untyped->get_function() );
    187                         assert( name );
    188                         assert( name->get_name() == "&&" );
    189                         NameExpr * arg = dynamic_cast< NameExpr * >( untyped->get_args().front() );
    190                         assert( arg );
    191                         arg->set_name( label );
    192                 }
    193 
    194         private:
    195                 Label label;
    196         };
    197 
    198         // Ultimately builds a table that maps a label to its defining statement.
    199         // In the process,
     127        // Builds a table that maps a label to its defining statement.
    200128        std::map<Label, Statement * > *LabelFixer::resolveJumps() throw ( SemanticError ) {
    201                 std::map< Statement *, Entry * > def_us;
    202 
    203                 // combine the entries for all labels that target the same location
    204                 for ( std::map< Label, Entry *>::iterator i = labelTable.begin(); i != labelTable.end(); ++i ) {
    205                         Entry *e = i->second;
    206 
    207                         if ( def_us.find ( e->get_definition() ) == def_us.end() ) {
    208                                 def_us[ e->get_definition() ] = e;
    209                         } else if ( e->used() ) {
    210                                 def_us[ e->get_definition() ]->add_uses( *e );
     129                std::map< Label, Statement * > *ret = new std::map< Label, Statement * >();
     130                for ( std::map< Label, Entry * >::iterator i = labelTable.begin(); i != labelTable.end(); ++i ) {
     131                        if ( ! i->second->defined() ) {
     132                                throw SemanticError( "Use of undefined label: " + i->first );
    211133                        }
    212                 }
    213 
    214                 // create a unique label for each target location.
    215                 for ( std::map< Statement *, Entry * >::iterator i = def_us.begin(); i != def_us.end(); ++i ) {
    216                         Statement *to = (*i).first;
    217                         Entry * entry = (*i).second;
    218                         std::list< Entry::UsageLoc > &from = entry->get_uses();
    219 
    220                         // no label definition found
    221                         if ( to == 0 ) {
    222                                 Label undef;
    223                                 LabelGetter getLabel( undef );
    224                                 from.back().accept( getLabel );
    225                                 // Label undef = getLabel( from.back()->get_target() );
    226                                 throw SemanticError ( "'" + undef + "' label not defined");
    227                         } // if
    228 
    229                         // generate a new label, and attach it to its defining statement as the only label on that statement
    230                         Label finalLabel = generator->newLabel( to->get_labels().back() );
    231                         entry->set_label( finalLabel );
    232 
    233                         to->get_labels().clear();
    234                         to->get_labels().push_back( finalLabel );
    235 
    236                         // redirect each of the source branch statements to the new target label
    237                         for ( std::list< Entry::UsageLoc >::iterator j = from.begin(); j != from.end(); ++j ) {
    238                                 LabelSetter setLabel( finalLabel );
    239                                 (*j).accept( setLabel );
    240                                 // setLabel( *j, finalLabel );
    241 
    242                                 // BranchStmt *jump = *j;
    243                                 // assert( jump != 0 );
    244                                 // jump->set_target( finalLabel );
    245                         } // for
    246                 } // for
    247 
    248                 // create a table where each label maps to its defining statement
    249                 std::map< Label, Statement * > *ret = new std::map< Label, Statement * >();
    250                 for ( std::map< Statement *, Entry * >::iterator i = def_us.begin(); i != def_us.end(); ++i ) {
    251                         (*ret)[ (*i).second->get_label() ] = (*i).first;
     134                        (*ret)[ i->first ] = i->second->get_definition();
    252135                }
    253136
  • src/ControlStruct/LabelFixer.h

    r18997b9 r353d168  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun 29 17:24:39 2015
    13 // Update Count     : 29
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Jul 28 13:09:02 2015
     13// Update Count     : 31
    1414//
    1515
     
    6363                class Entry {
    6464                        public:
    65                         union UsageLoc {
    66                                 Statement * stmt;
    67                                 Expression * expr;
    68 
    69                                 void accept( Visitor &visitor );
    70                         };
    71 
    7265                        Entry( Statement *to ) : definition( to ) {}
    73                         Entry( Statement *to, Statement *from );
    74                         Entry( Statement *to, Expression *from );
    75                         bool used() { return ( usage.empty() ); }
    7666                        bool defined() { return ( definition != 0 ); }
    7767                        bool insideLoop();
     
    8373                        void set_definition( Statement *def ) { definition = def; }
    8474
    85                         std::list< UsageLoc > &get_uses() { return usage; }
    86                         void add_use( Statement *use ) {
    87                                 UsageLoc loc;
    88                                 loc.stmt = use;
    89                                 usage.push_back( loc );
    90                         }
    91                         void add_use( Expression *use ) {
    92                                 UsageLoc loc;
    93                                 loc.expr = use;
    94                                 usage.push_back( loc );                                 
    95                         }
    96 
    97                         void add_uses ( Entry &other ) { usage.insert( usage.end(), other.usage.begin(), other.usage.end() ); }
    9875                  private:
    9976                        Label label; 
    10077                        Statement *definition;
    101                         std::list<UsageLoc> usage;
    10278                };
    10379                 
    10480                std::map < Label, Entry *> labelTable;
    10581                LabelGenerator *generator;
    106                 Statement * currentStatement;
    10782        };
    10883} // namespace ControlStruct
  • src/GenPoly/Box.cc

    r18997b9 r353d168  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jun 24 16:19:07 2015
    13 // Update Count     : 10
     12// Last Modified On : Tue Aug 11 16:22:35 2015
     13// Update Count     : 89
    1414//
    1515
     
    7777                        Expression *handleIntrinsics( ApplicationExpr *appExpr );
    7878                        ObjectDecl *makeTemporary( Type *type );
    79  
     79
     80                        typedef std::map< std::string, FunctionDecl *> AdapterMap;
    8081                        std::map< std::string, DeclarationWithType *> assignOps;
    81                         typedef std::map< std::string, FunctionDecl *> AdapterMap;
    8282                        std::stack< AdapterMap > adapters;
    8383                        DeclarationWithType *retval;
     
    168168                        TyVarMap dummyTyVars;
    169169                        return isPolyRet( function, name, dummyTyVars );
     170                }
     171
     172                bool isPolyRet( FunctionType *function, const TyVarMap &otherTyVars ) {
     173                        std::string dummyString;
     174                        return isPolyRet( function, dummyString, otherTyVars );
    170175                }
    171176
     
    526531                }
    527532
    528                 void Pass1::passAdapters( ApplicationExpr *appExpr, FunctionType *functionType, const TyVarMap &exprTyVars ) {
     533                void Pass1::passAdapters( ApplicationExpr * appExpr, FunctionType * functionType, const TyVarMap & exprTyVars ) {
     534                        // collect a list of function types passed as parameters or implicit parameters (assertions)
    529535                        std::list< DeclarationWithType *> &paramList = functionType->get_parameters();
    530536                        std::list< FunctionType *> functions;
     
    537543                                findFunction( (*arg)->get_type(), functions, exprTyVars, needsAdapter );
    538544                        } // for
     545
     546                        // parameter function types for which an appropriate adapter has been generated.
     547                        // we cannot use the types after applying substitutions, since two different
     548                        // parameter types may be unified to the same type
    539549                        std::set< std::string > adaptersDone;
     550
    540551                        for ( std::list< FunctionType *>::iterator funType = functions.begin(); funType != functions.end(); ++funType ) {
     552                                FunctionType *originalFunction = (*funType)->clone();
    541553                                FunctionType *realFunction = (*funType)->clone();
    542                                 assert( env );
    543                                 env->apply( realFunction );
    544 
    545554                                std::string mangleName = SymTab::Mangler::mangle( realFunction );
     555
     556                                // only attempt to create an adapter or pass one as a parameter if we haven't
     557                                // already done so for this pre-substitution parameter function type.
    546558                                if ( adaptersDone.find( mangleName ) == adaptersDone.end() ) {
    547                                         AdapterMap & adapters = Pass1::adapters.top();
    548                                         AdapterMap::iterator adapter = adapters.find( mangleName );
     559                                        std::string mangleName = SymTab::Mangler::mangle( realFunction );
     560                                        adaptersDone.insert( adaptersDone.begin(), mangleName );
     561                                       
     562                                        // apply substitution to type variables to figure out what the
     563                                        // adapter's type should look like
     564                                        assert( env );
     565                                        env->apply( realFunction );
     566                                        mangleName = SymTab::Mangler::mangle( realFunction );
    549567
    550568                                        if ( needsAdapter( realFunction, exprTyVars, true ) ) {
     
    553571                                                // create a new adapter.
    554572                                                appExpr->get_args().push_front( new NameExpr( makeAdapterName ( mangleName ) ) );
    555                                                 continue;
    556                                         } else if ( adapter == adapters.end() ) {
    557                                                 FunctionDecl *newAdapter = makeAdapter( *funType, realFunction, mangleName, exprTyVars );
    558                                                 adapter = adapters.insert( adapters.begin(), std::pair< std::string, FunctionDecl *>( mangleName, newAdapter ) );
    559                                                 stmtsToAdd.push_back( new DeclStmt( noLabels, newAdapter ) );
     573                                        } else {
     574                                                if ( isPolyRet( originalFunction, exprTyVars ) ) {
     575                                                        // if the return type involved polymorphic types, then
     576                                                        // the adapter will need to take those polymorphic types
     577                                                        // as pointers. Therefore, there can be two different
     578                                                        // functions with the same mangled name, so we need two adapter map
     579                                                        // stacks and also we need the mangled names to be different.
     580                                                        mangleName += "polyret_";
     581                                                }
     582
     583                                                AdapterMap & adapters = Pass1::adapters.top();
     584                                                AdapterMap::iterator adapter = adapters.find( mangleName );
     585                                                if ( adapter == adapters.end() ) {
     586                                                        // adapter has not been created yet in the current scope, so define it
     587                                                        FunctionDecl *newAdapter = makeAdapter( *funType, realFunction, mangleName, exprTyVars );
     588                                                        adapter = adapters.insert( adapters.begin(), std::pair< std::string, FunctionDecl *>( mangleName, newAdapter ) );
     589                                                        stmtsToAdd.push_back( new DeclStmt( noLabels, newAdapter ) );
     590                                                } // if
     591                                                assert( adapter != adapters.end() );
     592
     593                                                // add the appropriate adapter as a parameter
     594                                                appExpr->get_args().push_front( new VariableExpr( adapter->second ) );
    560595                                        } // if
    561                                         assert( adapter != adapters.end() );
    562                                         appExpr->get_args().push_front( new VariableExpr( adapter->second ) );
    563                                         // appExpr->get_args().push_front( new NameExpr( makeAdapterName ( mangleName ) ) );
    564                                         adaptersDone.insert( adaptersDone.begin(), mangleName );
    565596                                } // if
    566597                        } // for
     
    880911
    881912                void Pass1::doBeginScope() {
     913                        // actually, maybe this could (should?) push
     914                        // a copy of the current map
    882915                        adapters.push(AdapterMap());
    883916                }
     
    10511084                        if ( ObjectDecl *objectDecl = dynamic_cast< ObjectDecl *>( declStmt->get_decl() ) ) {
    10521085                                if ( isPolyVal( objectDecl->get_type(), scopeTyVars ) ) {
     1086                                        // change initialization of a polymorphic value object
     1087                                        // to allocate storage with alloca
    10531088                                        TypeInstType *typeInst = dynamic_cast< TypeInstType *>( objectDecl->get_type() );
    10541089                                        assert( typeInst );
    10551090                                        UntypedExpr *alloc = new UntypedExpr( new NameExpr( "__builtin_alloca" ) );
    10561091                                        alloc->get_args().push_back( new NameExpr( typeInst->get_name() ) );
    1057                                         UntypedExpr *assign = new UntypedExpr( new NameExpr( "?=?" ) );
    1058                                         assign->get_args().push_back( new VariableExpr( objectDecl ) );
    1059                                         assign->get_args().push_back( alloc );
    1060                                         stmtsToAddAfter.push_back( new ExprStmt( noLabels, assign ) );
     1092
     1093                                        delete objectDecl->get_init();
     1094
     1095                                        std::list<Expression*> designators;
     1096                                        objectDecl->set_init( new SingleInit( alloc, designators ) );
    10611097                                }
    10621098                        }
  • src/GenPoly/PolyMutator.cc

    r18997b9 r353d168  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 15 14:50:58 2015
    13 // Update Count     : 3
     12// Last Modified On : Fri Aug 14 15:28:50 2015
     13// Update Count     : 11
    1414//
    1515
     
    2020#include "SynTree/Statement.h"
    2121#include "SynTree/Mutator.h"
    22 
     22#include "SynTree/Initializer.h"
    2323
    2424namespace GenPoly {
     
    146146        }
    147147 
     148 
     149        Initializer *PolyMutator::mutate( SingleInit *singleInit ) {
     150                singleInit->set_value( mutateExpression( singleInit->get_value() ) );
     151                return singleInit;
     152        }
     153
     154
    148155        /* static class method */
    149156        void PolyMutator::makeTyVarMap( Type *type, TyVarMap &tyVarMap ) {
  • src/GenPoly/PolyMutator.h

    r18997b9 r353d168  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 07:46:45 2015
    13 // Update Count     : 1
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Fri Aug 14 15:27:38 2015
     13// Update Count     : 4
    1414//
    1515
     
    4545 
    4646                virtual Expression* mutate(UntypedExpr *untypedExpr);
    47  
     47
     48                virtual Initializer* mutate(SingleInit *SingleInit);
     49
    4850                // template method
    4951                virtual void doBeginScope() {}
  • src/Parser/ExpressionNode.cc

    r18997b9 r353d168  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jun 24 16:20:00 2015
    13 // Update Count     : 158
     12// Last Modified On : Wed Aug 12 13:51:11 2015
     13// Update Count     : 254
    1414//
    1515
     
    3232ExpressionNode::ExpressionNode() : ParseNode(), argName( 0 ) {}
    3333
    34 ExpressionNode::ExpressionNode( const string *name_ ) : ParseNode( name_ ), argName( 0 ) {}
     34ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name ), argName( 0 ) {}
    3535
    3636ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ) {
     
    4242}
    4343
    44 ExpressionNode * ExpressionNode::set_asArgName( const std::string *aName ) {
     44ExpressionNode * ExpressionNode::set_argName( const std::string *aName ) {
    4545        argName = new VarRefNode( aName );
    4646        return this;
    4747}
    4848
    49 ExpressionNode * ExpressionNode::set_asArgName( ExpressionNode *aDesignator ) {
     49ExpressionNode * ExpressionNode::set_argName( ExpressionNode *aDesignator ) {
    5050        argName = aDesignator;
    5151        return this;
     
    210210        assert( type == String );
    211211
    212         // "abc" "def" "ghi" => "abcdefghi", so remove new text from quotes and insert before last quote in old string.
     212        // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
    213213        value.insert( value.length() - 1, newValue->substr( 1, newValue->length() - 2 ) );
    214214       
     
    284284        os << "Variable: " << get_name();
    285285        os << endl;
     286}
     287
     288//##############################################################################
     289
     290DesignatorNode::DesignatorNode( ExpressionNode *expr, bool isArrayIndex ) : isArrayIndex( isArrayIndex ) {
     291        set_argName( expr );
     292        assert( get_argName() );
     293
     294        if ( ! isArrayIndex ) {
     295                if ( VarRefNode * var = dynamic_cast< VarRefNode * >( expr ) ) {
     296
     297                        stringstream ss( var->get_name() );
     298                        double value;
     299                        if ( ss >> value ) {
     300                                // this is a floating point constant. It MUST be
     301                                // ".0" or ".1", otherwise the program is invalid
     302                                if ( ! (var->get_name() == ".0" || var->get_name() == ".1") ) {
     303                                        throw SemanticError( "invalid designator name: " + var->get_name() );
     304                                } // if
     305                                var->set_name( var->get_name().substr(1) );
     306                        } // if
     307                } // if
     308        } // if
     309}
     310
     311DesignatorNode::DesignatorNode( const DesignatorNode &other ) : ExpressionNode( other ), isArrayIndex( other.isArrayIndex ) {
     312}
     313
     314class DesignatorFixer : public Mutator {
     315public:
     316        virtual Expression* mutate( NameExpr *nameExpr ) {
     317                if ( nameExpr->get_name() == "0" || nameExpr->get_name() == "1" ) {
     318                        Constant val( new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nameExpr->get_name() );
     319                        delete nameExpr;
     320                        return new ConstantExpr( val );
     321                }
     322                return nameExpr;
     323        }
     324};
     325
     326Expression *DesignatorNode::build() const {
     327        Expression * ret = get_argName()->build();
     328
     329        if ( isArrayIndex ) {
     330                // need to traverse entire structure and change any instances of 0 or 1 to
     331                // ConstantExpr
     332                DesignatorFixer fixer;
     333                ret = ret->acceptMutator( fixer );
     334        } // if
     335
     336        return ret;
     337}
     338
     339void DesignatorNode::printOneLine( std::ostream &os, int indent ) const {
     340        if ( get_argName() ) {
     341                if ( isArrayIndex ) {
     342                        os << "[";
     343                        get_argName()->printOneLine( os, indent );
     344                        os << "]";
     345                } else {
     346                        os << ".";
     347                        get_argName()->printOneLine( os, indent );
     348                }
     349        } // if
     350}
     351
     352void DesignatorNode::print( std::ostream &os, int indent ) const {
     353        if ( get_argName() ) {
     354                if ( isArrayIndex ) {
     355                        os << "[";
     356                        get_argName()->print( os, indent );
     357                        os << "]";
     358                } else {
     359                        os << ".";
     360                        get_argName()->print( os, indent );
     361                }
     362        } // if
    286363}
    287364
     
    330407//##############################################################################
    331408
    332 CompositeExprNode::CompositeExprNode( void ) : ExpressionNode(), function( 0 ), arguments( 0 ) {
     409CompositeExprNode::CompositeExprNode() : ExpressionNode(), function( 0 ), arguments( 0 ) {
    333410}
    334411
     
    541618                {
    542619                        assert( args.size() == 3);
    543                         std::list< Expression* >::const_iterator i = args.begin();
     620                        std::list< Expression * >::const_iterator i = args.begin();
    544621                        Expression *arg1 = notZeroExpr( *i++ );
    545622                        Expression *arg2 = *i++;
     
    552629                {
    553630                        assert( args.size() == 2);
    554                         std::list< Expression* >::const_iterator i = args.begin();
     631                        std::list< Expression * >::const_iterator i = args.begin();
    555632                        Expression *ret = *i++;
    556633                        while ( i != args.end() ) {
     
    617694                set_args( arg );
    618695}
     696
     697//##############################################################################
     698
     699Expression *AsmExprNode::build() const {
     700        return new AsmExpr( maybeBuild< Expression >( inout ), (ConstantExpr *)constraint->build(), operand->build() );
     701}
     702
     703void AsmExprNode::print( std::ostream &os, int indent ) const {
     704        os << string( indent, ' ' ) << "Assembler Expression:" << endl;
     705        if ( inout ) {
     706                os << string( indent, ' ' ) << "inout: " << std::endl;
     707                inout->print( os, indent + 2 );
     708        } // if
     709        if ( constraint ) {
     710                os << string( indent, ' ' ) << "constraint: " << std::endl;
     711                constraint->print( os, indent + 2 );
     712        } // if
     713        if ( operand ) {
     714                os << string( indent, ' ' ) << "operand: " << std::endl;
     715                operand->print( os, indent + 2 );
     716        } // if
     717}
     718
     719void AsmExprNode::printOneLine( std::ostream &os, int indent ) const {
     720        printDesignation( os );
     721        os << "( ";
     722        if ( inout ) inout->printOneLine( os, indent + 2 );
     723        os << ", ";
     724        if ( constraint ) constraint->printOneLine( os, indent + 2 );
     725        os << ", ";
     726        if ( operand ) operand->printOneLine( os, indent + 2 );
     727        os << ") ";
     728}
     729
     730//##############################################################################
     731
     732void LabelNode::print( std::ostream &os, int indent ) const {}
     733
     734void LabelNode::printOneLine( std::ostream &os, int indent ) const {}
    619735
    620736//##############################################################################
  • src/Parser/LinkageSpec.cc

    r18997b9 r353d168  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:22:09 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 13:23:21 2015
    13 // Update Count     : 2
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 19 15:53:05 2015
     13// Update Count     : 5
    1414//
    1515
     
    7979}
    8080
     81
     82bool LinkageSpec::isOverridable( Type t ) {
     83        switch ( t ) {
     84          case Intrinsic:
     85          case AutoGen:
     86                return true;
     87          case Cforall:
     88          case C:
     89          case Compiler:
     90                return false;
     91        }
     92        assert( false );
     93        return false;
     94}
     95
    8196bool LinkageSpec::isBuiltin( Type t ) {
    8297        switch ( t ) {
  • src/Parser/LinkageSpec.h

    r18997b9 r353d168  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:24:28 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 13:26:14 2015
    13 // Update Count     : 3
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Aug 18 14:11:55 2015
     13// Update Count     : 5
    1414//
    1515
     
    3434        static bool isGeneratable( Type );
    3535        static bool isOverloadable( Type );
     36        static bool isOverridable( Type );
    3637        static bool isBuiltin( Type );
    3738};
  • src/Parser/ParseNode.cc

    r18997b9 r353d168  
    1010// Created On       : Sat May 16 13:26:29 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 08 14:46:45 2015
    13 // Update Count     : 25
     12// Last Modified On : Wed Aug 12 13:26:00 2015
     13// Update Count     : 36
    1414//
    1515
     
    2020int ParseNode::indent_by = 4;
    2121
    22 ParseNode::ParseNode() : name( 0 ), next( 0 ) {};
    23 ParseNode::ParseNode( const string *name_ ) : name( name_ ), next( 0 ) {}
     22ParseNode::ParseNode() : next( 0 ) {};
     23ParseNode::ParseNode( const string *name ) : name( *name ), next( 0 ) { delete name; }
     24ParseNode::ParseNode( const string &name ) : name( name ), next( 0 ) { }
    2425
    2526ParseNode::~ParseNode() {
  • src/Parser/ParseNode.h

    r18997b9 r353d168  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Mon Jul 20 14:28:54 2015
    13 // Update Count     : 93
     12// Last Modified On : Wed Aug 19 15:59:27 2015
     13// Update Count     : 174
    1414//
    1515
     
    4040        ParseNode();
    4141        ParseNode( const std::string * );
     42        ParseNode( const std::string & );  // for copy constructing subclasses
    4243        virtual ~ParseNode();
    4344
     
    4950        virtual ParseNode *clone() const { return 0; };
    5051
    51         const std::string &get_name() const { return *name; }
     52        const std::string &get_name() const { return name; }
     53        void set_name( const std::string &newValue ) { name = newValue; }
     54
    5255        virtual void print( std::ostream &, int indent = 0 ) const;
    5356        virtual void printList( std::ostream &, int indent = 0 ) const;
     
    5558        ParseNode &operator,( ParseNode &);
    5659  protected:
    57         const std::string *name;
     60        std::string name;
    5861        ParseNode *next;
    5962        static int indent_by;
     
    6770        ExpressionNode( const std::string * );
    6871        ExpressionNode( const ExpressionNode &other );
    69         virtual ~ExpressionNode() {} // cannot delete asArgName because it might be referenced elsewhere
     72        virtual ~ExpressionNode() { delete argName; } // cannot delete argName because it might be referenced elsewhere
    7073
    7174        virtual ExpressionNode *clone() const = 0;
     
    7477
    7578        ExpressionNode *get_argName() const { return argName; }
    76         ExpressionNode *set_asArgName( const std::string *aName );
    77         ExpressionNode *set_asArgName( ExpressionNode *aDesignator );
     79        ExpressionNode *set_argName( const std::string *aName );
     80        ExpressionNode *set_argName( ExpressionNode *aDesignator );
    7881
    7982        virtual void print( std::ostream &, int indent = 0) const = 0;
     
    105108
    106109        ConstantNode( Type, std::string * );
     110        ~ConstantNode() { delete &value; }
    107111
    108112        virtual ConstantNode *clone() const { return new ConstantNode( *this ); }
     
    135139  private:
    136140        bool isLabel;
     141};
     142
     143class DesignatorNode : public ExpressionNode {
     144  public:
     145        DesignatorNode( ExpressionNode *expr, bool isArrayIndex = false );
     146        DesignatorNode( const DesignatorNode &other );
     147
     148        virtual Expression *build() const ;
     149        virtual DesignatorNode *clone() const { return new DesignatorNode( *this ); }
     150
     151        virtual void print( std::ostream &, int indent = 0 ) const;
     152        virtual void printOneLine( std::ostream &, int indent = 0 ) const;
     153  private:
     154        bool isArrayIndex;
    137155};
    138156
     
    184202};
    185203
    186 
    187204class CompositeExprNode : public ExpressionNode {
    188205  public:
     
    212229};
    213230
     231class AsmExprNode : public ExpressionNode {
     232  public:
     233        AsmExprNode();
     234        AsmExprNode( ExpressionNode *inout, ConstantNode *constraint, ExpressionNode *operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
     235        virtual ~AsmExprNode() { delete inout; delete constraint; delete operand; }
     236
     237        virtual AsmExprNode *clone() const { return new AsmExprNode( *this ); }
     238        virtual Expression *build() const;
     239
     240        virtual void print( std::ostream &, int indent = 0) const;
     241        virtual void printOneLine( std::ostream &, int indent = 0) const;
     242
     243        ExpressionNode *get_inout() const { return inout; };
     244        void set_inout( ExpressionNode *newValue ) { inout = newValue; }
     245
     246        ConstantNode *get_constraint() const { return constraint; };
     247        void set_constraint( ConstantNode *newValue ) { constraint = newValue; }
     248
     249        ExpressionNode *get_operand() const { return operand; };
     250        void set_operand( ExpressionNode *newValue ) { operand = newValue; }
     251  private:
     252        ExpressionNode *inout;
     253        ConstantNode *constraint;
     254        ExpressionNode *operand;
     255};
     256
     257class LabelNode : public ExpressionNode {
     258  public:
     259        virtual Expression *build() const { return NULL; }
     260        virtual LabelNode *clone() const { return new LabelNode( *this ); }
     261
     262        virtual void print( std::ostream &, int indent = 0) const;
     263        virtual void printOneLine( std::ostream &, int indent = 0) const;
     264
     265        const std::list< std::string > &get_labels() const { return labels; };
     266        void append_label( std::string *label ) { labels.push_back( *label ); delete label; }
     267  private:
     268        std::list< std::string > labels;
     269};
     270
    214271class CommaExprNode : public CompositeExprNode {
    215272  public:
     
    280337        static const char *typeClassName[];
    281338
    282         static DeclarationNode *newFunction( std::string *name, DeclarationNode *ret, DeclarationNode *param,
    283                                                                                  StatementNode *body, bool newStyle = false );
     339        static DeclarationNode *newFunction( std::string *name, DeclarationNode *ret, DeclarationNode *param, StatementNode *body, bool newStyle = false );
    284340        static DeclarationNode *newQualifier( Qualifier );
    285341        static DeclarationNode *newStorageClass( StorageClass );
     
    372428
    373429        StatementNode();
    374         StatementNode( const std::string * );
    375         StatementNode( Type, ExpressionNode *e = 0, StatementNode *s = 0 );
    376         StatementNode( Type, std::string *target );
     430        StatementNode( const std::string *name );
     431        StatementNode( Type t, ExpressionNode *control = 0, StatementNode *block = 0 );
     432        StatementNode( Type t, std::string *target );
    377433        StatementNode( DeclarationNode *decl );
    378 
    379434
    380435        ~StatementNode();
     
    403458
    404459        void print( std::ostream &, int indent = 0) const;
    405 
    406460        virtual StatementNode *clone() const;
    407 
    408461        virtual Statement *build() const;
    409462  private:
     
    415468        std::string *target;                            // target label for jump statements
    416469        DeclarationNode *decl;
    417 
    418470        bool isCatchRest;
    419471}; // StatementNode
     
    429481
    430482        void print( std::ostream &, int indent = 0 ) const;
    431 
    432483        virtual Statement *build() const;
    433484  private:
     
    435486};
    436487
     488class AsmStmtNode : public StatementNode {
     489  public:
     490        AsmStmtNode( Type, bool voltile, ConstantNode *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ConstantNode *clobber = 0, LabelNode *gotolabels = 0 );
     491        ~AsmStmtNode();
     492
     493        void print( std::ostream &, int indent = 0 ) const;
     494        Statement *build() const;
     495  private:
     496        bool voltile;
     497        ConstantNode *instruction;
     498        ExpressionNode *output, *input;
     499        ConstantNode *clobber;
     500        std::list<std::string> gotolabels;
     501};
     502
    437503class NullStmtNode : public CompoundStmtNode {
    438504  public:
    439505        Statement *build() const;
    440         void print( std::ostream &, int indent = 0) const;
     506        void print( std::ostream &, int indent = 0 ) const;
    441507};
    442508
     
    464530        InitializerNode *kids;
    465531};
    466 
    467 
    468532
    469533template< typename SynTreeType, typename NodeType >
  • src/Parser/StatementNode.cc

    r18997b9 r353d168  
    1010// Created On       : Sat May 16 14:59:41 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 16 16:20:24 2015
    13 // Update Count     : 30
     12// Last Modified On : Thu Jul 30 14:39:39 2015
     13// Update Count     : 130
    1414//
    1515
     
    3636StatementNode::StatementNode() : ParseNode(), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
    3737
    38 StatementNode::StatementNode( const string *name_ ) : ParseNode( name_ ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
     38StatementNode::StatementNode( const string *name ) : ParseNode( name ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
    3939
    4040StatementNode::StatementNode( DeclarationNode *decl ) : type( Decl ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), isCatchRest ( false ) {
     
    6060}
    6161
    62 StatementNode::StatementNode( Type t, ExpressionNode *ctrl_label, StatementNode *block_ ) :
    63                 type( t ), control( ctrl_label ), block( block_), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {
    64         if ( t == Default )
    65                 control = 0;
     62StatementNode::StatementNode( Type t, ExpressionNode *ctrl_label, StatementNode *block ) : type( t ), control( ctrl_label ), block( block ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {
     63        this->control = ( t == Default ) ? 0 : control;
    6664}
    6765
    68 StatementNode::StatementNode( Type t, string *_target ) :
    69                 type( t ), control( 0 ), block( 0 ), labels( 0 ), target(_target ), decl( 0 ), isCatchRest ( false ) {}
     66StatementNode::StatementNode( Type t, string *target ) : type( t ), control( 0 ), block( 0 ), labels( 0 ), target( target ), decl( 0 ), isCatchRest ( false ) {}
    7067
    7168StatementNode::~StatementNode() {
     
    113110        if ( control && e )
    114111                control->add_to_list( e ); // xxx - check this
    115 
    116112        return this;
    117113}
     
    142138
    143139void StatementNode::print( std::ostream &os, int indent ) const {
    144         if ( ! labels.empty()) {
     140        if ( ! labels.empty() ) {
    145141                std::list<std::string>::const_iterator i;
    146142
     
    168164                        if ( decl ) {
    169165                                os << string( indent + ParseNode::indent_by, ' ' ) << "Declaration: " << endl;
    170                                 decl->print( os, indent + 2*ParseNode::indent_by );
     166                                decl->print( os, indent + 2 * ParseNode::indent_by );
    171167                        } else if ( isCatchRest ) {
    172168                                os << string( indent + ParseNode::indent_by, ' ' ) << "Catches the rest " << endl;
     
    176172                } // if
    177173                if ( control ) {
    178                         os << string( indent + ParseNode::indent_by, ' ' ) << "Expression: " << endl;
    179                         control->printList( os, indent + 2*ParseNode::indent_by );
     174                        os << string( indent + ParseNode::indent_by, ' ' ) << "Control: " << endl;
     175                        control->printList( os, indent + 2 * ParseNode::indent_by );
    180176                } // if
    181177                if ( block ) {
    182178                        os << string( indent + ParseNode::indent_by, ' ' ) << "Branches of execution: " << endl;
    183                         block->printList( os, indent + 2*ParseNode::indent_by ); 
     179                        block->printList( os, indent + 2 * ParseNode::indent_by ); 
    184180                } // if
    185181                if ( target ) {
     
    311307                        return new FinallyStmt( labs, block );
    312308                }
     309          case Asm:
     310                assert( false );
    313311          default:
    314312                // shouldn't be here
     
    316314        } // switch
    317315}
     316
    318317
    319318CompoundStmtNode::CompoundStmtNode() : first( 0 ), last( 0 ) {}
     
    360359}
    361360
     361
     362AsmStmtNode::AsmStmtNode( Type t, bool voltile, ConstantNode *instruction, ExpressionNode *output, ExpressionNode *input, ConstantNode *clobber, LabelNode *gotolabels ) :
     363        StatementNode( t ), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ) {
     364        if ( gotolabels ) {
     365                this->gotolabels = gotolabels->get_labels();
     366                delete gotolabels;
     367        } // if
     368}
     369
     370AsmStmtNode::~AsmStmtNode() {
     371        delete instruction; delete output; delete input; delete clobber;
     372}
     373
     374void AsmStmtNode::print( std::ostream &os, int indent ) const {
     375        StatementNode::print( os, indent );                                     // print statement labels
     376        os << string( indent + ParseNode::indent_by, ' ' ) << "volatile:" << voltile << endl;
     377        if ( instruction ) {
     378                os << string( indent + ParseNode::indent_by, ' ' ) << "Instruction:" << endl;
     379                instruction->printList( os, indent + 2 * ParseNode::indent_by );
     380        } // if
     381        if ( output ) {
     382                os << string( indent + ParseNode::indent_by, ' ' ) << "Output:" << endl;
     383                output->printList( os, indent + 2 * ParseNode::indent_by );
     384        } // if
     385        if ( input ) {
     386                os << string( indent + ParseNode::indent_by, ' ' ) << "Input:" << endl;
     387                input->printList( os, indent + 2 * ParseNode::indent_by );
     388        } // if
     389        if ( clobber ) {
     390                os << string( indent + ParseNode::indent_by, ' ' ) << "Clobber:" << endl;
     391                clobber->printList( os, indent + 2 * ParseNode::indent_by );
     392        } // if
     393        if ( ! gotolabels.empty() ) {
     394                os << string( indent + ParseNode::indent_by, ' ' ) << "Goto Labels:" << endl;
     395                os << string( indent + 2 * ParseNode::indent_by, ' ' );
     396                for ( std::list<std::string>::const_iterator i = gotolabels.begin();; ) {
     397                        os << *i;
     398                        i++;
     399                  if ( i == gotolabels.end() ) break;
     400                        os << ", ";
     401                }
     402                os << endl;
     403        } // if
     404}
     405
     406Statement *AsmStmtNode::build() const {
     407        std::list<Label> labs;
     408
     409        if ( ! get_labels().empty() ) {
     410                std::back_insert_iterator< std::list<Label> > lab_it( labs );
     411                copy( get_labels().begin(), get_labels().end(), lab_it );
     412        } // if
     413
     414        std::list< Expression * > out, in;
     415        std::list< ConstantExpr * > clob;
     416        buildList( output, out );
     417        buildList( input, in );
     418        buildList( clobber, clob );
     419        std::list< Label > gotolabs = gotolabels;
     420        return new AsmStmt( labs, voltile, (ConstantExpr *)maybeBuild< Expression >( instruction ), out, in, clob, gotolabs );
     421}
     422
     423
    362424void NullStmtNode::print( ostream &os, int indent ) const {
    363425        os << string( indent, ' ' ) << "Null Statement:" << endl;
  • src/Parser/parser.cc

    r18997b9 r353d168  
    335335        StatementNode *sn;
    336336        ConstantNode *constant;
     337        LabelNode *label;
    337338        InitializerNode *in;
     339        bool flag;
    338340
    339341
    340342
    341343/* Line 293 of yacc.c  */
    342 #line 343 "Parser/parser.cc"
     344#line 345 "Parser/parser.cc"
    343345} YYSTYPE;
    344346# define YYSTYPE_IS_TRIVIAL 1
     
    352354
    353355/* Line 343 of yacc.c  */
    354 #line 355 "Parser/parser.cc"
     356#line 357 "Parser/parser.cc"
    355357
    356358#ifdef short
     
    571573#define YYFINAL  246
    572574/* YYLAST -- Last index in YYTABLE.  */
    573 #define YYLAST   11363
     575#define YYLAST   11329
    574576
    575577/* YYNTOKENS -- Number of terminals.  */
    576578#define YYNTOKENS  125
    577579/* YYNNTS -- Number of nonterminals.  */
    578 #define YYNNTS  236
     580#define YYNNTS  238
    579581/* YYNRULES -- Number of rules.  */
    580 #define YYNRULES  732
     582#define YYNRULES  740
    581583/* YYNRULES -- Number of states.  */
    582 #define YYNSTATES  1505
     584#define YYNSTATES  1530
    583585
    584586/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     
    637639       0,     0,     3,     4,     5,     7,     9,    11,    13,    15,
    638640      17,    19,    21,    23,    25,    27,    29,    32,    34,    36,
    639       38,    40,    44,    48,    50,    57,    62,    66,    74,    78,
    640       86,    89,    92,   100,   102,   106,   107,   109,   113,   121,
    641      131,   133,   137,   139,   143,   151,   155,   163,   165,   168,
     641      40,    44,    46,    53,    58,    62,    70,    74,    82,    85,
     642      88,    96,    98,   102,   103,   105,   109,   117,   127,   129,
     643     133,   135,   139,   147,   151,   159,   161,   163,   165,   168,
    642644     171,   174,   177,   180,   183,   186,   191,   193,   198,   203,
    643645     206,   211,   214,   216,   218,   220,   222,   224,   229,   234,
     
    656658     650,   654,   657,   661,   665,   670,   672,   678,   685,   695,
    657659     706,   709,   711,   714,   717,   720,   722,   729,   738,   749,
    658      762,   763,   765,   767,   771,   776,   778,   782,   784,   786,
    659      788,   792,   794,   796,   798,   802,   803,   805,   809,   814,
    660      816,   820,   822,   824,   828,   832,   836,   840,   844,   847,
    661      851,   858,   862,   866,   871,   873,   876,   879,   883,   889,
    662      898,   906,   914,   920,   930,   933,   936,   942,   946,   952,
    663      957,   961,   966,   971,   979,   983,   987,   991,   995,  1000,
    664     1007,  1009,  1011,  1013,  1015,  1017,  1019,  1021,  1023,  1024,
    665     1026,  1028,  1031,  1033,  1035,  1037,  1039,  1041,  1043,  1045,
    666     1046,  1052,  1054,  1057,  1061,  1063,  1066,  1068,  1070,  1072,
    667     1074,  1076,  1078,  1080,  1082,  1084,  1086,  1088,  1090,  1092,
    668     1094,  1096,  1098,  1100,  1102,  1104,  1106,  1108,  1110,  1113,
    669     1116,  1120,  1124,  1126,  1130,  1132,  1135,  1138,  1141,  1146,
    670     1151,  1156,  1161,  1163,  1166,  1169,  1173,  1175,  1178,  1181,
    671     1183,  1186,  1189,  1193,  1195,  1198,  1201,  1203,  1205,  1210,
    672     1213,  1219,  1227,  1230,  1233,  1236,  1238,  1241,  1244,  1248,
    673     1251,  1255,  1257,  1260,  1264,  1267,  1270,  1275,  1276,  1278,
    674     1281,  1284,  1286,  1287,  1289,  1292,  1295,  1301,  1308,  1311,
    675     1314,  1319,  1320,  1323,  1324,  1326,  1328,  1330,  1336,  1342,
    676     1348,  1350,  1356,  1362,  1372,  1374,  1380,  1381,  1383,  1385,
    677     1391,  1393,  1395,  1401,  1407,  1409,  1413,  1417,  1422,  1424,
    678     1426,  1428,  1430,  1433,  1435,  1439,  1443,  1445,  1448,  1450,
    679     1454,  1456,  1458,  1460,  1462,  1464,  1466,  1468,  1470,  1472,
    680     1474,  1476,  1479,  1481,  1483,  1485,  1488,  1489,  1492,  1494,
    681     1499,  1501,  1504,  1508,  1513,  1516,  1519,  1521,  1524,  1527,
    682     1533,  1539,  1547,  1554,  1556,  1559,  1562,  1566,  1568,  1571,
    683     1574,  1579,  1582,  1587,  1588,  1593,  1596,  1598,  1600,  1602,
    684     1603,  1606,  1612,  1618,  1632,  1634,  1636,  1640,  1644,  1647,
    685     1651,  1655,  1658,  1663,  1665,  1672,  1682,  1683,  1695,  1697,
    686     1701,  1705,  1709,  1711,  1713,  1719,  1722,  1728,  1729,  1731,
    687     1733,  1737,  1738,  1740,  1742,  1744,  1746,  1747,  1754,  1757,
    688     1759,  1762,  1767,  1770,  1774,  1778,  1782,  1787,  1793,  1799,
    689     1805,  1812,  1814,  1816,  1818,  1822,  1823,  1829,  1830,  1832,
    690     1834,  1837,  1844,  1846,  1850,  1851,  1853,  1858,  1860,  1862,
    691     1864,  1866,  1869,  1871,  1874,  1877,  1879,  1883,  1886,  1890,
    692     1894,  1897,  1902,  1907,  1911,  1920,  1924,  1927,  1929,  1932,
    693     1939,  1948,  1952,  1955,  1959,  1963,  1968,  1973,  1977,  1979,
    694     1981,  1983,  1988,  1995,  1999,  2002,  2006,  2010,  2015,  2020,
    695     2024,  2027,  2029,  2032,  2035,  2037,  2041,  2044,  2048,  2052,
    696     2055,  2060,  2065,  2069,  2076,  2085,  2089,  2092,  2094,  2097,
    697     2100,  2103,  2107,  2111,  2114,  2119,  2124,  2128,  2135,  2144,
    698     2148,  2151,  2153,  2156,  2159,  2161,  2163,  2166,  2170,  2174,
    699     2177,  2182,  2189,  2198,  2200,  2203,  2206,  2208,  2211,  2214,
    700     2218,  2222,  2224,  2229,  2234,  2238,  2244,  2253,  2257,  2260,
    701     2264,  2266,  2272,  2278,  2285,  2292,  2294,  2297,  2300,  2302,
    702     2305,  2308,  2312,  2316,  2318,  2323,  2328,  2332,  2338,  2347,
    703     2351,  2353,  2356,  2358,  2361,  2368,  2374,  2381,  2389,  2397,
    704     2399,  2402,  2405,  2407,  2410,  2413,  2417,  2421,  2423,  2428,
    705     2433,  2437,  2446,  2450,  2452,  2454,  2457,  2459,  2461,  2464,
    706     2468,  2471,  2475,  2478,  2482,  2486,  2489,  2494,  2498,  2501,
    707     2505,  2508,  2513,  2517,  2520,  2527,  2534,  2541,  2549,  2551,
    708     2554,  2556,  2558,  2560,  2563,  2567,  2570,  2574,  2577,  2581,
    709     2585,  2590,  2593,  2597,  2602,  2605,  2611,  2617,  2624,  2631,
    710     2632,  2634,  2635
     660     762,   777,   778,   780,   781,   783,   785,   789,   794,   802,
     661     803,   805,   809,   811,   815,   817,   819,   821,   825,   827,
     662     829,   831,   835,   836,   838,   842,   847,   849,   853,   855,
     663     857,   861,   865,   869,   873,   877,   880,   884,   891,   895,
     664     899,   904,   906,   909,   912,   916,   922,   931,   939,   947,
     665     953,   963,   966,   969,   975,   979,   985,   990,   994,   999,
     666    1004,  1012,  1016,  1020,  1024,  1028,  1033,  1040,  1042,  1044,
     667    1046,  1048,  1050,  1052,  1054,  1056,  1057,  1059,  1061,  1064,
     668    1066,  1068,  1070,  1072,  1074,  1076,  1078,  1079,  1085,  1087,
     669    1090,  1094,  1096,  1099,  1101,  1103,  1105,  1107,  1109,  1111,
     670    1113,  1115,  1117,  1119,  1121,  1123,  1125,  1127,  1129,  1131,
     671    1133,  1135,  1137,  1139,  1141,  1143,  1146,  1149,  1153,  1157,
     672    1159,  1163,  1165,  1168,  1171,  1174,  1179,  1184,  1189,  1194,
     673    1196,  1199,  1202,  1206,  1208,  1211,  1214,  1216,  1219,  1222,
     674    1226,  1228,  1231,  1234,  1236,  1238,  1243,  1246,  1252,  1260,
     675    1263,  1266,  1269,  1271,  1274,  1277,  1281,  1284,  1288,  1290,
     676    1293,  1297,  1300,  1303,  1308,  1309,  1311,  1314,  1317,  1319,
     677    1320,  1322,  1325,  1328,  1334,  1341,  1344,  1347,  1352,  1353,
     678    1356,  1357,  1359,  1361,  1363,  1369,  1375,  1381,  1383,  1389,
     679    1395,  1405,  1407,  1413,  1414,  1416,  1418,  1424,  1426,  1428,
     680    1434,  1440,  1442,  1446,  1450,  1455,  1457,  1459,  1461,  1463,
     681    1466,  1468,  1472,  1476,  1478,  1481,  1483,  1487,  1489,  1491,
     682    1493,  1495,  1497,  1499,  1501,  1503,  1505,  1507,  1509,  1512,
     683    1514,  1516,  1518,  1521,  1522,  1525,  1527,  1532,  1534,  1537,
     684    1541,  1546,  1549,  1552,  1554,  1557,  1559,  1562,  1568,  1574,
     685    1582,  1589,  1591,  1594,  1597,  1601,  1603,  1606,  1609,  1614,
     686    1617,  1622,  1623,  1628,  1631,  1633,  1635,  1637,  1638,  1641,
     687    1647,  1653,  1667,  1669,  1671,  1675,  1679,  1682,  1686,  1690,
     688    1693,  1698,  1700,  1707,  1717,  1718,  1730,  1732,  1736,  1740,
     689    1744,  1746,  1748,  1754,  1757,  1763,  1764,  1766,  1768,  1772,
     690    1773,  1775,  1777,  1779,  1781,  1782,  1789,  1792,  1794,  1797,
     691    1802,  1805,  1809,  1813,  1817,  1822,  1828,  1834,  1840,  1847,
     692    1849,  1851,  1853,  1857,  1858,  1864,  1865,  1867,  1869,  1872,
     693    1879,  1881,  1885,  1886,  1888,  1893,  1895,  1897,  1899,  1901,
     694    1904,  1906,  1909,  1912,  1914,  1918,  1921,  1925,  1929,  1932,
     695    1937,  1942,  1946,  1955,  1959,  1962,  1964,  1967,  1974,  1983,
     696    1987,  1990,  1994,  1998,  2003,  2008,  2012,  2014,  2016,  2018,
     697    2023,  2030,  2034,  2037,  2041,  2045,  2050,  2055,  2059,  2062,
     698    2064,  2067,  2070,  2072,  2076,  2079,  2083,  2087,  2090,  2095,
     699    2100,  2104,  2111,  2120,  2124,  2127,  2129,  2132,  2135,  2138,
     700    2142,  2146,  2149,  2154,  2159,  2163,  2170,  2179,  2183,  2186,
     701    2188,  2191,  2194,  2196,  2198,  2201,  2205,  2209,  2212,  2217,
     702    2224,  2233,  2235,  2238,  2241,  2243,  2246,  2249,  2253,  2257,
     703    2259,  2264,  2269,  2273,  2279,  2288,  2292,  2295,  2299,  2301,
     704    2307,  2313,  2320,  2327,  2329,  2332,  2335,  2337,  2340,  2343,
     705    2347,  2351,  2353,  2358,  2363,  2367,  2373,  2382,  2386,  2388,
     706    2391,  2393,  2396,  2403,  2409,  2416,  2424,  2432,  2434,  2437,
     707    2440,  2442,  2445,  2448,  2452,  2456,  2458,  2463,  2468,  2472,
     708    2481,  2485,  2487,  2489,  2492,  2494,  2496,  2499,  2503,  2506,
     709    2510,  2513,  2517,  2521,  2524,  2529,  2533,  2536,  2540,  2543,
     710    2548,  2552,  2555,  2562,  2569,  2576,  2584,  2586,  2589,  2591,
     711    2593,  2595,  2598,  2602,  2605,  2609,  2612,  2616,  2620,  2625,
     712    2628,  2632,  2637,  2640,  2646,  2652,  2659,  2666,  2667,  2669,
     713    2670
    711714};
    712715
     
    714717static const yytype_int16 yyrhs[] =
    715718{
    716      289,     0,    -1,    -1,    -1,    72,    -1,    73,    -1,    74,
     719     291,     0,    -1,    -1,    -1,    72,    -1,    73,    -1,    74,
    717720      -1,    65,    -1,    69,    -1,   132,    -1,    65,    -1,    69,
    718721      -1,    65,    -1,    76,    -1,    77,    -1,    75,    -1,   133,
    719       75,    -1,    65,    -1,   132,    -1,   128,    -1,   133,    -1,
    720      101,   160,   102,    -1,   101,   164,   102,    -1,   134,    -1,
    721      135,   103,   126,   155,   127,   104,    -1,   135,   101,   136,
    722      102,    -1,   135,   105,   131,    -1,   135,   105,   103,   126,
    723      138,   127,   104,    -1,   135,    78,   131,    -1,   135,    78,
    724      103,   126,   138,   127,   104,    -1,   135,    79,    -1,   135,
    725       80,    -1,   101,   262,   102,   106,   266,   359,   107,    -1,
    726      137,    -1,   136,   108,   137,    -1,    -1,   155,    -1,   131,
    727      109,   155,    -1,   103,   126,   155,   127,   104,   109,   155,
    728       -1,   103,   126,   155,   108,   158,   127,   104,   109,   155,
    729       -1,   139,    -1,   138,   108,   139,    -1,   131,    -1,   131,
    730      105,   139,    -1,   131,   105,   103,   126,   138,   127,   104,
    731       -1,   131,    78,   139,    -1,   131,    78,   103,   126,   138,
    732      127,   104,    -1,   135,    -1,    79,   140,    -1,    80,   140,
     722      75,    -1,    65,    -1,   132,    -1,   101,   160,   102,    -1,
     723     101,   164,   102,    -1,   134,    -1,   135,   103,   126,   155,
     724     127,   104,    -1,   135,   101,   136,   102,    -1,   135,   105,
     725     131,    -1,   135,   105,   103,   126,   138,   127,   104,    -1,
     726     135,    78,   131,    -1,   135,    78,   103,   126,   138,   127,
     727     104,    -1,   135,    79,    -1,   135,    80,    -1,   101,   264,
     728     102,   106,   268,   361,   107,    -1,   137,    -1,   136,   108,
     729     137,    -1,    -1,   155,    -1,   131,   109,   155,    -1,   103,
     730     126,   155,   127,   104,   109,   155,    -1,   103,   126,   155,
     731     108,   158,   127,   104,   109,   155,    -1,   139,    -1,   138,
     732     108,   139,    -1,   131,    -1,   131,   105,   139,    -1,   131,
     733     105,   103,   126,   138,   127,   104,    -1,   131,    78,   139,
     734      -1,   131,    78,   103,   126,   138,   127,   104,    -1,   135,
     735      -1,   128,    -1,   133,    -1,    79,   140,    -1,    80,   140,
    733736      -1,    38,   142,    -1,   141,   142,    -1,   110,   142,    -1,
    734      111,   142,    -1,    36,   140,    -1,    36,   101,   262,   102,
    735       -1,    69,    -1,    69,   101,   263,   102,    -1,    69,   101,
    736      137,   102,    -1,    59,   140,    -1,    59,   101,   262,   102,
     737     111,   142,    -1,    36,   140,    -1,    36,   101,   264,   102,
     738      -1,    69,    -1,    69,   101,   265,   102,    -1,    69,   101,
     739     137,   102,    -1,    59,   140,    -1,    59,   101,   264,   102,
    737740      -1,    87,   131,    -1,   112,    -1,   113,    -1,   114,    -1,
    738      115,    -1,   140,    -1,   101,   262,   102,   142,    -1,   101,
    739      262,   102,   157,    -1,   142,    -1,   143,   111,   142,    -1,
     741     115,    -1,   140,    -1,   101,   264,   102,   142,    -1,   101,
     742     264,   102,   157,    -1,   142,    -1,   143,   111,   142,    -1,
    740743     143,   116,   142,    -1,   143,   117,   142,    -1,   143,    -1,
    741744     144,   113,   143,    -1,   144,   114,   143,    -1,   144,    -1,
     
    749752     160,   109,   153,    -1,   152,   122,   109,   153,    -1,   152,
    750753     122,   160,   109,   157,    -1,   153,    -1,   153,    -1,   140,
    751      123,   155,    -1,   140,   159,   155,    -1,   157,   360,    -1,
     754     123,   155,    -1,   140,   159,   155,    -1,   157,   362,    -1,
    752755      -1,   155,    -1,   103,   104,    -1,   103,   126,   155,   127,
    753756     104,    -1,   103,   126,   108,   158,   127,   104,    -1,   103,
     
    758761     160,    -1,   163,    -1,   164,    -1,   168,    -1,   169,    -1,
    759762     181,    -1,   183,    -1,   184,    -1,   189,    -1,   131,   109,
    760      299,   162,    -1,   106,   107,    -1,   106,   126,   126,   198,
     763     301,   162,    -1,   106,   107,    -1,   106,   126,   126,   200,
    761764     165,   127,   107,    -1,   166,    -1,   165,   126,   166,    -1,
    762      201,    -1,    38,   201,    -1,   295,    -1,   162,   127,    -1,
     765     203,    -1,    38,   203,    -1,   297,    -1,   162,   127,    -1,
    763766     162,    -1,   167,   162,    -1,   161,   124,    -1,    39,   101,
    764767     160,   102,   162,    -1,    39,   101,   160,   102,   162,    40,
    765768     162,    -1,    41,   101,   160,   102,   174,    -1,    41,   101,
    766      160,   102,   106,   126,   194,   175,   107,    -1,    51,   101,
     769     160,   102,   106,   126,   196,   175,   107,    -1,    51,   101,
    767770     160,   102,   174,    -1,    51,   101,   160,   102,   106,   126,
    768      194,   177,   107,    -1,   154,    -1,   154,    89,   154,    -1,
    769      297,    -1,   170,    -1,   171,   108,   170,    -1,    42,   171,
     771     196,   177,   107,    -1,   154,    -1,   154,    89,   154,    -1,
     772     299,    -1,   170,    -1,   171,   108,   170,    -1,    42,   171,
    770773     109,    -1,    43,   109,    -1,   172,    -1,   173,   172,    -1,
    771774     173,   162,    -1,    -1,   176,    -1,   173,   167,    -1,   176,
     
    775778      45,   101,   160,   102,   162,    -1,    44,   162,    45,   101,
    776779     160,   102,   124,    -1,    46,   101,   126,   182,   102,   162,
    777       -1,   161,   127,   124,   161,   124,   161,    -1,   201,   161,
     780      -1,   161,   127,   124,   161,   124,   161,    -1,   203,   161,
    778781     124,   161,    -1,    49,   131,   124,    -1,    49,   111,   160,
    779782     124,    -1,    48,   124,    -1,    48,   131,   124,    -1,    47,
     
    784787     101,    89,   102,   164,    -1,    54,   101,   126,   126,   188,
    785788     127,   102,   164,   127,    -1,   186,    54,   101,   126,   126,
    786      188,   127,   102,   164,   127,    -1,    55,   164,    -1,   214,
    787       -1,   214,   296,    -1,   214,   344,    -1,   353,   131,    -1,
    788      353,    -1,    57,   215,   101,   154,   102,   124,    -1,    57,
    789      215,   101,   154,   109,   190,   102,   124,    -1,    57,   215,
    790      101,   154,   109,   190,   109,   190,   102,   124,    -1,    57,
    791      215,   101,   154,   109,   190,   109,   190,   109,   193,   102,
    792      124,    -1,    -1,   191,    -1,   192,    -1,   191,   108,   192,
    793       -1,    75,   101,   154,   102,    -1,    75,    -1,   193,   108,
    794       75,    -1,   127,    -1,   195,    -1,   201,    -1,   195,   126,
    795      201,    -1,   127,    -1,   197,    -1,   211,    -1,   197,   126,
    796      211,    -1,    -1,   199,    -1,    28,   200,   124,    -1,   199,
    797       28,   200,   124,    -1,   261,    -1,   200,   108,   261,    -1,
    798      202,    -1,   211,    -1,   203,   127,   124,    -1,   208,   127,
    799      124,    -1,   205,   127,   124,    -1,   280,   127,   124,    -1,
    800      283,   127,   124,    -1,   204,   264,    -1,   220,   204,   264,
    801       -1,   203,   127,   108,   126,   259,   264,    -1,   354,   259,
    802      298,    -1,   357,   259,   298,    -1,   216,   357,   259,   298,
    803       -1,   206,    -1,   216,   206,    -1,   220,   206,    -1,   220,
    804      216,   206,    -1,   205,   127,   108,   126,   259,    -1,   103,
    805      104,   259,   101,   126,   247,   127,   102,    -1,   357,   259,
    806      101,   126,   247,   127,   102,    -1,   207,   259,   101,   126,
    807      247,   127,   102,    -1,   103,   126,   249,   127,   104,    -1,
    808      103,   126,   249,   127,   108,   126,   250,   127,   104,    -1,
    809        3,   204,    -1,     3,   206,    -1,   208,   127,   108,   126,
    810      131,    -1,     3,   214,   296,    -1,   209,   127,   108,   126,
    811      296,    -1,   216,     3,   214,   296,    -1,   214,     3,   296,
    812       -1,   214,     3,   216,   296,    -1,     3,   131,   123,   155,
    813       -1,   210,   127,   108,   126,   131,   123,   155,    -1,   212,
    814      127,   124,    -1,   209,   127,   124,    -1,   210,   127,   124,
    815       -1,   229,   127,   124,    -1,   213,   296,   298,   264,    -1,
    816      212,   108,   299,   296,   298,   264,    -1,   225,    -1,   229,
    817       -1,   231,    -1,   270,    -1,   226,    -1,   230,    -1,   232,
    818       -1,   271,    -1,    -1,   216,    -1,   217,    -1,   216,   217,
    819       -1,   218,    -1,   301,    -1,    10,    -1,    12,    -1,    11,
    820       -1,    14,    -1,    60,    -1,    -1,    13,   101,   219,   273,
    821      102,    -1,   221,    -1,   216,   221,    -1,   220,   216,   221,
    822       -1,   222,    -1,   221,   222,    -1,   223,    -1,     5,    -1,
    823        7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,    -1,
    824       62,    -1,    64,    -1,    16,    -1,    21,    -1,    20,    -1,
    825       18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,    -1,
    826       15,    -1,    24,    -1,    25,    -1,    26,    -1,   226,    -1,
    827      220,   226,    -1,   225,   222,    -1,   225,   222,   216,    -1,
    828      225,   222,   226,    -1,   227,    -1,   215,   228,   215,    -1,
    829      224,    -1,   216,   224,    -1,   227,   217,    -1,   227,   224,
    830       -1,    27,   101,   263,   102,    -1,    27,   101,   160,   102,
    831       -1,    71,   101,   263,   102,    -1,    71,   101,   160,   102,
    832       -1,   230,    -1,   220,   230,    -1,   229,   222,    -1,   229,
    833      222,   216,    -1,   233,    -1,   216,   233,    -1,   230,   217,
    834       -1,   232,    -1,   220,   232,    -1,   231,   222,    -1,   231,
    835      222,   216,    -1,    67,    -1,   216,    67,    -1,   232,   217,
    836       -1,   234,    -1,   244,    -1,   235,   106,   236,   107,    -1,
    837      235,   261,    -1,   235,   261,   106,   236,   107,    -1,   235,
    838      101,   279,   102,   106,   236,   107,    -1,   235,   272,    -1,
    839       30,   299,    -1,    31,   299,    -1,   237,    -1,   236,   237,
    840       -1,   238,   124,    -1,    38,   238,   124,    -1,   239,   124,
    841       -1,    38,   239,   124,    -1,   353,    -1,   353,   261,    -1,
    842      238,   108,   261,    -1,   238,   108,    -1,   214,   240,    -1,
    843      239,   108,   299,   240,    -1,    -1,   242,    -1,   305,   241,
    844       -1,   318,   241,    -1,   344,    -1,    -1,   242,    -1,   109,
    845      154,    -1,    29,   299,    -1,   243,   106,   245,   359,   107,
    846       -1,   243,   261,   106,   245,   359,   107,    -1,   243,   261,
    847       -1,   261,   246,    -1,   245,   108,   261,   246,    -1,    -1,
    848      123,   154,    -1,    -1,   248,    -1,   250,    -1,   249,    -1,
    849      249,   127,   108,   126,   250,    -1,   250,   127,   108,   126,
    850       89,    -1,   249,   127,   108,   126,    89,    -1,   254,    -1,
    851      250,   127,   108,   126,   254,    -1,   249,   127,   108,   126,
    852      254,    -1,   249,   127,   108,   126,   250,   127,   108,   126,
    853      254,    -1,   255,    -1,   250,   127,   108,   126,   255,    -1,
    854       -1,   252,    -1,   253,    -1,   253,   127,   108,   126,    89,
    855       -1,   257,    -1,   256,    -1,   253,   127,   108,   126,   257,
    856       -1,   253,   127,   108,   126,   256,    -1,   256,    -1,   349,
    857      259,   360,    -1,   357,   259,   360,    -1,   216,   357,   259,
    858      360,    -1,   206,    -1,   257,    -1,   349,    -1,   357,    -1,
    859      216,   357,    -1,   358,    -1,   213,   323,   360,    -1,   213,
    860      327,   360,    -1,   213,    -1,   213,   338,    -1,   131,    -1,
    861      258,   108,   131,    -1,   129,    -1,    67,    -1,    68,    -1,
    862      130,    -1,    67,    -1,    68,    -1,   131,    -1,    67,    -1,
    863       68,    -1,   353,    -1,   214,    -1,   214,   344,    -1,   353,
    864       -1,   358,    -1,   214,    -1,   214,   332,    -1,    -1,   123,
    865      265,    -1,   155,    -1,   106,   266,   359,   107,    -1,   265,
    866       -1,   267,   265,    -1,   266,   108,   265,    -1,   266,   108,
    867      267,   265,    -1,   268,   109,    -1,   261,   109,    -1,   269,
    868       -1,   268,   269,    -1,   105,   261,    -1,   103,   126,   155,
    869      127,   104,    -1,   103,   126,   297,   127,   104,    -1,   103,
    870      126,   154,    89,   154,   127,   104,    -1,   105,   103,   126,
    871      138,   127,   104,    -1,   271,    -1,   220,   271,    -1,   270,
    872      222,    -1,   270,   222,   216,    -1,   272,    -1,   216,   272,
    873       -1,   271,   217,    -1,    68,   101,   279,   102,    -1,   274,
    874      360,    -1,   273,   108,   274,   360,    -1,    -1,   276,   261,
    875      275,   277,    -1,   214,   323,    -1,    32,    -1,    34,    -1,
    876       33,    -1,    -1,   277,   278,    -1,   121,   261,   101,   279,
    877      102,    -1,   121,   106,   126,   285,   107,    -1,   121,   101,
    878      126,   273,   127,   102,   106,   126,   285,   107,   101,   279,
    879      102,    -1,   263,    -1,   155,    -1,   279,   108,   263,    -1,
    880      279,   108,   155,    -1,    32,   281,    -1,   221,    32,   281,
    881       -1,   280,   108,   281,    -1,   282,   277,    -1,   282,   277,
    882      123,   263,    -1,   261,    -1,   260,   101,   126,   273,   127,
    883      102,    -1,    35,   261,   101,   126,   273,   127,   102,   106,
    884      107,    -1,    -1,    35,   261,   101,   126,   273,   127,   102,
    885      106,   284,   285,   107,    -1,   286,    -1,   285,   126,   286,
    886       -1,   287,   127,   124,    -1,   288,   127,   124,    -1,   204,
    887       -1,   206,    -1,   287,   127,   108,   126,   259,    -1,   214,
    888      296,    -1,   288,   127,   108,   126,   296,    -1,    -1,   290,
    889       -1,   292,    -1,   290,   126,   292,    -1,    -1,   290,    -1,
    890      201,    -1,   294,    -1,   189,    -1,    -1,     5,    75,   293,
    891      106,   291,   107,    -1,    38,   292,    -1,   295,    -1,   310,
    892      164,    -1,   314,   126,   196,   164,    -1,   205,   164,    -1,
    893      213,   310,   164,    -1,   216,   310,   164,    -1,   220,   310,
    894      164,    -1,   220,   216,   310,   164,    -1,   213,   314,   126,
    895      196,   164,    -1,   216,   314,   126,   196,   164,    -1,   220,
    896      314,   126,   196,   164,    -1,   220,   216,   314,   126,   196,
    897      164,    -1,   305,    -1,   310,    -1,   318,    -1,   154,   115,
    898      154,    -1,    -1,    57,   101,   133,   102,   299,    -1,    -1,
    899      300,    -1,   301,    -1,   300,   301,    -1,    37,   101,   101,
    900      302,   102,   102,    -1,   303,    -1,   302,   108,   303,    -1,
    901       -1,   304,    -1,   304,   101,   161,   102,    -1,   259,    -1,
    902      223,    -1,   224,    -1,   217,    -1,   306,   299,    -1,   307,
    903       -1,   308,   299,    -1,   309,   299,    -1,   129,    -1,   101,
    904      306,   102,    -1,   111,   305,    -1,   111,   216,   305,    -1,
    905      101,   307,   102,    -1,   306,   336,    -1,   101,   307,   102,
    906      336,    -1,   101,   308,   102,   337,    -1,   101,   308,   102,
    907       -1,   101,   307,   102,   101,   126,   251,   127,   102,    -1,
    908      101,   309,   102,    -1,   311,   299,    -1,   312,    -1,   313,
    909      299,    -1,   306,   101,   126,   251,   127,   102,    -1,   101,
    910      312,   102,   101,   126,   251,   127,   102,    -1,   101,   311,
    911      102,    -1,   111,   310,    -1,   111,   216,   310,    -1,   101,
    912      312,   102,    -1,   101,   312,   102,   336,    -1,   101,   313,
    913      102,   337,    -1,   101,   313,   102,    -1,   315,    -1,   316,
    914       -1,   317,    -1,   306,   101,   258,   102,    -1,   101,   316,
    915      102,   101,   258,   102,    -1,   101,   315,   102,    -1,   111,
    916      314,    -1,   111,   216,   314,    -1,   101,   316,   102,    -1,
    917      101,   316,   102,   336,    -1,   101,   317,   102,   337,    -1,
    918      101,   317,   102,    -1,   319,   299,    -1,   320,    -1,   321,
    919      299,    -1,   322,   299,    -1,   328,    -1,   101,   319,   102,
    920       -1,   111,   318,    -1,   111,   216,   318,    -1,   101,   320,
    921      102,    -1,   319,   336,    -1,   101,   320,   102,   336,    -1,
    922      101,   321,   102,   337,    -1,   101,   321,   102,    -1,   319,
    923      101,   126,   251,   127,   102,    -1,   101,   320,   102,   101,
    924      126,   251,   127,   102,    -1,   101,   322,   102,    -1,   306,
    925      299,    -1,   324,    -1,   325,   299,    -1,   326,   299,    -1,
    926      111,   323,    -1,   111,   216,   323,    -1,   101,   324,   102,
    927       -1,   306,   342,    -1,   101,   324,   102,   336,    -1,   101,
    928      325,   102,   337,    -1,   101,   325,   102,    -1,   306,   101,
    929      126,   251,   127,   102,    -1,   101,   324,   102,   101,   126,
    930      251,   127,   102,    -1,   101,   326,   102,    -1,   328,   299,
    931       -1,   329,    -1,   330,   299,    -1,   331,   299,    -1,    67,
    932       -1,    68,    -1,   111,   327,    -1,   111,   216,   327,    -1,
    933      101,   329,   102,    -1,   328,   342,    -1,   101,   329,   102,
    934      342,    -1,   328,   101,   126,   251,   127,   102,    -1,   101,
    935      329,   102,   101,   126,   251,   127,   102,    -1,   333,    -1,
    936      334,   299,    -1,   335,   299,    -1,   111,    -1,   111,   216,
    937       -1,   111,   332,    -1,   111,   216,   332,    -1,   101,   333,
    938      102,    -1,   336,    -1,   101,   333,   102,   336,    -1,   101,
    939      334,   102,   337,    -1,   101,   334,   102,    -1,   101,   126,
    940      251,   127,   102,    -1,   101,   333,   102,   101,   126,   251,
    941      127,   102,    -1,   101,   335,   102,    -1,   103,   104,    -1,
    942      103,   104,   337,    -1,   337,    -1,   103,   126,   155,   127,
    943      104,    -1,   103,   126,   111,   127,   104,    -1,   337,   103,
    944      126,   155,   127,   104,    -1,   337,   103,   126,   111,   127,
    945      104,    -1,   339,    -1,   340,   299,    -1,   341,   299,    -1,
    946      111,    -1,   111,   216,    -1,   111,   338,    -1,   111,   216,
    947      338,    -1,   101,   339,   102,    -1,   342,    -1,   101,   339,
    948      102,   342,    -1,   101,   340,   102,   337,    -1,   101,   340,
    949      102,    -1,   101,   126,   251,   127,   102,    -1,   101,   339,
    950      102,   101,   126,   251,   127,   102,    -1,   101,   341,   102,
    951       -1,   343,    -1,   343,   337,    -1,   337,    -1,   103,   104,
    952       -1,   103,   126,   216,   111,   127,   104,    -1,   103,   126,
    953      216,   127,   104,    -1,   103,   126,   216,   155,   127,   104,
    954       -1,   103,   126,     7,   215,   155,   127,   104,    -1,   103,
    955      126,   216,     7,   155,   127,   104,    -1,   345,    -1,   346,
    956      299,    -1,   347,   299,    -1,   111,    -1,   111,   216,    -1,
    957      111,   344,    -1,   111,   216,   344,    -1,   101,   345,   102,
    958       -1,   336,    -1,   101,   345,   102,   336,    -1,   101,   346,
    959      102,   337,    -1,   101,   346,   102,    -1,   101,   345,   102,
    960      101,   126,   251,   127,   102,    -1,   101,   347,   102,    -1,
    961      349,    -1,   357,    -1,   216,   357,    -1,   350,    -1,   351,
    962       -1,   111,   214,    -1,   216,   111,   214,    -1,   111,   358,
    963       -1,   216,   111,   358,    -1,   111,   348,    -1,   216,   111,
    964      348,    -1,   103,   104,   214,    -1,   352,   214,    -1,   103,
    965      104,   337,   214,    -1,   352,   337,   214,    -1,   337,   214,
    966       -1,   103,   104,   350,    -1,   352,   350,    -1,   103,   104,
    967      337,   350,    -1,   352,   337,   350,    -1,   337,   350,    -1,
    968      103,   126,   216,   111,   127,   104,    -1,   103,   126,   216,
    969      155,   127,   104,    -1,   103,   126,   220,   155,   127,   104,
    970       -1,   103,   126,   220,   216,   155,   127,   104,    -1,   357,
    971       -1,   216,   357,    -1,   354,    -1,   355,    -1,   356,    -1,
    972      111,   214,    -1,   216,   111,   214,    -1,   111,   358,    -1,
    973      216,   111,   358,    -1,   111,   353,    -1,   216,   111,   353,
    974       -1,   103,   104,   214,    -1,   103,   104,   337,   214,    -1,
    975      337,   214,    -1,   103,   104,   355,    -1,   103,   104,   337,
    976      355,    -1,   337,   355,    -1,   103,   126,   250,   127,   104,
    977       -1,   103,   104,   101,   247,   102,    -1,   357,   101,   126,
    978      247,   127,   102,    -1,   207,   101,   126,   247,   127,   102,
    979       -1,    -1,   108,    -1,    -1,   123,   155,    -1
     789     188,   127,   102,   164,   127,    -1,    55,   164,    -1,   216,
     790      -1,   216,   298,    -1,   216,   346,    -1,   355,   131,    -1,
     791     355,    -1,    57,   190,   101,   133,   102,   124,    -1,    57,
     792     190,   101,   133,   109,   191,   102,   124,    -1,    57,   190,
     793     101,   133,   109,   191,   109,   191,   102,   124,    -1,    57,
     794     190,   101,   133,   109,   191,   109,   191,   109,   194,   102,
     795     124,    -1,    57,   190,    49,   101,   133,   109,   109,   191,
     796     109,   194,   109,   195,   102,   124,    -1,    -1,    11,    -1,
     797      -1,   192,    -1,   193,    -1,   192,   108,   193,    -1,   133,
     798     101,   154,   102,    -1,   103,   154,   104,   133,   101,   154,
     799     102,    -1,    -1,   133,    -1,   194,   108,   133,    -1,   131,
     800      -1,   195,   108,   131,    -1,   127,    -1,   197,    -1,   203,
     801      -1,   197,   126,   203,    -1,   127,    -1,   199,    -1,   213,
     802      -1,   199,   126,   213,    -1,    -1,   201,    -1,    28,   202,
     803     124,    -1,   201,    28,   202,   124,    -1,   263,    -1,   202,
     804     108,   263,    -1,   204,    -1,   213,    -1,   205,   127,   124,
     805      -1,   210,   127,   124,    -1,   207,   127,   124,    -1,   282,
     806     127,   124,    -1,   285,   127,   124,    -1,   206,   266,    -1,
     807     222,   206,   266,    -1,   205,   127,   108,   126,   261,   266,
     808      -1,   356,   261,   300,    -1,   359,   261,   300,    -1,   218,
     809     359,   261,   300,    -1,   208,    -1,   218,   208,    -1,   222,
     810     208,    -1,   222,   218,   208,    -1,   207,   127,   108,   126,
     811     261,    -1,   103,   104,   261,   101,   126,   249,   127,   102,
     812      -1,   359,   261,   101,   126,   249,   127,   102,    -1,   209,
     813     261,   101,   126,   249,   127,   102,    -1,   103,   126,   251,
     814     127,   104,    -1,   103,   126,   251,   127,   108,   126,   252,
     815     127,   104,    -1,     3,   206,    -1,     3,   208,    -1,   210,
     816     127,   108,   126,   131,    -1,     3,   216,   298,    -1,   211,
     817     127,   108,   126,   298,    -1,   218,     3,   216,   298,    -1,
     818     216,     3,   298,    -1,   216,     3,   218,   298,    -1,     3,
     819     131,   123,   155,    -1,   212,   127,   108,   126,   131,   123,
     820     155,    -1,   214,   127,   124,    -1,   211,   127,   124,    -1,
     821     212,   127,   124,    -1,   231,   127,   124,    -1,   215,   298,
     822     300,   266,    -1,   214,   108,   301,   298,   300,   266,    -1,
     823     227,    -1,   231,    -1,   233,    -1,   272,    -1,   228,    -1,
     824     232,    -1,   234,    -1,   273,    -1,    -1,   218,    -1,   219,
     825      -1,   218,   219,    -1,   220,    -1,   303,    -1,    10,    -1,
     826      12,    -1,    11,    -1,    14,    -1,    60,    -1,    -1,    13,
     827     101,   221,   275,   102,    -1,   223,    -1,   218,   223,    -1,
     828     222,   218,   223,    -1,   224,    -1,   223,   224,    -1,   225,
     829      -1,     5,    -1,     7,    -1,     4,    -1,     6,    -1,     8,
     830      -1,     9,    -1,    62,    -1,    64,    -1,    16,    -1,    21,
     831      -1,    20,    -1,    18,    -1,    19,    -1,    17,    -1,    22,
     832      -1,    23,    -1,    15,    -1,    24,    -1,    25,    -1,    26,
     833      -1,   228,    -1,   222,   228,    -1,   227,   224,    -1,   227,
     834     224,   218,    -1,   227,   224,   228,    -1,   229,    -1,   217,
     835     230,   217,    -1,   226,    -1,   218,   226,    -1,   229,   219,
     836      -1,   229,   226,    -1,    27,   101,   265,   102,    -1,    27,
     837     101,   160,   102,    -1,    71,   101,   265,   102,    -1,    71,
     838     101,   160,   102,    -1,   232,    -1,   222,   232,    -1,   231,
     839     224,    -1,   231,   224,   218,    -1,   235,    -1,   218,   235,
     840      -1,   232,   219,    -1,   234,    -1,   222,   234,    -1,   233,
     841     224,    -1,   233,   224,   218,    -1,    67,    -1,   218,    67,
     842      -1,   234,   219,    -1,   236,    -1,   246,    -1,   237,   106,
     843     238,   107,    -1,   237,   263,    -1,   237,   263,   106,   238,
     844     107,    -1,   237,   101,   281,   102,   106,   238,   107,    -1,
     845     237,   274,    -1,    30,   301,    -1,    31,   301,    -1,   239,
     846      -1,   238,   239,    -1,   240,   124,    -1,    38,   240,   124,
     847      -1,   241,   124,    -1,    38,   241,   124,    -1,   355,    -1,
     848     355,   263,    -1,   240,   108,   263,    -1,   240,   108,    -1,
     849     216,   242,    -1,   241,   108,   301,   242,    -1,    -1,   244,
     850      -1,   307,   243,    -1,   320,   243,    -1,   346,    -1,    -1,
     851     244,    -1,   109,   154,    -1,    29,   301,    -1,   245,   106,
     852     247,   361,   107,    -1,   245,   263,   106,   247,   361,   107,
     853      -1,   245,   263,    -1,   263,   248,    -1,   247,   108,   263,
     854     248,    -1,    -1,   123,   154,    -1,    -1,   250,    -1,   252,
     855      -1,   251,    -1,   251,   127,   108,   126,   252,    -1,   252,
     856     127,   108,   126,    89,    -1,   251,   127,   108,   126,    89,
     857      -1,   256,    -1,   252,   127,   108,   126,   256,    -1,   251,
     858     127,   108,   126,   256,    -1,   251,   127,   108,   126,   252,
     859     127,   108,   126,   256,    -1,   257,    -1,   252,   127,   108,
     860     126,   257,    -1,    -1,   254,    -1,   255,    -1,   255,   127,
     861     108,   126,    89,    -1,   259,    -1,   258,    -1,   255,   127,
     862     108,   126,   259,    -1,   255,   127,   108,   126,   258,    -1,
     863     258,    -1,   351,   261,   362,    -1,   359,   261,   362,    -1,
     864     218,   359,   261,   362,    -1,   208,    -1,   259,    -1,   351,
     865      -1,   359,    -1,   218,   359,    -1,   360,    -1,   215,   325,
     866     362,    -1,   215,   329,   362,    -1,   215,    -1,   215,   340,
     867      -1,   131,    -1,   260,   108,   131,    -1,   129,    -1,    67,
     868      -1,    68,    -1,   130,    -1,    67,    -1,    68,    -1,   131,
     869      -1,    67,    -1,    68,    -1,   355,    -1,   216,    -1,   216,
     870     346,    -1,   355,    -1,   360,    -1,   216,    -1,   216,   334,
     871      -1,    -1,   123,   267,    -1,   155,    -1,   106,   268,   361,
     872     107,    -1,   267,    -1,   269,   267,    -1,   268,   108,   267,
     873      -1,   268,   108,   269,   267,    -1,   270,   109,    -1,   263,
     874     109,    -1,   271,    -1,   270,   271,    -1,    73,    -1,   105,
     875     263,    -1,   103,   126,   155,   127,   104,    -1,   103,   126,
     876     299,   127,   104,    -1,   103,   126,   154,    89,   154,   127,
     877     104,    -1,   105,   103,   126,   138,   127,   104,    -1,   273,
     878      -1,   222,   273,    -1,   272,   224,    -1,   272,   224,   218,
     879      -1,   274,    -1,   218,   274,    -1,   273,   219,    -1,    68,
     880     101,   281,   102,    -1,   276,   362,    -1,   275,   108,   276,
     881     362,    -1,    -1,   278,   263,   277,   279,    -1,   216,   325,
     882      -1,    32,    -1,    34,    -1,    33,    -1,    -1,   279,   280,
     883      -1,   121,   263,   101,   281,   102,    -1,   121,   106,   126,
     884     287,   107,    -1,   121,   101,   126,   275,   127,   102,   106,
     885     126,   287,   107,   101,   281,   102,    -1,   265,    -1,   155,
     886      -1,   281,   108,   265,    -1,   281,   108,   155,    -1,    32,
     887     283,    -1,   223,    32,   283,    -1,   282,   108,   283,    -1,
     888     284,   279,    -1,   284,   279,   123,   265,    -1,   263,    -1,
     889     262,   101,   126,   275,   127,   102,    -1,    35,   263,   101,
     890     126,   275,   127,   102,   106,   107,    -1,    -1,    35,   263,
     891     101,   126,   275,   127,   102,   106,   286,   287,   107,    -1,
     892     288,    -1,   287,   126,   288,    -1,   289,   127,   124,    -1,
     893     290,   127,   124,    -1,   206,    -1,   208,    -1,   289,   127,
     894     108,   126,   261,    -1,   216,   298,    -1,   290,   127,   108,
     895     126,   298,    -1,    -1,   292,    -1,   294,    -1,   292,   126,
     896     294,    -1,    -1,   292,    -1,   203,    -1,   296,    -1,   189,
     897      -1,    -1,     5,    75,   295,   106,   293,   107,    -1,    38,
     898     294,    -1,   297,    -1,   312,   164,    -1,   316,   126,   198,
     899     164,    -1,   207,   164,    -1,   215,   312,   164,    -1,   218,
     900     312,   164,    -1,   222,   312,   164,    -1,   222,   218,   312,
     901     164,    -1,   215,   316,   126,   198,   164,    -1,   218,   316,
     902     126,   198,   164,    -1,   222,   316,   126,   198,   164,    -1,
     903     222,   218,   316,   126,   198,   164,    -1,   307,    -1,   312,
     904      -1,   320,    -1,   154,   115,   154,    -1,    -1,    57,   101,
     905     133,   102,   301,    -1,    -1,   302,    -1,   303,    -1,   302,
     906     303,    -1,    37,   101,   101,   304,   102,   102,    -1,   305,
     907      -1,   304,   108,   305,    -1,    -1,   306,    -1,   306,   101,
     908     161,   102,    -1,   261,    -1,   225,    -1,   226,    -1,   219,
     909      -1,   308,   301,    -1,   309,    -1,   310,   301,    -1,   311,
     910     301,    -1,   129,    -1,   101,   308,   102,    -1,   111,   307,
     911      -1,   111,   218,   307,    -1,   101,   309,   102,    -1,   308,
     912     338,    -1,   101,   309,   102,   338,    -1,   101,   310,   102,
     913     339,    -1,   101,   310,   102,    -1,   101,   309,   102,   101,
     914     126,   253,   127,   102,    -1,   101,   311,   102,    -1,   313,
     915     301,    -1,   314,    -1,   315,   301,    -1,   308,   101,   126,
     916     253,   127,   102,    -1,   101,   314,   102,   101,   126,   253,
     917     127,   102,    -1,   101,   313,   102,    -1,   111,   312,    -1,
     918     111,   218,   312,    -1,   101,   314,   102,    -1,   101,   314,
     919     102,   338,    -1,   101,   315,   102,   339,    -1,   101,   315,
     920     102,    -1,   317,    -1,   318,    -1,   319,    -1,   308,   101,
     921     260,   102,    -1,   101,   318,   102,   101,   260,   102,    -1,
     922     101,   317,   102,    -1,   111,   316,    -1,   111,   218,   316,
     923      -1,   101,   318,   102,    -1,   101,   318,   102,   338,    -1,
     924     101,   319,   102,   339,    -1,   101,   319,   102,    -1,   321,
     925     301,    -1,   322,    -1,   323,   301,    -1,   324,   301,    -1,
     926     330,    -1,   101,   321,   102,    -1,   111,   320,    -1,   111,
     927     218,   320,    -1,   101,   322,   102,    -1,   321,   338,    -1,
     928     101,   322,   102,   338,    -1,   101,   323,   102,   339,    -1,
     929     101,   323,   102,    -1,   321,   101,   126,   253,   127,   102,
     930      -1,   101,   322,   102,   101,   126,   253,   127,   102,    -1,
     931     101,   324,   102,    -1,   308,   301,    -1,   326,    -1,   327,
     932     301,    -1,   328,   301,    -1,   111,   325,    -1,   111,   218,
     933     325,    -1,   101,   326,   102,    -1,   308,   344,    -1,   101,
     934     326,   102,   338,    -1,   101,   327,   102,   339,    -1,   101,
     935     327,   102,    -1,   308,   101,   126,   253,   127,   102,    -1,
     936     101,   326,   102,   101,   126,   253,   127,   102,    -1,   101,
     937     328,   102,    -1,   330,   301,    -1,   331,    -1,   332,   301,
     938      -1,   333,   301,    -1,    67,    -1,    68,    -1,   111,   329,
     939      -1,   111,   218,   329,    -1,   101,   331,   102,    -1,   330,
     940     344,    -1,   101,   331,   102,   344,    -1,   330,   101,   126,
     941     253,   127,   102,    -1,   101,   331,   102,   101,   126,   253,
     942     127,   102,    -1,   335,    -1,   336,   301,    -1,   337,   301,
     943      -1,   111,    -1,   111,   218,    -1,   111,   334,    -1,   111,
     944     218,   334,    -1,   101,   335,   102,    -1,   338,    -1,   101,
     945     335,   102,   338,    -1,   101,   336,   102,   339,    -1,   101,
     946     336,   102,    -1,   101,   126,   253,   127,   102,    -1,   101,
     947     335,   102,   101,   126,   253,   127,   102,    -1,   101,   337,
     948     102,    -1,   103,   104,    -1,   103,   104,   339,    -1,   339,
     949      -1,   103,   126,   155,   127,   104,    -1,   103,   126,   111,
     950     127,   104,    -1,   339,   103,   126,   155,   127,   104,    -1,
     951     339,   103,   126,   111,   127,   104,    -1,   341,    -1,   342,
     952     301,    -1,   343,   301,    -1,   111,    -1,   111,   218,    -1,
     953     111,   340,    -1,   111,   218,   340,    -1,   101,   341,   102,
     954      -1,   344,    -1,   101,   341,   102,   344,    -1,   101,   342,
     955     102,   339,    -1,   101,   342,   102,    -1,   101,   126,   253,
     956     127,   102,    -1,   101,   341,   102,   101,   126,   253,   127,
     957     102,    -1,   101,   343,   102,    -1,   345,    -1,   345,   339,
     958      -1,   339,    -1,   103,   104,    -1,   103,   126,   218,   111,
     959     127,   104,    -1,   103,   126,   218,   127,   104,    -1,   103,
     960     126,   218,   155,   127,   104,    -1,   103,   126,     7,   217,
     961     155,   127,   104,    -1,   103,   126,   218,     7,   155,   127,
     962     104,    -1,   347,    -1,   348,   301,    -1,   349,   301,    -1,
     963     111,    -1,   111,   218,    -1,   111,   346,    -1,   111,   218,
     964     346,    -1,   101,   347,   102,    -1,   338,    -1,   101,   347,
     965     102,   338,    -1,   101,   348,   102,   339,    -1,   101,   348,
     966     102,    -1,   101,   347,   102,   101,   126,   253,   127,   102,
     967      -1,   101,   349,   102,    -1,   351,    -1,   359,    -1,   218,
     968     359,    -1,   352,    -1,   353,    -1,   111,   216,    -1,   218,
     969     111,   216,    -1,   111,   360,    -1,   218,   111,   360,    -1,
     970     111,   350,    -1,   218,   111,   350,    -1,   103,   104,   216,
     971      -1,   354,   216,    -1,   103,   104,   339,   216,    -1,   354,
     972     339,   216,    -1,   339,   216,    -1,   103,   104,   352,    -1,
     973     354,   352,    -1,   103,   104,   339,   352,    -1,   354,   339,
     974     352,    -1,   339,   352,    -1,   103,   126,   218,   111,   127,
     975     104,    -1,   103,   126,   218,   155,   127,   104,    -1,   103,
     976     126,   222,   155,   127,   104,    -1,   103,   126,   222,   218,
     977     155,   127,   104,    -1,   359,    -1,   218,   359,    -1,   356,
     978      -1,   357,    -1,   358,    -1,   111,   216,    -1,   218,   111,
     979     216,    -1,   111,   360,    -1,   218,   111,   360,    -1,   111,
     980     355,    -1,   218,   111,   355,    -1,   103,   104,   216,    -1,
     981     103,   104,   339,   216,    -1,   339,   216,    -1,   103,   104,
     982     357,    -1,   103,   104,   339,   357,    -1,   339,   357,    -1,
     983     103,   126,   252,   127,   104,    -1,   103,   104,   101,   249,
     984     102,    -1,   359,   101,   126,   249,   127,   102,    -1,   209,
     985     101,   126,   249,   127,   102,    -1,    -1,   108,    -1,    -1,
     986     123,   155,    -1
    980987};
    981988
     
    983990static const yytype_uint16 yyrline[] =
    984991{
    985        0,   282,   282,   288,   297,   298,   299,   303,   304,   305,
    986      309,   310,   314,   318,   319,   323,   324,   330,   332,   334,
    987      336,   338,   340,   345,   346,   352,   354,   356,   357,   359,
    988      360,   362,   365,   370,   371,   377,   378,   379,   384,   386,
    989      391,   392,   396,   398,   400,   402,   404,   409,   410,   412,
    990      414,   416,   418,   420,   426,   428,   430,   432,   434,   436,
    991      438,   440,   445,   446,   447,   448,   452,   453,   455,   460,
    992      461,   463,   465,   470,   471,   473,   478,   479,   481,   486,
    993      487,   489,   491,   493,   498,   499,   501,   506,   507,   512,
    994      513,   518,   519,   524,   525,   530,   531,   536,   537,   539,
    995      541,   546,   551,   552,   554,   556,   562,   563,   569,   571,
    996      573,   575,   580,   581,   586,   587,   588,   589,   590,   591,
    997      592,   593,   594,   595,   599,   600,   606,   607,   613,   614,
    998      615,   616,   617,   618,   619,   620,   624,   631,   633,   643,
    999      644,   649,   651,   653,   655,   659,   660,   665,   670,   673,
    1000      675,   677,   682,   684,   692,   693,   695,   699,   700,   705,
    1001      706,   711,   712,   716,   721,   722,   726,   728,   734,   735,
    1002      739,   741,   743,   745,   751,   752,   756,   757,   761,   763,
    1003      765,   770,   772,   777,   779,   783,   786,   790,   793,   797,
    1004      799,   801,   806,   808,   810,   819,   821,   823,   828,   830,
    1005      835,   848,   849,   854,   856,   861,   865,   867,   869,   871,
    1006      875,   877,   881,   882,   886,   890,   891,   897,   899,   903,
    1007      904,   909,   911,   915,   916,   920,   922,   926,   927,   931,
    1008      932,   936,   937,   952,   953,   954,   955,   956,   960,   965,
    1009      972,   982,   987,   992,  1000,  1005,  1010,  1015,  1020,  1028,
    1010     1050,  1055,  1062,  1064,  1071,  1076,  1081,  1092,  1097,  1102,
    1011     1107,  1112,  1121,  1126,  1134,  1135,  1136,  1137,  1143,  1148,
    1012     1156,  1157,  1158,  1159,  1163,  1164,  1165,  1166,  1171,  1172,
    1013     1181,  1182,  1187,  1188,  1193,  1195,  1197,  1199,  1201,  1204,
    1014     1203,  1215,  1216,  1218,  1228,  1229,  1234,  1238,  1240,  1242,
    1015     1244,  1246,  1248,  1250,  1252,  1257,  1259,  1261,  1263,  1265,
    1016     1267,  1269,  1271,  1273,  1275,  1277,  1279,  1285,  1286,  1288,
    1017     1290,  1292,  1297,  1298,  1304,  1305,  1307,  1309,  1314,  1316,
    1018     1318,  1320,  1325,  1326,  1328,  1330,  1335,  1336,  1338,  1343,
    1019     1344,  1346,  1348,  1353,  1355,  1357,  1362,  1363,  1367,  1369,
    1020     1371,  1373,  1375,  1380,  1382,  1387,  1389,  1394,  1395,  1397,
    1021     1398,  1403,  1404,  1406,  1408,  1413,  1415,  1421,  1422,  1424,
    1022     1427,  1430,  1435,  1436,  1441,  1446,  1450,  1452,  1454,  1459,
    1023     1461,  1467,  1468,  1476,  1477,  1481,  1482,  1483,  1485,  1487,
    1024     1494,  1495,  1497,  1499,  1504,  1505,  1511,  1512,  1516,  1517,
    1025     1522,  1523,  1524,  1526,  1534,  1535,  1537,  1540,  1542,  1546,
    1026     1547,  1548,  1550,  1552,  1556,  1561,  1569,  1570,  1579,  1581,
    1027     1586,  1587,  1588,  1592,  1593,  1594,  1598,  1599,  1600,  1604,
    1028     1605,  1606,  1611,  1612,  1613,  1614,  1620,  1621,  1626,  1627,
    1029     1631,  1632,  1633,  1634,  1649,  1650,  1655,  1656,  1662,  1664,
    1030     1667,  1669,  1671,  1694,  1695,  1697,  1699,  1704,  1705,  1707,
    1031     1712,  1717,  1718,  1724,  1723,  1727,  1731,  1733,  1735,  1741,
    1032     1742,  1747,  1752,  1754,  1759,  1761,  1762,  1764,  1769,  1771,
    1033     1773,  1778,  1780,  1785,  1790,  1798,  1804,  1803,  1817,  1818,
    1034     1823,  1824,  1828,  1833,  1838,  1846,  1851,  1862,  1863,  1874,
    1035     1875,  1881,  1882,  1886,  1887,  1888,  1891,  1890,  1901,  1906,
    1036     1911,  1917,  1926,  1932,  1938,  1944,  1950,  1958,  1964,  1972,
    1037     1978,  1987,  1988,  1989,  1993,  1997,  1999,  2004,  2005,  2009,
    1038     2010,  2015,  2021,  2022,  2025,  2027,  2028,  2032,  2033,  2034,
    1039     2035,  2069,  2071,  2072,  2074,  2079,  2084,  2089,  2091,  2093,
    1040     2098,  2100,  2102,  2104,  2109,  2111,  2121,  2123,  2124,  2129,
    1041     2131,  2133,  2138,  2140,  2142,  2147,  2149,  2151,  2160,  2161,
    1042     2162,  2166,  2168,  2170,  2175,  2177,  2179,  2184,  2186,  2188,
    1043     2203,  2205,  2206,  2208,  2213,  2214,  2219,  2221,  2223,  2228,
    1044     2230,  2232,  2234,  2239,  2241,  2243,  2253,  2255,  2256,  2258,
    1045     2263,  2265,  2267,  2272,  2274,  2276,  2278,  2283,  2285,  2287,
    1046     2318,  2320,  2321,  2323,  2328,  2333,  2341,  2343,  2345,  2350,
    1047     2352,  2357,  2359,  2373,  2374,  2376,  2381,  2383,  2385,  2387,
    1048     2389,  2394,  2395,  2397,  2399,  2404,  2406,  2408,  2414,  2416,
    1049     2418,  2422,  2424,  2426,  2428,  2442,  2443,  2445,  2450,  2452,
    1050     2454,  2456,  2458,  2463,  2464,  2466,  2468,  2473,  2475,  2477,
    1051     2483,  2484,  2486,  2495,  2498,  2500,  2503,  2505,  2507,  2520,
    1052     2521,  2523,  2528,  2530,  2532,  2534,  2536,  2541,  2542,  2544,
    1053     2546,  2551,  2553,  2561,  2562,  2563,  2568,  2569,  2573,  2575,
    1054     2577,  2579,  2581,  2583,  2590,  2592,  2594,  2596,  2598,  2600,
    1055     2602,  2604,  2606,  2608,  2613,  2615,  2617,  2622,  2648,  2649,
    1056     2651,  2655,  2656,  2660,  2662,  2664,  2666,  2668,  2670,  2677,
    1057     2679,  2681,  2683,  2685,  2687,  2692,  2697,  2699,  2701,  2719,
    1058     2721,  2726,  2727
     992       0,   288,   288,   294,   303,   304,   305,   309,   310,   311,
     993     315,   316,   320,   324,   325,   329,   330,   336,   338,   340,
     994     342,   347,   348,   354,   356,   358,   359,   361,   362,   364,
     995     367,   372,   373,   379,   380,   381,   386,   388,   393,   394,
     996     398,   400,   402,   404,   406,   411,   414,   416,   418,   420,
     997     422,   424,   426,   428,   434,   436,   438,   440,   442,   444,
     998     446,   448,   453,   454,   455,   456,   460,   461,   463,   468,
     999     469,   471,   473,   478,   479,   481,   486,   487,   489,   494,
     1000     495,   497,   499,   501,   506,   507,   509,   514,   515,   520,
     1001     521,   526,   527,   532,   533,   538,   539,   544,   545,   547,
     1002     549,   554,   559,   560,   562,   564,   570,   571,   577,   579,
     1003     581,   583,   588,   589,   594,   595,   596,   597,   598,   599,
     1004     600,   601,   602,   603,   607,   608,   614,   615,   621,   622,
     1005     623,   624,   625,   626,   627,   628,   632,   639,   641,   651,
     1006     652,   657,   659,   661,   663,   667,   668,   673,   678,   681,
     1007     683,   685,   690,   692,   700,   701,   703,   707,   708,   713,
     1008     714,   719,   720,   724,   729,   730,   734,   736,   742,   743,
     1009     747,   749,   751,   753,   759,   760,   764,   765,   769,   771,
     1010     773,   778,   780,   785,   787,   791,   794,   798,   801,   805,
     1011     807,   809,   814,   816,   818,   827,   829,   831,   836,   838,
     1012     843,   856,   857,   862,   864,   869,   873,   875,   877,   879,
     1013     881,   887,   888,   894,   895,   899,   900,   905,   907,   913,
     1014     914,   916,   921,   923,   930,   932,   936,   937,   942,   944,
     1015     948,   949,   953,   955,   959,   960,   964,   965,   969,   970,
     1016     985,   986,   987,   988,   989,   993,   998,  1005,  1015,  1020,
     1017    1025,  1033,  1038,  1043,  1048,  1053,  1061,  1083,  1088,  1095,
     1018    1097,  1104,  1109,  1114,  1125,  1130,  1135,  1140,  1145,  1154,
     1019    1159,  1167,  1168,  1169,  1170,  1176,  1181,  1189,  1190,  1191,
     1020    1192,  1196,  1197,  1198,  1199,  1204,  1205,  1214,  1215,  1220,
     1021    1221,  1226,  1228,  1230,  1232,  1234,  1237,  1236,  1248,  1249,
     1022    1251,  1261,  1262,  1267,  1271,  1273,  1275,  1277,  1279,  1281,
     1023    1283,  1285,  1290,  1292,  1294,  1296,  1298,  1300,  1302,  1304,
     1024    1306,  1308,  1310,  1312,  1318,  1319,  1321,  1323,  1325,  1330,
     1025    1331,  1337,  1338,  1340,  1342,  1347,  1349,  1351,  1353,  1358,
     1026    1359,  1361,  1363,  1368,  1369,  1371,  1376,  1377,  1379,  1381,
     1027    1386,  1388,  1390,  1395,  1396,  1400,  1402,  1404,  1406,  1408,
     1028    1413,  1415,  1420,  1422,  1427,  1428,  1430,  1431,  1436,  1437,
     1029    1439,  1441,  1446,  1448,  1454,  1455,  1457,  1460,  1463,  1468,
     1030    1469,  1474,  1479,  1483,  1485,  1487,  1492,  1494,  1500,  1501,
     1031    1509,  1510,  1514,  1515,  1516,  1518,  1520,  1527,  1528,  1530,
     1032    1532,  1537,  1538,  1544,  1545,  1549,  1550,  1555,  1556,  1557,
     1033    1559,  1567,  1568,  1570,  1573,  1575,  1579,  1580,  1581,  1583,
     1034    1585,  1589,  1594,  1602,  1603,  1612,  1614,  1619,  1620,  1621,
     1035    1625,  1626,  1627,  1631,  1632,  1633,  1637,  1638,  1639,  1644,
     1036    1645,  1646,  1647,  1653,  1654,  1659,  1660,  1664,  1665,  1666,
     1037    1667,  1682,  1683,  1688,  1689,  1696,  1698,  1700,  1703,  1705,
     1038    1707,  1730,  1731,  1733,  1735,  1740,  1741,  1743,  1748,  1753,
     1039    1754,  1760,  1759,  1763,  1767,  1769,  1771,  1777,  1778,  1783,
     1040    1788,  1790,  1795,  1797,  1798,  1800,  1805,  1807,  1809,  1814,
     1041    1816,  1821,  1826,  1834,  1840,  1839,  1853,  1854,  1859,  1860,
     1042    1864,  1869,  1874,  1882,  1887,  1898,  1899,  1910,  1911,  1917,
     1043    1918,  1922,  1923,  1924,  1927,  1926,  1937,  1942,  1947,  1953,
     1044    1962,  1968,  1974,  1980,  1986,  1994,  2000,  2008,  2014,  2023,
     1045    2024,  2025,  2029,  2033,  2035,  2040,  2041,  2045,  2046,  2051,
     1046    2057,  2058,  2061,  2063,  2064,  2068,  2069,  2070,  2071,  2105,
     1047    2107,  2108,  2110,  2115,  2120,  2125,  2127,  2129,  2134,  2136,
     1048    2138,  2140,  2145,  2147,  2157,  2159,  2160,  2165,  2167,  2169,
     1049    2174,  2176,  2178,  2183,  2185,  2187,  2196,  2197,  2198,  2202,
     1050    2204,  2206,  2211,  2213,  2215,  2220,  2222,  2224,  2239,  2241,
     1051    2242,  2244,  2249,  2250,  2255,  2257,  2259,  2264,  2266,  2268,
     1052    2270,  2275,  2277,  2279,  2289,  2291,  2292,  2294,  2299,  2301,
     1053    2303,  2308,  2310,  2312,  2314,  2319,  2321,  2323,  2354,  2356,
     1054    2357,  2359,  2364,  2369,  2377,  2379,  2381,  2386,  2388,  2393,
     1055    2395,  2409,  2410,  2412,  2417,  2419,  2421,  2423,  2425,  2430,
     1056    2431,  2433,  2435,  2440,  2442,  2444,  2450,  2452,  2454,  2458,
     1057    2460,  2462,  2464,  2478,  2479,  2481,  2486,  2488,  2490,  2492,
     1058    2494,  2499,  2500,  2502,  2504,  2509,  2511,  2513,  2519,  2520,
     1059    2522,  2531,  2534,  2536,  2539,  2541,  2543,  2556,  2557,  2559,
     1060    2564,  2566,  2568,  2570,  2572,  2577,  2578,  2580,  2582,  2587,
     1061    2589,  2597,  2598,  2599,  2604,  2605,  2609,  2611,  2613,  2615,
     1062    2617,  2619,  2626,  2628,  2630,  2632,  2634,  2636,  2638,  2640,
     1063    2642,  2644,  2649,  2651,  2653,  2658,  2684,  2685,  2687,  2691,
     1064    2692,  2696,  2698,  2700,  2702,  2704,  2706,  2713,  2715,  2717,
     1065    2719,  2721,  2723,  2728,  2733,  2735,  2737,  2755,  2757,  2762,
     1066    2763
    10591067};
    10601068#endif
     
    11041112  "exception_statement", "handler_list", "handler_clause",
    11051113  "finally_clause", "exception_declaration", "asm_statement",
    1106   "asm_operands_opt", "asm_operands_list", "asm_operand",
    1107   "asm_clobbers_list", "declaration_list_opt", "declaration_list",
    1108   "old_declaration_list_opt", "old_declaration_list",
    1109   "label_declaration_opt", "label_declaration_list", "label_list",
    1110   "declaration", "new_declaration", "new_variable_declaration",
    1111   "new_variable_specifier", "new_function_declaration",
    1112   "new_function_specifier", "new_function_return",
    1113   "new_typedef_declaration", "typedef_declaration", "typedef_expression",
    1114   "old_declaration", "declaring_list", "declaration_specifier",
    1115   "type_specifier", "type_qualifier_list_opt", "type_qualifier_list",
    1116   "type_qualifier", "type_qualifier_name", "$@1",
     1114  "asm_volatile_opt", "asm_operands_opt", "asm_operands_list",
     1115  "asm_operand", "asm_clobbers_list_opt", "label_list",
     1116  "declaration_list_opt", "declaration_list", "old_declaration_list_opt",
     1117  "old_declaration_list", "local_label_declaration_opt",
     1118  "local_label_declaration_list", "local_label_list", "declaration",
     1119  "new_declaration", "new_variable_declaration", "new_variable_specifier",
     1120  "new_function_declaration", "new_function_specifier",
     1121  "new_function_return", "new_typedef_declaration", "typedef_declaration",
     1122  "typedef_expression", "old_declaration", "declaring_list",
     1123  "declaration_specifier", "type_specifier", "type_qualifier_list_opt",
     1124  "type_qualifier_list", "type_qualifier", "type_qualifier_name", "$@1",
    11171125  "declaration_qualifier_list", "storage_class_list", "storage_class",
    11181126  "storage_class_name", "basic_type_name", "basic_declaration_specifier",
     
    11981206       0,   125,   126,   127,   128,   128,   128,   129,   129,   129,
    11991207     130,   130,   131,   132,   132,   133,   133,   134,   134,   134,
    1200      134,   134,   134,   135,   135,   135,   135,   135,   135,   135,
    1201      135,   135,   135,   136,   136,   137,   137,   137,   137,   137,
    1202      138,   138,   139,   139,   139,   139,   139,   140,   140,   140,
     1208     134,   135,   135,   135,   135,   135,   135,   135,   135,   135,
     1209     135,   136,   136,   137,   137,   137,   137,   137,   138,   138,
     1210     139,   139,   139,   139,   139,   140,   140,   140,   140,   140,
    12031211     140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
    12041212     140,   140,   141,   141,   141,   141,   142,   142,   142,   143,
     
    12171225     183,   183,   184,   184,   184,   185,   185,   185,   186,   186,
    12181226     187,   188,   188,   188,   188,   188,   189,   189,   189,   189,
    1219      190,   190,   191,   191,   192,   193,   193,   194,   194,   195,
    1220      195,   196,   196,   197,   197,   198,   198,   199,   199,   200,
    1221      200,   201,   201,   202,   202,   202,   202,   202,   203,   203,
    1222      203,   204,   204,   204,   205,   205,   205,   205,   205,   206,
    1223      206,   206,   207,   207,   208,   208,   208,   209,   209,   209,
    1224      209,   209,   210,   210,   211,   211,   211,   211,   212,   212,
    1225      213,   213,   213,   213,   214,   214,   214,   214,   215,   215,
    1226      216,   216,   217,   217,   218,   218,   218,   218,   218,   219,
    1227      218,   220,   220,   220,   221,   221,   222,   223,   223,   223,
    1228      223,   223,   223,   223,   223,   224,   224,   224,   224,   224,
    1229      224,   224,   224,   224,   224,   224,   224,   225,   225,   225,
    1230      225,   225,   226,   226,   227,   227,   227,   227,   228,   228,
    1231      228,   228,   229,   229,   229,   229,   230,   230,   230,   231,
    1232      231,   231,   231,   232,   232,   232,   233,   233,   234,   234,
    1233      234,   234,   234,   235,   235,   236,   236,   237,   237,   237,
    1234      237,   238,   238,   238,   238,   239,   239,   240,   240,   240,
    1235      240,   240,   241,   241,   242,   243,   244,   244,   244,   245,
    1236      245,   246,   246,   247,   247,   248,   248,   248,   248,   248,
    1237      249,   249,   249,   249,   250,   250,   251,   251,   252,   252,
    1238      253,   253,   253,   253,   254,   254,   254,   254,   254,   255,
    1239      255,   255,   255,   255,   256,   256,   257,   257,   258,   258,
    1240      259,   259,   259,   260,   260,   260,   261,   261,   261,   262,
    1241      262,   262,   263,   263,   263,   263,   264,   264,   265,   265,
    1242      266,   266,   266,   266,   267,   267,   268,   268,   269,   269,
    1243      269,   269,   269,   270,   270,   270,   270,   271,   271,   271,
    1244      272,   273,   273,   275,   274,   274,   276,   276,   276,   277,
    1245      277,   278,   278,   278,   279,   279,   279,   279,   280,   280,
    1246      280,   281,   281,   282,   282,   283,   284,   283,   285,   285,
    1247      286,   286,   287,   287,   287,   288,   288,   289,   289,   290,
    1248      290,   291,   291,   292,   292,   292,   293,   292,   292,   294,
    1249      294,   294,   295,   295,   295,   295,   295,   295,   295,   295,
    1250      295,   296,   296,   296,   297,   298,   298,   299,   299,   300,
    1251      300,   301,   302,   302,   303,   303,   303,   304,   304,   304,
    1252      304,   305,   305,   305,   305,   306,   306,   307,   307,   307,
    1253      308,   308,   308,   308,   309,   309,   310,   310,   310,   311,
    1254      311,   311,   312,   312,   312,   313,   313,   313,   314,   314,
    1255      314,   315,   315,   315,   316,   316,   316,   317,   317,   317,
    1256      318,   318,   318,   318,   319,   319,   320,   320,   320,   321,
    1257      321,   321,   321,   322,   322,   322,   323,   323,   323,   323,
    1258      324,   324,   324,   325,   325,   325,   325,   326,   326,   326,
    1259      327,   327,   327,   327,   328,   328,   329,   329,   329,   330,
    1260      330,   331,   331,   332,   332,   332,   333,   333,   333,   333,
    1261      333,   334,   334,   334,   334,   335,   335,   335,   336,   336,
    1262      336,   337,   337,   337,   337,   338,   338,   338,   339,   339,
    1263      339,   339,   339,   340,   340,   340,   340,   341,   341,   341,
    1264      342,   342,   342,   343,   343,   343,   343,   343,   343,   344,
    1265      344,   344,   345,   345,   345,   345,   345,   346,   346,   346,
    1266      346,   347,   347,   348,   348,   348,   349,   349,   350,   350,
    1267      350,   350,   350,   350,   351,   351,   351,   351,   351,   351,
    1268      351,   351,   351,   351,   352,   352,   352,   352,   353,   353,
    1269      353,   354,   354,   355,   355,   355,   355,   355,   355,   356,
    1270      356,   356,   356,   356,   356,   357,   358,   358,   358,   359,
    1271      359,   360,   360
     1227     189,   190,   190,   191,   191,   192,   192,   193,   193,   194,
     1228     194,   194,   195,   195,   196,   196,   197,   197,   198,   198,
     1229     199,   199,   200,   200,   201,   201,   202,   202,   203,   203,
     1230     204,   204,   204,   204,   204,   205,   205,   205,   206,   206,
     1231     206,   207,   207,   207,   207,   207,   208,   208,   208,   209,
     1232     209,   210,   210,   210,   211,   211,   211,   211,   211,   212,
     1233     212,   213,   213,   213,   213,   214,   214,   215,   215,   215,
     1234     215,   216,   216,   216,   216,   217,   217,   218,   218,   219,
     1235     219,   220,   220,   220,   220,   220,   221,   220,   222,   222,
     1236     222,   223,   223,   224,   225,   225,   225,   225,   225,   225,
     1237     225,   225,   226,   226,   226,   226,   226,   226,   226,   226,
     1238     226,   226,   226,   226,   227,   227,   227,   227,   227,   228,
     1239     228,   229,   229,   229,   229,   230,   230,   230,   230,   231,
     1240     231,   231,   231,   232,   232,   232,   233,   233,   233,   233,
     1241     234,   234,   234,   235,   235,   236,   236,   236,   236,   236,
     1242     237,   237,   238,   238,   239,   239,   239,   239,   240,   240,
     1243     240,   240,   241,   241,   242,   242,   242,   242,   242,   243,
     1244     243,   244,   245,   246,   246,   246,   247,   247,   248,   248,
     1245     249,   249,   250,   250,   250,   250,   250,   251,   251,   251,
     1246     251,   252,   252,   253,   253,   254,   254,   255,   255,   255,
     1247     255,   256,   256,   256,   256,   256,   257,   257,   257,   257,
     1248     257,   258,   258,   259,   259,   260,   260,   261,   261,   261,
     1249     262,   262,   262,   263,   263,   263,   264,   264,   264,   265,
     1250     265,   265,   265,   266,   266,   267,   267,   268,   268,   268,
     1251     268,   269,   269,   270,   270,   271,   271,   271,   271,   271,
     1252     271,   272,   272,   272,   272,   273,   273,   273,   274,   275,
     1253     275,   277,   276,   276,   278,   278,   278,   279,   279,   280,
     1254     280,   280,   281,   281,   281,   281,   282,   282,   282,   283,
     1255     283,   284,   284,   285,   286,   285,   287,   287,   288,   288,
     1256     289,   289,   289,   290,   290,   291,   291,   292,   292,   293,
     1257     293,   294,   294,   294,   295,   294,   294,   296,   296,   296,
     1258     297,   297,   297,   297,   297,   297,   297,   297,   297,   298,
     1259     298,   298,   299,   300,   300,   301,   301,   302,   302,   303,
     1260     304,   304,   305,   305,   305,   306,   306,   306,   306,   307,
     1261     307,   307,   307,   308,   308,   309,   309,   309,   310,   310,
     1262     310,   310,   311,   311,   312,   312,   312,   313,   313,   313,
     1263     314,   314,   314,   315,   315,   315,   316,   316,   316,   317,
     1264     317,   317,   318,   318,   318,   319,   319,   319,   320,   320,
     1265     320,   320,   321,   321,   322,   322,   322,   323,   323,   323,
     1266     323,   324,   324,   324,   325,   325,   325,   325,   326,   326,
     1267     326,   327,   327,   327,   327,   328,   328,   328,   329,   329,
     1268     329,   329,   330,   330,   331,   331,   331,   332,   332,   333,
     1269     333,   334,   334,   334,   335,   335,   335,   335,   335,   336,
     1270     336,   336,   336,   337,   337,   337,   338,   338,   338,   339,
     1271     339,   339,   339,   340,   340,   340,   341,   341,   341,   341,
     1272     341,   342,   342,   342,   342,   343,   343,   343,   344,   344,
     1273     344,   345,   345,   345,   345,   345,   345,   346,   346,   346,
     1274     347,   347,   347,   347,   347,   348,   348,   348,   348,   349,
     1275     349,   350,   350,   350,   351,   351,   352,   352,   352,   352,
     1276     352,   352,   353,   353,   353,   353,   353,   353,   353,   353,
     1277     353,   353,   354,   354,   354,   354,   355,   355,   355,   356,
     1278     356,   357,   357,   357,   357,   357,   357,   358,   358,   358,
     1279     358,   358,   358,   359,   360,   360,   360,   361,   361,   362,
     1280     362
    12721281};
    12731282
     
    12761285{
    12771286       0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
    1278        1,     1,     1,     1,     1,     1,     2,     1,     1,     1,
    1279        1,     3,     3,     1,     6,     4,     3,     7,     3,     7,
    1280        2,     2,     7,     1,     3,     0,     1,     3,     7,     9,
    1281        1,     3,     1,     3,     7,     3,     7,     1,     2,     2,
     1287       1,     1,     1,     1,     1,     1,     2,     1,     1,     3,
     1288       3,     1,     6,     4,     3,     7,     3,     7,     2,     2,
     1289       7,     1,     3,     0,     1,     3,     7,     9,     1,     3,
     1290       1,     3,     7,     3,     7,     1,     1,     1,     2,     2,
    12821291       2,     2,     2,     2,     2,     4,     1,     4,     4,     2,
    12831292       4,     2,     1,     1,     1,     1,     1,     4,     4,     1,
     
    12961305       3,     2,     3,     3,     4,     1,     5,     6,     9,    10,
    12971306       2,     1,     2,     2,     2,     1,     6,     8,    10,    12,
    1298        0,     1,     1,     3,     4,     1,     3,     1,     1,     1,
    1299        3,     1,     1,     1,     3,     0,     1,     3,     4,     1,
    1300        3,     1,     1,     3,     3,     3,     3,     3,     2,     3,
    1301        6,     3,     3,     4,     1,     2,     2,     3,     5,     8,
    1302        7,     7,     5,     9,     2,     2,     5,     3,     5,     4,
    1303        3,     4,     4,     7,     3,     3,     3,     3,     4,     6,
    1304        1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
    1305        1,     2,     1,     1,     1,     1,     1,     1,     1,     0,
    1306        5,     1,     2,     3,     1,     2,     1,     1,     1,     1,
     1307      14,     0,     1,     0,     1,     1,     3,     4,     7,     0,
     1308       1,     3,     1,     3,     1,     1,     1,     3,     1,     1,
     1309       1,     3,     0,     1,     3,     4,     1,     3,     1,     1,
     1310       3,     3,     3,     3,     3,     2,     3,     6,     3,     3,
     1311       4,     1,     2,     2,     3,     5,     8,     7,     7,     5,
     1312       9,     2,     2,     5,     3,     5,     4,     3,     4,     4,
     1313       7,     3,     3,     3,     3,     4,     6,     1,     1,     1,
     1314       1,     1,     1,     1,     1,     0,     1,     1,     2,     1,
     1315       1,     1,     1,     1,     1,     1,     0,     5,     1,     2,
     1316       3,     1,     2,     1,     1,     1,     1,     1,     1,     1,
    13071317       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1308        1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
    1309        3,     3,     1,     3,     1,     2,     2,     2,     4,     4,
    1310        4,     4,     1,     2,     2,     3,     1,     2,     2,     1,
    1311        2,     2,     3,     1,     2,     2,     1,     1,     4,     2,
    1312        5,     7,     2,     2,     2,     1,     2,     2,     3,     2,
    1313        3,     1,     2,     3,     2,     2,     4,     0,     1,     2,
    1314        2,     1,     0,     1,     2,     2,     5,     6,     2,     2,
    1315        4,     0,     2,     0,     1,     1,     1,     5,     5,     5,
    1316        1,     5,     5,     9,     1,     5,     0,     1,     1,     5,
    1317        1,     1,     5,     5,     1,     3,     3,     4,     1,     1,
    1318        1,     1,     2,     1,     3,     3,     1,     2,     1,     3,
    1319        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1320        1,     2,     1,     1,     1,     2,     0,     2,     1,     4,
    1321        1,     2,     3,     4,     2,     2,     1,     2,     2,     5,
    1322        5,     7,     6,     1,     2,     2,     3,     1,     2,     2,
    1323        4,     2,     4,     0,     4,     2,     1,     1,     1,     0,
    1324        2,     5,     5,    13,     1,     1,     3,     3,     2,     3,
    1325        3,     2,     4,     1,     6,     9,     0,    11,     1,     3,
    1326        3,     3,     1,     1,     5,     2,     5,     0,     1,     1,
    1327        3,     0,     1,     1,     1,     1,     0,     6,     2,     1,
    1328        2,     4,     2,     3,     3,     3,     4,     5,     5,     5,
    1329        6,     1,     1,     1,     3,     0,     5,     0,     1,     1,
    1330        2,     6,     1,     3,     0,     1,     4,     1,     1,     1,
    1331        1,     2,     1,     2,     2,     1,     3,     2,     3,     3,
    1332        2,     4,     4,     3,     8,     3,     2,     1,     2,     6,
    1333        8,     3,     2,     3,     3,     4,     4,     3,     1,     1,
    1334        1,     4,     6,     3,     2,     3,     3,     4,     4,     3,
    1335        2,     1,     2,     2,     1,     3,     2,     3,     3,     2,
    1336        4,     4,     3,     6,     8,     3,     2,     1,     2,     2,
    1337        2,     3,     3,     2,     4,     4,     3,     6,     8,     3,
    1338        2,     1,     2,     2,     1,     1,     2,     3,     3,     2,
    1339        4,     6,     8,     1,     2,     2,     1,     2,     2,     3,
    1340        3,     1,     4,     4,     3,     5,     8,     3,     2,     3,
    1341        1,     5,     5,     6,     6,     1,     2,     2,     1,     2,
    1342        2,     3,     3,     1,     4,     4,     3,     5,     8,     3,
    1343        1,     2,     1,     2,     6,     5,     6,     7,     7,     1,
    1344        2,     2,     1,     2,     2,     3,     3,     1,     4,     4,
    1345        3,     8,     3,     1,     1,     2,     1,     1,     2,     3,
    1346        2,     3,     2,     3,     3,     2,     4,     3,     2,     3,
    1347        2,     4,     3,     2,     6,     6,     6,     7,     1,     2,
    1348        1,     1,     1,     2,     3,     2,     3,     2,     3,     3,
    1349        4,     2,     3,     4,     2,     5,     5,     6,     6,     0,
    1350        1,     0,     2
     1318       1,     1,     1,     1,     1,     2,     2,     3,     3,     1,
     1319       3,     1,     2,     2,     2,     4,     4,     4,     4,     1,
     1320       2,     2,     3,     1,     2,     2,     1,     2,     2,     3,
     1321       1,     2,     2,     1,     1,     4,     2,     5,     7,     2,
     1322       2,     2,     1,     2,     2,     3,     2,     3,     1,     2,
     1323       3,     2,     2,     4,     0,     1,     2,     2,     1,     0,
     1324       1,     2,     2,     5,     6,     2,     2,     4,     0,     2,
     1325       0,     1,     1,     1,     5,     5,     5,     1,     5,     5,
     1326       9,     1,     5,     0,     1,     1,     5,     1,     1,     5,
     1327       5,     1,     3,     3,     4,     1,     1,     1,     1,     2,
     1328       1,     3,     3,     1,     2,     1,     3,     1,     1,     1,
     1329       1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
     1330       1,     1,     2,     0,     2,     1,     4,     1,     2,     3,
     1331       4,     2,     2,     1,     2,     1,     2,     5,     5,     7,
     1332       6,     1,     2,     2,     3,     1,     2,     2,     4,     2,
     1333       4,     0,     4,     2,     1,     1,     1,     0,     2,     5,
     1334       5,    13,     1,     1,     3,     3,     2,     3,     3,     2,
     1335       4,     1,     6,     9,     0,    11,     1,     3,     3,     3,
     1336       1,     1,     5,     2,     5,     0,     1,     1,     3,     0,
     1337       1,     1,     1,     1,     0,     6,     2,     1,     2,     4,
     1338       2,     3,     3,     3,     4,     5,     5,     5,     6,     1,
     1339       1,     1,     3,     0,     5,     0,     1,     1,     2,     6,
     1340       1,     3,     0,     1,     4,     1,     1,     1,     1,     2,
     1341       1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
     1342       4,     3,     8,     3,     2,     1,     2,     6,     8,     3,
     1343       2,     3,     3,     4,     4,     3,     1,     1,     1,     4,
     1344       6,     3,     2,     3,     3,     4,     4,     3,     2,     1,
     1345       2,     2,     1,     3,     2,     3,     3,     2,     4,     4,
     1346       3,     6,     8,     3,     2,     1,     2,     2,     2,     3,
     1347       3,     2,     4,     4,     3,     6,     8,     3,     2,     1,
     1348       2,     2,     1,     1,     2,     3,     3,     2,     4,     6,
     1349       8,     1,     2,     2,     1,     2,     2,     3,     3,     1,
     1350       4,     4,     3,     5,     8,     3,     2,     3,     1,     5,
     1351       5,     6,     6,     1,     2,     2,     1,     2,     2,     3,
     1352       3,     1,     4,     4,     3,     5,     8,     3,     1,     2,
     1353       1,     2,     6,     5,     6,     7,     7,     1,     2,     2,
     1354       1,     2,     2,     3,     3,     1,     4,     4,     3,     8,
     1355       3,     1,     1,     2,     1,     1,     2,     3,     2,     3,
     1356       2,     3,     3,     2,     4,     3,     2,     3,     2,     4,
     1357       3,     2,     6,     6,     6,     7,     1,     2,     1,     1,
     1358       1,     2,     3,     2,     3,     2,     3,     3,     4,     2,
     1359       3,     4,     2,     5,     5,     6,     6,     0,     1,     0,
     1360       2
    13511361};
    13521362
     
    13561366static const yytype_uint16 yydefact[] =
    13571367{
    1358      278,   278,   299,   297,   300,   298,   301,   302,   284,   286,
    1359      285,     0,   287,   313,   305,   310,   308,   309,   307,   306,
    1360      311,   312,   314,   315,   316,   527,   527,   527,     0,     0,
    1361        0,   278,   278,   288,   303,   304,     7,   343,     0,     8,
    1362       13,    14,     0,     2,   278,   545,     9,   505,   503,   231,
    1363        3,   436,     3,   244,     0,     3,     3,     3,   232,     3,
    1364        0,     0,     0,   279,   280,   282,   278,   291,   294,   296,
    1365      324,   270,   317,   322,   271,   332,   272,   339,   336,   346,
    1366        0,     0,   347,   273,   453,   457,     3,     3,     0,     2,
    1367      499,   504,   509,   283,     0,     0,   527,   557,   527,     2,
    1368      568,   569,   570,   278,     0,   711,   712,     0,    12,   278,
    1369        0,   254,   255,     0,   279,   274,   275,   276,   277,   506,
    1370      289,   375,   528,   529,   353,   354,    12,   427,   428,    11,
    1371      423,   426,     0,   483,   478,   469,   427,   428,     0,     0,
    1372      508,     0,   279,   278,     0,     0,     0,     0,     0,     0,
    1373        0,     0,   278,   278,     2,     0,   713,   279,   562,   574,
    1374      717,   710,   708,   715,     0,     0,   238,     2,     0,   512,
    1375      421,   422,   420,     0,     0,     0,     0,   527,     0,   614,
    1376      615,     0,     0,   525,   521,   527,   542,   527,   527,   522,
    1377        2,   523,   527,   581,   527,   527,   584,     0,     0,     0,
    1378      278,   278,   297,   344,     2,   278,   245,   281,   292,   325,
    1379      337,   458,     0,     2,     0,   436,   246,   279,   318,   333,
    1380      340,   454,     0,     2,     0,   295,   319,   326,   327,     0,
    1381      334,   338,   341,   345,   428,   278,   278,   349,   352,     0,
    1382      378,   455,   459,     0,     0,     0,     1,   278,     2,   510,
    1383      556,   558,   278,     2,   721,   279,   724,   525,   525,   279,
    1384        0,     0,     0,   257,   527,   522,     2,   278,     0,     0,
    1385      278,   530,     2,   481,     2,   534,     0,     0,     0,     0,
    1386       17,    56,     4,     5,     6,    15,     0,     0,     0,   278,
    1387        2,     0,   278,    62,    63,    64,    65,    19,    18,    20,
    1388       23,    47,    66,     0,    69,    73,    76,    79,    84,    87,
    1389       89,    91,    93,    95,    97,   102,   475,   731,   434,   474,
    1390        0,   432,   433,     0,   546,   561,   564,   567,   573,   576,
    1391      579,   343,     0,     2,   719,     0,   278,   722,     2,   278,
    1392        3,   408,     0,   416,   279,   278,   291,   317,   271,   332,
    1393      339,     3,     3,   390,   394,   404,   409,   453,   278,   410,
    1394      686,   687,   278,   411,   413,   278,     2,   563,   575,   709,
    1395        2,     2,   233,     2,     0,     0,   438,   437,   137,     2,
    1396        2,   235,     2,     2,   234,     2,   265,     2,   266,     0,
    1397      264,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1398      547,   586,     0,   436,     2,   541,   550,   640,   543,   544,
    1399      513,   278,     2,   580,   589,   582,   583,     0,   260,   278,
    1400      278,   323,     0,   279,     0,   278,   714,   718,   716,   514,
    1401      278,   525,   239,   247,   293,     0,     2,   515,   278,   479,
    1402      320,   321,   267,   335,   342,     0,   278,     2,   367,   278,
    1403      355,     0,     0,   361,   708,   278,   729,   381,     0,   456,
    1404      480,   236,   237,   500,   278,   418,     0,   278,   221,     0,
    1405        2,   223,     0,   279,     0,   241,     2,   242,   262,     0,
    1406        0,     2,   278,   525,   278,   466,   468,   467,     0,     0,
    1407      731,     0,   278,     0,   278,   470,   278,   540,   538,   539,
    1408      537,     0,   532,   535,    66,   101,     0,   278,    54,    50,
    1409      278,    59,   278,   278,    48,    49,    61,     2,   124,     0,
    1410        0,   430,     0,   429,   108,   278,    52,    53,    16,     0,
    1411       30,    31,    35,     2,     0,   114,   115,   116,   117,   118,
    1412      119,   120,   121,   122,   123,     0,     0,    51,     0,     0,
     1368     285,   285,   306,   304,   307,   305,   308,   309,   291,   293,
     1369     292,     0,   294,   320,   312,   317,   315,   316,   314,   313,
     1370     318,   319,   321,   322,   323,   535,   535,   535,     0,     0,
     1371       0,   285,   211,   295,   310,   311,     7,   350,     0,     8,
     1372      13,    14,     0,     2,   285,   553,     9,   513,   511,   238,
     1373       3,   443,     3,   251,     0,     3,     3,     3,   239,     3,
     1374       0,     0,     0,   286,   287,   289,   285,   298,   301,   303,
     1375     331,   277,   324,   329,   278,   339,   279,   346,   343,   353,
     1376       0,     0,   354,   280,   461,   465,     3,     3,     0,     2,
     1377     507,   512,   517,   290,     0,     0,   535,   565,   535,     2,
     1378     576,   577,   578,   285,     0,   719,   720,     0,    12,   285,
     1379       0,   261,   262,     0,   286,   281,   282,   283,   284,   514,
     1380     296,   382,   536,   537,   360,   361,    12,   434,   435,    11,
     1381     430,   433,     0,   491,   486,   477,   434,   435,     0,     0,
     1382     516,   212,     0,   285,     0,     0,     0,     0,     0,     0,
     1383       0,     0,   285,   285,     2,     0,   721,   286,   570,   582,
     1384     725,   718,   716,   723,     0,     0,   245,     2,     0,   520,
     1385     428,   429,   427,     0,     0,     0,     0,   535,     0,   622,
     1386     623,     0,     0,   533,   529,   535,   550,   535,   535,   530,
     1387       2,   531,   535,   589,   535,   535,   592,     0,     0,     0,
     1388     285,   285,   304,   351,     2,   285,   252,   288,   299,   332,
     1389     344,   466,     0,     2,     0,   443,   253,   286,   325,   340,
     1390     347,   462,     0,     2,     0,   302,   326,   333,   334,     0,
     1391     341,   345,   348,   352,   435,   285,   285,   356,   359,     0,
     1392     385,   463,   467,     0,     0,     0,     1,   285,     2,   518,
     1393     564,   566,   285,     2,   729,   286,   732,   533,   533,   286,
     1394       0,     0,     0,   264,   535,   530,     2,   285,     0,     0,
     1395     285,   538,     2,   489,     2,   542,     0,     0,     0,     0,
     1396       0,    17,    56,     4,     5,     6,    15,     0,     0,     0,
     1397     285,     2,     0,   285,    62,    63,    64,    65,    46,    18,
     1398      47,    21,    45,    66,     0,    69,    73,    76,    79,    84,
     1399      87,    89,    91,    93,    95,    97,   102,   483,   739,   441,
     1400     482,     0,   439,   440,     0,   554,   569,   572,   575,   581,
     1401     584,   587,   350,     0,     2,   727,     0,   285,   730,     2,
     1402     285,     3,   415,     0,   423,   286,   285,   298,   324,   278,
     1403     339,   346,     3,     3,   397,   401,   411,   416,   461,   285,
     1404     417,   694,   695,   285,   418,   420,   285,     2,   571,   583,
     1405     717,     2,     2,   240,     2,     0,     0,   445,   444,   137,
     1406       2,     2,   242,     2,     2,   241,     2,   272,     2,   273,
     1407       0,   271,     0,     0,     0,     0,     0,     0,     0,     0,
     1408       0,   555,   594,     0,   443,     2,   549,   558,   648,   551,
     1409     552,   521,   285,     2,   588,   597,   590,   591,     0,   267,
     1410     285,   285,   330,   286,     0,   286,     0,   285,   722,   726,
     1411     724,   522,   285,   533,   246,   254,   300,     0,     2,   523,
     1412     285,   487,   327,   328,   274,   342,   349,     0,   285,     2,
     1413     374,   285,   362,     0,     0,   368,   716,   285,   737,   388,
     1414       0,   464,   488,   243,   244,   508,   285,   425,     0,   285,
     1415     228,     0,     2,   230,     0,   286,     0,   248,     2,   249,
     1416     269,     0,     0,     2,   285,   533,   285,   474,   476,   475,
     1417       0,     0,   739,     0,   285,     0,   285,   478,   285,   548,
     1418     546,   547,   545,     0,   540,   543,     0,     0,   285,    54,
     1419      66,    50,   285,    59,   285,   285,    48,    49,    61,     2,
     1420     124,     0,     0,   437,     0,   436,   108,   285,    52,    53,
     1421      16,     0,    28,    29,    33,     2,     0,   114,   115,   116,
     1422     117,   118,   119,   120,   121,   122,   123,     0,     0,    51,
    14131423       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1414        0,     0,     0,     0,     0,     0,     0,     0,   105,     2,
    1415      626,   435,   623,   527,   527,   631,   460,   278,     2,   565,
    1416      566,     0,   577,   578,     0,     2,   720,   723,   108,   278,
    1417        2,   278,     0,   688,   279,   692,   683,   684,   690,     0,
    1418        2,     2,   648,   527,   731,   597,   527,   527,   731,   527,
    1419      611,   527,   527,   662,   417,   645,   527,   527,   653,   660,
    1420      278,   412,   279,     0,     0,   278,   698,   279,   703,   731,
    1421      695,   278,   700,   731,   278,   278,   278,     0,   108,     0,
    1422       17,     2,     0,     0,   440,   729,     0,     0,   446,   225,
    1423        0,   278,     0,     0,     0,   525,   549,   553,   555,   585,
    1424      588,   592,   595,   548,   587,     0,   268,   638,     0,   278,
    1425      261,     0,     0,     0,     0,   259,     2,     0,   243,   516,
    1426      278,     0,     0,     0,     0,   278,   278,     0,     0,   672,
    1427      365,   368,   372,   527,   372,   677,   371,   669,   527,   527,
    1428      348,   356,   364,   357,   527,   359,   362,   278,   730,     0,
    1429        0,   379,   729,   279,     3,   397,     3,   401,   400,   571,
    1430        0,   511,   278,     3,     3,   278,   416,   279,     3,   410,
    1431      411,     2,     0,     0,     0,   465,   290,   278,   461,   463,
    1432        3,     2,     2,     0,   482,     3,     0,   534,   126,     0,
    1433      210,     0,     0,     2,     0,     0,    36,     0,     0,   108,
    1434      278,    21,     0,    22,     0,   672,   431,     0,   106,     3,
    1435        2,    28,     2,     0,    33,     0,     2,    26,   103,   104,
    1436       70,    71,    72,    74,    75,    77,    78,    82,    83,    80,
    1437       81,    85,    86,    88,    90,    92,    94,    96,     0,     0,
    1438      732,   278,     0,     0,     0,   627,   628,   624,   625,   477,
    1439      476,   278,     0,     3,   278,   694,   278,   699,   279,   278,
    1440      278,   278,   642,   685,   641,     2,   278,     0,     0,     0,
    1441        0,     0,     0,     0,     0,   663,     0,   649,   600,   616,
    1442      650,     2,   596,   603,   414,   598,   599,   415,     2,   610,
    1443      619,   612,   613,   646,   647,   661,   689,   693,   691,   731,
    1444      252,     2,   725,     2,   405,   697,   702,   406,     0,   384,
    1445        3,     3,     3,     3,   436,     3,     0,     2,   448,   445,
    1446      730,     0,   441,     2,   444,   447,     0,   278,   226,   248,
    1447        3,   256,   258,     0,   436,     2,   551,   552,     2,   590,
    1448      591,     0,   639,   517,     3,   329,   328,   331,   330,   278,
    1449      518,     0,   519,   278,   358,   360,     2,     0,     0,     0,
    1450        0,   374,   673,   674,   369,   373,   370,   670,   671,   363,
    1451      367,   350,   381,   376,   382,     0,     0,     0,   419,   224,
    1452        0,     0,     3,     2,   648,   412,     0,   507,     0,   731,
    1453      469,     0,   278,   278,   278,     0,   531,   533,   127,     0,
    1454      206,     0,     0,   211,   212,    55,    60,   278,     0,    58,
    1455       57,     0,   125,   673,     0,    67,    68,   107,   112,     3,
    1456      106,     0,     0,     0,    25,    35,     3,     0,    99,     0,
    1457        3,   630,   634,   637,   629,     3,   572,     3,   696,   701,
    1458        2,   278,     3,     3,   279,     0,     3,   602,   606,   609,
    1459      618,   652,   656,   659,   278,     3,   601,   617,   651,   278,
    1460      278,   407,   278,   278,   726,     0,     0,     0,     0,   240,
    1461        0,   101,     0,     3,     3,     0,   442,     0,   439,     0,
    1462        0,   229,   278,     0,     0,   126,     0,     0,     0,     0,
    1463        0,   126,     0,     0,     0,     2,     0,     0,     3,   128,
    1464      129,     2,   139,   130,   131,   132,   133,   134,   135,   141,
    1465      143,     0,     0,     0,   269,   278,   278,   527,     0,   520,
    1466      278,   108,   676,   680,   682,   675,   366,   380,   377,   559,
    1467        2,   644,   643,     0,   649,     2,   462,   464,   484,     3,
    1468      492,   493,     0,     2,   488,     3,     3,     0,     0,   536,
    1469        0,     0,   210,     0,     3,    37,   729,   106,     0,     3,
    1470      641,    42,     3,    40,     3,    34,     0,     3,    98,   100,
    1471        0,     2,   632,   633,     0,     0,   278,     0,     0,     0,
    1472        3,   618,     0,     2,   604,   605,     2,   620,     2,   654,
    1473      655,     0,     0,     3,     0,     3,     3,     3,     3,   392,
    1474      391,   395,     2,     2,   728,   727,   109,     0,     0,     0,
    1475        0,     3,   443,     3,     0,   227,   142,     3,   279,   278,
     1424       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1425     105,     2,   634,   442,   631,   535,   535,   639,   468,   285,
     1426       2,   573,   574,     0,   585,   586,     0,     2,   728,   731,
     1427     108,   285,     2,   285,     0,   696,   286,   700,   691,   692,
     1428     698,     0,     2,     2,   656,   535,   739,   605,   535,   535,
     1429     739,   535,   619,   535,   535,   670,   424,   653,   535,   535,
     1430     661,   668,   285,   419,   286,     0,     0,   285,   706,   286,
     1431     711,   739,   703,   285,   708,   739,   285,   285,   285,     0,
     1432     108,     0,    17,     5,     2,     0,     0,   447,   737,     0,
     1433       0,   453,   232,     0,   285,     0,     0,     0,   533,   557,
     1434     561,   563,   593,   596,   600,   603,   556,   595,     0,   275,
     1435     646,     0,   285,   268,     0,     0,     0,     0,   266,     2,
     1436       0,   250,   524,   285,     0,     0,     0,     0,   285,   285,
     1437       0,     0,   680,   372,   375,   379,   535,   379,   685,   378,
     1438     677,   535,   535,   355,   363,   371,   364,   535,   366,   369,
     1439     285,   738,     0,     0,   386,   737,   286,     3,   404,     3,
     1440     408,   407,   579,     0,   519,   285,     3,     3,   285,   423,
     1441     286,     3,   417,   418,     2,     0,     0,     0,   473,   297,
     1442     285,   469,   471,     3,     2,     2,     0,   490,     3,     0,
     1443     542,   126,     0,     0,   213,     0,     0,     2,     0,     0,
     1444      34,     0,     0,   108,   285,    19,     0,    20,     0,   680,
     1445     438,     0,   106,     3,     2,    26,     2,     0,    31,     0,
     1446       2,    24,   103,   104,    70,    71,    72,    74,    75,    77,
     1447      78,    82,    83,    80,    81,    85,    86,    88,    90,    92,
     1448      94,    96,     0,     0,   740,   285,     0,     0,     0,   635,
     1449     636,   632,   633,   485,   484,   285,     0,     3,   285,   702,
     1450     285,   707,   286,   285,   285,   285,   650,   693,   649,     2,
     1451     285,     0,     0,     0,     0,     0,     0,     0,     0,   671,
     1452       0,   657,   608,   624,   658,     2,   604,   611,   421,   606,
     1453     607,   422,     2,   618,   627,   620,   621,   654,   655,   669,
     1454     697,   701,   699,   739,   259,     2,   733,     2,   412,   705,
     1455     710,   413,     0,   391,     3,     3,     3,     3,   443,     3,
     1456       0,     2,   456,   452,   738,     0,   448,   455,     2,   451,
     1457     454,     0,   285,   233,   255,     3,   263,   265,     0,   443,
     1458       2,   559,   560,     2,   598,   599,     0,   647,   525,     3,
     1459     336,   335,   338,   337,   285,   526,     0,   527,   285,   365,
     1460     367,     2,     0,     0,     0,     0,   101,   381,   681,   682,
     1461     376,   380,   377,   678,   679,   370,   374,   357,   388,   383,
     1462     389,     0,     0,     0,   426,   231,     0,     0,     3,     2,
     1463     656,   419,     0,   515,     0,   739,   477,     0,   285,   285,
     1464     285,     0,   539,   541,   127,     0,     0,   206,     0,     0,
     1465       0,   214,   215,    55,    60,   285,     0,    58,    57,     0,
     1466     125,   681,     0,    67,    68,   107,   112,     3,   106,     0,
     1467       0,     0,    23,    33,     3,     0,    99,     0,     3,   638,
     1468     642,   645,   637,     3,   580,     3,   704,   709,     2,   285,
     1469       3,     3,   286,     0,     3,   610,   614,   617,   626,   660,
     1470     664,   667,   285,     3,   609,   625,   659,   285,   285,   414,
     1471     285,   285,   734,     0,     0,     0,     0,   247,     0,   101,
     1472       0,     3,     3,     0,   449,     0,   446,     0,     0,   236,
     1473     285,     0,     0,   126,     0,     0,     0,     0,     0,   126,
     1474       0,     0,     0,     2,     0,     0,     3,   128,   129,     2,
     1475     139,   130,   131,   132,   133,   134,   135,   141,   143,     0,
     1476       0,     0,   276,   285,   285,   535,     0,   528,   285,   108,
     1477     684,   688,   690,   683,   373,   387,   384,   567,     2,   652,
     1478     651,     0,   657,     2,   470,   472,   492,     3,   500,   501,
     1479       0,     2,   496,     3,     3,     0,     0,   544,   213,     0,
     1480       0,     0,   213,     0,     3,    35,   737,   106,     0,     3,
     1481     649,    40,     3,    38,     3,    32,     0,     3,    98,   100,
     1482       0,     2,   640,   641,     0,     0,   285,     0,     0,     0,
     1483       3,   626,     0,     2,   612,   613,     2,   628,     2,   662,
     1484     663,     0,     0,     3,     0,     3,     3,     3,     3,   399,
     1485     398,   402,     2,     2,   736,   735,   109,     0,     0,     0,
     1486       0,     3,   450,     3,     0,   234,   142,     3,   286,   285,
    14761487       0,     0,     0,     0,     2,   187,     0,   185,     0,     0,
    1477        0,     0,     0,     0,   191,     0,   108,   527,   147,   144,
    1478      278,     0,     0,   251,   263,     3,     3,   526,   593,   351,
    1479        2,   678,   679,   278,   250,   278,     0,   495,   472,   278,
    1480        0,     0,   471,   486,     0,   207,     0,   213,   106,     0,
    1481        0,   113,   110,     0,     0,     0,     0,     0,     0,    24,
    1482        0,   635,   278,   560,   249,   704,   705,   706,     0,   657,
    1483      278,   278,   278,     3,     3,     0,   665,     0,     0,     0,
    1484        0,   278,   278,     3,   524,   109,   450,     0,     0,   230,
    1485      279,     0,     0,     0,     0,   278,   188,   186,     0,   183,
    1486      189,     0,     0,     0,   192,   195,   193,   190,   126,   140,
    1487      138,   228,     0,     0,   278,   399,   403,   402,     0,   489,
    1488        2,   490,     2,   491,   485,   278,   214,     0,     0,     3,
    1489      641,    32,   111,     2,    45,     2,    43,    41,    29,   109,
    1490       27,     3,   707,     3,     3,     3,     0,     0,   664,   666,
    1491      607,   621,   253,     2,   389,     3,   388,     0,   452,   449,
    1492      126,     0,     0,   126,     3,     0,   126,   184,     0,     2,
    1493      200,   194,     0,   136,   554,   594,     3,     2,     0,     0,
    1494        2,   208,   215,     0,     0,     0,     0,     0,     0,     0,
    1495        0,     0,   667,   668,   278,     0,   451,   148,     0,     0,
    1496        2,   161,   126,   150,     0,   178,     0,   126,     0,     2,
    1497      152,     0,     2,     2,     0,   278,   494,   496,   487,     0,
    1498        0,   111,    38,     3,     3,   636,   608,   622,   658,   393,
    1499      126,   154,   157,     0,   156,   160,     3,   163,   162,     0,
    1500      126,   180,   126,     3,     0,   278,     0,     2,   681,     2,
    1501      209,   216,     0,     0,     0,   149,     0,     0,   159,   217,
    1502      164,     2,   219,   179,     0,   182,   168,   196,     3,   201,
    1503      205,     0,   278,     0,    39,    46,    44,   155,   158,   126,
    1504        0,   165,   278,   126,   126,     0,   169,     0,     0,   672,
    1505      202,   203,   204,   197,     3,   278,   145,   166,   151,   126,
    1506      220,   181,   176,   174,   170,   153,   126,     0,   673,     0,
    1507        0,   146,   167,   177,   171,   175,   174,   172,     3,     0,
    1508      473,   173,   198,     3,   199
     1488       0,     0,     0,     0,   191,     0,   108,   535,   147,   144,
     1489     285,     0,     0,   258,   270,     3,     3,   534,   601,   358,
     1490       2,   686,   687,   285,   257,   285,     0,   503,   480,   285,
     1491       0,     0,   479,   494,     0,     0,     0,   207,     0,   216,
     1492     106,     0,     0,   113,   110,     0,     0,     0,     0,     0,
     1493       0,    22,     0,   643,   285,   568,   256,   712,   713,   714,
     1494       0,   665,   285,   285,   285,     3,     3,     0,   673,     0,
     1495       0,     0,     0,   285,   285,     3,   532,   457,   458,     0,
     1496       0,   237,   286,     0,     0,     0,     0,   285,   188,   186,
     1497       0,   183,   189,     0,     0,     0,   192,   195,   193,   190,
     1498     126,   140,   138,   235,     0,     0,   285,   406,   410,   409,
     1499       0,   497,     2,   498,     2,   499,   493,   285,   219,     0,
     1500     217,     0,   219,     3,   649,    30,   111,     2,    43,     2,
     1501      41,    39,    27,   109,    25,     3,   715,     3,     3,     3,
     1502       0,     0,   672,   674,   615,   629,   260,     2,   396,     3,
     1503     395,     0,   460,   457,   126,     0,     0,   126,     3,     0,
     1504     126,   184,     0,     2,   200,   194,     0,   136,   562,   602,
     1505       3,     2,     0,     0,     2,   220,     0,     0,   208,     0,
     1506       0,     0,     0,     0,     0,     0,     0,     0,   675,   676,
     1507     285,     0,   459,   148,     0,     0,     2,   161,   126,   150,
     1508       0,   178,     0,   126,     0,     2,   152,     0,     2,     2,
     1509       0,   285,   502,   504,   495,     0,     0,     0,     0,   111,
     1510      36,     3,     3,   644,   616,   630,   666,   400,   126,   154,
     1511     157,     0,   156,   160,     3,   163,   162,     0,   126,   180,
     1512     126,     3,     0,   285,     0,     2,   689,     2,   221,   222,
     1513       0,   218,   209,     0,     0,     0,   149,     0,     0,   159,
     1514     224,   164,     2,   226,   179,     0,   182,   168,   196,     3,
     1515     201,   205,     0,   285,     0,     0,     0,    37,    44,    42,
     1516     155,   158,   126,     0,   165,   285,   126,   126,     0,   169,
     1517       0,     0,   680,   202,   203,   204,   197,     3,   285,   210,
     1518     223,   145,   166,   151,   126,   227,   181,   176,   174,   170,
     1519     153,   126,     0,   681,     0,     0,   146,   167,   177,   171,
     1520     175,   174,   172,     3,     0,   481,   173,   198,     3,   199
    15091521};
    15101522
     
    15121524static const yytype_int16 yydefgoto[] =
    15131525{
    1514       -1,   826,   468,   297,    45,   130,   131,   298,   299,   300,
    1515      301,   773,   755,  1122,  1123,   302,   303,   304,   305,   306,
    1516      307,   308,   309,   310,   311,   312,   313,   314,   315,  1032,
    1517      518,   978,   317,   979,   546,   958,  1057,  1476,  1059,  1060,
    1518     1061,  1062,  1477,  1063,  1064,  1412,  1413,  1381,  1382,  1383,
    1519     1460,  1461,  1465,  1466,  1494,  1495,  1065,  1345,  1066,  1067,
    1520     1284,  1285,  1286,  1448,  1068,   962,   963,   964,  1363,  1440,
    1521     1441,   469,   470,   887,   888,  1040,    48,    49,    50,    51,
    1522       52,   341,   155,    55,    56,    57,    58,    59,   343,    61,
    1523       62,   259,    64,    65,   270,   345,   346,    68,    69,    70,
    1524       71,   115,    73,   200,   348,   116,    76,   117,    78,    79,
    1525       80,   449,   450,   451,   452,   690,   924,   691,    81,    82,
    1526      456,   711,   868,   869,   351,   352,   714,   715,   716,   353,
    1527      354,   355,   356,   466,   335,   132,   133,   522,   319,   166,
    1528      644,   645,   646,   647,   648,    83,   118,    85,   489,   490,
    1529      950,   491,   273,   495,   320,    86,   134,   135,    87,  1305,
    1530     1103,  1104,  1105,  1106,    88,    89,   732,    90,   269,    91,
    1531       92,   183,  1034,   678,   405,   122,    93,   501,   502,   503,
    1532      184,   264,   186,   187,   188,   265,    96,    97,    98,    99,
    1533      100,   101,   102,   191,   192,   193,   194,   195,   838,   605,
    1534      606,   607,   608,   196,   610,   611,   612,   571,   572,   573,
    1535      574,   695,   103,   614,   615,   616,   617,   618,   619,   923,
    1536      697,   698,   699,   595,   359,   360,   361,   362,   321,   161,
    1537      105,   106,   107,   364,   709,   568
     1526      -1,   830,   470,   298,    45,   130,   131,   299,   300,   301,
     1527     302,   777,   759,  1132,  1133,   303,   304,   305,   306,   307,
     1528     308,   309,   310,   311,   312,   313,   314,   315,   316,  1040,
     1529     520,   986,   318,   987,   548,   964,  1065,  1501,  1067,  1068,
     1530    1069,  1070,  1502,  1071,  1072,  1430,  1431,  1397,  1398,  1399,
     1531    1483,  1484,  1488,  1489,  1519,  1520,  1073,  1359,  1074,  1075,
     1532    1296,  1297,  1298,  1469,  1076,   142,   970,   971,   972,  1376,
     1533    1450,  1461,  1462,   471,   472,   892,   893,  1048,    48,    49,
     1534      50,    51,    52,   342,   155,    55,    56,    57,    58,    59,
     1535     344,    61,    62,   259,    64,    65,   270,   346,   347,    68,
     1536      69,    70,    71,   115,    73,   200,   349,   116,    76,   117,
     1537      78,    79,    80,   451,   452,   453,   454,   693,   930,   694,
     1538      81,    82,   458,   714,   872,   873,   352,   353,   717,   718,
     1539     719,   354,   355,   356,   357,   468,   336,   132,   133,   524,
     1540     320,   166,   647,   648,   649,   650,   651,    83,   118,    85,
     1541     491,   492,   956,   493,   273,   497,   321,    86,   134,   135,
     1542      87,  1317,  1111,  1112,  1113,  1114,    88,    89,   735,    90,
     1543     269,    91,    92,   183,  1042,   681,   406,   122,    93,   503,
     1544     504,   505,   184,   264,   186,   187,   188,   265,    96,    97,
     1545      98,    99,   100,   101,   102,   191,   192,   193,   194,   195,
     1546     842,   607,   608,   609,   610,   196,   612,   613,   614,   573,
     1547     574,   575,   576,   698,   103,   616,   617,   618,   619,   620,
     1548     621,   929,   700,   701,   702,   597,   360,   361,   362,   363,
     1549     322,   161,   105,   106,   107,   365,   712,   570
    15381550};
    15391551
    15401552/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15411553   STATE-NUM.  */
    1542 #define YYPACT_NINF -1269
     1554#define YYPACT_NINF -1318
    15431555static const yytype_int16 yypact[] =
    15441556{
    1545     5632,  9056, -1269,    25, -1269, -1269, -1269, -1269, -1269, -1269,
    1546    -1269,    17, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
    1547    -1269, -1269, -1269, -1269, -1269,   113,   113,   113,   803,   791,
    1548       56,  6940,   839, -1269, -1269, -1269, -1269, -1269,    59, -1269,
    1549    -1269, -1269,   628,    90,  8532, -1269, -1269, -1269, -1269, -1269,
    1550    -1269,    88,   155, -1269,   911, -1269, -1269, -1269, -1269,   140,
    1551     1450,   287,    96,  4240, -1269, -1269,  8601,  1048, -1269, -1269,
    1552    -1269,  1246,   329,  6299,  1010,   880,  1246,  1728, -1269, -1269,
    1553      332,   328, -1269,  1246,  1769, -1269,   227, -1269,   369,   379,
    1554    -1269, -1269, -1269, -1269,   256,   155,   113, -1269,   113, -1269,
    1555    -1269, -1269, -1269,  9292,   911, -1269, -1269,   911, -1269,  9351,
    1556      266, -1269, -1269,  1507,  9410, -1269,   839,   839,   839, -1269,
    1557    -1269, -1269,   113, -1269, -1269, -1269,   291,   341,   348, -1269,
    1558    -1269, -1269,   361, -1269, -1269, -1269, -1269, -1269,   391,   401,
    1559    -1269,   469,   839,  8040,  1076,   326,   352,   486,   522,   542,
    1560      576,   588,  8805,  6382,   474,   482, -1269,  8669, -1269, -1269,
    1561    -1269, -1269,   571, -1269,    47,  5492, -1269,   596,   239, -1269,
    1562    -1269, -1269, -1269,   597,   315,   324,   359,   113,   614, -1269,
    1563    -1269,  1450,  2466,   659, -1269,   128, -1269,   113,   113,   155,
    1564    -1269, -1269,   131, -1269,   113,   113, -1269,  3629,   647,   656,
    1565      839, 10211, -1269, -1269,   665,  8532, -1269, -1269,  1246, -1269,
    1566    -1269, -1269,   155, -1269,   911,    88, -1269,  7183, -1269,   839,
    1567      839,   839,   155, -1269,   803, -1269,  6072, -1269, -1269,   652,
    1568      839, -1269,   839, -1269,    59,  8040,  9115,   675, -1269,   791,
    1569      684,   839, -1269,   803,   674,   681, -1269,  6940,   744, -1269,
    1570    -1269, -1269,  8471, -1269, -1269,  5138, -1269,   659,    73,  9410,
    1571    10491,  1507,  3629, -1269,   138, -1269, -1269,  9351,   911,   708,
    1572    11267, -1269, -1269,   713, -1269, 11002, 10719, 10776, 10719, 10833,
    1573    -1269,   737, -1269, -1269, -1269, -1269, 10890, 10890,   744,  4439,
    1574      751, 10719,  8146, -1269, -1269, -1269, -1269, -1269, -1269,   766,
    1575    -1269,   828,  1924, 10719, -1269,   465,   544,   763,   389,   621,
    1576      755,   754,   759,   813,    65, -1269, -1269,   782,   510, -1269,
    1577      307, -1269, -1269,  1076, -1269, -1269,   774,   807, -1269,   784,
    1578      807,   815,    59, -1269, -1269,   821,  9292, -1269,   826,  7828,
    1579    -1269, -1269,   715,  2130,  7574, 10211,  1246, -1269,  1246,   839,
    1580      839, -1269, -1269, -1269, -1269, -1269, -1269,   839,  9469,   911,
    1581    -1269, -1269,  9528,  1378, -1269,  9174, -1269, -1269, -1269, -1269,
    1582    -1269, -1269, -1269,   831,  4897, 10719, -1269, -1269, -1269, -1269,
    1583    -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,  1507,
    1584    -1269,   728,   842,   859,   891,   817,   925,   926,   927,  2466,
    1585    -1269, -1269,   865,    88,   869, -1269, -1269,   928, -1269, -1269,
    1586    -1269,  8471, -1269, -1269, -1269, -1269, -1269,  3629, -1269,  8040,
    1587     8040, -1269,  1507, 11295,   911,  7639, -1269, -1269, -1269, -1269,
    1588     8471,    73, -1269, -1269,  1246,   155, -1269, -1269,  8471, -1269,
    1589     6187, -1269, -1269,   839,   839,   339,  9587,   909,  1932,  2385,
    1590    -1269,   377,   414,   791, -1269,  9115,   924,   912,   791,   839,
    1591    -1269, -1269, -1269, -1269,  9947, -1269,   512,  7494, -1269,   155,
    1592      930, -1269,  1507, 11077, 10548, -1269, -1269, -1269, -1269,   824,
    1593     3629, -1269,  7704,   659,  6831, -1269, -1269, -1269,   746,   592,
    1594      782,   791, 11267,   530,  9351, -1269, 11267, -1269, -1269, -1269,
    1595    -1269,   613, -1269,   932, -1269, -1269,    12,  4439, -1269, -1269,
    1596     4439, -1269,  7934,  4439, -1269, -1269, -1269,   933, -1269,   625,
    1597      936,   545,   939, -1269,  8873,  5389, -1269, -1269, -1269,    67,
    1598    -1269, -1269, 10605, -1269,   249, -1269, -1269, -1269, -1269, -1269,
    1599    -1269, -1269, -1269, -1269, -1269, 10491, 10491, -1269, 10719, 10719,
    1600    10719, 10719, 10719, 10719, 10719, 10719, 10719, 10719, 10719, 10719,
    1601    10719, 10719, 10719, 10719, 10719, 10719,  4719, 10491, -1269,   510,
    1602     1578, -1269, -1269,   113,   113, -1269, -1269,  8040, -1269, -1269,
    1603      928,   744, -1269,   928, 10662, -1269, -1269, -1269,  4020,  5389,
    1604      938,  8252,   941, -1269,  9646, -1269, -1269,   571, -1269,   942,
    1605     1657,   947,  1802,   198,   782, -1269,   113,   113,   782,   245,
    1606    -1269,   113,   113,   928, -1269, -1269,   113,   113, -1269,   807,
    1607     9705,   911, 11208,   419,   426,  9705, -1269,  9882, -1269,   782,
    1608    -1269,  9469, -1269,   144,  7291,  7291,  7291,   911, -1269, 10434,
    1609      934,   831,   353,   949, -1269,   951,  5492,   583, -1269,  1032,
    1610      911,  7291,   744,  1507,   744,   659,   795,   807, -1269, -1269,
    1611      800,   807, -1269, -1269, -1269,   986, -1269,   807,   155,  9947,
    1612    -1269,   635,   960,   638,   961, -1269,   962,   155, -1269, -1269,
    1613     8471,   155,   958,   436,   443,  9764,  6494,  2437, 10719,  2673,
    1614    -1269, -1269,   956,    32,   956, -1269, -1269, -1269,   113,   113,
    1615    -1269, -1269,   791, -1269,   113, -1269, -1269,  2798,   791,   968,
    1616    10719, -1269,   924, 11208, -1269, -1269,   967, -1269, -1269, -1269,
    1617      744, -1269, 11143, 10719, -1269,  7291,   584,  7574, -1269, -1269,
    1618      571,   969,   972,   746,  2082, -1269, -1269, 11267, -1269, -1269,
    1619      965, -1269, -1269,   984, -1269,   965,   989, 11002, 10491,   944,
    1620     1017,   991,   992,   751,   987,   996, -1269,   997,  1000,  2971,
    1621     6158, -1269, 10491, -1269,   545,  1808, -1269,  5683, 10491,   998,
    1622    -1269, -1269,   831,   639, -1269, 10491, -1269, -1269, -1269, -1269,
    1623    -1269, -1269, -1269,   465,   465,   544,   544,   763,   763,   763,
    1624      763,   389,   389,   621,   755,   754,   759,   813, 10719,   616,
    1625    -1269,  9947,  1005,  1006,  1007,  1578, -1269, -1269, -1269, -1269,
    1626    -1269,  9947,   643, 10719,  7291, -1269,  9469, -1269,  6606,  8358,
    1627     9233,  6382, -1269, -1269, -1269,  1657,  9947,   846,  1012,  1013,
    1628     1015,  1019,  1020,  1023,  1024, -1269,  3182,  1802, -1269, -1269,
    1629    -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
    1630    -1269, -1269, -1269, -1269, -1269,   928, -1269, -1269, -1269,   782,
    1631    -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,  1025, -1269,
    1632     1026,  1029, -1269, -1269,    88,   998, 10434, -1269, -1269, -1269,
    1633     4897,  1028, -1269, -1269, -1269, -1269,   791,  5798,  1104, -1269,
    1634    -1269, -1269, -1269,  1027,    88, -1269, -1269,   928, -1269, -1269,
    1635      928,   142,   928, -1269, -1269, -1269, -1269, -1269, -1269,  8737,
    1636    -1269,   155, -1269,  9115, -1269, -1269,  1034,   761,  1031,  1038,
    1637     1041, -1269,  2673, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
    1638     1932, -1269,   912, -1269, -1269,  1044,  1046,  1047, -1269, -1269,
    1639     1042,  1050, -1269,   584,  1953, -1269,   534, -1269,  2082,   782,
    1640    -1269,  1054, 11267,  9823,  8040,  1055, -1269, -1269,  1051,  1056,
    1641    -1269,  1059,   169,  1057, -1269,  1058,  1058,  5389, 10491, -1269,
    1642    -1269,  1058, -1269,  1808,  4897, -1269, -1269, -1269, -1269,  1060,
    1643    10491,  1062,   744, 10434, -1269, 10605, -1269,   744, -1269, 10491,
    1644    -1269,   840,   807, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
    1645      831,  7828, -1269, -1269,  6718,  1067, -1269,   864,   807, -1269,
    1646      871,   882,   807, -1269,   839,  3327, -1269, -1269, -1269,  9947,
    1647     9947, -1269,  7639,  7639, -1269,  1063,  1064,  1068,  1071, -1269,
    1648     1074,   541,    48,   998, -1269,   744, -1269,  5492, -1269, 10491,
    1649      455, -1269,  6043,  1080,  1081, 10377,  1083,  1084,    55,   173,
    1650       23, 10491,  1085,   155,  4287,  1089,  1086,  1065, -1269, -1269,
    1651    -1269,  1087, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
    1652    -1269,   791,  1094, 10491, -1269,  9947,  9947,   113,  1095, -1269,
    1653     8997,  8935,   889,   807, -1269, -1269, -1269, -1269, -1269, -1269,
    1654    -1269, -1269, -1269,  1098,  1953, -1269, -1269,  1082, -1269,   965,
    1655    -1269, -1269,  1507,  1097, -1269, -1269, -1269,   650,  1096, -1269,
    1656    10719,  1077,  1017,  1017,  1102, -1269,   951, 10491,  1111,  1060,
    1657      559,    61,  1108, -1269,  1102, -1269,  1113,  1108, -1269, -1269,
    1658     1118, -1269, -1269,   928,  1120,  1121,  6270,  1123,  1124,  1125,
    1659    -1269, -1269,  1122, -1269, -1269,   928, -1269, -1269, -1269, -1269,
    1660      928, 10491, 10491, 10719,  1127, -1269, -1269, -1269, -1269, -1269,
    1661    -1269, -1269, -1269, -1269, -1269, -1269, -1269, 10719, 10719,  1128,
    1662     1133,  1108, -1269, -1269,   791, -1269, -1269, -1269,  7118,  9823,
    1663    10491, 10491,  1180, 10491, -1269, -1269,  1114, -1269,  1117, 10491,
    1664     1135,  1137, 10491,   901, -1269,  1138,  8499,   113, -1269, -1269,
    1665     5798,  1140,   467, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
    1666    -1269, -1269,   928, 10183, -1269,  7704,  1147, -1269, -1269,  9823,
    1667      476,   481, -1269,  1157,  1165, -1269,   201, -1269, 10491,  1166,
    1668     1167, -1269, -1269,  1168,   257,   313,   744,  1169,  1171, -1269,
    1669     1172, -1269,  9947, -1269, -1269, -1269, -1269, -1269,  1174, -1269,
    1670     9947,  9947,  9947, -1269, -1269,  1175, -1269,  1179,  1182,  1183,
    1671      573,  7358,  7466, -1269, -1269,   609, -1269,  1184,  1185, -1269,
    1672     7769,   651,   662,  1141,   664,  5921, -1269, -1269,   508, -1269,
    1673    -1269,   687,  1189,   155,  1237,  1240, -1269, -1269, 10377, -1269,
    1674    -1269, -1269,  1193,  1197,  9947, -1269, -1269, -1269,  1196, -1269,
    1675    -1269, -1269, -1269, -1269, -1269,  9823, -1269,  1190,  1231,  1060,
    1676      253, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,  1204,
    1677    -1269, -1269, -1269, -1269, -1269, -1269,  1211,  1215, -1269, -1269,
    1678    -1269, -1269, -1269, -1269, -1269,  1219, -1269,  1218, -1269, -1269,
    1679    10377,   147, 10491, 10377, -1269,  1225, 10491, -1269,   264,  1239,
    1680    -1269, -1269,  1229, -1269, -1269, -1269, -1269, -1269,   911,  1507,
    1681     1233, -1269, -1269,   704,  1228, 10491,   744,   744,  1248,  1249,
    1682     1250,  1251, -1269, -1269,  7639,  1256, -1269,  1301, 10719,  1259,
    1683    -1269, -1269, 10297, -1269,   716, -1269,  1224, 10377,  1235, -1269,
    1684    -1269,  1268, -1269,  1282,  1270,  9823, -1269, -1269, -1269,  1252,
    1685     1302,  1273, -1269,  1108,  1108, -1269, -1269, -1269, -1269, -1269,
    1686    10377,    54, -1269,   897, -1269, -1269,  7049, -1269, -1269,  1255,
    1687    10491, -1269, 10491,  7049,   155,  9587,  1283, -1269, -1269,  1280,
    1688    -1269, -1269, 10491,  1284,  1285, -1269, 10719, 10719, -1269, -1269,
    1689      966,    99, -1269, -1269,  1266, -1269,   966, -1269, -1269,  2561,
    1690      744,   155,  9587,  1290, -1269, -1269, -1269, -1269, -1269, 10297,
    1691     1286,   966,  3510, 10491, 10217,  1287,   966,  1294,  2561,  3047,
    1692    -1269, -1269, -1269, -1269, -1269,  8040, -1269, 10062, -1269, 10297,
    1693    -1269, -1269,  1274,  9981, -1269, -1269, 10217,   155,  3047,  1297,
    1694      717, -1269, 10062, -1269, -1269, -1269,  9981, -1269, -1269,   155,
    1695    -1269, -1269, -1269, -1269, -1269
     1557    4413,  9104, -1318,    42, -1318, -1318, -1318, -1318, -1318, -1318,
     1558   -1318,   -27, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
     1559   -1318, -1318, -1318, -1318, -1318,    95,    95,    95,   954,   850,
     1560      71,  5300,   201, -1318, -1318, -1318, -1318, -1318,   123, -1318,
     1561   -1318, -1318,   776,   164,  8401, -1318, -1318, -1318, -1318, -1318,
     1562   -1318,   226,   169, -1318,  1184, -1318, -1318, -1318, -1318,   272,
     1563    1531,   387,    89,  3759, -1318, -1318,  8469,  1998, -1318, -1318,
     1564   -1318,   935,   392,  5420,   741,  1183,   935,  1282, -1318, -1318,
     1565     356,   326, -1318,   935,  1429, -1318,   340, -1318,   453,   463,
     1566   -1318, -1318, -1318, -1318,   370,   169,    95, -1318,    95, -1318,
     1567   -1318, -1318, -1318,  9340,  1184, -1318, -1318,  1184, -1318,  9399,
     1568     389, -1318, -1318,  1617,  9458, -1318,  1087,  1087,  1087, -1318,
     1569   -1318, -1318,    95, -1318, -1318, -1318,   386,   435,   438, -1318,
     1570   -1318, -1318,   498, -1318, -1318, -1318, -1318, -1318,   510,   531,
     1571   -1318, -1318,    34,  7909,  1795,    48,   452,   575,   578,   583,
     1572     588,   593,  8673,  6319,   543,   605, -1318,  8537, -1318, -1318,
     1573   -1318, -1318,   652, -1318,   172,  5550, -1318,   473,   232, -1318,
     1574   -1318, -1318, -1318,   661,   301,   325,   403,    95,   646, -1318,
     1575   -1318,  1531,  2279,   739, -1318,    21, -1318,    95,    95,   169,
     1576   -1318, -1318,    35, -1318,    95,    95, -1318,  2781,   700,   710,
     1577    1087, 10200, -1318, -1318,   717,  8401, -1318, -1318,   935, -1318,
     1578   -1318, -1318,   169, -1318,  1184,   226, -1318,  7011, -1318,  1087,
     1579    1087,  1087,   169, -1318,   954, -1318,  3330, -1318, -1318,   704,
     1580    1087, -1318,  1087, -1318,   123,  7909,  9163,   736, -1318,   850,
     1581     769,  1087, -1318,   954,   737,   747, -1318,  5300,   814, -1318,
     1582   -1318, -1318,  2451, -1318, -1318,  3603, -1318,   739,    61,  9458,
     1583   10457,  1617,  2781, -1318,    68, -1318, -1318,  9399,  1184,   778,
     1584   11233, -1318, -1318,   428, -1318, 10968,   787,   870, 10685, 10742,
     1585   10799, -1318,   824, -1318, -1318, -1318, -1318, 10856, 10856,   814,
     1586    7591,   827, 10742,  8015, -1318, -1318, -1318, -1318, -1318, -1318,
     1587     874, -1318,   901,  2137, 10742, -1318,   237,   407,   632,   476,
     1588     638,   859,   855,   869,   890,   101, -1318, -1318,   877,   616,
     1589   -1318,   336, -1318, -1318,  1795, -1318, -1318,   518,   907, -1318,
     1590     633,   907,   892,   123, -1318, -1318,   914,  9340, -1318,   916,
     1591    7697, -1318, -1318,  1197,   771,  5233, 10200,   935, -1318,   935,
     1592    1087,  1087, -1318, -1318, -1318, -1318, -1318, -1318,  1087,  9517,
     1593    1184, -1318, -1318,  9576,  1658, -1318,  9222, -1318, -1318, -1318,
     1594   -1318, -1318, -1318, -1318,   924,  4543, 10742, -1318, -1318, -1318,
     1595   -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
     1596    1617, -1318,   676,   942,   945,   946,   690,   947,   948,   958,
     1597    2279, -1318, -1318,   952,   226,   957, -1318, -1318,   959, -1318,
     1598   -1318, -1318,  2451, -1318, -1318, -1318, -1318, -1318,  2781, -1318,
     1599    7909,  7909, -1318,  1087,  1617, 11261,  1184,  7402, -1318, -1318,
     1600   -1318, -1318,  2451,    61, -1318, -1318,   935,   169, -1318, -1318,
     1601    2451, -1318,  5128, -1318, -1318,  1087,  1087,   364,  9635,   960,
     1602    2086,  8865, -1318,   432,   454,   850, -1318,  9163,   955,   944,
     1603     850,  1087, -1318, -1318, -1318, -1318,  9936, -1318,   383,  7322,
     1604   -1318,   169,   962, -1318,  1617, 11043, 10514, -1318, -1318, -1318,
     1605   -1318,   755,  2781, -1318,  7467,   739,  6768, -1318, -1318, -1318,
     1606     885,   414,   877,   850, 11233,   619,  9399, -1318, 11233, -1318,
     1607   -1318, -1318, -1318,   479, -1318,   964,   870,   125,  7591, -1318,
     1608   -1318, -1318,  7591, -1318,  7803,  7591, -1318, -1318, -1318,   969,
     1609   -1318,   544,   972,   640,   974, -1318,  8741,  5983, -1318, -1318,
     1610   -1318,   103, -1318, -1318, 10571, -1318,   112, -1318, -1318, -1318,
     1611   -1318, -1318, -1318, -1318, -1318, -1318, -1318, 10457, 10457, -1318,
     1612   10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742,
     1613   10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10343, 10457,
     1614   -1318,   616,   900, -1318, -1318,    95,    95, -1318, -1318,  7909,
     1615   -1318, -1318,   959,   814, -1318,   959, 10628, -1318, -1318, -1318,
     1616    8333,  5983,   973,  8121,   976, -1318,  9694, -1318, -1318,   652,
     1617   -1318,   978,   378,   980,  1782,   139,   877, -1318,    95,    95,
     1618     877,   166, -1318,    95,    95,   959, -1318, -1318,    95,    95,
     1619   -1318,   907,  9753,  1184, 11174,   137,   273,  9753, -1318,  4101,
     1620   -1318,   877, -1318,  9517, -1318,   278,  7119,  7119,  7119,  1184,
     1621   -1318,  3868,   982,   220,   924,   302,   984, -1318,   977,  5550,
     1622     238, -1318,  1061,  1184,  7119,   814,  1617,   814,   739,   705,
     1623     907, -1318, -1318,   765,   907, -1318, -1318, -1318,   870, -1318,
     1624     907,   169,  9936, -1318,   570,  1000,   655,  1005, -1318,  1004,
     1625     169, -1318, -1318,  2451,   169,  1003,   464,   465,  9812,  6431,
     1626    1947, 10742,  2536, -1318, -1318,  1001,    20,  1001, -1318, -1318,
     1627   -1318,    95,    95, -1318, -1318,   850, -1318,    95, -1318, -1318,
     1628    8924,   850,  1006, 10742, -1318,   955, 11174, -1318, -1318,  1017,
     1629   -1318, -1318, -1318,   814, -1318, 11109, 10742, -1318,  7119,   671,
     1630    5233, -1318, -1318,   652,  1013,  1014,   885,  2927, -1318, -1318,
     1631   11233, -1318, -1318,  1015, -1318, -1318,  1021, -1318,  1015,  1023,
     1632   10968, 10457,   243,  1002,    53,  1025,  1026,   827,  1027,  1028,
     1633   -1318,  1030,  1032,  8983,  6095, -1318, 10457, -1318,   640,  1104,
     1634   -1318, 10400, 10457,  1034, -1318, -1318,   924,   678, -1318, 10457,
     1635   -1318, -1318, -1318, -1318, -1318, -1318, -1318,   237,   237,   407,
     1636     407,   632,   632,   632,   632,   476,   476,   638,   859,   855,
     1637     869,   890, 10742,   716, -1318,  9936,  1038,  1041,  1042,   900,
     1638   -1318, -1318, -1318, -1318, -1318,  9936,   679, 10742,  7119, -1318,
     1639    9517, -1318,  6543,  8227,  9281,  6319, -1318, -1318, -1318,   378,
     1640    9936,   820,  1047,  1051,  1052,  1057,  1058,  1059,  1060, -1318,
     1641    3170,  1782, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
     1642   -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,   959,
     1643   -1318, -1318, -1318,   877, -1318, -1318, -1318, -1318, -1318, -1318,
     1644   -1318, -1318,  1063, -1318,  1064,  1065, -1318, -1318,   226,  1034,
     1645    3868, -1318, -1318, -1318,  4543,  1066, -1318, -1318, -1318, -1318,
     1646   -1318,   850,  5481,  1140, -1318, -1318, -1318, -1318,  1049,   226,
     1647   -1318, -1318,   959, -1318, -1318,   959,   127,   959, -1318, -1318,
     1648   -1318, -1318, -1318, -1318,  8605, -1318,   169, -1318,  9163, -1318,
     1649   -1318,  1070,   856,  1073,  1076,  1077, -1318, -1318,  2536, -1318,
     1650   -1318, -1318, -1318, -1318, -1318, -1318,  2086, -1318,   944, -1318,
     1651   -1318,  1075,  1078,  1082, -1318, -1318,  1080,  1096, -1318,   671,
     1652    1985, -1318,   514, -1318,  2927,   877, -1318,  1100, 11233,  9871,
     1653    7909,  1102, -1318, -1318,  1098,  1110,  1107, -1318, 10742,    12,
     1654     400,  1114, -1318,  1112,  1112,  5983, 10457, -1318, -1318,  1112,
     1655   -1318,  1104,  4543, -1318, -1318, -1318, -1318,  1115, 10457,  1120,
     1656     814,  3868, -1318, 10571, -1318,   814, -1318, 10457, -1318,   825,
     1657     907, -1318, -1318, -1318, -1318, -1318, -1318, -1318,   924,  7697,
     1658   -1318, -1318,  6655,  1125, -1318,   833,   907, -1318,   845,   852,
     1659     907, -1318,  1087,  4145, -1318, -1318, -1318,  9936,  9936, -1318,
     1660    7402,  7402, -1318,  1123,  1124,  1126,  1133, -1318,  1134,   553,
     1661      38,  1034, -1318,   814, -1318,  5550, -1318, 10457,   466, -1318,
     1662    5871,  1136,  1141,  5631,  1149,  1155,    13,    17,    14, 10457,
     1663    1156,   169,  3019,  1137,  1150,  1143, -1318, -1318, -1318,  1161,
     1664   -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,   850,
     1665    1167, 10457, -1318,  9936,  9936,    95,  1169, -1318,  9045,  8803,
     1666     867,   907, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
     1667   -1318,  1174,  1985, -1318, -1318,  1158, -1318,  1015, -1318, -1318,
     1668    1617,  1173, -1318, -1318, -1318,   686,  1175, -1318,    53,  1178,
     1669   10742,  1159,    53,    53,  1176, -1318,   977, 10457,  1185,  1115,
     1670     607,   130,  1192, -1318,  1176, -1318,  1198,  1192, -1318, -1318,
     1671    1199, -1318, -1318,   959,  1201,  1203,  6207,  1202,  1205,  1207,
     1672   -1318, -1318,  1210, -1318, -1318,   959, -1318, -1318, -1318, -1318,
     1673     959, 10457, 10457, 10742,  1209, -1318, -1318, -1318, -1318, -1318,
     1674   -1318, -1318, -1318, -1318, -1318, -1318, -1318, 10742, 10742,  1212,
     1675    1219,  1192, -1318, -1318,   850, -1318, -1318, -1318,  4876,  9871,
     1676   10457, 10457,  1262, 10457, -1318, -1318,  1213, -1318,  1214, 10457,
     1677    1216,  1220, 10457,   929, -1318,  1223,  5017,    95, -1318, -1318,
     1678    5481,  1224,   469, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
     1679   -1318, -1318,   959, 10172, -1318,  7467,  1232, -1318, -1318,  9871,
     1680     478,   509, -1318,  1236,  1239,   870,  1248, -1318,   541, -1318,
     1681   10457,  1250,  1245, -1318, -1318,  1251,   128,   133,   814,  1253,
     1682    1254, -1318,  1256, -1318,  9936, -1318, -1318, -1318, -1318, -1318,
     1683    1258, -1318,  9936,  9936,  9936, -1318, -1318,  1260, -1318,  1263,
     1684    1269,  1270,   589,  7186,  7294, -1318, -1318,   351, -1318,  1273,
     1685    1275, -1318,  7532,   721,   742,  1272,   752,  5749, -1318, -1318,
     1686     545, -1318, -1318,   768,  1279,   169,  1330,  1332, -1318, -1318,
     1687    5631, -1318, -1318, -1318,  1285,  1286,  9936, -1318, -1318, -1318,
     1688    1283, -1318, -1318, -1318, -1318, -1318, -1318,  9871,   870,   206,
     1689   -1318,  1268,   870,  1115,   327, -1318, -1318, -1318, -1318, -1318,
     1690   -1318, -1318, -1318,  1284, -1318, -1318, -1318, -1318, -1318, -1318,
     1691    1291,  1294, -1318, -1318, -1318, -1318, -1318, -1318, -1318,  1297,
     1692   -1318,  1296, -1318, -1318,  5631,   124, 10457,  5631, -1318,  1299,
     1693   10457, -1318,   270,  1314, -1318, -1318,  1306, -1318, -1318, -1318,
     1694   -1318, -1318,  1184,  1617,  1301,   874,   879, 10742, -1318,   790,
     1695    1307, 10457,   814,   814,  1308,  1310,  1316,  1317, -1318, -1318,
     1696    7402,  1320, -1318,  1376, 10742,  1313, -1318, -1318, 10286, -1318,
     1697     791, -1318,  1300,  5631,  1305, -1318, -1318,  1323, -1318,  1341,
     1698    1329,  9871, -1318, -1318, -1318,   870,   814,  1334,  1327,  1325,
     1699   -1318,  1192,  1192, -1318, -1318, -1318, -1318, -1318,  5631,   246,
     1700   -1318,   917, -1318, -1318,  6877, -1318, -1318,  1335, 10457, -1318,
     1701   10457,  6877,   169,  9635,  1342, -1318, -1318,  1351,   874, -1318,
     1702     793, -1318, -1318, 10457,  1357,  1359, -1318, 10742, 10742, -1318,
     1703   -1318,   989,    88, -1318, -1318,  1340, -1318,   989, -1318, -1318,
     1704    2035,   814,   169,  9635,  1364,  1345,   814, -1318, -1318, -1318,
     1705   -1318, -1318, 10286,  1369,   989,  6946, 10457, 10206,  1373,   989,
     1706    1380,  2035,  2697, -1318, -1318, -1318, -1318, -1318,  7909, -1318,
     1707   -1318, -1318, 10051, -1318, 10286, -1318, -1318,  1347,  9970, -1318,
     1708   -1318, 10206,   169,  2697,  1383,   794, -1318, 10051, -1318, -1318,
     1709   -1318,  9970, -1318, -1318,   169, -1318, -1318, -1318, -1318, -1318
    16961710};
    16971711
     
    16991713static const yytype_int16 yypgoto[] =
    17001714{
    1701    -1269,  3902,  2604, -1269,   354, -1269,    -1,     2,   742, -1269,
    1702    -1269, -1269,  -489,  -961,  -282,  4749, -1269,   570,   459,   468,
    1703      357,   464,   844,   848,   849,   847,   850, -1269,  -229,  -231,
    1704     4555,   296,  -694,  -919, -1269,   166,  -721,   143, -1269,    86,
    1705    -1269,   216, -1143, -1269, -1269,   -17, -1269, -1146, -1036,    71,
    1706    -1269, -1269, -1269, -1269,   -75, -1160, -1269, -1269, -1269, -1269,
    1707    -1269, -1269,   141,   -26,    21,   316, -1269,   320, -1269,    13,
    1708    -1269,  -294, -1269, -1269, -1269,   364,  -829, -1269, -1269,    11,
    1709     -963,   125,  1704, -1269, -1269, -1269,   -72, -1269,    82,    49,
    1710      -18,  1039,  3754, -1269, -1269,    81,   133,   536,  -256,  1629,
    1711    -1269,  1307, -1269, -1269,   224,  1625, -1269,  1893,  1163, -1269,
    1712    -1269,  -426,  -421,   993,   994,   507,   747,   306, -1269, -1269,
    1713      980,   516,  -433, -1269,  -199,    75,   591, -1269, -1269,  -894,
    1714    -1000,     6,   910,   861,   176, -1269,   721,   158,  -317,  -210,
    1715     -149,   478,   577, -1269,   809, -1269,  2211,   740,  -443,   722,
    1716    -1269, -1269,   511, -1269,  -232, -1269,   -46, -1269, -1269, -1269,
    1717    -1268,   243, -1269, -1269, -1269,   981, -1269,    -7, -1269, -1269,
    1718     -827,   -35, -1227,  -161,  1978, -1269,  3527, -1269,   719, -1269,
    1719     -157,    41,  -172,  -170,  -163,     4,   -41,   -36,   -34,   777,
    1720       24,    33,    45,  -143,  -151,  -150,  -145,  -139,  -288,  -529,
    1721     -505,  -476,  -564,  -323,  -560, -1269, -1269,  -516,   899,   906,
    1722      915,  1643,  4256,  -522,  -566,  -549,  -514,  -546, -1269,  -372,
    1723     -680,  -674,  -672,  -603,  -208,  -186, -1269, -1269,    64,   293,
    1724      -93, -1269,  3162,   208,  -613,  -396
     1715   -1318,  3762,  2543, -1318,  1454, -1318,    -1,     2,   -89, -1318,
     1716   -1318, -1318,  -483,  -942,  -282,  4006, -1318,  1670,   483,   485,
     1717     347,   484,   927,   931,   926,   932,   937, -1318,   792,  -594,
     1718    4587,   375,  -691,  -946, -1318,  -112,  -722,  -695, -1318,   412,
     1719   -1318,   304, -1184, -1318, -1318,    54, -1318, -1317,  -763,   149,
     1720   -1318, -1318, -1318, -1318,    -3, -1151, -1318, -1318, -1318, -1318,
     1721   -1318, -1318,   223,    51,    55, -1318,  -364, -1318,   402,   204,
     1722   -1318,    86, -1318,  -320, -1318, -1318, -1318,   450,  -745, -1318,
     1723   -1318,    10,  -865,   258,   180, -1318, -1318, -1318,  -222, -1318,
     1724     126,    49,  -187,   951,  3574, -1318, -1318,   213,   151,   363,
     1725    -251,  2053, -1318,  1304, -1318, -1318,   344,  1615, -1318,  1898,
     1726    1496, -1318, -1318,  -417,  -439,  1083,  1084,   597,   837,   279,
     1727   -1318, -1318,  1086,   598,   -23, -1318,    37,  -463,   807, -1318,
     1728   -1318,  -923,  -977,   142,   669,   965,   280, -1318,   175,   -35,
     1729    -257,  -199,  -156,   555,   651, -1318,   888, -1318,  1925,  1031,
     1730    -460,   803, -1318, -1318,   594, -1318,  -228, -1318,   140, -1318,
     1731   -1318, -1318, -1268,   320, -1318, -1318, -1318,  1067, -1318,     6,
     1732   -1318, -1318,  -851,   -86, -1303,  -124,  2887, -1318,  2837, -1318,
     1733     812, -1318,  -168,   585,  -176,  -173,  -171,     4,   -41,   -39,
     1734     -36,   834,    47,    56,    79,  -167,  -162,  -161,  -159,  -158,
     1735    -273,  -557,  -498,  -458,  -543,  -318,  -539, -1318, -1318,  -499,
     1736     986,   992,   993,  1485,  4182,  -565,  -577,  -550,  -542,  -536,
     1737   -1318,  -384,  -672,  -658,  -654,  -591,  -211,  -316, -1318, -1318,
     1738     152,   299,   -75, -1318,  2880,   592,  -631,  -200
    17251739};
    17261740
     
    17281742   positive, shift that token.  If negative, reduce the rule which
    17291743   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1730 #define YYTABLE_NINF -503
     1744#define YYTABLE_NINF -511
    17311745static const yytype_int16 yytable[] =
    17321746{
    1733      110,   146,    46,   445,    95,   432,   147,   918,   148,   392,
    1734      256,   393,   111,   919,   141,   920,   377,   857,   394,   498,
    1735      609,    47,   403,  1161,   140,   400,  1127,   959,   701,   707,
    1736      395,   396,   881,    46,   832,    95,   397,  1360,   839,   401,
    1737      831,    94,   398,   774,    46,   506,    46,   505,   158,   740,
    1738      113,   833,    47,   745,   806,   604,    46,   843,  1069,   337,
    1739     1070,  1119,    46,   850,   189,    46,   149,   212,    46,    30,
    1740      222,   828,    94,   976,  1171,   150,   696,   215,   263,  1177,
    1741      840,    66,    60,   145,   918,    94,   834,   151,   108,   392,
    1742      919,   393,   920,   156,   738,   829,   475,   477,   394,   935,
    1743      119,   185,   672,   674,    94,   400,    46,    94,   160,    46,
    1744      395,   396,    66,    60,   749,    46,   397,   668,   120,   401,
    1745      108,   750,   398,   198,   830,    53,   112,  1429,  1159,  1160,
    1746      402,   596,   108,    67,  1189,   404,   677,  1167,   169,  1234,
    1747      146,  -218,  -218,  1436,   681,   147,    46,   148,   158,   766,
    1748       30,  1414,   254,   565,    46,   371,    53,   139,   156,    46,
    1749      143,   367,   418,  1168,    67,    30,  1235,   199,    30,  1168,
    1750      770,   372,   628,   160,   476,    30,   632,   744,   439,  1185,
    1751      471,   249,   421,    46,    46,    94,   158,   566,   206,  1378,
    1752     1379,   216,   318,   666,   152,   757,   208,   460,    94,    46,
    1753      735,   334,   872,   873,   828,   149,  -218,    46,   844,   158,
    1754     1414,   165,   847,  1176,   150,  1161,    46,   528,   890,    46,
    1755      146,   435,   391,   185,    74,   147,   151,   148,   829,   248,
    1756      173,   404,   412,   864,   404,    30,  1418,   867,   108,   481,
    1757      463,   404,   663,   587,  1077,   476,    94,   465,   177,    46,
    1758      422,    95,   163,  1380,   426,    74,   664,   830,    94,   832,
    1759      810,   167,  1161,    46,    46,  1005,   158,   567,    47,   427,
    1760       46,  1111,   337,  1017,   729,   410,   833,    46,  1112,   609,
    1761      257,   843,    30,   258,   318,   448,   701,   516,    94,   994,
    1762      197,   692,   942,   104,   104,  1129,   828,  1187,   429,   841,
    1763      453,   601,   479,  1307,  1484,   694,  1378,  1379,   437,  1309,
    1764     1308,   834,  1177,  1418,   108,  1018,   426,   163,  1418,   488,
    1765      829,  1483,   108,   663,   104,    46,  1497,   367,    66,    60,
    1766     1191,   427,  -274,  1418,   472,   243,  1492,   664,   521,   471,
    1767     1418,   156,   433,  1496,    46,    46,   848,   380,   601,   830,
    1768      434,   322,   776,   523,   655,  -109,   160,   248,   471,   104,
    1769     1313,    46,  1365,   381,    94,    46,   471,  1159,  1160,   246,
    1770     1389,  1069,    53,  1070,  1161,   520,  -109,   832,   108,  -498,
    1771       67,   997,   670,   596,   603,   586,   911,   675,   593,   260,
    1772      431,    46,   -10,   108,   833,   136,   137,   108,   857,   136,
    1773      234,    46,   817,   367,  1459,  1403,  1404,   626,   172,   576,
    1774     1464,   630,   596,   428,   334,   577,  1315,   596,   108,    46,
    1775      136,   137,   840,   383,    46,  1479,    46,   248,   324,   834,
    1776     1486,   337,   385,   235,   239,   870,   870,   870,   236,   384,
    1777      185,   682,  -424,   322,   483,   866,  1346,   577,   386,  -425,
    1778       46,   500,   870,  1177,   325,   519,   877,   921,   172,   505,
    1779     1177,   172,   272,  1021,  1147,  1149,   110,   387,   318,   318,
    1780      717,    74,   555,   556,    46,   428,    74,   208,   729,   934,
    1781     1409,   505,    46,   388,   367,   702,    46,  1080,    95,   693,
    1782       46,   498,   274,   472,   894,   448,  1125,   882,   448,  1177,
    1783      163,   703,   275,  1230,   448,    47,   172,   557,   558,  1099,
    1784      453,   754,   472,   453,   609,   392,   113,   393,   173,   453,
    1785      472,   679,   704,   860,   394,    94,   870,   861,   771,   603,
    1786      862,   754,   400,   777,   863,   629,   395,   396,   705,   633,
    1787      104,   488,   397,   318,   702,   488,   401,   598,   398,  1016,
    1788     1085,   704,   729,  1096,  1344,   721,   521,   728,   696,   521,
    1789      914,   318,   521,  1174,   726,    66,    60,   915,   172,   988,
    1790      276,   523,  1018,   334,   523,  1174,   548,   523,   365,  1175,
    1791      465,   549,   550,   366,  1300,   671,   673,  1442,   326,  1302,
    1792       46,  1291,   337,   520,  1442,   108,   520,   136,   137,   520,
    1793     1301,  1085,    46,   225,    46,  1303,   208,   226,   471,    53,
    1794      230,   569,   232,   404,   719,   870,   762,    67,   892,   241,
    1795      720,   570,   172,    46,   327,  1388,   318,   322,   322,   172,
    1796      999,   741,  1347,  1480,   817,    74,   742,   815,   862,    46,
    1797      593,   827,  1095,   603,   328,  -102,   764,  1031,   404,  -102,
    1798      939,   891,    46,   893,    74,    46,   765,   551,   552,   701,
    1799     1016,  -109,    74,  -109,  1029,   751,   337,  -109,   752,   856,
    1800      819,   758,   370,   519,   593,   717,   519,  1332,   329,   519,
    1801      865,  1333,  -109,  -109,  1074,   943,   883,   601,   642,    46,
    1802      330,    46,   884,    36,   736,   944,   172,    39,   382,  1444,
    1803      737,  1445,   322,   378,    40,    41,   559,   560,    74,   871,
    1804      871,   871,  -449,   172,  -449,   746,   402,   172,  -449,   938,
    1805      322,   747,  1107,   817,   762,   989,   871,   761,   917,    42,
    1806      693,  1036,   799,   762,   334,    46,    46,   905,   390,   144,
    1807      907,   984,  1481,   762,   225,   996,   762,   985,   419,    46,
    1808      138,   720,  1222,  1340,   903,   434,   448,   420,   577,   762,
    1809     1128,   728,   472,   910,  1341,   663,  1343,   912,   726,   424,
    1810      762,   453,   762,   692,   827,   603,   442,   104,   172,   664,
    1811       36,   455,   170,   171,    39,   322,   488,   694,   918,  1348,
    1812      458,    40,    41,   596,   919,   762,   920,   859,   461,   598,
    1813      871,   237,   240,   211,   472,   462,  1399,   717,   334,   108,
    1814     1031,    36,  1400,   874,   484,    39,   366,   717,  1419,  1500,
    1815      238,   159,    40,    41,   762,   577,   889,    46,   858,   248,
    1816      324,   404,   717,   598,   493,   728,   494,   190,   512,    46,
    1817      213,   528,   726,   223,   553,   554,   208,   733,   509,     8,
    1818        9,    10,    11,    12,   211,   524,   108,   734,   136,   137,
    1819      208,   526,   527,   324,   404,   998,   827,   561,   126,   815,
    1820      127,   128,   129,   547,   562,   578,    30,   404,   603,  1224,
    1821      563,   505,   225,  -275,   230,   581,  1056,   404,  1172,   871,
    1822        8,     9,    10,    11,    12,   817,   895,   211,   404,    33,
    1823      564,   898,   819,   404,    74,   567,   529,   530,   531,   527,
    1824      333,    46,   787,   788,   789,   790,  -421,    30,   412,   659,
    1825      404,   159,   585,   500,    46,   481,   324,   404,   729,   532,
    1826      588,   533,    46,   534,   368,   638,  1263,  1264,   505,   505,
    1827       33,  1131,   172,   404,   656,   527,    74,   841,   324,   601,
    1828       46,   208,  1314,  1316,  1317,  1282,  1283,   211,   815,   159,
    1829      457,   657,   448,   693,  1100,  1143,   665,   404,    66,    60,
    1830      225,   693,  1146,   667,   601,   172,    36,   453,   170,   171,
    1831       39,  1121,   159,  1148,   754,   601,  1121,    40,    41,   603,
    1832     1210,   172,   404,   658,   436,   211,  1151,  1079,   925,   211,
    1833      925,   488,  1102,   318,   172,  1437,  1438,   729,  1378,  1379,
    1834      783,   784,    53,   685,     2,   202,     4,     5,     6,     7,
    1835       67,   785,   786,   791,   792,   717,   717,   660,   661,   662,
    1836     1058,   253,   708,   748,  1121,   710,  -222,   759,   763,    63,
    1837      114,   767,   820,   -12,  1056,   822,   824,  1186,  1188,  1190,
    1838      856,   835,     2,   202,     4,     5,     6,     7,   879,   880,
    1839      886,   285,   906,   908,   913,   688,   909,  1217,   960,  -398,
    1840       63,   142,    34,   737,    35,   933,  -502,  1471,  1101,   947,
    1841      224,   717,   717,   157,   211,   954,     8,     9,    10,    11,
    1842       12,   956,   961,   965,   966,   643,   968,  1158,   969,   970,
    1843      368,   172,   971,   337,    46,   217,   980,   991,   992,   993,
    1844       34,    74,    35,    30,  1007,  1008,  1085,  1009,   780,   781,
    1845      782,  1010,  1011,  1179,   472,  1012,  1013,  1024,  -386,   448,
    1846      815,  -385,  1071,  1082,    -3,  1038,    33,   434,  1081,  1193,
    1847     1083,    36,   255,  1084,   453,    39,  1091,  1411,  1089,   505,
    1848     1073,  1088,    40,    41,  1092,  1090,  1098,  1108,  1109,   762,
    1849     1110,   527,   322,   211,   974,  1113,  1120,    53,  1117,  1141,
    1850     1164,  1162,  1163,  1165,   706,    67,   368,    42,  1166,   457,
    1851      104,  1180,  1181,   323,  1183,  1184,  1192,   144,  1182,  1198,
    1852      215,   255,   344,  1196,    -3,  1197,  1203,  1208,    46,  1056,
    1853     1214,  1225,  1223,   493,  1218,  1457,  1411,   505,   505,   858,
    1854     1228,   728,   739,   211,   743,  1232,  1236,  1239,   726,  1296,
    1855     1241,   399,  1243,  1244,  1249,  1273,   210,  1245,  1246,  1247,
    1856     1100,  1256,  1265,  1121,  1121,  1121,   417,  1266,  1276,   142,
    1857      423,  1277,  1342,  1490,   157,   334,   104,  1290,   717,  1298,
    1858        2,   202,     4,     5,     6,     7,   717,   717,   717,  1279,
    1859      904,  1280,  1287,   172,  1304,   440,    74,  1306,  1102,   443,
    1860     1310,   444,  1312,  1318,  1311,  1319,  1320,   210,  1322,  1328,
    1861      459,    66,    60,  1329,  1330,  1331,    63,  1056,  1338,  1339,
    1862     1349,   473,  1283,   527,  1352,  1354,   392,   726,   393,  1355,
    1863      717,   480,  1357,   206,   216,   394,  1362,    72,    34,   423,
    1864       35,   208,   400,  1365,  1361,  1372,  1100,   395,   396,  1373,
    1865      210,  -387,  1376,   397,  1397,    53,   401,  1387,  1391,   398,
    1866     1393,   663,  1401,    67,   211,   104,  1335,   975,    72,  1056,
    1867     1398,  1410,  1056,  1058,  1101,   664,  1271,  1272,  1420,  1274,
    1868     1405,  1406,  1407,  1408,  1102,  1278,  1179,   472,  1281,  1422,
    1869       46,    46,   211,   878,  1333,  1121,  1121,   211,  1415,  1350,
    1870     1424,  1426,  1428,   218,   718,   255,  1430,  1431,   594,  1443,
    1871      210,  1056,  1432,   527,   622,  1451,  1056,  1453,  1455,  1456,
    1872     1463,  1475,   990,  1478,  1485,   433,  1487,   627,  1493,  1499,
    1873       53,   627,   995,   434,   255,   793,  1100,   901,    67,  1056,
    1874      794,   796,   795,  1231,  1470,   797,  1289,  1006,   210,  1390,
    1875     1458,  1501,   210,   929,    74,  1351,  1474,   146,  1226,   932,
    1876     1101,  1353,   147,  1227,   148,  1202,  1446,  1086,   712,   683,
    1877      684,   926,   812,    36,  1102,   170,   171,    39,  1087,  1472,
    1878      473,    46,  1116,   211,    40,    41,   885,  1037,  1056,   949,
    1879      347,  1097,  1299,  1056,   344,   731,   957,   211,   802,   473,
    1880       46,    46,   104,   158,  1449,   803,  1056,   473,  1056,   370,
    1881        0,     0,  1056,  1377,   804,  1056,  1385,     0,     0,  1450,
    1882       46,  1056,   367,   104,     0,  1056,     0,  1179,   472,    74,
    1883        0,  1449,     0,   713,  1179,   472,   423,   210,  1384,   479,
    1884     1447,     0,   104,     0,     0,    36,  1450,   179,   180,    39,
    1885     1101,   727,     0,    63,   318,  1417,    40,    41,     0,     0,
    1886     1421,   423,     0,   441,  1396,   423,     0,  1473,     0,     0,
    1887        0,    53,     0,  1179,   472,     0,     0,     0,    53,    67,
    1888      172,   181,     0,  1435,    72,     0,    67,     0,   211,    72,
    1889        0,   182,     0,   255,   344,     0,     0,     0,   104,     0,
    1890        0,   527,    36,  1498,   179,   180,    39,     0,     0,   718,
    1891        0,     0,     0,    40,    41,  1503,   210,    53,     8,     9,
    1892       10,    11,    12,     0,     0,    67,     0,     0,   104,     0,
    1893        0,   643,     0,     0,     0,     0,     0,  1041,   261,   805,
    1894     1156,  1157,   509,     0,     0,    30,     0,     0,   262,     0,
    1895     1491,     0,     0,     0,     0,    75,  1491,   627,   818,     0,
    1896      594,     0,     0,     0,     0,  1491,   210,     0,    33,  1491,
    1897       74,   837,     0,     0,     0,     0,     0,    74,     0,     0,
    1898        0,     0,   218,     0,     0,     0,    75,     0,     0,   594,
    1899        0,     0,     0,     0,   594,     0,  1205,  1206,     0,     0,
    1900      627,     0,     0,   344,   344,   344,     0,     0,     0,   569,
    1901        0,   404,     0,   322,     0,     0,    74,     0,   104,   570,
    1902      344,   219,   209,     0,     0,   643,     0,     0,     0,     0,
    1903        0,     0,   228,     0,    54,    54,     0,     0,   713,   104,
    1904        0,   718,   172,     0,     0,     0,   104,     0,    72,   473,
    1905        0,   718,    36,   527,   255,   727,    39,     0,   922,     0,
    1906        0,  -276,   347,    40,    41,    54,   718,    72,     8,     9,
    1907       10,    11,    12,   209,   211,    72,     0,     0,     0,     0,
    1908        0,     0,     0,     0,     0,   104,     0,   210,   825,     0,
    1909      601,   473,     0,     0,   344,    30,     0,    54,   602,     0,
    1910       54,   347,  -277,   948,     0,     0,   423,     0,   349,     8,
    1911        9,    10,    11,    12,     0,   210,   209,     0,    33,   347,
    1912      210,    72,  1041,     0,     0,     0,     0,     0,   255,   727,
    1913        0,     0,     0,     0,   973,     0,    30,     0,     0,     0,
    1914        0,     0,     8,     9,    10,    11,    12,     0,     8,     9,
    1915       10,    11,    12,     0,     0,     0,     0,     0,   406,    33,
    1916        0,     0,   347,  1321,     0,   414,     0,     0,     0,    30,
    1917      713,  1323,  1324,  1325,     0,    30,   209,     0,     0,     0,
    1918      713,     0,     0,   344,     0,   627,     0,   342,  1004,   627,
    1919      818,     0,    33,     0,     0,   713,     0,    36,    33,   179,
    1920      180,    39,    75,     0,     0,  1015,   210,    75,    40,    41,
    1921        0,     0,     0,     0,   209,  1356,     0,     0,   209,     0,
    1922      210,     0,     0,    77,     0,  1269,   347,     0,     0,     0,
    1923        0,     0,     0,   600,   499,   601,     0,   406,     0,   764,
    1924        0,   404,     0,   602,     0,     0,     0,     0,   211,   765,
    1925        0,    54,     0,     0,    77,     0,    63,     0,     0,   718,
    1926      718,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1927        0,   347,   347,   347,     0,     0,     0,     0,   627,     0,
    1928        0,    54,     0,     0,     0,     0,     0,     0,   347,   220,
    1929        0,   575,     0,     8,     9,    10,    11,    12,     0,   579,
    1930      219,     0,   582,   209,     0,     0,   347,     0,     0,     0,
    1931        0,   210,     0,  1094,     0,   718,   718,    72,     0,     0,
    1932       30,   423,   114,   347,     0,     0,     0,    36,     0,   179,
    1933      180,    39,     0,   121,   124,   125,   344,     0,    40,    41,
    1934      211,     0,     0,    33,   535,   536,   537,   538,   539,   540,
    1935      541,   542,   543,   544,     0,     0,     0,     0,     0,    72,
    1936        0,     0,   347,   687,   406,   404,    75,     0,   414,     0,
    1937      594,   688,     0,   689,     0,     0,   350,   545,     0,     0,
    1938      349,     0,   209,   142,   943,    75,   601,     0,   713,   713,
    1939        0,   344,   344,    75,   944,     0,     0,   347,     0,   209,
    1940        0,     0,     0,     0,   250,     0,   251,     0,     0,     0,
    1941        0,  1178,     0,     0,     0,     0,     0,     0,     0,   349,
    1942        0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
    1943        0,     0,   209,     0,     0,     0,     0,   349,   347,    75,
    1944        0,     0,     0,     0,   713,   713,     0,     0,   347,    30,
    1945      627,   347,   406,  1297,     0,     0,   218,     0,   347,   342,
    1946        0,     0,     0,   347,     0,     0,     0,     0,     0,     0,
    1947       77,     0,    33,     0,     0,    77,     0,    36,     0,     0,
    1948      349,    39,   718,     0,     0,   389,     0,     0,    40,    41,
    1949      718,   718,   718,     0,     0,   408,   409,   210,     0,     0,
    1950      413,     0,   415,   416,     0,   727,     0,     0,     0,     0,
    1951        0,     0,     0,   733,     0,     0,     0,     0,    54,     0,
    1952        0,     0,     0,   734,    72,    36,     0,   179,   180,    39,
    1953        0,     0,     0,     0,   718,     0,    40,    41,     0,     0,
    1954        0,    84,   575,   575,   349,     0,     0,     0,  1270,     0,
    1955        0,     0,     0,   209,     0,     0,     0,     0,     0,   342,
    1956        0,   600,     0,   601,     0,   255,     0,     0,   220,    63,
    1957        0,   602,    84,     0,     0,     0,     0,     0,     0,     0,
    1958        0,   209,   713,     0,   727,     0,   209,     0,   114,   349,
    1959      349,   349,     0,     0,     0,     0,     0,     0,     0,     0,
    1960        0,     0,     0,     0,   347,     0,   349,   221,     0,     0,
    1961        0,   713,     0,     0,     0,     0,     0,     0,     0,   713,
    1962      713,   713,     0,   342,   349,     0,     0,     0,     0,   896,
    1963      344,   344,     0,   899,    77,    75,     0,     0,     0,     0,
    1964        0,   349,     0,     0,  1178,     0,     0,     0,   350,     0,
    1965        0,     0,     0,    77,     0,     0,   347,   347,     0,   347,
    1966      347,    77,     0,   713,     0,     0,   406,     0,   342,   342,
    1967      342,   210,   209,     0,   114,     0,     0,    75,     0,    72,
    1968      349,     0,     0,     0,     0,   342,   209,   350,     0,     0,
    1969        0,     0,     0,     0,   357,     0,     0,     0,     0,     0,
    1970        0,     0,     0,     0,     0,   350,   499,    77,     0,     0,
    1971        0,     0,   347,   347,     0,   349,     0,     0,     0,     0,
    1972        0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
    1973       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    1974       23,    24,     0,   344,    25,    26,    27,     0,   350,     0,
    1975        0,     0,    30,   446,     0,     0,   349,     0,     0,   342,
    1976        0,     0,     0,   210,   114,     0,   349,     0,     0,   349,
    1977        0,     0,     0,   347,   219,    33,   349,   209,   575,     0,
    1978        0,   349,    37,    38,     0,  1178,     0,     0,    84,     0,
    1979        0,     0,  1178,    84,     0,     0,     0,     0,     0,     0,
     1747     110,   146,    46,   147,    95,   393,   148,   447,   394,   378,
     1748     395,   111,   704,   422,   401,   402,   434,   885,   923,   396,
     1749     397,   731,   398,   399,   500,   836,   611,   263,   256,   965,
     1750     473,   861,   924,    46,   743,    95,   925,   140,   748,   844,
     1751     710,  1078,  1129,   630,    46,   832,    46,   634,   158,  1374,
     1752     113,   778,   837,  1137,  1171,    47,    46,    30,    30,   404,
     1753     838,   843,    46,   835,   189,    46,   699,   212,    46,   847,
     1754     222,   606,    30,   810,   120,   854,   215,   338,   108,   108,
     1755     984,  1436,   108,   276,   941,   393,    47,   530,   394,   149,
     1756     395,  1432,   671,   156,   401,   402,   923,   927,   150,   396,
     1757     397,  1181,   398,   399,   833,    30,    46,  1169,  1170,    46,
     1758     924,   419,   680,  1120,   925,    46,   198,   119,   403,   940,
     1759     684,   151,   248,   405,   405,  1199,    60,  1177,   286,   598,
     1760    -225,  -225,    30,   477,   479,   277,   413,  1195,   405,   770,
     1761     146,  1197,   147,  1447,   834,   148,    46,  1077,   158,   248,
     1762     325,    67,   254,  1178,    46,  1432,   968,    60,   156,    46,
     1763     199,   368,   478,   675,   677,  1436,  1394,  1395,   108,   483,
     1764    1436,   405,   139,   875,   875,   875,    30,   108,   521,   832,
     1765      54,    54,    67,    46,    46,  1187,   158,  1436,   507,   567,
     1766     473,   875,   319,   108,  1436,  -225,   160,  1066,   108,    46,
     1767     530,   335,   530,    30,   138,   669,   774,    46,  1246,   158,
     1768     473,    54,   141,    66,   208,   780,    46,   738,   473,    46,
     1769     146,   437,   147,   568,   143,   148,   731,   753,   149,  1085,
     1770    1396,  1327,   666,   667,   754,  1247,  1329,   150,   833,   747,
     1771     845,   864,   603,    54,    66,   865,    54,   467,  1171,    46,
     1772     424,    95,   836,   465,   428,   237,   240,   761,    53,   112,
     1773     151,   160,   589,    46,    46,   875,   158,   852,   152,   603,
     1774      46,   704,   832,   732,   821,   167,  1026,    46,   834,   837,
     1775     372,   530,   695,   697,   319,   450,   611,   838,   518,    53,
     1776    1013,   338,   741,  -455,  1323,   847,   373,  1171,  1025,   104,
     1777     104,   731,    47,  1508,   658,  1186,  1139,  1377,   674,   676,
     1778    1002,   887,  1394,  1395,   666,   667,   428,   870,   530,   490,
     1779    1517,   206,   814,  -455,   216,  -455,    46,  1521,   368,  -455,
     1780     104,   833,   673,   343,   173,  1457,  1509,  1201,   678,   523,
     1781     381,   888,   156,   645,    74,    46,    46,   889,   550,   165,
     1782    1169,  1170,   966,   551,   552,   875,   382,   429,  1192,  1078,
     1783    1522,  1178,    46,   916,   441,   104,    46,   108,   436,   136,
     1784     137,   834,   836,    60,  1119,    74,  1405,   866,   474,   478,
     1785     177,   867,   598,   462,   257,   844,   588,   258,   455,   595,
     1786     197,   108,    46,   136,   137,  -281,   521,    54,    67,   837,
     1787     521,   569,    46,   521,   368,   881,   848,   838,   628,   384,
     1788     851,   598,   632,  1171,   459,   335,   598,   752,   861,   429,
     1789      46,   108,  1187,   136,   234,   385,    46,    54,    46,  -109,
     1790     225,   868,   239,   386,   226,   871,  1381,   230,   578,   232,
     1791    1421,  1422,   525,    36,   579,   160,   241,    39,   243,   387,
     1792    -109,   338,    46,   246,    40,    41,   803,   235,  -109,  -109,
     1793      66,   473,   236,  -506,   169,  1077,   685,  1427,   110,   319,
     1794     319,   248,   579,   755,  -109,   435,    46,   756,   732,   829,
     1795     762,   603,  1157,  1159,    46,   722,   368,   -10,    46,   604,
     1796      95,   723,    46,   886,   433,  1242,   208,   450,  1107,   500,
     1797     450,  1088,  1121,   945,  1007,    53,   450,   249,   821,  1122,
     1798    1135,   388,   260,   758,   393,  1066,   739,   394,   113,   395,
     1799     553,   554,   740,   611,   401,   402,  1236,   389,   396,   397,
     1800     775,   398,   399,   758,   899,   781,  -431,  1026,   474,  -432,
     1801     705,    47,  1360,   490,  1093,   319,   104,   490,   485,   495,
     1802     646,   496,   699,   732,   326,   502,   706,   523,   474,   557,
     1803     558,   523,   707,   319,   523,  1358,   474,  1168,  1024,  1187,
     1804     897,   225,   705,   707,  1184,   335,  1187,  1184,   708,   906,
     1805     379,   749,   467,  1275,  1276,    94,  1312,   750,   919,   920,
     1806    1185,    74,    46,  1303,   559,   560,    74,  1093,   821,   272,
     1807     455,   411,  1313,   455,    46,  1367,    46,   343,   720,   455,
     1808     729,   274,    60,   338,   876,   877,    94,  1314,   866,   580,
     1809    1187,   405,  1103,   173,   431,    46,   208,   145,   319,    94,
     1810     709,   895,   275,  1315,   439,   459,   163,    67,  1404,   819,
     1811     631,    46,   595,  1321,   635,   185,   765,   366,    94,   704,
     1812    1322,    94,   766,   766,   896,    46,   898,  -102,    46,  1393,
     1813     525,  -102,  1401,  1029,   525,   969,    54,   525,   742,  1361,
     1814     746,   860,   910,   874,   874,   874,   595,   327,   766,  1037,
     1815     328,  1024,   869,   731,   108,   329,   136,   137,   338,  1463,
     1816     330,   874,    46,  1346,    46,   331,  1463,  1347,  1482,    66,
     1817    1082,   163,   522,  1435,  1487,   948,   367,   343,  1439,  -109,
     1818     225,  -109,   230,   555,   556,  -109,  1465,   571,  1466,   405,
     1819     744,  1504,   944,   561,   562,   745,  1511,   572,  1044,    94,
     1820    -109,  -109,  1115,  1456,   583,   323,   405,   335,    46,    46,
     1821    1505,   768,    94,   405,    53,     2,   202,     4,     5,     6,
     1822       7,   769,    46,   371,  1234,  1104,    74,   912,  1238,   450,
     1823     666,   667,   383,   766,  1506,   874,   392,   185,   695,   697,
     1824     391,   343,   949,   821,   603,   436,    74,   248,   325,   405,
     1825     992,  1004,   950,  1417,    74,   104,   993,   723,  1232,   490,
     1826      94,   413,   662,   405,   579,  1005,   403,   430,   598,   225,
     1827    1429,   420,    94,    34,   823,    35,   900,  1516,   405,   474,
     1828    1349,   421,   335,  1516,   720,   729,   343,   343,   343,   923,
     1829     882,   426,  1516,  1354,   766,   997,  1516,   323,   444,   766,
     1830      74,    46,    94,   924,   343,  1161,    36,   925,   179,   180,
     1831      39,    36,   457,    46,  1355,    39,   481,    40,    41,   682,
     1832     766,   474,    40,    41,  1357,   874,   483,   325,   405,   430,
     1833     766,   463,   455,  1480,  1429,    -3,   903,   208,   405,  1006,
     1834    1362,   464,   602,   819,   603,   460,   766,    42,   159,   108,
     1835     935,   208,   604,   724,   486,   163,   938,   144,   506,  1182,
     1836     729,  1064,  1418,  1437,   190,  1475,  1525,   213,  1415,   766,
     1837     223,  1476,   579,   863,   791,   792,   793,   794,   343,    94,
     1838       8,     9,    10,    11,    12,   108,    46,   136,   137,   878,
     1839     522,   845,   325,   603,   522,   514,  1141,   522,   405,   605,
     1840      46,   526,   600,   894,  1153,   732,   405,    30,    46,     2,
     1841     202,     4,     5,     6,     7,   286,  1156,   720,   603,   530,
     1842      36,    63,   114,  1158,    39,   603,    46,   720,   325,   405,
     1843      33,    40,    41,   819,  1328,  1330,  1331,   450,  1220,  1108,
     1844     405,   563,   720,   208,   931,   564,   931,   566,   159,   531,
     1845     532,   533,    63,  1294,  1295,   185,   736,  1415,  1416,  1131,
     1846     565,   369,   758,  -428,  1131,   157,   737,    34,   343,    35,
     1847     569,   571,   534,   405,   535,   343,   536,   490,  1110,   319,
     1848     334,   572,   323,   323,   732,   587,   159,   217,    60,   126,
     1849     590,   127,   128,   129,  1227,  1458,  1459,    74,   640,   969,
     1850     502,  1394,  1395,   969,   969,   696,   787,   788,   823,   159,
     1851     789,   790,  1131,    67,   659,   795,   796,   660,   661,   663,
     1852     664,   438,  1064,   668,   255,  1196,  1198,  1200,   860,   646,
     1853     665,   670,   253,   711,   688,   751,  1049,   713,  -229,    74,
     1854     455,    94,    54,   763,   767,   605,   771,   824,  1283,  1284,
     1855     826,  1286,   828,   908,   839,   884,  1494,  1290,   323,   891,
     1856    1293,   -12,   915,   883,   211,   324,   917,     8,     9,    10,
     1857      11,    12,   911,   255,   345,    66,   323,   913,   914,   918,
     1858     691,   238,    46,   939,     8,     9,    10,    11,    12,  -405,
     1859    -510,   953,   960,   740,    30,   962,   967,   973,   974,  1093,
     1860     977,   338,   978,   400,   979,   721,   976,   450,   819,    54,
     1861     999,    30,   988,  1000,  1001,   211,  1319,    33,   418,  1015,
     1862      53,   423,   425,  1016,  1017,   343,   157,   646,   369,  1018,
     1863    1019,  1020,  1021,   436,    33,  1032,  -393,  -392,  1079,   720,
     1864     720,   323,  1081,  1046,  1089,  1090,   474,   442,  1091,  1092,
     1865    1097,   445,  1096,   446,  1099,   600,  -282,   831,   211,   605,
     1866    1098,   104,   461,     8,     9,    10,    11,    12,    63,   215,
     1867    1100,    67,  1106,   475,  1116,   768,   766,   405,    46,  1064,
     1868     343,   343,  1117,   482,   862,   769,  1118,  1109,   982,   600,
     1869      30,   425,  1123,  1127,  1130,   720,   720,  1151,  1174,  1375,
     1870      54,  1172,  1173,  1375,   369,  1175,    74,  1190,  1176,  1108,
     1871     455,  1206,  1191,    33,  1400,  1131,  1131,  1131,   211,    36,
     1872    1193,   170,   171,    39,  1049,   335,  1194,  1202,   104,  1207,
     1873      40,    41,    36,  1189,   170,   171,    39,  1208,    -3,  1213,
     1874    1515,  1218,   729,    40,    41,   922,  1224,   696,  1110,   495,
     1875    1228,  1233,  1235,  1237,  1240,  -283,   211,  1413,   255,  1244,
     1876     211,   596,     8,     9,    10,    11,    12,   624,   367,  1064,
     1877    1248,  1253,  1251,  1255,    72,  1256,  1257,  1285,    53,  1258,
     1878     629,  1259,  1261,  1268,   629,   393,  1277,   255,   394,    30,
     1879     395,   831,   605,  1278,   401,   402,  1448,  1108,  1087,   396,
     1880     397,  1302,   398,   399,  1310,    72,    60,  1288,  1289,   208,
     1881    1291,   721,    33,  1316,  1292,   666,   667,  1299,  1318,   104,
     1882    1320,   729,  1325,  1064,  1324,  1326,  1064,  1332,  1333,  1281,
     1883    1334,    67,  1336,   475,  1342,  1308,  1110,  1343,    54,    54,
     1884     218,  1344,  1345,  1356,    46,    46,   211,  1352,   345,  1353,
     1885    1363,  1131,  1131,   475,  1493,  1295,  1366,  1368,  1369,  1371,
     1886      54,   475,  1378,  1381,    74,  1388,   720,  1064,  1389,  -394,
     1887    1392,  1403,  1064,  1407,   720,   720,   720,  1409,  1414,    54,
     1888    1423,  1419,  1424,   474,   831,  1449,  1428,   716,  1425,  1426,
     1889     425,  1108,  1433,    66,  1438,  1442,   605,  1064,  1347,  1440,
     1890    1444,  1446,  -284,   436,  1453,   730,  1451,    63,    67,     8,
     1891       9,    10,    11,    12,  1472,   425,   206,   216,   720,   425,
     1892     146,  1452,   147,   343,   343,   148,   211,   348,  1474,  1464,
     1893    1110,  1478,    54,  1479,  1486,  1498,    30,    54,    53,  1499,
     1894    1495,  1518,    46,  1203,   721,  1500,  1503,   255,   345,   909,
     1895    1510,  1064,  1512,   926,   721,  1524,  1064,  1109,   104,    33,
     1896     797,   799,  1470,    46,    46,   798,   158,    54,   800,   721,
     1897    1189,  1064,  1243,  1064,   801,   926,   211,  1064,   172,   104,
     1898    1064,  1406,  1481,   696,  1301,    46,  1064,   368,  1526,  1365,
     1899    1064,   696,  1470,   809,  1497,  1239,  1379,  1467,   104,  1212,
     1900     443,   686,   687,  1094,   932,  1045,  1095,  1126,   890,   605,
     1901     435,   629,   822,   955,   596,    53,   715,   319,   816,  1311,
     1902    1105,    72,   323,   734,    74,   841,    72,   806,   172,   210,
     1903     474,   172,   963,   807,   808,     0,     0,   474,     0,     0,
     1904     343,     0,     0,   596,     0,  1109,     0,     0,   596,     0,
     1905       0,     0,     0,     0,   629,    67,   104,   345,   345,   345,
     1906       0,    54,    67,     0,   996,  1471,    36,     0,   179,   180,
     1907      39,   862,     0,     0,     0,   345,   172,    40,    41,     0,
     1908     210,   474,   998,     0,    54,    75,   104,     0,     0,     0,
     1909       0,    54,  1003,   716,     0,  1471,     0,   211,     0,     0,
     1910       0,    74,   181,     0,   475,     0,    67,  1014,     0,   255,
     1911     730,     0,   182,   928,     0,     0,    75,  1189,     0,     0,
     1912     218,     0,  1412,   210,  1189,   211,     0,     0,     0,     0,
     1913     211,     0,     0,     0,     0,    54,     0,     0,   172,  1109,
     1914     407,     0,  1039,     0,     0,     0,   475,   415,     0,   345,
     1915       0,   219,    36,     0,   179,   180,    39,     0,   954,     0,
     1916       0,   425,    53,    40,    41,     0,   721,   721,  1189,    53,
     1917       0,     0,     0,     0,     0,     0,     0,  1364,     0,     0,
     1918     104,     0,     0,   210,   255,   730,    72,     0,   261,     0,
     1919     981,     0,   172,    36,     0,   170,   171,    39,   262,   172,
     1920       0,   348,     0,   104,    40,    41,    72,     0,     0,     0,
     1921     104,     0,     0,    53,    72,     0,     0,   211,     0,   407,
     1922       0,   210,   721,   721,     0,   210,   716,     0,     0,   371,
     1923     926,   211,     0,     0,     0,     0,   716,     0,   350,   345,
     1924     348,   629,     0,     0,  1012,   629,   822,     0,    74,     0,
     1925       0,   716,     0,     0,   104,    74,     0,     0,   348,  1138,
     1926      72,  1023,     8,     9,    10,    11,    12,   172,     0,     0,
     1927       0,     0,     0,     0,   577,     8,     9,    10,    11,    12,
     1928       0,     0,   581,     0,   172,   584,     0,     0,   172,    30,
     1929       0,     0,     0,     0,     0,     0,     0,     0,     0,    74,
     1930       0,   348,    30,     0,  1166,  1167,     0,     0,     0,  1039,
     1931       0,   210,    33,    63,     0,     0,     0,    36,     0,   179,
     1932     180,    39,     0,   211,  1468,    33,     0,     0,    40,    41,
     1933      36,     0,    75,     0,    39,   629,     0,    75,     0,     0,
     1934       0,    40,    41,     0,     0,     0,     0,   407,     0,     0,
     1935     172,   415,     0,   602,  1496,   603,     0,     0,     0,     0,
     1936    1215,  1216,  1309,   604,     0,   348,    42,     0,    77,     0,
     1937       0,  1102,     0,     0,     0,     0,   144,     0,     0,   425,
     1938     114,     0,   926,     0,     0,     0,     0,     0,     0,     0,
     1939       0,   210,     0,   721,  1523,    84,   345,     0,     0,    77,
     1940       0,   721,   721,   721,     0,     0,  1528,     0,     0,     0,
     1941     348,   348,   348,     0,     0,     0,     0,     0,     0,   511,
     1942       0,     0,     0,     0,     0,     0,    84,     0,   348,     0,
     1943     596,   219,   528,   529,   220,     0,   407,     0,     0,   926,
     1944     926,   210,     0,   423,   549,   721,   348,     0,   716,   716,
     1945       0,   345,   345,     0,     0,     0,     0,    72,     0,     0,
     1946       0,   221,     0,   348,     0,     8,     9,    10,    11,    12,
     1947       0,  1188,     2,   202,     4,     5,     6,     7,     0,     0,
     1948     529,     0,    36,     0,   179,   180,    39,     0,     0,     0,
     1949       0,     0,    30,    40,    41,     0,     0,    75,     0,    72,
     1950     224,     0,   348,     0,   716,   716,     0,     0,     0,     0,
     1951     629,     0,   350,   211,   172,    33,   529,    75,   690,     0,
     1952     405,   351,     0,     0,     0,    75,   577,   577,   692,     0,
     1953      34,  1335,    35,     0,     0,     0,     0,     0,   348,  1337,
     1954    1338,  1339,     0,     0,     0,     0,   481,   172,   358,     0,
     1955       0,   350,     0,     0,     0,     0,   949,     0,   603,     0,
     1956     323,     0,   210,   172,     0,     0,   950,   730,     0,   350,
     1957      36,    75,   179,   180,    39,     0,     0,   172,     0,   348,
     1958       0,    40,    41,  1370,     0,     0,   209,     0,     0,   348,
     1959     210,     0,   348,     0,     0,   210,   228,   218,     0,   348,
     1960       0,     0,     0,     0,   348,     0,  1491,     0,   405,     0,
     1961    1282,     0,   350,     0,   901,    77,  1492,     0,   904,     0,
     1962      77,    36,     0,   179,   180,    39,     0,   255,     0,     0,
     1963       0,    63,    40,    41,     0,     0,     0,   209,     0,   926,
     1964       0,     0,    84,     0,   716,     0,   730,    84,     0,     0,
     1965     114,   407,     0,     0,     0,     0,   926,   690,     0,   405,
     1966       0,     0,     0,     0,     0,   691,    72,   692,     0,     0,
     1967       0,     0,     0,     0,   172,   716,   350,     0,     0,     0,
     1968     209,     0,   210,   716,   716,   716,     0,     0,     0,   211,
     1969     784,   785,   786,     0,   345,   345,   210,   537,   538,   539,
     1970     540,   541,   542,   543,   544,   545,   546,     0,  1188,     0,
     1971       0,     0,     0,     0,   220,     0,     0,     0,     0,   926,
     1972     926,   350,   350,   350,     0,     0,     0,   716,     0,     0,
     1973     547,     0,     0,   529,     0,     0,     0,     0,   114,   350,
     1974     209,   221,     0,     0,     0,     0,     0,     0,     0,   348,
     1975       0,     0,     0,     0,     0,     0,     0,   350,     0,     8,
     1976       9,    10,    11,    12,   577,     0,     0,     0,    75,     0,
     1977       0,     0,     0,     0,   350,     0,     0,     0,   209,     0,
     1978      77,     0,   209,   211,     0,     0,    30,     0,   210,     0,
     1979       0,     0,     0,     0,     0,   351,     0,     0,   501,     0,
     1980      77,   348,   348,     0,   348,   348,     0,    84,    77,    33,
     1981      75,   345,     0,   350,    36,     0,   179,   180,    39,     0,
     1982       0,     0,   358,     0,    72,    40,    41,    84,     0,     0,
     1983       0,     0,   114,     0,   351,    84,     0,     0,   172,     0,
     1984       0,     0,     0,     0,     0,     0,     0,     0,     0,   350,
     1985     181,     0,   351,     0,    77,  1188,     0,   348,   348,     0,
     1986     182,   358,  1188,     0,     0,     0,   529,     0,   209,     0,
     1987       0,     0,     0,     0,     0,     0,     0,   407,     0,   358,
     1988       0,    84,     0,     0,     0,     0,     0,     0,     0,     0,
     1989     350,     0,     0,     0,     0,   351,     0,     0,     0,     0,
     1990     350,     0,     0,   350,     0,     0,  1188,     0,   219,     0,
     1991     350,   983,     0,  1513,     0,   350,     0,     0,     0,     0,
     1992     348,     0,   358,     0,   469,     2,   202,     4,     5,     6,
     1993       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     1994      17,    18,    19,    20,    21,    22,    23,    24,   209,     0,
     1995      25,    26,    27,     0,  1142,     0,     0,   529,    30,   351,
     1996       0,     0,     0,   218,     0,   209,     0,     0,     0,     0,
     1997    1154,     0,     0,     0,     0,     0,     0,    75,   210,     0,
     1998       0,    33,     0,    34,    72,    35,   358,     0,    37,    38,
     1999       0,     0,     0,     0,     0,     0,     0,   348,   209,   348,
     2000       0,     0,     0,     0,   351,   351,   351,     0,     0,     0,
    19802001       0,     0,     0,     0,     0,     0,     8,     9,    10,    11,
    1981       12,     0,   350,     0,     0,     0,   218,     0,   447,     0,
    1982        0,     0,   700,     0,     0,     0,   109,     0,     0,     0,
    1983        0,  1178,    36,    30,   179,   180,    39,    72,  1488,     0,
    1984        0,     0,    75,    40,    41,     0,     0,     0,   342,     0,
    1985      347,     0,   347,     0,     0,   342,    33,   350,   350,   350,
    1986        0,    36,     0,   179,   180,    39,     0,     0,   687,     0,
    1987      404,     0,    40,    41,   350,     0,     0,     0,   689,   347,
    1988        0,   807,   808,     0,     0,     0,   221,   347,   347,   347,
    1989      406,     0,   350,     0,     0,     0,     0,   181,   347,   347,
    1990        0,     0,     0,    77,     0,     0,     0,   182,     0,   350,
    1991        0,   842,    72,     0,   845,   846,     0,   849,     0,   851,
    1992      852,    54,   349,     0,   853,   854,     0,     0,     0,     0,
    1993        0,   347,     0,     0,     0,     0,     0,     0,     0,     0,
    1994        0,     0,     0,     0,     0,    77,     0,     0,   350,     0,
    1995        0,     0,    84,     0,     0,     0,    36,     0,   179,   180,
    1996       39,     0,     0,   209,  1132,     0,   357,    40,    41,     0,
    1997        0,    84,     0,     0,   349,   349,     0,   349,   349,    84,
    1998     1144,     0,     0,   350,   164,     0,   168,    54,     0,   174,
    1999      175,   176,  1468,   178,   404,     0,     0,    75,     0,     0,
    2000        0,   342,  1469,     0,     0,   357,   927,   928,   229,     0,
    2001        0,   347,   930,     8,     9,    10,    11,    12,     0,     0,
    2002      244,   245,     0,   357,   350,    84,     0,     0,     0,     0,
    2003      349,   349,     0,     0,   350,     0,     0,   350,     0,     0,
    2004       30,     0,   220,     0,   350,     0,     0,     0,     0,   350,
    2005        0,     0,     0,    72,     0,  1211,   342,   342,     0,     0,
    2006       72,     0,     0,    33,     0,     0,   357,     0,    36,     0,
    2007      179,   180,    39,     0,     0,     0,    54,     0,     0,    40,
    2008       41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2009        0,   349,     0,     0,     0,     0,     0,     0,     0,    72,
    2010        0,     0,     0,     0,   687,     0,   404,     0,     0,     0,
    2011       77,     0,     0,     0,   689,     0,     0,     0,     0,     0,
     2002      12,     0,   351,     0,     0,     0,     0,    -3,   348,     0,
     2003       0,   358,   358,   358,     0,     0,   348,   348,   348,     0,
     2004     351,     0,     0,    30,     0,  1221,     0,   348,   348,   358,
     2005       0,    77,     0,     0,     0,     0,     0,   351,     0,     0,
     2006     350,    72,     0,   164,     0,   168,    33,   358,   174,   175,
     2007     176,    36,   178,   179,   180,    39,     0,     0,    84,     0,
     2008     348,     0,    40,    41,   358,     0,     0,   229,     0,     0,
     2009       0,     0,     0,    77,     0,     0,   351,     0,     0,   244,
     2010     245,     0,     0,     0,     0,     0,     0,   690,     0,   405,
     2011       0,     0,   350,   350,     0,   350,   350,   692,     0,   209,
     2012      84,     0,     0,   358,     0,     0,     0,     0,     0,     0,
     2013     172,     0,   351,     0,     0,    75,     0,     0,     0,     0,
     2014       0,     0,     0,     0,     0,     0,     0,   209,     0,   529,
     2015       0,     0,   209,     0,   210,     0,     0,     0,     0,   358,
     2016       0,     0,     0,     0,   348,     0,     0,     0,   350,   350,
     2017       0,     0,     0,   351,     0,     0,     0,     8,     9,    10,
     2018      11,    12,     0,   351,     0,     0,   351,     0,     0,     0,
     2019     511,   220,     0,   351,     0,     0,     0,     0,   351,     0,
     2020     358,     0,     0,     0,    30,     0,     0,     0,    72,     0,
     2021     358,     0,     0,   358,     0,    72,     0,     0,   221,     0,
     2022     358,     0,     0,     0,     0,   358,     0,    33,     0,     0,
     2023       0,   350,    36,     0,   179,   180,    39,     0,     0,   209,
     2024       0,     0,     0,    40,    41,     0,     0,     0,   210,     0,
     2025       0,     0,     0,   209,     0,     0,     0,     0,     0,    72,
     2026      77,     8,     9,    10,    11,    12,     0,     0,  1491,     0,
     2027     405,     0,     0,   501,   219,     0,     0,     0,  1492,     0,
     2028       0,     0,     0,     0,     0,     0,     0,    84,    30,     0,
     2029       0,     0,     0,     0,     0,    75,   172,     0,     0,     0,
     2030       0,     0,     0,   529,     0,     0,     0,     0,   350,     0,
     2031     350,    33,     0,     0,     0,     0,    36,     0,   179,   180,
     2032      39,     0,     0,     0,     0,     0,     0,    40,    41,     0,
     2033       0,     0,   123,   123,   123,     0,     0,     0,     0,   350,
     2034       0,     0,     0,   351,     0,   209,     0,   350,   350,   350,
     2035       0,     0,   261,   594,   601,     0,     0,     0,   350,   350,
     2036       0,     0,   262,     0,     0,   625,   626,     0,     0,     0,
     2037     358,     0,    75,     0,     0,     0,     0,     0,     0,     0,
     2038       0,     0,   121,   124,   125,     0,     0,     0,     0,     0,
     2039       0,   350,     0,     0,   162,   351,   351,     0,   351,   351,
     2040       0,     0,     0,   123,     0,   123,     0,     8,     9,    10,
     2041      11,    12,     0,   214,     0,     0,     0,     0,    77,     0,
     2042       0,     0,   358,   358,     0,   358,   358,     0,     0,   271,
     2043       0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
     2044       0,     0,     0,     0,     0,    84,     0,     0,     0,     0,
     2045       0,   351,   351,   250,     0,   251,     0,    33,     0,   162,
     2046       0,     0,    36,     0,   268,     0,    39,     0,     0,     0,
     2047       0,     0,     0,    40,    41,   350,     0,     0,   358,   358,
     2048       0,     0,     0,     0,   123,     0,     0,     0,     0,     0,
     2049       0,     0,   123,   162,   123,   123,     0,     0,   736,   123,
     2050       0,   123,   123,   364,     0,     0,     0,   370,   737,     0,
     2051       0,     0,     0,     0,   351,     0,     0,     0,     0,    75,
     2052       0,     0,     0,     0,     0,   278,    75,   279,     0,     0,
     2053       0,     0,     0,     0,   390,   209,     0,     0,     0,     0,
     2054       0,   358,     0,     0,   409,   410,     0,     0,   280,   414,
     2055       0,   416,   417,     0,   281,   162,     0,   220,   282,     0,
     2056       0,   283,   284,   285,   286,    40,    41,   214,   287,   288,
     2057      75,   123,     0,     0,     0,     0,   289,     0,    77,     0,
     2058       0,     0,     0,     0,   221,   162,   456,     0,     0,     0,
     2059     290,   351,   374,   351,     0,     0,     0,     0,     0,   292,
     2060     376,   294,   295,   296,   297,    84,     0,     0,     0,   370,
     2061       0,     0,     0,  1204,     0,     0,     0,   162,   358,     0,
     2062     358,     0,   351,     0,     0,     0,     0,     0,     0,     0,
     2063     351,   351,   351,     0,     0,     0,     0,     0,     0,     0,
     2064     456,   351,   351,   162,     0,     0,     0,  1022,     0,   358,
     2065       8,     9,    10,    11,    12,    77,     0,   358,   358,   358,
     2066       0,     0,     0,     0,     0,     0,     0,     0,   358,   358,
     2067       0,     0,     0,     0,   351,     0,   278,    30,   279,     0,
     2068       0,     0,    84,     0,     0,     0,     0,     0,     0,     0,
     2069     599,     0,     0,     0,     0,   623,     0,     0,     0,   280,
     2070      33,   358,     0,     0,     0,   281,     0,     0,     0,   282,
     2071       0,   209,   283,   284,   285,   286,    40,    41,     0,   287,
     2072     288,     0,     0,     0,     0,     0,     0,   289,     0,     0,
     2073     942,     0,   943,     0,     0,     0,     0,     0,     0,   946,
     2074     947,   290,     0,   374,   952,     0,     0,     0,     0,     0,
     2075     292,   817,   294,   295,   296,   297,   957,     0,   351,     0,
     2076       0,   961,     0,     0,     0,     0,     0,     0,     0,     0,
     2077     162,   162,     0,     0,     0,     0,     0,   364,     0,     0,
     2078       0,     0,     0,     0,     0,   358,   989,     0,     0,     0,
     2079       0,     0,     0,     0,     0,     0,     0,     0,   456,     0,
     2080       0,   456,    77,     0,     0,   209,     0,   456,     0,    77,
     2081       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2082      18,    19,    20,    21,    22,    23,    24,  -285,     0,    84,
     2083     594,     0,     0,     0,   733,     0,    84,    30,     0,     0,
     2084       0,     0,     0,     0,     0,     0,   162,     0,     0,     0,
     2085       0,     0,     0,    77,     0,     0,     0,     0,   456,     0,
     2086      33,     0,   456,     0,   162,   456,     0,     0,     0,     0,
     2087       0,  -285,     0,     0,     0,     0,     0,   364,     0,     0,
     2088      84,     0,   123,   123,     0,     0,     0,  1033,  1034,  1035,
     2089    1036,     0,  1038,     0,     0,     0,     0,     0,     0,     0,
     2090       0,     0,     0,     0,     0,     0,     0,     0,  1080,     0,
     2091       0,     0,   123,     0,     0,   123,   123,     0,   123,     0,
     2092     123,   123,  1086,     0,     0,   123,   123,     0,     0,   162,
     2093       0,     0,   811,   812,     0,     0,     0,     0,     0,     0,
     2094       0,   364,     0,   599,     0,     0,   827,     0,     0,     0,
    20122095       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2013      357,     0,     0,     0,   219,     0,     0,   209,     8,     9,
    2014       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2015       20,    21,    22,    23,    24,    75,     0,    25,    26,    27,
    2016        0,     0,     0,     0,     0,    30,   446,     0,   349,     0,
    2017      349,     0,     0,     0,     0,   357,   357,   357,     0,     0,
    2018        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2019      350,     0,   357,     0,     0,    37,    38,   349,     0,     0,
    2020        0,     0,     0,     0,     0,   349,   349,   349,     0,     0,
    2021      357,     0,    54,    54,     0,     0,   349,   349,     0,     0,
    2022        0,    84,     0,     0,     0,     0,     0,   357,     0,   209,
    2023       75,   447,     0,     0,    54,   931,     0,     0,     0,   109,
    2024        0,     0,   350,   350,     0,   350,   350,     0,     0,   349,
    2025        0,     0,     0,    54,     0,     0,     0,     0,     0,     0,
    2026        0,     0,     0,    84,     0,    77,   357,     0,     0,     0,
    2027        0,     0,     0,   592,   599,     0,     0,     0,     0,     0,
    2028        0,     0,     0,     0,     0,   623,   624,     0,     0,     0,
    2029        0,     0,     0,     0,     0,   342,   342,     0,   350,   350,
    2030        0,   357,     0,     0,    54,     0,     0,     0,     0,    54,
    2031        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2032       17,    18,    19,    20,    21,    22,    23,    24,  -278,   349,
    2033       25,    26,    27,     0,     0,     0,     0,     0,    30,    54,
    2034        0,     0,   357,     0,     0,     0,     0,     0,     0,     0,
    2035        0,     0,   357,     0,     0,   357,     0,     0,     0,   350,
    2036      221,    33,   357,     0,     0,     0,     0,   357,    37,    38,
    2037        0,    75,  -278,     0,     0,     0,     0,     0,    75,     0,
    2038        0,     0,     0,     0,     0,  1207,     0,     8,     9,    10,
    2039       11,    12,     0,     0,     0,     0,     0,     0,     0,     0,
    2040        0,     0,   220,     0,   333,     0,     0,     0,   342,     0,
    2041        0,     0,   109,     0,    30,     0,     0,    75,     0,     0,
    2042        0,     0,     0,    77,     0,     0,     0,     0,    84,    54,
    2043        0,     0,     0,     0,     0,     0,   350,    33,   350,     0,
    2044        0,     0,    36,     0,   179,   180,    39,     0,     0,     0,
    2045       54,     0,     0,    40,    41,     0,     0,    54,     0,     0,
    2046        0,     0,     0,     0,     0,   350,     0,     0,     0,     0,
    2047        0,     0,     0,   350,   350,   350,     0,     0,  1468,     0,
    2048      404,     0,     0,     0,   350,   350,     0,     0,  1469,     0,
    2049        0,     0,     0,     0,     0,     0,    54,     0,    77,     0,
    2050        0,     0,     0,     0,     0,  1288,     0,     0,   357,     0,
    2051        0,     0,     0,     0,     0,     0,     0,   350,     0,  1014,
    2052        0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
    2053        0,     0,     0,     0,     0,     0,   162,     0,     0,     0,
    2054        0,     0,     0,     0,     0,     0,     0,     0,   277,    30,
    2055      278,     0,     0,     0,     0,   214,     0,     0,     0,     0,
    2056      357,   357,     0,   357,   357,     0,     0,     0,     0,     0,
    2057        0,   279,    33,     0,     0,     0,     0,   280,     0,     0,
    2058        0,   281,     0,    84,   282,   283,   284,   285,    40,    41,
    2059        0,   286,   287,     0,     0,     0,     0,   350,     0,   288,
    2060        0,   162,     0,     0,     0,     0,   268,     0,     0,     0,
    2061        0,     0,     0,   289,     0,   373,   357,   357,     0,     0,
    2062        0,     0,   291,   813,   293,   294,   295,   296,     0,     0,
    2063        0,     0,     0,     0,     0,   162,     0,     0,     0,    77,
    2064        0,     0,     0,     0,     0,   363,    77,     0,   936,   369,
    2065      937,     0,     0,     0,     0,     0,     0,   940,   941,     0,
    2066        0,     0,   946,     0,  1152,     0,     0,     8,     9,    10,
    2067       11,    12,     0,     0,   951,     0,     0,   357,     0,   955,
    2068        0,     0,     0,     0,     0,    77,     0,     0,     0,     0,
    2069        0,     0,     0,   277,    30,   278,     0,   162,     0,     0,
    2070        0,     0,     0,   981,     0,     0,     0,     0,     0,   214,
    2071        0,     0,     0,     0,     0,     0,   279,    33,     0,     0,
    2072      221,     0,   280,     0,     0,     0,   281,   162,   454,   282,
    2073      283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
    2074        0,    84,     0,     0,   288,     0,     0,   592,     0,     0,
    2075        0,   369,     0,     0,   357,     0,   357,     0,   289,   162,
    2076      373,     0,     0,     0,     0,     0,     0,   291,  1153,   293,
    2077      294,   295,   296,     0,     0,     0,     0,     0,     0,     0,
    2078        0,   454,     0,   357,   162,     0,     0,     0,     0,     0,
    2079        0,   357,   357,   357,     0,     0,     0,     0,     0,     0,
    2080        0,     0,   357,   357,  1025,  1026,  1027,  1028,     0,  1030,
    2081        0,     0,     0,     0,     0,     0,    84,     0,     0,     0,
    2082        0,     0,     0,     0,  1072,     0,     0,     0,     0,     0,
    2083        0,   597,     0,     0,     0,   357,   621,     0,  1078,     0,
    2084        0,     0,     0,     1,     2,   202,     4,     5,     6,     7,
    2085        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2086       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2087       26,    27,    28,     0,     0,    29,  1093,    30,     0,     0,
    2088        0,     0,   123,   123,   123,     0,     0,     0,     0,     0,
     2096       0,  1101,   846,     0,     0,   849,   850,     0,   853,     0,
     2097     855,   856,   599,     0,     0,   857,   858,   599,     0,     0,
     2098       0,     0,     0,     0,     0,     0,   364,   364,   364,     0,
    20892099       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2090       33,     0,    34,     0,    35,     0,     0,    37,    38,     0,
    2091        0,   162,   162,  1118,     0,   357,     0,   363,     0,     0,
    2092     1126,     0,     0,     0,  1130,     0,     0,     0,     0,  1134,
    2093        0,  1135,     0,     0,     0,  1137,  1138,  1139,   454,     0,
    2094     1142,   454,     0,    43,     0,     0,     0,   454,     0,  1154,
    2095        0,   109,     0,   123,     0,   123,     0,    84,     0,     0,
    2096        0,     0,     0,     0,    84,     0,     0,  1169,  1170,     8,
    2097        9,    10,    11,    12,   730,     0,     0,     0,     0,   271,
    2098        0,     0,     0,     0,     0,     0,   162,     0,     0,     0,
    2099        0,     0,  1199,     0,     0,  1201,    30,     0,     0,   454,
    2100        0,     0,   454,    84,   162,   454,     0,     0,     0,     0,
    2101        0,     0,     0,     0,     0,     0,     0,   363,     0,    33,
    2102        0,     0,     0,     0,    36,     0,   179,   180,    39,     0,
    2103        0,     0,     0,  1216,   123,    40,    41,     0,     0,  1220,
    2104     1221,     0,   123,     0,   123,   123,     0,     0,  1229,   123,
    2105        0,   123,   123,  1233,     0,     0,  1237,     0,  1238,     0,
    2106      261,  1240,     0,     0,     0,     0,     0,     0,     0,   162,
    2107      262,     0,     0,     0,  1248,     0,     0,     0,     0,     0,
    2108        0,   363,     0,   597,     0,     0,   823,  1255,     0,  1257,
    2109     1258,  1259,  1260,     0,     0,     0,     0,     0,     0,     0,
    2110        0,     0,     0,     0,     0,  1267,     0,  1268,     0,     0,
    2111        0,   168,   597,     0,     0,     0,     0,   597,     0,     0,
    2112        0,   123,     0,     0,     0,     0,   363,   363,   363,     0,
    2113        0,     0,     0,     0,     0,     0,     0,     0,     0,  1292,
    2114     1293,     0,     0,   363,     0,     0,     0,   207,     0,     0,
    2115        0,     0,     0,     0,     0,     0,     0,   227,     0,   231,
    2116        0,   233,     0,     0,     0,     0,     0,     0,   242,     0,
    2117        0,     0,     0,     0,     0,     0,     0,     0,   730,     0,
    2118        0,     0,     0,     0,     0,     0,     0,  1326,  1327,     0,
    2119        0,     0,     0,     0,     0,     0,     0,  1337,   207,   454,
    2120      231,   233,   242,     0,     0,     0,     0,     0,     0,     0,
    2121        0,     0,     0,     0,     0,     0,     0,   363,     0,   945,
    2122        0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
     2100    1128,     0,     0,   123,   364,     0,     0,  1136,   123,   123,
     2101       0,  1140,     0,     0,   123,     0,  1144,     0,  1145,     0,
     2102       0,     0,  1147,  1148,  1149,     0,     0,  1152,     0,     0,
     2103       0,     0,     0,     0,     0,     0,  1164,     0,     0,   733,
    21232104       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2124        0,   207,     0,  1364,     0,     0,     0,     0,     0,     0,
    2125        0,     0,   730,     0,     0,  1368,     0,  1369,  1370,  1371,
    2126        0,     0,     0,     0,     0,     0,     0,     0,     0,  1375,
    2127        0,     0,     0,     0,     0,   153,     0,     0,  1386,     0,
     2105       0,     0,     0,     0,  1179,  1180,     0,     0,   933,   934,
     2106     456,     0,     0,     0,   936,     0,     0,     0,     0,     0,
     2107       0,     0,     0,     0,     0,     0,     0,     0,   364,  1209,
     2108     951,     0,  1211,     8,     9,    10,    11,    12,    13,    14,
     2109      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2110       0,     0,    25,    26,    27,     0,     0,   207,     0,     0,
     2111      30,     0,     0,     0,   733,     0,     0,   227,     0,   231,
     2112    1226,   233,     0,     0,     0,     0,  1230,  1231,   242,     0,
     2113       0,     0,     0,    33,     0,     0,     0,  1241,     0,     0,
     2114     203,    38,  1245,     0,     0,  1249,     0,  1250,     0,     0,
     2115    1252,     0,     0,     0,     0,     0,     0,     0,   207,     0,
     2116     231,   233,   242,  1260,     0,     0,     0,     0,   364,     0,
     2117       0,     0,   623,     0,     0,   364,  1267,     0,  1269,  1270,
     2118    1271,  1272,     0,     0,   267,     0,     0,     0,     0,     0,
     2119       0,     0,     0,     0,  1279,     0,  1280,     0,     0,     0,
     2120     168,   207,     0,     0,     0,     0,     0,     0,     0,     0,
    21282121       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2129     1394,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2130        0,   207,     0,   231,   233,   242,   363,     0,     0,     0,
    2131      621,     0,     0,   363,     0,     0,     0,     0,     0,     0,
    2132        0,   247,     0,     0,     0,     0,     0,     0,     0,     0,
    2133        0,   252,     0,     0,     0,     0,     0,  1433,  1434,   207,
    2134        0,     0,     0,   207,     0,     0,     0,     0,     0,     0,
    2135     1439,     0,     0,     0,     0,     0,     0,  1439,     0,   497,
    2136        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2137       18,    19,    20,    21,    22,    23,    24,  -278,     0,    25,
    2138       26,    27,  1467,     0,     0,     0,   153,    30,     0,     0,
    2139        0,     0,     0,     0,     0,     0,     0,     0,     0,   379,
    2140        0,     0,     0,     0,     0,   454,     0,   207,  1489,     0,
    2141       33,     0,     0,     0,     0,    36,     0,   331,   332,    39,
    2142        0,  -278,   411,     0,     0,     0,    40,    41,   207,     0,
    2143      123,   123,  1502,   231,   233,     0,   425,  1504,     0,     0,
    2144        0,   242,     0,     0,     0,   430,   162,     0,     0,     0,
    2145        0,   634,     0,   333,     0,   438,     0,     0,     0,   363,
    2146      123,   625,     0,   123,   123,     0,   123,     0,   123,   123,
    2147        0,     0,     0,   123,   123,     0,     0,     0,     0,     0,
    2148      464,     0,     0,   207,     0,   474,     0,     0,     0,     0,
    2149        0,     0,     0,   597,     0,     0,     0,     0,   482,     0,
    2150        0,   207,     0,     0,   492,     0,   496,   207,     0,     0,
    2151        0,     0,     0,     0,   363,   363,     0,     0,     0,     0,
    2152        0,     0,   525,     0,   207,     0,     0,   207,   207,     0,
    2153        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2154        0,     0,     0,   207,     0,     0,     0,     0,     0,     0,
    2155      123,     0,     0,     0,     0,   123,   123,   207,     0,     0,
    2156        0,   123,     0,     0,   207,   584,     0,     0,     0,     0,
    2157      589,     0,   454,   201,     2,   202,     4,     5,     6,     7,
    2158        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2159       18,    19,    20,    21,    22,    23,    24,     0,   635,    25,
    2160       26,    27,   636,   637,     0,   639,     0,    30,     0,     0,
    2161        0,   649,   650,     0,   651,   652,     0,   653,     0,   654,
    2162        0,     0,     0,     0,     0,     0,     0,     0,   730,     0,
    2163       33,     0,    34,     0,    35,    36,   584,   203,    38,    39,
    2164        0,     0,     0,     0,   669,     0,    40,    41,     0,     0,
    2165        0,     0,     0,   277,     0,   278,     0,     0,     0,     0,
    2166        0,     0,     0,     0,     0,     0,     0,     0,   680,     0,
    2167      214,    42,     0,   204,     0,     0,   279,     0,   207,   686,
    2168        0,   205,   280,     0,     0,     0,   281,     0,     0,   282,
    2169      283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
    2170        0,     0,   722,     0,   288,     0,   207,   730,   725,     0,
    2171        0,   207,     0,   464,     0,     0,     0,     0,   289,     0,
    2172      373,     0,     0,     0,     0,     0,     0,   291,   375,   293,
    2173      294,   295,   296,     0,     0,     0,     0,     0,   336,   358,
    2174        0,  1194,     0,     0,     0,     0,     0,     0,     0,   760,
    2175        0,     0,     0,   363,   363,     0,     0,     0,     0,     0,
    2176        0,     0,   214,     0,     0,   775,     0,     0,     0,     0,
    2177        0,   407,     0,     0,     0,     0,     0,     0,   407,     8,
    2178        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2179       19,    20,    21,    22,    23,    24,     0,   207,    25,    26,
    2180       27,   801,     0,     0,     0,   277,    30,   278,     0,     0,
    2181      811,   207,     0,     0,     0,     0,     0,   814,     0,     0,
    2182        0,     0,   821,     0,     0,     0,     0,     0,   279,    33,
    2183        0,   497,     0,   836,   280,     0,    37,    38,   281,     0,
    2184        0,   282,   283,   284,   285,    40,    41,     0,   286,   287,
    2185      407,     0,     0,     0,     0,     0,   288,     0,     0,     0,
    2186        0,     0,     0,     0,     0,     0,   363,     0,     0,     0,
    2187      289,     0,   517,   876,     0,   167,     0,     0,     0,   291,
    2188      292,   293,   294,   295,   296,     0,     0,     0,     0,   207,
    2189        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2190        0,     0,   207,     0,   407,     0,     0,     0,   821,     0,
    2191        0,     0,   407,   580,     0,   407,   583,   454,     0,     0,
    2192        0,   207,     0,     0,     0,   358,     0,     0,     0,   613,
    2193        0,     0,     0,     0,   123,     0,     0,     0,     0,     0,
    2194        0,     0,     0,     0,   454,     0,     0,     0,   631,     0,
    2195        0,   336,     0,     0,     0,     0,     0,     0,     0,     0,
    2196        0,     0,     0,   247,     0,     0,     0,   162,     0,     0,
    2197        0,     0,     0,   952,   953,     0,     0,   407,     0,     0,
    2198        0,   407,     0,     0,     0,   967,     0,     0,     0,     0,
    2199        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2200        0,     0,   982,     0,   983,     0,   207,     0,   987,     0,
    2201        0,   358,     0,     0,     0,     0,     0,     0,     0,     0,
    2202        0,     0,     0,     0,     0,     0,     0,     0,   316,     0,
    2203        0,     0,   207,     0,   407,     0,     0,     0,   340,     0,
    2204        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2205      376,     0,     0,     0,   123,     0,     0,   207,     0,     0,
    2206        0,     0,     0,     0,     0,   407,     0,     0,   358,     0,
    2207        0,     0,     0,  1019,     0,     0,     0,     0,     0,     0,
    2208     1020,     0,     0,     0,     0,   277,     0,   278,   207,     0,
    2209        0,     0,     0,  1022,     0,  1023,     0,     0,     0,   207,
    2210        0,     0,     0,     0,     0,     0,     0,   407,   279,  1035,
    2211      336,   358,     0,     0,   280,  1039,     0,     0,   281,     0,
    2212      316,   282,   283,   284,   285,    40,    41,  1075,   286,   287,
    2213     1076,     0,     0,     0,     0,     0,   288,     0,     0,     0,
    2214        0,     0,     0,     0,     0,   478,     0,     0,   589,     0,
    2215      289,     0,   373,     0,     0,   407,   407,     0,   798,   291,
    2216      375,   293,   294,   295,   296,     0,     0,     0,     0,     0,
    2217        0,     0,     0,     0,   816,   358,     0,   358,   207,     0,
    2218        0,     0,     0,     0,     0,     0,   613,     0,   613,   613,
    2219        0,     0,     0,     0,     0,   613,     0,     0,     0,     0,
    2220        0,     0,     0,     0,     0,   855,   358,     0,     0,     0,
    2221        0,   358,     0,     0,     0,     0,     0,     0,     0,     0,
    2222      358,   358,   358,     0,     0,     0,     0,     0,     0,     0,
    2223        0,     0,  1136,     0,     0,     0,     0,   358,     0,     0,
    2224        0,     0,   407,   897,     0,     0,   407,   900,     0,     0,
    2225        0,     0,     0,   902,     0,     0,     0,     0,     0,   376,
    2226        0,     0,   207,   277,     0,   278,     0,     0,     0,     0,
    2227        0,   336,   358,   407,     0,   407,     0,     0,     0,   407,
    2228        0,     0,     0,     0,     0,     0,   279,   525,     0,     0,
    2229        0,     0,   640,  1200,   136,   137,   281,     0,     0,   282,
    2230      283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
    2231        0,   358,   613,     0,   288,     0,     0,     0,     0,     0,
    2232        0,     0,  1213,     0,     0,     0,     0,  1215,   289,     0,
    2233      641,     0,   642,   374,     0,  1219,     0,   291,   375,   293,
    2234      294,   295,   296,     0,     0,   336,   358,     0,     0,     0,
    2235      407,   407,     0,     0,   207,   504,   508,   504,   511,   724,
    2236        0,     0,     0,  1242,     0,   514,   515,     0,     0,     0,
    2237      504,   504,     0,     0,     0,  1250,     0,     0,  1251,     0,
    2238     1252,     0,   504,     0,     0,     0,     0,     0,     0,     0,
    2239        0,   407,     0,     0,  1261,  1262,     0,   756,     0,     0,
    2240      358,     0,     0,     0,     0,     0,   816,   358,     0,     0,
    2241      769,   613,     0,   613,     0,     0,  1275,   756,   504,     0,
    2242        0,     0,     0,   613,     0,     0,     0,     0,     0,     0,
    2243      778,   779,     0,     0,     0,     0,     0,     0,     0,     0,
    2244        0,     0,  1294,     0,     0,     0,     0,     0,     0,     0,
    2245        0,     0,   800,     0,   504,     0,     0,     0,     0,     0,
    2246        0,     0,   809,     0,     0,     0,     0,     0,     0,   340,
    2247        0,     0,     0,     0,   769,     0,     0,     0,     8,     9,
    2248       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2249       20,    21,    22,    23,    24,   816,     0,    25,    26,    27,
    2250        0,     0,     0,   407,     0,    30,     0,     0,   407,     0,
    2251        0,     0,     0,     0,     0,     0,   407,     0,     0,     0,
    2252        0,     0,     0,     0,   875,     0,     0,     0,    33,   613,
    2253      613,   376,  1358,     0,  1359,   203,    38,     0,     0,     0,
    2254        0,     0,     0,     0,     0,  1366,     0,  1367,     0,     0,
    2255        0,     0,     0,   358,     0,     0,     0,     0,     0,   407,
    2256        0,     0,     0,     0,     0,  1374,     0,     0,     0,     0,
    2257        0,   340,   207,     0,     0,     0,     0,   407,  1133,   267,
    2258        0,  1392,     0,     0,     0,     0,     0,   358,     0,  1395,
    2259        0,     0,  1219,   407,  1145,     0,   613,   613,  1150,     0,
    2260        0,     0,     0,     0,     0,     0,     0,     0,   358,   358,
    2261        0,     0,  1416,     0,     0,     0,     0,     0,     0,     0,
    2262        0,  1423,     0,     0,  1425,  1427,     0,   504,   504,   504,
    2263      504,   504,   504,   504,   504,   504,   504,   504,   504,   504,
    2264      504,   504,   504,   504,   504,   769,     0,   972,     0,     0,
    2265        0,     0,     0,   977,     0,     0,     0,     0,     0,  1452,
    2266      986,  1219,     0,     0,     0,     0,     0,   816,   407,  1212,
    2267      504,     0,     0,  1462,     0,     0,     0,     0,     0,     0,
    2268      613,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2269        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2270        0,     0,     0,  1002,  1003,     0,   340,     0,     0,     0,
    2271        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2272        0,   340,   358,     2,   202,     4,     5,     6,     7,     8,
     2122       0,     0,     0,     0,     0,     0,     0,     0,  1304,  1305,
     2123       0,     0,   201,     2,   202,     4,     5,     6,     7,     8,
    22732124       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    22742125      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2275       27,     0,     0,     0,     0,   277,    30,   278,     0,     0,
    2276        0,  1033,     0,     0,     0,   376,     0,   504,     0,     0,
    2277        0,     0,     0,     0,     0,     0,     0,     0,   279,    33,
    2278        0,    34,   336,    35,   280,     0,    37,    38,   281,   504,
    2279        0,   282,   283,   284,   285,    40,    41,     0,   286,   287,
    2280        0,   358,   504,     0,     0,     0,   288,     0,     0,     0,
     2126      27,   207,     0,   231,   233,   242,    30,     0,   456,     0,
     2127       0,     0,     0,     0,     0,   153,     0,     0,  1340,  1341,
     2128       0,     0,     0,     0,     0,     0,     0,     0,  1351,    33,
     2129       0,    34,     0,    35,    36,     0,   203,    38,    39,   207,
     2130       0,     0,     0,   207,     0,    40,    41,     0,     0,     0,
     2131     162,     0,     0,     0,     0,     0,     0,     0,     0,   499,
     2132       0,   247,     0,     0,     0,   364,     0,     0,     0,     0,
     2133      42,   252,   204,     0,     0,     0,  1380,     0,     0,     0,
     2134     205,     0,     0,     0,     0,     0,     0,     0,  1384,     0,
     2135    1385,  1386,  1387,     0,     0,     0,     0,     0,     0,   599,
     2136       0,     0,  1391,     0,     0,     0,     0,     0,   207,     0,
     2137       0,  1402,     0,     0,   278,     0,   279,     0,     0,     0,
     2138     364,   364,     0,  1410,     0,     0,   153,     0,     0,   207,
     2139       0,     0,   123,     0,   231,   233,     0,   280,     0,   380,
     2140       0,     0,   242,   281,     0,     0,     0,   282,     0,     0,
     2141     283,   284,   285,   286,    40,    41,     0,   287,   288,     0,
     2142       0,     0,   412,     0,     0,   289,     0,     0,     0,     0,
     2143       0,     0,     0,     0,  1454,  1455,   427,     0,   456,   290,
     2144       0,   374,  1217,     0,   207,   432,   772,  1460,   292,   376,
     2145     294,   295,   296,   297,  1460,   440,     0,     0,     0,     0,
     2146       0,     0,   207,     0,     0,     0,     0,   207,     0,   207,
    22812147       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2282      289,     0,   338,     0,     0,     0,     0,   768,     0,   291,
    2283      339,   293,   294,   295,   296,     0,     0,     0,     0,   316,
    2284        0,     0,     0,     0,     0,     0,   504,   358,   358,     0,
    2285        0,     0,  1114,  1115,     0,     0,     0,     0,   277,   376,
    2286      278,     0,     0,     0,     0,   977,     0,     0,  1124,     0,
    2287      756,     0,     0,     0,     0,     0,     0,   504,     0,     0,
    2288        0,   279,     0,     0,     0,     0,     0,   280,     0,  1140,
    2289        0,   281,   504,     0,   282,   283,   284,   285,    40,    41,
    2290     1155,   286,   287,     0,     0,     0,     0,     0,     0,   288,
     2148     466,     0,  1490,     0,     0,   476,   207,     0,     0,   207,
     2149     207,     0,     0,     0,     0,     0,   733,     0,   484,     0,
     2150       0,     0,     0,     0,   494,   207,   498,     0,     0,     0,
     2151    1514,     0,     0,     0,   123,     0,     0,     0,     0,   207,
     2152       0,     0,     0,   527,     0,     0,   207,     0,     0,     0,
     2153       0,     0,     0,     0,     0,     0,  1527,     0,   214,     0,
     2154       0,  1529,     0,     0,     0,     0,     0,     0,     0,     0,
    22912155       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2292        0,     0,   376,   289,  1173,   373,     0,     0,   374,     0,
    2293        0,     0,   291,   375,   293,   294,   295,   296,     0,  1195,
     2156       0,     0,     0,     0,  1300,     0,   586,     0,     0,     0,
     2157       0,   591,     0,     0,     0,   733,     0,     0,     0,     0,
     2158       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2159      17,    18,    19,    20,    21,    22,    23,    24,     0,   637,
     2160      25,    26,    27,   638,   639,     0,   641,     0,    30,     0,
     2161       0,     0,   652,   653,     0,   654,   655,     0,   656,     0,
     2162     657,     0,  1162,   364,   364,     8,     9,    10,    11,    12,
     2163       0,    33,   214,     0,     0,     0,     0,   586,   203,    38,
     2164     207,     0,     0,     0,     0,   672,     0,     0,     0,     0,
     2165       0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
     2166       0,     0,     0,     0,     0,     0,     0,     0,   207,     0,
     2167     683,     0,     0,   207,   280,    33,     0,     0,     0,     0,
     2168     281,   689,   622,     0,   282,     0,     0,   283,   284,   285,
     2169     286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
     2170       0,     0,   289,     0,   725,     0,     0,     0,     0,     0,
     2171     728,     0,     0,     0,     0,   466,   290,     0,   374,     0,
     2172       0,     0,     0,     0,     0,   292,  1163,   294,   295,   296,
     2173     297,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2174     364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2175       0,   764,     0,     0,   509,   510,   513,     0,     0,     0,
     2176     207,     0,     0,   516,   517,     0,     0,   779,   510,   510,
     2177       0,     0,     0,     0,   207,     0,     0,     0,     0,     0,
     2178     510,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2179       0,     0,     0,   456,   499,     0,     0,     0,     0,     0,
     2180       0,     0,     0,   805,   337,   359,     0,     0,     0,     0,
     2181       0,     0,   815,     0,     0,     0,   510,     0,     0,   818,
     2182       0,     0,     0,   456,   825,     0,     0,     0,     0,     0,
     2183       0,     0,     0,     0,     0,   840,     0,   408,     0,     0,
     2184       0,     0,     0,     0,   408,     0,     0,     0,   162,     0,
     2185       0,     0,   510,   207,     0,     0,     0,     0,     0,     0,
     2186       0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
     2187       0,     0,     0,     0,     0,     0,   880,     0,     0,     0,
     2188       0,     0,     0,  -505,     0,   207,     1,     2,     3,     4,
     2189       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2190      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2191       0,   825,    25,    26,    27,    28,   408,     0,    29,     0,
     2192      30,    31,     0,     0,     0,     0,     0,     0,     0,     0,
    22942193       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2295        0,     0,     0,     0,     0,     0,     0,     0,  1204,     0,
    2296      358,     0,  -497,     0,     0,     1,     2,     3,     4,     5,
    2297        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2298       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2299        0,    25,    26,    27,    28,     0,     0,    29,     0,    30,
    2300       31,     0,   977,     0,     0,     0,     0,     0,     0,     0,
    2301        0,     0,     0,     0,     0,     0,     0,     0,     0,    32,
    2302        0,   875,    33,     0,    34,     0,    35,    36,     0,    37,
    2303       38,    39,     0,     0,     0,   407,  1253,  1254,    40,    41,
    2304        0,     0,     0,     0,     0,     0,     0,     0,     0,   277,
    2305        0,   278,     0,     0,   407,   407,     0,     0,     0,     0,
    2306        0,     0,     0,    42,     0,    43,     0,     0,   504,     0,
    2307        0,     0,   279,    44,   407,     0,     0,     0,   280,     0,
    2308      504,     0,   281,     0,     0,   282,   283,   284,   285,    40,
    2309       41,     0,   286,   287,     0,     0,     0,     0,     0,     0,
    2310      288,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2311        0,     0,     0,   977,   289,     0,   373,     0,     0,   974,
    2312        0,   504,     0,   291,   375,   293,   294,   295,   296,     0,
    2313        0,     1,     2,   202,     4,     5,     6,     7,     8,     9,
     2194      32,     0,     0,    33,     0,    34,     0,    35,    36,     0,
     2195      37,    38,    39,     0,     0,     0,     0,     0,     0,    40,
     2196      41,     0,     0,     0,     0,     0,   247,     0,     0,     0,
     2197       0,   408,   207,     0,     0,     0,   958,   959,     0,   408,
     2198     582,     0,   408,   585,    42,     0,    43,     0,     0,   975,
     2199       0,     0,   359,     0,    44,     0,   615,     0,   207,     0,
     2200       0,     0,     0,     0,     0,     0,   990,     0,   991,     0,
     2201       0,     0,   995,     0,     0,   633,     0,     0,   337,     0,
     2202       0,     0,     0,     0,     0,   207,   510,   510,   510,   510,
     2203     510,   510,   510,   510,   510,   510,   510,   510,   510,   510,
     2204     510,   510,   510,   510,   408,     0,     0,     0,   408,   278,
     2205       0,   279,     0,     0,     0,     0,   207,     0,     0,     0,
     2206       0,     0,     0,     0,     0,     0,     0,   207,     0,   510,
     2207       0,     0,   280,     0,     0,     0,     0,  1027,   642,   359,
     2208     136,   137,   282,     0,  1028,   283,   643,   285,   286,    40,
     2209      41,     0,   287,   288,     0,     0,     0,  1030,     0,  1031,
     2210     289,     0,   408,     0,     0,     0,     0,     0,     0,     0,
     2211       0,     0,     0,  1043,   290,     0,   644,     0,   645,   375,
     2212    1047,     0,     0,   292,   376,   294,   295,   296,   297,     0,
     2213       0,     0,  1083,   408,     0,  1084,   359,     0,     0,     0,
     2214       0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
     2215       0,     0,     0,   591,     0,     0,     0,     0,     0,     0,
     2216       0,     0,     0,     0,     0,     0,     0,   510,     0,     0,
     2217       0,     0,     0,     0,     0,   408,     0,     0,   337,   359,
     2218       0,     0,     0,     0,     0,     0,     0,     0,     0,   510,
     2219       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2220     317,     0,   510,     0,     0,     0,     0,     0,     0,     0,
     2221     341,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2222       0,     0,   377,   408,   408,     0,     0,     0,     0,     0,
     2223       0,     0,   207,     0,     0,     0,     0,     0,     0,     0,
     2224    1146,     0,   820,   359,     0,   359,     0,   510,     0,     0,
     2225       0,     0,     0,     0,   615,     0,   615,   615,     0,     0,
     2226       0,     0,     0,   615,     0,     0,     0,     0,     0,     0,
     2227       0,     0,     0,   859,   359,     0,     0,     0,   510,   359,
     2228       0,     0,     0,     0,     0,     0,     0,     0,   359,   359,
     2229     359,     0,   317,   510,     0,   527,     0,     0,     0,     0,
     2230       0,  1210,     0,     0,     0,     0,   359,     0,     0,     0,
     2231       0,   408,   902,     0,     0,   408,   905,   480,     0,     0,
     2232       0,     0,   907,     0,     0,     0,   207,     0,     0,     0,
     2233    1223,     0,     0,     0,     0,  1225,     0,     0,     0,     0,
     2234     337,   359,   408,  1229,   408,     0,     0,     0,   408,   201,
     2235       2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
     2236      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2237      22,    23,    24,  1254,     0,    25,    26,    27,     0,     0,
     2238     359,   615,     0,    30,     0,  1262,     0,     0,  1263,     0,
     2239    1264,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2240       0,     0,     0,     0,  1273,  1274,    33,     0,    34,     0,
     2241      35,     0,     0,   203,    38,   337,   359,     0,     0,     0,
     2242     408,   408,     0,     0,     0,     0,  1287,     0,     0,     0,
     2243       0,     0,   377,     0,     0,     0,     0,     0,     0,     0,
     2244       0,     0,     0,     0,   510,     0,     0,     0,     0,   204,
     2245       0,     0,  1306,     0,     0,     0,     0,   267,     0,     0,
     2246       0,   408,     0,     0,     0,     0,     0,     0,     0,     0,
     2247     359,     0,     0,   510,     0,     0,   820,   359,     0,     0,
     2248       0,   615,     0,   615,     0,   510,     0,     0,     0,     0,
     2249       0,     0,     0,   615,     0,     0,     0,     8,     9,    10,
     2250      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2251      21,    22,    23,    24,  -285,     0,    25,    26,    27,     0,
     2252       0,     0,     0,     0,    30,     0,   510,     0,     0,     0,
     2253       0,     0,     0,   727,     0,     0,     0,     0,     0,     0,
     2254       0,     0,     0,     0,  1372,     0,  1373,    33,     0,     0,
     2255       0,     0,    36,     0,   332,   333,    39,   207,  -285,  1382,
     2256       0,  1383,     0,    40,    41,     0,   820,     0,     0,     0,
     2257       0,   760,     0,     0,   408,     0,     0,     0,     0,  1390,
     2258     408,     0,     0,     0,   773,     0,     0,     0,   408,     0,
     2259     334,   760,     0,     0,     0,  1408,   510,     0,   109,     0,
     2260       0,   615,   615,  1411,   782,   783,  1229,     0,     8,     9,
     2261      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2262      20,    21,    22,    23,    24,  -286,   804,   359,  1434,     0,
     2263       0,     0,     0,   408,     0,    30,   813,  1441,     0,   510,
     2264    1443,  1445,     0,   341,     0,     0,     0,     0,   773,     0,
     2265       0,   408,  1143,   510,   510,     0,     0,     0,    33,     0,
     2266       0,   359,     0,     0,     0,     0,     0,   408,  1155,  -286,
     2267     615,   615,  1160,     0,     0,     0,     0,  1473,     0,  1229,
     2268       0,     0,   359,   359,     0,     0,     0,     0,     0,     0,
     2269       0,     0,     0,     0,  1485,     0,     0,     0,   879,     0,
     2270       0,     0,     0,     0,     0,     0,   377,     2,   202,     4,
     2271       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2272      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2273       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2274      30,   820,   408,  1222,     0,     0,   341,     0,     0,     0,
     2275       0,     0,     0,     0,   615,     0,     0,     0,     0,     0,
     2276       0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
     2277     203,    38,     0,     1,     2,     3,     4,     5,     6,     7,
     2278       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2279      18,    19,    20,    21,    22,    23,    24,     0,   359,    25,
     2280      26,    27,    28,     0,     0,    29,   266,    30,    31,     0,
     2281       0,     0,     0,     0,   622,     0,     0,     0,     0,     0,
     2282       0,   773,     0,   980,     0,     0,     0,    32,     0,   985,
     2283      33,     0,    34,     0,    35,    36,   994,    37,    38,    39,
     2284       0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
     2285       0,     0,     0,   510,     0,     0,     0,     0,   337,     0,
     2286       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2287     510,    42,     0,    43,     0,     0,     0,   359,     0,  1010,
     2288    1011,    44,   341,     0,     0,     0,     0,     0,     0,     0,
     2289       0,     0,     0,     0,     0,     0,     0,   341,     0,     0,
     2290       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2291      18,    19,    20,    21,    22,    23,    24,     0,     0,     0,
     2292       0,     0,     0,     0,     0,   359,   359,    30,     0,     0,
     2293       0,     0,     0,   510,   510,     0,     0,  1041,     0,     0,
     2294       0,   377,     0,     0,     0,     0,     0,     0,     0,     0,
     2295      33,     0,     0,     0,     1,     2,   202,     4,     5,     6,
     2296       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2297      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2298      25,    26,    27,    28,     0,     0,    29,   278,    30,  1050,
     2299    1051,     0,  1052,     0,     0,  1053,  1054,  1055,  1056,  1057,
     2300    1058,  1059,  1060,     0,  1061,     0,     0,  1062,    32,     0,
     2301     280,    33,     0,    34,     0,    35,   642,   317,    37,    38,
     2302     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2303     287,   288,  1124,  1125,     0,     0,     0,     0,   289,   377,
     2304       0,     0,   359,     0,     0,   985,     0,     0,  1134,     0,
     2305     760,     0,   290,     0,  1063,     0,   278,   167,   279,     0,
     2306       0,   292,   293,   294,   295,   296,   297,     0,     0,  1150,
     2307       0,     0,     0,     0,     0,  -126,     0,     0,     0,   280,
     2308    1165,     0,     0,     0,     0,   281,     0,     0,     0,   282,
     2309       0,     0,   283,   284,   285,   286,    40,    41,     0,   287,
     2310     288,     0,   377,     0,  1183,     0,     0,   289,     0,     0,
     2311       0,     0,     0,     0,     0,     0,     0,     0,     0,  1205,
     2312       0,   290,   408,   374,     0,     0,   375,     0,     0,     0,
     2313     292,   376,   294,   295,   296,   297,     0,   278,  1214,   279,
     2314    1051,     0,  1052,   408,   408,  1053,  1054,  1055,  1056,  1057,
     2315    1058,  1059,  1060,     0,  1061,     0,     0,  1062,    32,     0,
     2316     280,     0,     0,     0,     0,   408,   642,     0,     0,     0,
     2317     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2318     287,   288,     0,     0,   985,     0,     0,     0,   289,     0,
     2319       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2320       0,     0,   290,   879,   374,     0,     0,   167,     0,     0,
     2321       0,   292,   376,   294,   295,   296,   297,     0,  1265,  1266,
     2322       0,     0,     1,     2,   202,     4,     5,     6,     7,     8,
     2323       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2324      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2325      27,    28,     0,     0,    29,   278,    30,   279,     0,     0,
     2326       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2327       0,     0,     0,     0,     0,     0,     0,     0,   280,    33,
     2328       0,    34,     0,    35,   281,     0,    37,    38,   282,     0,
     2329       0,   283,   284,   285,   286,    40,    41,   985,   287,   288,
     2330       0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
     2331       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2332     290,     0,  1063,     0,     0,     0,     0,     0,     0,   292,
     2333     293,   294,   295,   296,   297,     0,     0,     0,     0,     0,
     2334       0,     0,     0,  -126,     1,     2,   202,     4,     5,     6,
     2335       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2336      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2337      25,    26,    27,    28,     0,     0,    29,   278,    30,   279,
     2338       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2339       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2340     280,    33,     0,    34,     0,    35,   281,     0,    37,    38,
     2341     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2342     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2343       0,     0,     0,     0,     0,     0,     0,     0,  1420,     0,
     2344       0,     0,   290,     0,    43,     0,     0,     0,     0,     0,
     2345       0,   292,   293,   294,   295,   296,   297,     2,   202,     4,
     2346       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2347      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2348       0,     0,    25,    26,    27,     0,     0,     0,     0,   278,
     2349      30,   279,     0,     0,     0,     0,     0,     0,     0,     0,
     2350       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2351    1477,     0,   280,    33,     0,    34,     0,    35,   281,     0,
     2352      37,    38,   282,     0,     0,   283,   284,   285,   286,    40,
     2353      41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
     2354     289,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2355       0,     0,     0,     0,   290,   317,   339,     0,     0,     0,
     2356       0,   772,     0,   292,   340,   294,   295,   296,   297,     2,
     2357     202,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2358      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2359      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2360       0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
     2361       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2362       0,     0,     0,     0,   280,    33,     0,    34,     0,    35,
     2363     281,     0,    37,    38,   282,     0,     0,   283,   284,   285,
     2364     286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
     2365       0,     0,   289,     0,     0,     0,     0,     0,     0,     0,
     2366       0,     0,     0,     0,     0,     0,   290,     0,   921,     0,
     2367       0,     0,     0,   772,     0,   292,   340,   294,   295,   296,
     2368     297,     2,   202,     4,     5,     6,     7,     8,     9,    10,
     2369      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2370      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2371       0,     0,     0,   278,    30,   279,     0,     0,     0,     0,
     2372       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2373       0,     0,     0,     0,     0,     0,   280,    33,     0,    34,
     2374       0,    35,   281,     0,    37,    38,   282,     0,     0,   283,
     2375     284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
     2376       0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
     2377       0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
     2378     921,     0,     0,     0,     0,   772,     0,   292,   593,   294,
     2379     295,   296,   297,     2,   202,     4,     5,     6,     7,     8,
     2380       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2381      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2382      27,     0,     0,     0,     0,   278,    30,   279,     0,     0,
     2383       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2384       0,     0,     0,     0,     0,     0,     0,     0,   280,    33,
     2385       0,    34,     0,    35,   281,     0,    37,    38,   282,     0,
     2386       0,   283,   284,   285,   286,    40,    41,     0,   287,   288,
     2387       0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
     2388       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2389     290,     0,   339,     0,     0,     0,     0,     0,     0,   292,
     2390     340,   294,   295,   296,   297,     2,   202,     4,     5,     6,
     2391       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2392      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2393      25,    26,    27,     0,     0,     0,     0,   278,    30,   279,
     2394       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2395       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2396     280,    33,     0,    34,     0,    35,   281,     0,    37,    38,
     2397     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2398     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2399       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2400       0,     0,   290,     0,   921,     0,     0,     0,     0,     0,
     2401       0,   292,   340,   294,   295,   296,   297,     2,   202,     4,
     2402       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2403      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2404       0,     0,    25,    26,    27,     0,     0,     0,     0,   278,
     2405      30,   279,     0,     0,     0,     0,     0,     0,     0,     0,
     2406       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2407       0,     0,   280,    33,     0,    34,     0,    35,   281,     0,
     2408     203,    38,   282,     0,     0,   283,   284,   285,   286,    40,
     2409      41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
     2410     289,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2411       0,     0,     0,     0,   290,     0,  1008,     0,     0,     0,
     2412       0,     0,     0,   292,  1009,   294,   295,   296,   297,     2,
     2413     202,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2414      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2415      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2416       0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
     2417       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2418       0,     0,     0,     0,   280,    33,     0,    34,     0,    35,
     2419     281,     0,   203,    38,   282,     0,     0,   283,   284,   285,
     2420     286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
     2421       0,     0,   289,     0,     0,     0,     0,     0,     0,     0,
     2422       0,     0,     0,     0,     0,     0,   290,     0,   374,     0,
     2423       0,     0,     0,     0,     0,   292,   376,   294,   295,   296,
     2424     297,     1,     2,     3,     4,     5,     6,     7,     8,     9,
    23142425      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    23152426      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2316       28,     0,     0,    29,   277,    30,  1042,  1043,     0,  1044,
    2317        0,     0,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,
    2318        0,  1053,     0,     0,  1054,    32,     0,   279,    33,   504,
    2319       34,     0,    35,   640,     0,    37,    38,   281,     0,     0,
    2320      282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
    2321        0,     0,     0,     0,     0,   288,     0,     0,     0,     0,
    2322        0,     0,     0,     0,     0,     0,     0,     0,     0,   289,
    2323        0,  1055,   504,     0,   167,     0,     0,     0,   291,   292,
    2324      293,   294,   295,   296,     0,     0,   504,   504,     0,     0,
    2325     1402,     0,  -126,     0,     1,     2,   202,     4,     5,     6,
     2427      28,     0,     0,    29,     0,    30,    31,     0,     0,     0,
     2428       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2429       0,     0,     0,     0,     0,    32,     0,     0,    33,     0,
     2430      34,     0,    35,    36,     0,    37,    38,    39,     0,     0,
     2431       0,     0,     0,     0,    40,    41,     0,     0,     0,     0,
     2432       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2433       0,     0,     0,     0,     0,     0,     0,     0,     0,    42,
     2434       0,    43,     0,     0,     0,  -509,     0,     0,     0,    44,
     2435       1,     2,   202,     4,     5,     6,     7,     8,     9,    10,
     2436      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2437      21,    22,    23,    24,  -285,     0,    25,    26,    27,    28,
     2438       0,     0,    29,     0,    30,     0,     0,     0,     0,     0,
     2439       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2440       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
     2441       0,    35,     0,     0,    37,    38,     0,     0,  -285,     1,
     2442       2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
     2443      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2444      22,    23,    24,     0,     0,    25,    26,    27,    28,     0,
     2445      43,    29,     0,    30,     0,     0,     0,     0,   109,     0,
     2446       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2447       0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
     2448      35,     0,     0,    37,    38,     2,   202,     4,     5,     6,
    23262449       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    23272450      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2328       25,    26,    27,    28,     0,     0,    29,   277,    30,   278,
     2451      25,    26,    27,     0,     0,     0,     0,     0,    30,    43,
     2452       0,     0,     0,     0,     0,     0,     0,   109,     0,     0,
     2453       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2454       0,    33,     0,    34,     0,    35,    36,     0,   203,    38,
     2455      39,     0,     0,     0,     0,     0,     0,    40,    41,     0,
    23292456       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    23302457       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2331      279,    33,     0,    34,     0,    35,   280,  1454,    37,    38,
    2332      281,     0,     0,   282,   283,   284,   285,    40,    41,     0,
    2333      286,   287,     0,     0,     0,     0,     0,     0,   288,     0,
     2458       0,     0,    42,     0,   204,     0,     0,     0,     0,     0,
     2459       0,     0,   205,     2,   202,     4,     5,     6,     7,     8,
     2460       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2461      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2462      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    23342463       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2335        0,     0,   289,     0,  1055,     0,     0,     0,     0,     0,
    2336      316,   291,   292,   293,   294,   295,   296,     0,     0,     0,
    2337        0,     0,     0,     0,     0,  -126,     1,     2,   202,     4,
    2338        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2339       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2340        0,     0,    25,    26,    27,    28,     0,     0,    29,   277,
    2341       30,   278,     8,     9,    10,    11,    12,    13,    14,    15,
    2342       16,    17,    18,    19,    20,    21,    22,    23,    24,  -278,
    2343        0,     0,   279,    33,     0,    34,     0,    35,   280,    30,
    2344       37,    38,   281,     0,     0,   282,   283,   284,   285,    40,
    2345       41,     0,   286,   287,     0,     0,     0,   504,     0,     0,
    2346      288,     0,    33,     0,     0,     0,     0,     0,     0,     0,
    2347        0,     0,     0,  -278,   289,     0,    43,     0,     0,     0,
    2348        0,     0,     0,   291,   292,   293,   294,   295,   296,     0,
    2349        0,     0,     2,   202,     4,     5,     6,     7,     8,     9,
    2350       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2351       20,    21,    22,    23,    24,   504,   504,    25,    26,    27,
    2352        0,     0,     0,     0,   277,    30,   278,     8,     9,    10,
    2353       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2354       21,    22,    23,    24,  -279,     0,     0,   279,    33,     0,
    2355       34,     0,    35,   280,    30,    37,    38,   281,     0,     0,
    2356      282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
    2357        0,     0,     0,     0,     0,   288,     0,    33,     0,     0,
    2358        0,     0,     0,     0,     0,     0,     0,     0,  -279,   289,
    2359        0,   916,     0,     0,     0,     0,   768,     0,   291,   339,
    2360      293,   294,   295,   296,     2,   202,     4,     5,     6,     7,
    2361        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2362       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2363       26,    27,     0,     0,     0,     0,   277,    30,   278,     8,
    2364        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2365       19,    20,    21,    22,    23,    24,     0,     0,     0,   279,
    2366       33,     0,    34,     0,    35,   280,    30,    37,    38,   281,
    2367        0,     0,   282,   283,   284,   285,    40,    41,     0,   286,
    2368      287,     0,     0,     0,     0,     0,     0,   288,     0,    33,
     2464       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2465       0,    34,     0,    35,     0,     0,    37,    38,     0,     0,
     2466       2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
     2467      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2468      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
     2469       0,  -390,   679,    30,     0,     0,     0,     0,     0,     0,
     2470     627,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2471       0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
     2472      35,     0,     0,    37,    38,     0,     0,     0,     0,     0,
    23692473       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2370        0,   289,     0,   916,     0,     0,     0,     0,   768,     0,
    2371      291,   591,   293,   294,   295,   296,     2,   202,     4,     5,
    2372        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2373       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2374        0,    25,    26,    27,     0,     0,     0,     0,   277,    30,
    2375      278,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2376        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2377        0,   279,    33,     0,    34,     0,    35,   280,     0,    37,
    2378       38,   281,     0,     0,   282,   283,   284,   285,    40,    41,
    2379        0,   286,   287,     0,     0,     0,     0,     0,     0,   288,
    2380        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2381        0,     0,     0,   289,     0,   338,     0,     0,     0,     0,
    2382        0,     0,   291,   339,   293,   294,   295,   296,     2,   202,
     2474       0,     0,     0,     0,     0,  1348,     0,     0,     0,     0,
     2475       0,     0,     0,     0,     0,     0,     0,     0,     0,   679,
     2476       0,     0,     0,     0,     0,     0,     0,   627,     2,   202,
    23832477       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    23842478      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    23852479      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2386      277,    30,   278,     0,     0,     0,     0,     0,     0,     0,
     2480       0,    30,     8,     9,    10,    11,    12,    13,    14,    15,
     2481      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2482       0,    25,    26,    27,    33,     0,    34,     0,    35,    30,
     2483       0,    37,    38,     0,     0,     0,     0,     0,     0,     0,
    23872484       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2388        0,     0,     0,   279,    33,     0,    34,     0,    35,   280,
    2389        0,    37,    38,   281,     0,     0,   282,   283,   284,   285,
    2390       40,    41,     0,   286,   287,     0,     0,     0,     0,     0,
    2391        0,   288,     0,     0,     0,     0,     0,     0,     0,     0,
    2392        0,     0,     0,     0,     0,   289,     0,   916,     0,     0,
    2393        0,     0,     0,     0,   291,   339,   293,   294,   295,   296,
     2485       0,     0,    33,  1350,     0,     0,     0,   108,     0,    37,
     2486      38,     0,     0,     0,     0,     0,     0,   679,     0,     0,
     2487       0,     0,     0,     0,     0,   627,     2,   202,     4,     5,
     2488       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2489      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2490       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2491       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2492       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2493       0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
     2494      38,     2,   202,     4,     5,     6,     7,     8,     9,    10,
     2495      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2496      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2497       0,     0,     0,     0,    30,   679,     0,     0,     0,     0,
     2498       0,     0,     0,   627,     0,     0,     0,     0,     0,     0,
     2499       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
     2500       0,    35,     0,     0,    37,    38,     2,   202,     4,     5,
     2501       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2502      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2503       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2504     592,     0,     0,     0,     0,     0,     0,     0,   627,     0,
     2505       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2506       0,     0,    33,     0,    34,     0,    35,     0,     0,   203,
     2507      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2508      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2509      25,    26,    27,     0,     0,     0,     0,   278,    30,   279,
     2510       0,     0,     0,     0,     0,   204,     0,     0,     0,     0,
     2511       0,     0,     0,   267,     0,     0,     0,     0,     0,     0,
     2512     280,    33,     0,     0,     0,     0,   281,     0,    37,    38,
     2513     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2514     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2515       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2516       0,     0,   290,     0,   519,     0,     0,   167,     0,     0,
     2517       0,   292,   293,   294,   295,   296,   297,     8,     9,    10,
     2518      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2519      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2520       0,     0,     0,   278,    30,   279,     0,     0,     0,     0,
     2521       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2522       0,     0,     0,     0,     0,     0,   280,    33,     0,     0,
     2523       0,     0,   281,     0,    37,    38,   282,     0,     0,   283,
     2524     284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
     2525       0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
     2526       0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
     2527     592,    -3,     0,     0,     0,     0,     0,   292,   593,   294,
     2528     295,   296,   297,     8,     9,    10,    11,    12,    13,    14,
     2529      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2530       0,     0,    25,    26,    27,     0,     0,     0,     0,   278,
     2531      30,   279,     0,     0,     0,     0,     0,     0,     0,     0,
     2532       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2533       0,     0,   280,    33,     0,     0,     0,     0,   642,     0,
     2534      37,    38,   282,     0,     0,   283,   284,   285,   286,    40,
     2535      41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
     2536     289,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2537       0,     0,     0,     0,   290,   -33,   757,     0,     0,     0,
     2538       0,     0,     0,   292,   293,   294,   295,   296,   297,     8,
     2539       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2540      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2541      27,     0,     0,     0,     0,   278,    30,   279,     0,     0,
     2542       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2543       0,     0,     0,     0,     0,     0,     0,     0,   280,    33,
     2544       0,     0,     0,     0,   281,     0,    37,    38,   282,     0,
     2545       0,   283,   284,   285,   286,    40,    41,     0,   287,   288,
     2546       0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
     2547       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2548     290,     0,   291,     0,     0,     0,     0,     0,     0,   292,
     2549     293,   294,   295,   296,   297,     8,     9,    10,    11,    12,
     2550      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2551      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2552       0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
     2553       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2554       0,     0,     0,     0,   280,    33,     0,     0,     0,     0,
     2555     281,     0,    37,    38,   282,     0,     0,   283,   284,   285,
     2556     286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
     2557       0,     0,   289,     0,     0,     0,     0,     0,     0,     0,
     2558       0,     0,     0,     0,     0,     0,   290,     0,   154,     0,
     2559       0,     0,     0,     0,     0,   292,   293,   294,   295,   296,
     2560     297,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2561      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2562      25,    26,    27,     0,     0,     0,     0,   278,    30,   279,
     2563       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2564       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2565     280,    33,     0,     0,     0,     0,   281,     0,    37,    38,
     2566     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2567     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2568       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2569       0,     0,   290,     0,   592,     0,     0,     0,     0,     0,
     2570       0,   292,   593,   294,   295,   296,   297,     8,     9,    10,
     2571      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2572      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2573       0,     0,     0,   278,    30,   279,     0,     0,     0,     0,
     2574       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2575       0,     0,     0,     0,     0,     0,   280,    33,     0,     0,
     2576       0,     0,   281,     0,    37,    38,   282,     0,     0,   283,
     2577     284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
     2578       0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
     2579       0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
     2580     374,     0,     0,     0,     0,     0,     0,   292,   376,   294,
     2581     295,   296,   297,     8,     9,    10,    11,    12,    13,    14,
     2582      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2583    -285,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2584      30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2585       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2586       0,     0,     0,    33,     0,     0,     0,     0,    36,     0,
     2587     332,   333,    39,     0,  -285,     0,     0,     0,     0,    40,
     2588      41,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2589      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2590      25,    26,    27,     0,   636,     0,   334,     0,    30,     0,
     2591       0,     0,     0,     0,   627,     0,     0,     0,     0,     0,
     2592       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2593       0,    33,     0,     0,     0,     0,    36,     0,    37,    38,
     2594      39,     0,     0,     0,     0,     0,     0,    40,    41,     8,
     2595       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2596      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2597      27,     0,    42,     0,   154,     0,    30,     0,     0,     0,
     2598       0,     0,    44,     0,     0,     0,     0,     0,     0,     0,
     2599       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2600       0,     0,     0,     0,    36,     0,    37,    38,    39,     0,
     2601       0,     0,     0,     0,     0,    40,    41,     8,     9,    10,
     2602      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2603      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2604      42,     0,    43,     0,    30,     0,     0,     0,     0,     0,
     2605      44,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2606       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
     2607       0,     0,    36,     0,   203,    38,    39,     0,     0,     0,
     2608       0,     0,     0,    40,    41,     8,     9,    10,    11,    12,
     2609      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2610      23,    24,     0,     0,    25,    26,    27,     0,    42,     0,
     2611     266,     0,    30,     0,     0,     0,     0,     0,   205,     0,
     2612       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2613       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2614      36,     0,   332,   333,    39,     0,     0,     0,     0,     0,
     2615       0,    40,    41,     8,     9,    10,    11,    12,    13,    14,
     2616      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2617       0,     0,    25,    26,    27,     0,   636,     0,   334,     0,
     2618      30,     0,     0,     0,     0,     0,   627,     0,     0,     0,
     2619       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2620       0,     0,     0,    33,     0,     0,     0,     0,    36,     0,
     2621     332,   333,    39,     0,     0,     0,     0,     0,     0,    40,
     2622      41,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2623      17,    18,    19,    20,    21,    22,    23,    24,  -285,     0,
     2624      25,    26,    27,     0,     0,     0,   334,     0,    30,     0,
     2625       0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
     2626       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2627       0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
     2628       0,     0,  -285,     8,     9,    10,    11,    12,    13,    14,
     2629      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2630    -285,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2631      30,     0,   636,     0,   334,     0,     0,     0,     0,     0,
     2632       0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
     2633       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2634      37,    38,     0,     0,  -285,     8,     9,    10,    11,    12,
     2635      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2636      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2637       0,     0,    30,   448,   636,     0,   334,     0,     0,     0,
     2638       0,     0,     0,     0,   627,     0,     0,     0,     0,     0,
     2639       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2640       0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
     2641      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2642      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2643       0,    30,   448,     0,     0,     0,     0,     0,   449,     0,
     2644       0,     0,   703,     0,     0,     0,   109,     0,     0,     0,
     2645       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
     2646       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
     2647      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2648    -285,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2649      30,     0,     0,     0,     0,     0,     0,   449,     0,     0,
     2650       0,   937,     0,     0,     0,   109,     0,     0,     0,     0,
     2651       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2652      37,    38,     0,     0,  -285,     8,     9,    10,    11,    12,
     2653      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2654      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2655       0,     0,    30,   448,     0,     0,   334,     0,     0,     0,
     2656       0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
     2657       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2658       0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
     2659      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2660      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2661       0,    30,     0,     0,     0,     0,     0,     0,   449,     0,
     2662       0,     0,  1219,     0,     0,     0,   109,     0,     0,     0,
     2663       0,     0,     0,     0,    33,     0,     0,     0,     0,   108,
     2664       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
     2665      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2666       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2667      30,   448,     0,     0,     0,     0,     0,    43,     0,     0,
     2668       0,     0,     0,     0,     0,   109,     0,     0,     0,     0,
     2669       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2670      37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
     2671      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2672       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2673       0,     0,     0,     0,     0,     0,   449,     0,     0,     0,
     2674       0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
     2675       0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
     2676      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2677      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2678      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
     2679       0,     0,     0,   636,     0,   334,     0,     0,     0,     0,
     2680       0,     0,     0,   109,     0,     0,     0,     0,     0,     0,
     2681       0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
     2682       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2683      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2684      26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
     2685       0,     0,   636,     0,   334,     0,     0,     0,     0,     0,
     2686       0,     0,   627,     0,     0,     0,     0,     0,     0,     0,
     2687      33,     0,     0,     0,     0,     0,     0,    37,    38,     8,
     2688       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2689      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2690      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
     2691       0,     0,     0,   253,     0,     0,     0,     0,     0,     0,
     2692       0,   109,     0,     0,     0,     0,     0,     0,     0,    33,
     2693       0,     0,     0,     0,     0,     0,    37,    38,     8,     9,
     2694      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2695      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     2696       0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
     2697       0,     0,   154,     0,     0,     0,     0,     0,     0,     0,
     2698     109,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     2699       0,     0,     0,     0,     0,   203,    38,     8,     9,    10,
     2700      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2701      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2702       0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
     2703       0,   266,     0,     0,     0,     0,     0,     0,     0,   267,
     2704       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
     2705       0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
     2706      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2707      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
     2708       0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
     2709     253,     0,     0,     0,     0,     0,     0,     0,   627,     0,
     2710       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
     2711       0,     0,     0,    37,    38,     8,     9,    10,    11,    12,
     2712      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2713      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2714       0,     0,    30,     0,     0,     0,     0,     0,     0,   334,
     2715       0,     0,     0,     0,     0,     0,     0,   627,     0,     0,
     2716       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2717       0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
     2718      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2719      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2720       0,    30,     0,     0,     0,     0,     0,     0,   449,     0,
     2721       0,     0,     0,     0,     0,     0,   109,     0,     0,     0,
     2722       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
     2723       0,   203,    38,     8,     9,    10,    11,    12,    13,    14,
     2724      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2725       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2726      30,     0,     0,     0,     0,     0,     0,   266,     0,     0,
     2727       0,     0,     0,     0,     0,   622,     0,     0,     0,     0,
     2728       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2729      37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
     2730      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2731       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2732       0,     0,     0,     0,     0,     0,   592,     0,     0,     0,
     2733       0,     0,     0,     0,   627,     0,     0,     0,     0,     0,
     2734       0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
     2735      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2736      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2737      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
     2738       0,     0,     0,     0,     0,   334,     0,     0,     0,     0,
     2739       0,     0,     0,   109,     0,     0,     0,     0,     0,     0,
     2740       0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
    23942741       2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
    23952742      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    23962743      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2397        0,     0,   277,    30,   278,     0,     0,     0,     0,     0,
     2744       0,     0,     0,    30,    43,     0,     0,     0,     0,     0,
     2745       0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
     2746       0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
     2747      35,     0,     0,    37,    38,     0,   278,     0,   279,  1051,
     2748       0,  1052,     0,     0,  1053,  1054,  1055,  1056,  1057,  1058,
     2749    1059,  1060,  1507,  1061,     0,     0,  1062,    32,     0,   280,
     2750       0,     0,     0,     0,     0,   642,     0,     0,  -403,   282,
     2751       0,     0,   283,   284,   285,   286,    40,    41,     0,   287,
     2752     288,     0,     0,     0,     0,     0,     0,   289,     0,     0,
    23982753       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2399        0,     0,     0,     0,     0,   279,    33,     0,    34,     0,
    2400       35,   280,     0,   203,    38,   281,     0,     0,   282,   283,
    2401      284,   285,    40,    41,     0,   286,   287,     0,     0,     0,
    2402        0,     0,     0,   288,     0,     0,     0,     0,     0,     0,
    2403        0,     0,     0,     0,     0,     0,     0,   289,     0,  1000,
    2404        0,     0,     0,     0,     0,     0,   291,  1001,   293,   294,
    2405      295,   296,     2,   202,     4,     5,     6,     7,     8,     9,
    2406       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2407       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2408        0,     0,     0,     0,   277,    30,   278,     0,     0,     0,
     2754       0,   290,     0,   374,     0,     0,   167,     0,     0,     0,
     2755     292,   376,   294,   295,   296,   297,     0,   278,     0,   279,
     2756    1051,     0,  1052,     0,  -126,  1053,  1054,  1055,  1056,  1057,
     2757    1058,  1059,  1060,     0,  1061,     0,     0,  1062,    32,     0,
     2758     280,     0,     0,     0,     0,     0,   642,     0,     0,     0,
     2759     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2760     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
    24092761       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2410        0,     0,     0,     0,     0,     0,     0,   279,    33,     0,
    2411       34,     0,    35,   280,     0,   203,    38,   281,     0,     0,
    2412      282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
    2413        0,     0,     0,     0,     0,   288,     0,     0,     0,     0,
    2414        0,     0,     0,     0,     0,     0,     0,     0,     0,   289,
    2415        0,   373,     0,     0,     0,     0,     0,     0,   291,   375,
    2416      293,   294,   295,   296,     1,     2,     3,     4,     5,     6,
    2417        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2418       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2419       25,    26,    27,    28,     0,     0,    29,     0,    30,    31,
    2420        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2421        0,     0,     0,     0,     0,     0,     0,     0,    32,     0,
    2422        0,    33,     0,    34,     0,    35,    36,     0,    37,    38,
    2423       39,     0,     0,     0,     0,     0,     0,    40,    41,     0,
    2424        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2425        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2426        0,     0,    42,     0,    43,     0,     0,     0,  -501,     0,
    2427        0,     0,    44,     1,     2,     3,     4,     5,     6,     7,
     2762       0,     0,   290,     0,   374,     0,     0,   167,     0,     0,
     2763       0,   292,   376,   294,   295,   296,   297,     0,     0,     0,
     2764       0,     0,     0,     0,     0,  -126,     2,   202,     4,     5,
     2765       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2766      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2767       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    24282768       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    24292769      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2430       26,    27,    28,     0,     0,    29,     0,    30,    31,     0,
     2770      26,    27,    33,     0,    34,     0,    35,    30,     0,    37,
     2771      38,     0,   278,     0,   279,  1051,     0,  1052,  1394,  1395,
     2772    1053,  1054,  1055,  1056,  1057,  1058,  1059,  1060,  1507,  1061,
     2773      33,  1307,  1062,    32,     0,   280,     0,    37,    38,     0,
     2774       0,   642,     0,     0,     0,   282,     0,     0,   283,   284,
     2775     285,   286,    40,    41,     0,   287,   288,     0,     0,     0,
     2776       0,     0,     0,   289,     0,     0,     0,     0,     0,     0,
     2777       0,     0,     0,     0,     0,     0,     0,   290,     0,   374,
     2778       0,     0,   167,     0,     0,     0,   292,   376,   294,   295,
     2779     296,   297,   278,     0,   279,  1051,     0,  1052,  1394,  1395,
     2780    1053,  1054,  1055,  1056,  1057,  1058,  1059,  1060,     0,  1061,
     2781       0,     0,  1062,    32,     0,   280,     0,     0,     0,     0,
     2782       0,   642,     0,     0,     0,   282,     0,     0,   283,   284,
     2783     285,   286,    40,    41,     0,   287,   288,     0,     0,     0,
     2784       0,     0,     0,   289,     0,     0,     0,     0,     0,   278,
     2785       0,   279,     0,     0,     0,     0,     0,   290,     0,   374,
     2786       0,     0,   167,     0,     0,     0,   292,   376,   294,   295,
     2787     296,   297,   280,     0,     0,     0,     0,     0,   281,     0,
     2788       0,     0,   282,     0,     0,   283,   284,   285,   286,    40,
     2789      41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
     2790     289,     0,     0,     0,     0,     0,   278,     0,   279,     0,
     2791       0,     0,     0,     0,   290,     0,   374,     0,     0,     0,
     2792       0,     0,   802,   292,   376,   294,   295,   296,   297,   280,
     2793       0,     0,     0,     0,     0,   281,     0,     0,     0,   282,
     2794       0,     0,   283,   284,   285,   286,    40,    41,     0,   287,
     2795     288,     0,     0,     0,     0,     0,     0,   289,     0,     0,
     2796       0,     0,     0,   278,     0,   279,     0,     0,     0,     0,
     2797       0,   290,     0,   374,     0,     0,   982,     0,     0,     0,
     2798     292,   376,   294,   295,   296,   297,   280,     0,     0,     0,
     2799       0,     0,   281,     0,     0,     0,   282,     0,     0,   283,
     2800     284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
     2801       0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
     2802     278,     0,   279,     0,     0,     0,     0,     0,   290,     0,
     2803     374,     0,     0,     0,     0,     0,     0,   292,   376,   294,
     2804     295,   296,   297,   280,     0,     0,     0,     0,     0,   281,
     2805       0,     0,     0,   282,     0,     0,   283,   284,   285,   286,
     2806      40,    41,     0,   287,   288,     0,     0,     0,     0,     0,
     2807       0,   289,     0,     0,     0,     0,     0,   278,     0,   279,
     2808       0,     0,     0,     0,     0,   290,     0,   374,     0,     0,
     2809       0,     0,     0,     0,   292,   726,   294,   295,   296,   297,
     2810     280,     0,     0,     0,     0,     0,   642,     0,     0,     0,
     2811     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2812     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2813       0,     0,     0,     0,   278,     0,   279,     0,     0,     0,
     2814       0,     0,   290,     0,   776,     0,     0,     0,     0,     0,
     2815       0,   292,   376,   294,   295,   296,   297,   280,     0,     0,
     2816       0,     0,     0,   281,     0,     0,     0,   282,     0,     0,
     2817     283,   284,   285,   286,    40,    41,     0,   287,   288,     0,
     2818       0,     0,     0,     0,     0,   289,     0,     0,     0,     0,
     2819       0,   278,     0,   279,     0,     0,     0,     0,     0,   290,
     2820       0,   374,     0,     0,     0,     0,     0,     0,   292,   817,
     2821     294,   295,   296,   297,   280,     0,     0,     0,     0,     0,
     2822     281,     0,     0,     0,   282,     0,     0,   283,   284,   285,
     2823     286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
     2824       0,     0,   289,     0,     0,     0,     0,     0,   278,     0,
     2825     279,     0,     0,     0,     0,     0,   508,     0,     0,     0,
     2826       0,     0,     0,     0,     0,   292,   376,   294,   295,   296,
     2827     297,   280,     0,     0,     0,     0,     0,   281,     0,     0,
     2828       0,   282,     0,     0,   283,   284,   285,   286,    40,    41,
     2829       0,   287,   288,     0,     0,     0,     0,     0,     0,   289,
     2830       0,     0,     0,     0,     0,   278,     0,   279,     0,     0,
     2831       0,     0,     0,   290,     0,     0,     0,     0,     0,     0,
     2832       0,     0,   292,   376,   294,   295,   296,   297,   280,     0,
     2833       0,     0,     0,     0,   281,     0,     0,     0,   282,     0,
     2834       0,   283,   284,   285,   286,    40,    41,     0,   287,   288,
     2835       0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
     2836       0,     0,   278,     0,   279,     0,     0,     0,     0,     0,
     2837     512,     0,     0,     0,     0,     0,     0,     0,     0,   292,
     2838     376,   294,   295,   296,   297,   280,     0,     0,     0,     0,
     2839       0,   281,     0,     0,     0,   282,     0,     0,   283,   284,
     2840     285,   286,    40,    41,     0,   287,   288,     0,     0,     0,
     2841       0,     0,     0,   289,     0,     0,     0,     0,     0,     0,
     2842       0,     0,     0,     0,     0,     0,     0,   515,     0,     0,
     2843       0,     0,     0,     0,     0,     0,   292,   376,   294,   295,
     2844     296,   297,     2,   202,     4,     5,     6,     7,     8,     9,
     2845      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2846      20,    21,    22,    23,    24,     0,     0,     0,     0,     0,
     2847       0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    24312848       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2432        0,     0,     0,     0,     0,     0,     0,    32,     0,     0,
    2433       33,     0,    34,     0,    35,    36,     0,    37,    38,    39,
    2434        0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
    2435        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2436        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2437        0,    42,     0,    43,     0,     0,     0,     0,     0,     0,
    2438        0,    44,     1,     2,   202,     4,     5,     6,     7,     8,
    2439        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2440       19,    20,    21,    22,    23,    24,  -278,     0,    25,    26,
    2441       27,    28,     0,     0,    29,     0,    30,     0,     0,     0,
    2442        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2443        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2444        0,    34,     0,    35,     0,     0,    37,    38,     0,     0,
    2445     -278,   201,     2,   202,     4,     5,     6,     7,     8,     9,
    2446       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2447       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2448        0,     0,    43,     0,     0,    30,     0,     0,     0,     0,
    2449      109,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24502849       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2451       34,     0,    35,     0,     0,   203,    38,     2,   202,     4,
     2850      34,     0,    35,    36,     0,   170,   171,    39,     0,     0,
     2851       0,     0,     0,     0,    40,    41,   201,     2,   202,     4,
    24522852       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    24532853      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    24542854       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2455       30,   204,     0,     0,     0,     0,     0,     0,     0,   267,
     2855      30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24562856       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2457        0,     0,     0,    33,     0,    34,     0,    35,    36,     0,
    2458      203,    38,    39,     0,     0,     0,     0,     0,     0,    40,
    2459       41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2857       0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
     2858     203,    38,   469,     2,   202,     4,     5,     6,     7,     8,
     2859       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2860      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2861      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    24602862       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2461        0,     0,     0,     0,    42,     0,   204,     0,     0,     0,
    2462        0,     0,     0,     0,   205,     2,   202,     4,     5,     6,
    2463        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2464       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2465       25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
    2466        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2467        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2468        0,    33,     0,    34,     0,    35,     0,     0,    37,    38,
    2469        0,     0,     2,   202,     4,     5,     6,     7,     8,     9,
    2470       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2471       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2472        0,     0,     0,  -383,   676,    30,     0,     0,     0,     0,
    2473        0,     0,   625,     0,     0,     0,     0,     0,     0,     0,
    2474        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2475       34,     0,    35,     0,     0,    37,    38,     0,     0,     0,
    2476        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2477        0,     0,     0,     0,     0,     0,     0,  1334,     0,     0,
    2478        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2479        0,   676,     0,     0,     0,     0,     0,     0,     0,   625,
    2480        2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
    2481       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2482       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2483        0,     0,     0,    30,     8,     9,    10,    11,    12,    13,
    2484       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2485       24,     0,     0,    25,    26,    27,    33,     0,    34,     0,
    2486       35,    30,     0,    37,    38,     0,     0,     0,     0,     0,
    2487        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2488        0,     0,     0,     0,    33,  1336,     0,     0,     0,   108,
    2489        0,    37,    38,     0,     0,     0,     0,     0,     0,   676,
    2490        0,     0,     0,     0,     0,     0,     0,   625,     2,   202,
     2863       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2864       0,    34,     0,    35,     0,     0,    37,    38,     2,   202,
    24912865       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    24922866      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     
    24952869       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24962870       0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
    2497        0,   203,    38,     2,   202,     4,     5,     6,     7,     8,
     2871       0,   203,    38,     8,     9,    10,    11,    12,    13,    14,
     2872      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2873       0,     0,    25,    26,    27,   487,   488,   489,     0,     0,
     2874      30,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2875      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2876      25,    26,    27,    33,     0,     0,     0,     0,    30,     0,
     2877      37,    38,     0,     0,     0,     0,     0,     0,     0,     0,
     2878       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2879       0,    33,     0,     0,     0,     0,     0,     0,   203,    38
     2880};
     2881
     2882#define yypact_value_is_default(yystate) \
     2883  ((yystate) == (-1318))
     2884
     2885#define yytable_value_is_error(yytable_value) \
     2886  YYID (0)
     2887
     2888static const yytype_int16 yycheck[] =
     2889{
     2890       1,    42,     0,    42,     0,   181,    42,   235,   181,   165,
     2891     181,     1,   451,   200,   182,   182,   215,   648,   690,   181,
     2892     181,   484,   181,   181,   275,   602,   344,   113,   103,   751,
     2893     252,   622,   690,    31,   494,    31,   690,    31,   498,   604,
     2894     457,   892,   988,   359,    42,   602,    44,   363,    44,  1317,
     2895       1,   534,   602,   995,  1031,     0,    54,    37,    37,   183,
     2896     602,   604,    60,   602,    60,    63,   450,    63,    66,   605,
     2897      66,   344,    37,   572,   101,   611,    66,   152,    65,    65,
     2898     771,  1398,    65,    49,   715,   261,    31,    75,   261,    42,
     2899     261,  1394,   412,    44,   262,   262,   768,   691,    42,   261,
     2900     261,  1043,   261,   261,   602,    37,   104,  1030,  1031,   107,
     2901     768,   197,   432,   101,   768,   113,    27,    75,    57,   713,
     2902     440,    42,   101,   103,   103,   111,     0,    89,    75,   340,
     2903      42,    43,    37,   257,   258,   101,   101,   124,   103,   523,
     2904     181,   124,   181,  1411,   602,   181,   144,   892,   144,   101,
     2905     102,     0,   103,   115,   152,  1458,   103,    31,   109,   157,
     2906      71,   157,   101,   420,   421,  1482,    42,    43,    65,   101,
     2907    1487,   103,   101,   636,   637,   638,    37,    65,   290,   736,
     2908       0,     1,    31,   181,   182,  1050,   182,  1504,   277,    88,
     2909     412,   654,   143,    65,  1511,   107,    44,   892,    65,   197,
     2910      75,   152,    75,    37,    29,   404,   103,   205,    78,   205,
     2911     432,    31,    11,     0,    63,   103,   214,   490,   440,   217,
     2912     261,   217,   261,   122,   101,   261,   689,   102,   181,   102,
     2913     106,   103,   400,   400,   109,   105,   103,   181,   736,   496,
     2914     101,   104,   103,    63,    31,   108,    66,   248,  1225,   247,
     2915     201,   247,   829,   247,   205,    80,    81,   514,     0,     1,
     2916     181,   109,   337,   261,   262,   728,   262,   101,   104,   103,
     2917     268,   710,   829,   484,   590,   106,   841,   275,   736,   829,
     2918     108,    75,   450,   450,   235,   236,   604,   829,   289,    31,
     2919     829,   366,   492,    73,  1240,   831,   124,  1274,   841,     0,
     2920       1,   764,   247,  1487,   390,  1050,   997,   101,   420,   421,
     2921     809,    73,    42,    43,   482,   482,   267,   633,    75,   270,
     2922    1504,    63,   579,   103,    66,   105,   324,  1511,   324,   109,
     2923      31,   829,   418,   153,    54,    89,  1487,  1059,   424,   290,
     2924     108,   103,   293,   105,     0,   343,   344,   109,   111,   123,
     2925    1273,  1274,   109,   116,   117,   818,   124,   205,  1053,  1210,
     2926    1511,   115,   360,   683,   224,    66,   364,    65,   217,    67,
     2927      68,   829,   949,   247,   968,    31,   106,   104,   252,   101,
     2928     108,   108,   593,   243,   104,   950,   337,   107,   236,   340,
     2929       3,    65,   390,    67,    68,     3,   508,   217,   247,   949,
     2930     512,   123,   400,   515,   400,   103,   606,   949,   359,   108,
     2931     610,   622,   363,  1390,   239,   366,   627,   506,  1009,   267,
     2932     418,    65,  1287,    67,    68,   124,   424,   247,   426,   102,
     2933      67,   631,   106,   108,    71,   635,   109,    74,   102,    76,
     2934    1382,  1383,   290,    65,   108,   293,    83,    69,   108,   124,
     2935     123,   526,   450,     0,    76,    77,   568,   101,   107,   108,
     2936     247,   683,   106,     0,    52,  1210,   102,  1390,   469,   420,
     2937     421,   101,   108,   508,   123,   217,   474,   512,   689,   101,
     2938     515,   103,  1018,  1019,   482,   102,   482,   101,   486,   111,
     2939     486,   108,   490,   649,   214,  1126,   345,   448,   958,   750,
     2940     451,   918,   102,   725,   820,   247,   457,    95,   824,   109,
     2941     993,   108,   123,   514,   690,  1210,   102,   690,   469,   690,
     2942     113,   114,   108,   841,   692,   692,  1120,   124,   690,   690,
     2943     531,   690,   690,   534,   658,   536,   101,  1102,   412,   101,
     2944     108,   486,  1287,   494,   928,   496,   247,   498,   268,   121,
     2945     375,   123,   936,   764,   102,   275,   124,   508,   432,    83,
     2946      84,   512,   108,   514,   515,  1287,   440,  1030,   841,  1434,
     2947     656,   208,   108,   108,   108,   526,  1441,   108,   124,   668,
     2948     107,   102,   583,  1177,  1178,     0,   108,   108,   124,   124,
     2949     124,   247,   590,   124,   118,   119,   252,   981,   914,   101,
     2950     448,   189,   124,   451,   602,  1300,   604,   427,   466,   457,
     2951     484,   101,   486,   688,   637,   638,    31,   108,   104,   101,
     2952    1485,   103,   108,   343,   212,   623,   475,    42,   579,    44,
     2953     455,   654,   101,   124,   222,   460,    44,   486,  1360,   590,
     2954     360,   639,   593,   102,   364,    60,   102,   104,    63,  1088,
     2955     109,    66,   108,   108,   655,   653,   657,   104,   656,  1354,
     2956     508,   108,  1357,   863,   512,   754,   486,   515,   493,   124,
     2957     495,   622,   102,   636,   637,   638,   627,   102,   108,   878,
     2958     102,   954,   633,  1146,    65,   102,    67,    68,   763,  1434,
     2959     102,   654,   690,   104,   692,   102,  1441,   108,  1461,   486,
     2960     899,   109,   290,  1398,  1467,   728,   101,   527,  1403,   102,
     2961     347,   104,   349,    81,    82,   108,  1438,   101,  1440,   103,
     2962     101,  1484,   723,    85,    86,   106,  1489,   111,   884,   144,
     2963     123,   124,   960,  1428,   101,   143,   103,   688,   736,   737,
     2964    1485,   101,   157,   103,   486,     4,     5,     6,     7,     8,
     2965       9,   111,   750,   101,  1118,   955,   412,   102,  1122,   710,
     2966     928,   928,   101,   108,  1486,   728,   181,   182,   936,   936,
     2967     124,   591,   101,  1089,   103,   624,   432,   101,   102,   103,
     2968     102,   102,   111,  1377,   440,   486,   108,   108,   102,   740,
     2969     205,   101,   102,   103,   108,   818,    57,   205,  1009,   436,
     2970    1394,   101,   217,    62,   591,    64,   101,  1502,   103,   683,
     2971    1273,   101,   763,  1508,   672,   689,   636,   637,   638,  1491,
     2972     645,   104,  1517,   102,   108,   109,  1521,   235,   124,   108,
     2973     486,   829,   247,  1491,   654,  1022,    65,  1491,    67,    68,
     2974      69,    65,   106,   841,   102,    69,   261,    76,    77,   437,
     2975     108,   725,    76,    77,   102,   818,   101,   102,   103,   267,
     2976     108,   124,   710,  1457,  1458,   124,   101,   716,   103,   820,
     2977     102,   124,   101,   824,   103,   106,   108,   101,    44,    65,
     2978     705,   730,   111,   471,   106,   293,   711,   111,   101,  1045,
     2979     764,   892,   102,   102,    60,   102,   102,    63,   108,   108,
     2980      66,   108,   108,   623,   557,   558,   559,   560,   728,   324,
     2981      10,    11,    12,    13,    14,    65,   914,    67,    68,   639,
     2982     508,   101,   102,   103,   512,   101,   101,   515,   103,   344,
     2983     928,   104,   340,   653,   101,  1146,   103,    37,   936,     4,
     2984       5,     6,     7,     8,     9,    75,   101,   805,   103,    75,
     2985      65,     0,     1,   101,    69,   103,   954,   815,   102,   103,
     2986      60,    76,    77,   914,  1246,  1247,  1248,   918,   101,   959,
     2987     103,   112,   830,   822,   695,   120,   697,    87,   144,    78,
     2988      79,    80,    31,    54,    55,   400,   101,   108,   109,   990,
     2989     121,   157,   993,   101,   995,    44,   111,    62,   818,    64,
     2990     123,   101,   101,   103,   103,   825,   105,   958,   959,   960,
     2991     103,   111,   420,   421,  1225,   101,   182,    66,   892,    65,
     2992     104,    67,    68,    69,  1110,   108,   109,   683,   104,  1118,
     2993     750,    42,    43,  1122,  1123,   450,   553,   554,   825,   205,
     2994     555,   556,  1043,   892,   102,   561,   562,   102,   102,   102,
     2995     102,   217,  1053,   101,   103,  1056,  1057,  1058,  1009,   884,
     2996     102,   104,   103,   108,   104,   101,   891,   123,   106,   725,
     2997     918,   486,   892,   104,   102,   490,   102,   104,  1190,  1191,
     2998     104,  1193,   104,   671,   104,   108,  1470,  1199,   496,    28,
     2999    1202,   109,   680,   109,    63,   144,   684,    10,    11,    12,
     3000      13,    14,   102,   152,   153,   892,   514,   102,   104,   106,
     3001     109,    80,  1110,   107,    10,    11,    12,    13,    14,   102,
     3002     107,   107,   101,   108,    37,   102,   124,   102,   102,  1513,
     3003     102,  1206,   102,   182,   102,   466,   109,  1088,  1089,   959,
     3004     102,    37,   108,   102,   102,   114,  1235,    60,   197,   102,
     3005     892,   200,   201,   102,   102,   975,   205,   982,   324,   102,
     3006     102,   102,   102,  1012,    60,   102,   102,   102,    28,  1027,
     3007    1028,   579,   123,   107,   104,   102,  1050,   226,   102,   102,
     3008     102,   230,   107,   232,   104,   593,     3,   602,   157,   604,
     3009     108,   892,   241,    10,    11,    12,    13,    14,   247,  1189,
     3010     104,  1050,   102,   252,   102,   101,   108,   103,  1206,  1210,
     3011    1030,  1031,   102,   262,   622,   111,   109,   959,   106,   627,
     3012      37,   270,   108,   108,   104,  1083,  1084,   102,   102,  1318,
     3013    1050,   108,   108,  1322,   400,   102,   892,   101,   104,  1229,
     3014    1088,   104,   101,    60,  1356,  1246,  1247,  1248,   217,    65,
     3015     101,    67,    68,    69,  1079,  1206,   101,   101,   959,   109,
     3016      76,    77,    65,  1050,    67,    68,    69,   124,   107,   102,
     3017    1498,   102,  1146,    76,    77,   690,   102,   692,  1229,   121,
     3018     107,   106,   104,   124,   108,     3,   255,  1373,   337,   104,
     3019     259,   340,    10,    11,    12,    13,    14,   346,   101,  1300,
     3020     108,   102,   104,   102,     0,   102,   104,    45,  1050,   104,
     3021     359,   104,   102,   104,   363,  1491,   104,   366,  1491,    37,
     3022    1491,   736,   737,   104,  1492,  1492,  1415,  1317,   916,  1491,
     3023    1491,   107,  1491,  1491,   102,    31,  1210,   124,   124,  1188,
     3024     124,   672,    60,   107,   124,  1513,  1513,   124,   109,  1050,
     3025     102,  1225,   107,  1354,   104,   104,  1357,   104,   104,  1184,
     3026     104,  1210,   104,   412,   104,  1223,  1317,   104,  1188,  1189,
     3027      66,   102,   102,   101,  1372,  1373,   345,   104,   427,   104,
     3028     101,  1382,  1383,   432,  1470,    55,    54,   102,   102,   106,
     3029    1210,   440,   124,   109,  1050,   104,  1254,  1398,   104,   102,
     3030     104,   102,  1403,    89,  1262,  1263,  1264,   101,   107,  1229,
     3031     102,   104,   102,  1287,   829,  1416,    40,   466,   102,   102,
     3032     469,  1411,   109,  1210,   124,   102,   841,  1428,   108,   124,
     3033      89,   102,     3,  1282,   109,   484,   102,   486,  1287,    10,
     3034      11,    12,    13,    14,   102,   494,  1188,  1189,  1306,   498,
     3035    1491,   124,  1491,  1273,  1274,  1491,   425,   153,   107,   124,
     3036    1411,   104,  1282,   104,   124,   101,    37,  1287,  1210,   124,
     3037    1471,   124,  1470,  1061,   805,  1476,   107,   526,   527,   672,
     3038     107,  1482,   102,   691,   815,   102,  1487,  1229,  1189,    60,
     3039     563,   565,  1443,  1491,  1492,   564,  1492,  1317,   566,   830,
     3040    1287,  1502,  1127,  1504,   567,   713,   475,  1508,    54,  1210,
     3041    1511,  1362,  1458,   928,  1210,  1513,  1517,  1513,  1521,  1296,
     3042    1521,   936,  1473,   572,  1473,  1123,  1322,  1441,  1229,  1079,
     3043     226,   448,   448,   936,   697,   884,   938,   982,   650,   954,
     3044    1282,   590,   591,   740,   593,  1287,   460,  1498,   583,  1229,
     3045     956,   247,   960,   486,  1210,   604,   252,   571,   104,    63,
     3046    1434,   107,   750,   571,   571,    -1,    -1,  1441,    -1,    -1,
     3047    1390,    -1,    -1,   622,    -1,  1317,    -1,    -1,   627,    -1,
     3048      -1,    -1,    -1,    -1,   633,  1434,  1287,   636,   637,   638,
     3049      -1,  1411,  1441,    -1,   802,  1443,    65,    -1,    67,    68,
     3050      69,  1009,    -1,    -1,    -1,   654,   152,    76,    77,    -1,
     3051     114,  1485,   805,    -1,  1434,     0,  1317,    -1,    -1,    -1,
     3052      -1,  1441,   815,   672,    -1,  1473,    -1,   596,    -1,    -1,
     3053      -1,  1287,   101,    -1,   683,    -1,  1485,   830,    -1,   688,
     3054     689,    -1,   111,   692,    -1,    -1,    31,  1434,    -1,    -1,
     3055     346,    -1,  1372,   157,  1441,   624,    -1,    -1,    -1,    -1,
     3056     629,    -1,    -1,    -1,    -1,  1485,    -1,    -1,   214,  1411,
     3057     185,    -1,   880,    -1,    -1,    -1,   725,   192,    -1,   728,
     3058      -1,    66,    65,    -1,    67,    68,    69,    -1,   737,    -1,
     3059      -1,   740,  1434,    76,    77,    -1,  1027,  1028,  1485,  1441,
     3060      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1295,    -1,    -1,
     3061    1411,    -1,    -1,   217,   763,   764,   412,    -1,   101,    -1,
     3062     769,    -1,   268,    65,    -1,    67,    68,    69,   111,   275,
     3063      -1,   427,    -1,  1434,    76,    77,   432,    -1,    -1,    -1,
     3064    1441,    -1,    -1,  1485,   440,    -1,    -1,   716,    -1,   264,
     3065      -1,   255,  1083,  1084,    -1,   259,   805,    -1,    -1,   101,
     3066     968,   730,    -1,    -1,    -1,    -1,   815,    -1,   153,   818,
     3067     466,   820,    -1,    -1,   823,   824,   825,    -1,  1434,    -1,
     3068      -1,   830,    -1,    -1,  1485,  1441,    -1,    -1,   484,   997,
     3069     486,   840,    10,    11,    12,    13,    14,   343,    -1,    -1,
     3070      -1,    -1,    -1,    -1,   319,    10,    11,    12,    13,    14,
     3071      -1,    -1,   327,    -1,   360,   330,    -1,    -1,   364,    37,
     3072      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1485,
     3073      -1,   527,    37,    -1,  1027,  1028,    -1,    -1,    -1,  1047,
     3074      -1,   345,    60,   892,    -1,    -1,    -1,    65,    -1,    67,
     3075      68,    69,    -1,   822,  1442,    60,    -1,    -1,    76,    77,
     3076      65,    -1,   247,    -1,    69,   914,    -1,   252,    -1,    -1,
     3077      -1,    76,    77,    -1,    -1,    -1,    -1,   392,    -1,    -1,
     3078     426,   396,    -1,   101,  1472,   103,    -1,    -1,    -1,    -1,
     3079    1083,  1084,  1223,   111,    -1,   591,   101,    -1,     0,    -1,
     3080      -1,   950,    -1,    -1,    -1,    -1,   111,    -1,    -1,   958,
     3081     959,    -1,  1120,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3082      -1,   425,    -1,  1254,  1512,     0,   975,    -1,    -1,    31,
     3083      -1,  1262,  1263,  1264,    -1,    -1,  1524,    -1,    -1,    -1,
     3084     636,   637,   638,    -1,    -1,    -1,    -1,    -1,    -1,   279,
     3085      -1,    -1,    -1,    -1,    -1,    -1,    31,    -1,   654,    -1,
     3086    1009,   346,   292,   293,    66,    -1,   481,    -1,    -1,  1177,
     3087    1178,   475,    -1,  1022,   304,  1306,   672,    -1,  1027,  1028,
     3088      -1,  1030,  1031,    -1,    -1,    -1,    -1,   683,    -1,    -1,
     3089      -1,    66,    -1,   689,    -1,    10,    11,    12,    13,    14,
     3090      -1,  1050,     4,     5,     6,     7,     8,     9,    -1,    -1,
     3091     340,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,
     3092      -1,    -1,    37,    76,    77,    -1,    -1,   412,    -1,   725,
     3093      32,    -1,   728,    -1,  1083,  1084,    -1,    -1,    -1,    -1,
     3094    1089,    -1,   427,  1012,   590,    60,   376,   432,   101,    -1,
     3095     103,   153,    -1,    -1,    -1,   440,   571,   572,   111,    -1,
     3096      62,  1254,    64,    -1,    -1,    -1,    -1,    -1,   764,  1262,
     3097    1263,  1264,    -1,    -1,    -1,    -1,  1491,   623,   153,    -1,
     3098      -1,   466,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3099    1498,    -1,   596,   639,    -1,    -1,   111,  1146,    -1,   484,
     3100      65,   486,    67,    68,    69,    -1,    -1,   653,    -1,   805,
     3101      -1,    76,    77,  1306,    -1,    -1,    63,    -1,    -1,   815,
     3102     624,    -1,   818,    -1,    -1,   629,    73,   823,    -1,   825,
     3103      -1,    -1,    -1,    -1,   830,    -1,   101,    -1,   103,    -1,
     3104    1189,    -1,   527,    -1,   659,   247,   111,    -1,   663,    -1,
     3105     252,    65,    -1,    67,    68,    69,    -1,  1206,    -1,    -1,
     3106      -1,  1210,    76,    77,    -1,    -1,    -1,   114,    -1,  1377,
     3107      -1,    -1,   247,    -1,  1223,    -1,  1225,   252,    -1,    -1,
     3108    1229,   696,    -1,    -1,    -1,    -1,  1394,   101,    -1,   103,
     3109      -1,    -1,    -1,    -1,    -1,   109,   892,   111,    -1,    -1,
     3110      -1,    -1,    -1,    -1,   750,  1254,   591,    -1,    -1,    -1,
     3111     157,    -1,   716,  1262,  1263,  1264,    -1,    -1,    -1,  1188,
     3112     550,   551,   552,    -1,  1273,  1274,   730,    90,    91,    92,
     3113      93,    94,    95,    96,    97,    98,    99,    -1,  1287,    -1,
     3114      -1,    -1,    -1,    -1,   346,    -1,    -1,    -1,    -1,  1457,
     3115    1458,   636,   637,   638,    -1,    -1,    -1,  1306,    -1,    -1,
     3116     123,    -1,    -1,   593,    -1,    -1,    -1,    -1,  1317,   654,
     3117     217,   346,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   975,
     3118      -1,    -1,    -1,    -1,    -1,    -1,    -1,   672,    -1,    10,
     3119      11,    12,    13,    14,   809,    -1,    -1,    -1,   683,    -1,
     3120      -1,    -1,    -1,    -1,   689,    -1,    -1,    -1,   255,    -1,
     3121     412,    -1,   259,  1282,    -1,    -1,    37,    -1,   822,    -1,
     3122      -1,    -1,    -1,    -1,    -1,   427,    -1,    -1,   275,    -1,
     3123     432,  1027,  1028,    -1,  1030,  1031,    -1,   412,   440,    60,
     3124     725,  1390,    -1,   728,    65,    -1,    67,    68,    69,    -1,
     3125      -1,    -1,   427,    -1,  1050,    76,    77,   432,    -1,    -1,
     3126      -1,    -1,  1411,    -1,   466,   440,    -1,    -1,   914,    -1,
     3127      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   764,
     3128     101,    -1,   484,    -1,   486,  1434,    -1,  1083,  1084,    -1,
     3129     111,   466,  1441,    -1,    -1,    -1,   726,    -1,   345,    -1,
     3130      -1,    -1,    -1,    -1,    -1,    -1,    -1,   922,    -1,   484,
     3131      -1,   486,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3132     805,    -1,    -1,    -1,    -1,   527,    -1,    -1,    -1,    -1,
     3133     815,    -1,    -1,   818,    -1,    -1,  1485,    -1,   823,    -1,
     3134     825,   771,    -1,  1492,    -1,   830,    -1,    -1,    -1,    -1,
     3135    1146,    -1,   527,    -1,     3,     4,     5,     6,     7,     8,
    24983136       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2499       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2500       27,     0,     0,     0,     0,     0,    30,   266,     0,     0,
    2501        0,     0,     0,     0,     0,   620,     0,     0,     0,     0,
    2502        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2503        0,    34,     0,    35,     0,     0,    37,    38,     2,   202,
     3137      19,    20,    21,    22,    23,    24,    25,    26,   425,    -1,
     3138      29,    30,    31,    -1,   999,    -1,    -1,   817,    37,   591,
     3139      -1,    -1,    -1,  1189,    -1,   442,    -1,    -1,    -1,    -1,
     3140    1015,    -1,    -1,    -1,    -1,    -1,    -1,   892,  1012,    -1,
     3141      -1,    60,    -1,    62,  1210,    64,   591,    -1,    67,    68,
     3142      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1223,   475,  1225,
     3143      -1,    -1,    -1,    -1,   636,   637,   638,    -1,    -1,    -1,
     3144      -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
     3145      14,    -1,   654,    -1,    -1,    -1,    -1,   106,  1254,    -1,
     3146      -1,   636,   637,   638,    -1,    -1,  1262,  1263,  1264,    -1,
     3147     672,    -1,    -1,    37,    -1,  1090,    -1,  1273,  1274,   654,
     3148      -1,   683,    -1,    -1,    -1,    -1,    -1,   689,    -1,    -1,
     3149     975,  1287,    -1,    50,    -1,    52,    60,   672,    55,    56,
     3150      57,    65,    59,    67,    68,    69,    -1,    -1,   683,    -1,
     3151    1306,    -1,    76,    77,   689,    -1,    -1,    74,    -1,    -1,
     3152      -1,    -1,    -1,   725,    -1,    -1,   728,    -1,    -1,    86,
     3153      87,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
     3154      -1,    -1,  1027,  1028,    -1,  1030,  1031,   111,    -1,   596,
     3155     725,    -1,    -1,   728,    -1,    -1,    -1,    -1,    -1,    -1,
     3156    1206,    -1,   764,    -1,    -1,  1050,    -1,    -1,    -1,    -1,
     3157      -1,    -1,    -1,    -1,    -1,    -1,    -1,   624,    -1,  1009,
     3158      -1,    -1,   629,    -1,  1188,    -1,    -1,    -1,    -1,   764,
     3159      -1,    -1,    -1,    -1,  1390,    -1,    -1,    -1,  1083,  1084,
     3160      -1,    -1,    -1,   805,    -1,    -1,    -1,    10,    11,    12,
     3161      13,    14,    -1,   815,    -1,    -1,   818,    -1,    -1,    -1,
     3162    1050,   823,    -1,   825,    -1,    -1,    -1,    -1,   830,    -1,
     3163     805,    -1,    -1,    -1,    37,    -1,    -1,    -1,  1434,    -1,
     3164     815,    -1,    -1,   818,    -1,  1441,    -1,    -1,   823,    -1,
     3165     825,    -1,    -1,    -1,    -1,   830,    -1,    60,    -1,    -1,
     3166      -1,  1146,    65,    -1,    67,    68,    69,    -1,    -1,   716,
     3167      -1,    -1,    -1,    76,    77,    -1,    -1,    -1,  1282,    -1,
     3168      -1,    -1,    -1,   730,    -1,    -1,    -1,    -1,    -1,  1485,
     3169     892,    10,    11,    12,    13,    14,    -1,    -1,   101,    -1,
     3170     103,    -1,    -1,   750,  1189,    -1,    -1,    -1,   111,    -1,
     3171      -1,    -1,    -1,    -1,    -1,    -1,    -1,   892,    37,    -1,
     3172      -1,    -1,    -1,    -1,    -1,  1210,  1372,    -1,    -1,    -1,
     3173      -1,    -1,    -1,  1163,    -1,    -1,    -1,    -1,  1223,    -1,
     3174    1225,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     3175      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,
     3176      -1,    -1,    25,    26,    27,    -1,    -1,    -1,    -1,  1254,
     3177      -1,    -1,    -1,   975,    -1,   822,    -1,  1262,  1263,  1264,
     3178      -1,    -1,   101,   340,   341,    -1,    -1,    -1,  1273,  1274,
     3179      -1,    -1,   111,    -1,    -1,   352,   353,    -1,    -1,    -1,
     3180     975,    -1,  1287,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3181      -1,    -1,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,
     3182      -1,  1306,    -1,    -1,    44,  1027,  1028,    -1,  1030,  1031,
     3183      -1,    -1,    -1,    96,    -1,    98,    -1,    10,    11,    12,
     3184      13,    14,    -1,    63,    -1,    -1,    -1,    -1,  1050,    -1,
     3185      -1,    -1,  1027,  1028,    -1,  1030,  1031,    -1,    -1,   122,
     3186      -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
     3187      -1,    -1,    -1,    -1,    -1,  1050,    -1,    -1,    -1,    -1,
     3188      -1,  1083,  1084,    96,    -1,    98,    -1,    60,    -1,   109,
     3189      -1,    -1,    65,    -1,   114,    -1,    69,    -1,    -1,    -1,
     3190      -1,    -1,    -1,    76,    77,  1390,    -1,    -1,  1083,  1084,
     3191      -1,    -1,    -1,    -1,   177,    -1,    -1,    -1,    -1,    -1,
     3192      -1,    -1,   185,   143,   187,   188,    -1,    -1,   101,   192,
     3193      -1,   194,   195,   153,    -1,    -1,    -1,   157,   111,    -1,
     3194      -1,    -1,    -1,    -1,  1146,    -1,    -1,    -1,    -1,  1434,
     3195      -1,    -1,    -1,    -1,    -1,    36,  1441,    38,    -1,    -1,
     3196      -1,    -1,    -1,    -1,   177,  1012,    -1,    -1,    -1,    -1,
     3197      -1,  1146,    -1,    -1,   187,   188,    -1,    -1,    59,   192,
     3198      -1,   194,   195,    -1,    65,   205,    -1,  1189,    69,    -1,
     3199      -1,    72,    73,    74,    75,    76,    77,   217,    79,    80,
     3200    1485,   264,    -1,    -1,    -1,    -1,    87,    -1,  1210,    -1,
     3201      -1,    -1,    -1,    -1,  1189,   235,   236,    -1,    -1,    -1,
     3202     101,  1223,   103,  1225,    -1,    -1,    -1,    -1,    -1,   110,
     3203     111,   112,   113,   114,   115,  1210,    -1,    -1,    -1,   259,
     3204      -1,    -1,    -1,   124,    -1,    -1,    -1,   267,  1223,    -1,
     3205    1225,    -1,  1254,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3206    1262,  1263,  1264,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3207     290,  1273,  1274,   293,    -1,    -1,    -1,     7,    -1,  1254,
     3208      10,    11,    12,    13,    14,  1287,    -1,  1262,  1263,  1264,
     3209      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1273,  1274,
     3210      -1,    -1,    -1,    -1,  1306,    -1,    36,    37,    38,    -1,
     3211      -1,    -1,  1287,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3212     340,    -1,    -1,    -1,    -1,   345,    -1,    -1,    -1,    59,
     3213      60,  1306,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
     3214      -1,  1188,    72,    73,    74,    75,    76,    77,    -1,    79,
     3215      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     3216     717,    -1,   719,    -1,    -1,    -1,    -1,    -1,    -1,   726,
     3217     727,   101,    -1,   103,   731,    -1,    -1,    -1,    -1,    -1,
     3218     110,   111,   112,   113,   114,   115,   743,    -1,  1390,    -1,
     3219      -1,   748,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3220     420,   421,    -1,    -1,    -1,    -1,    -1,   427,    -1,    -1,
     3221      -1,    -1,    -1,    -1,    -1,  1390,   773,    -1,    -1,    -1,
     3222      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   448,    -1,
     3223      -1,   451,  1434,    -1,    -1,  1282,    -1,   457,    -1,  1441,
     3224      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3225      20,    21,    22,    23,    24,    25,    26,    27,    -1,  1434,
     3226     817,    -1,    -1,    -1,   484,    -1,  1441,    37,    -1,    -1,
     3227      -1,    -1,    -1,    -1,    -1,    -1,   496,    -1,    -1,    -1,
     3228      -1,    -1,    -1,  1485,    -1,    -1,    -1,    -1,   508,    -1,
     3229      60,    -1,   512,    -1,   514,   515,    -1,    -1,    -1,    -1,
     3230      -1,    71,    -1,    -1,    -1,    -1,    -1,   527,    -1,    -1,
     3231    1485,    -1,   575,   576,    -1,    -1,    -1,   874,   875,   876,
     3232     877,    -1,   879,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3233      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   895,    -1,
     3234      -1,    -1,   605,    -1,    -1,   608,   609,    -1,   611,    -1,
     3235     613,   614,   909,    -1,    -1,   618,   619,    -1,    -1,   579,
     3236      -1,    -1,   575,   576,    -1,    -1,    -1,    -1,    -1,    -1,
     3237      -1,   591,    -1,   593,    -1,    -1,   596,    -1,    -1,    -1,
     3238      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3239      -1,   948,   605,    -1,    -1,   608,   609,    -1,   611,    -1,
     3240     613,   614,   622,    -1,    -1,   618,   619,   627,    -1,    -1,
     3241      -1,    -1,    -1,    -1,    -1,    -1,   636,   637,   638,    -1,
     3242      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3243     987,    -1,    -1,   696,   654,    -1,    -1,   994,   701,   702,
     3244      -1,   998,    -1,    -1,   707,    -1,  1003,    -1,  1005,    -1,
     3245      -1,    -1,  1009,  1010,  1011,    -1,    -1,  1014,    -1,    -1,
     3246      -1,    -1,    -1,    -1,    -1,    -1,  1023,    -1,    -1,   689,
     3247      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3248      -1,    -1,    -1,    -1,  1041,  1042,    -1,    -1,   701,   702,
     3249     710,    -1,    -1,    -1,   707,    -1,    -1,    -1,    -1,    -1,
     3250      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   728,  1066,
     3251     730,    -1,  1069,    10,    11,    12,    13,    14,    15,    16,
     3252      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3253      -1,    -1,    29,    30,    31,    -1,    -1,    63,    -1,    -1,
     3254      37,    -1,    -1,    -1,   764,    -1,    -1,    73,    -1,    75,
     3255    1107,    77,    -1,    -1,    -1,    -1,  1113,  1114,    84,    -1,
     3256      -1,    -1,    -1,    60,    -1,    -1,    -1,  1124,    -1,    -1,
     3257      67,    68,  1129,    -1,    -1,  1132,    -1,  1134,    -1,    -1,
     3258    1137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,
     3259     116,   117,   118,  1150,    -1,    -1,    -1,    -1,   818,    -1,
     3260      -1,    -1,   822,    -1,    -1,   825,  1163,    -1,  1165,  1166,
     3261    1167,  1168,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3262      -1,    -1,    -1,    -1,  1181,    -1,  1183,    -1,    -1,    -1,
     3263    1187,   157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3264      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3265      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1215,  1216,
     3266      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
     3267      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3268      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3269      31,   217,    -1,   219,   220,   221,    37,    -1,   918,    -1,
     3270      -1,    -1,    -1,    -1,    -1,    43,    -1,    -1,  1265,  1266,
     3271      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1275,    60,
     3272      -1,    62,    -1,    64,    65,    -1,    67,    68,    69,   255,
     3273      -1,    -1,    -1,   259,    -1,    76,    77,    -1,    -1,    -1,
     3274     960,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   275,
     3275      -1,    89,    -1,    -1,    -1,   975,    -1,    -1,    -1,    -1,
     3276     101,    99,   103,    -1,    -1,    -1,  1323,    -1,    -1,    -1,
     3277     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1335,    -1,
     3278    1337,  1338,  1339,    -1,    -1,    -1,    -1,    -1,    -1,  1009,
     3279      -1,    -1,  1349,    -1,    -1,    -1,    -1,    -1,   324,    -1,
     3280      -1,  1358,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,
     3281    1030,  1031,    -1,  1370,    -1,    -1,   154,    -1,    -1,   345,
     3282      -1,    -1,  1085,    -1,   350,   351,    -1,    59,    -1,   167,
     3283      -1,    -1,   358,    65,    -1,    -1,    -1,    69,    -1,    -1,
     3284      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
     3285      -1,    -1,   190,    -1,    -1,    87,    -1,    -1,    -1,    -1,
     3286      -1,    -1,    -1,    -1,  1421,  1422,   204,    -1,  1088,   101,
     3287      -1,   103,  1085,    -1,   400,   213,   108,  1434,   110,   111,
     3288     112,   113,   114,   115,  1441,   223,    -1,    -1,    -1,    -1,
     3289      -1,    -1,   418,    -1,    -1,    -1,    -1,   423,    -1,   425,
     3290      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3291     248,    -1,  1469,    -1,    -1,   253,   442,    -1,    -1,   445,
     3292     446,    -1,    -1,    -1,    -1,    -1,  1146,    -1,   266,    -1,
     3293      -1,    -1,    -1,    -1,   272,   461,   274,    -1,    -1,    -1,
     3294    1497,    -1,    -1,    -1,  1207,    -1,    -1,    -1,    -1,   475,
     3295      -1,    -1,    -1,   291,    -1,    -1,   482,    -1,    -1,    -1,
     3296      -1,    -1,    -1,    -1,    -1,    -1,  1523,    -1,  1188,    -1,
     3297      -1,  1528,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3298      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3299      -1,    -1,    -1,    -1,  1207,    -1,   334,    -1,    -1,    -1,
     3300      -1,   339,    -1,    -1,    -1,  1225,    -1,    -1,    -1,    -1,
     3301      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3302      19,    20,    21,    22,    23,    24,    25,    26,    -1,   367,
     3303      29,    30,    31,   371,   372,    -1,   374,    -1,    37,    -1,
     3304      -1,    -1,   380,   381,    -1,   383,   384,    -1,   386,    -1,
     3305     388,    -1,     7,  1273,  1274,    10,    11,    12,    13,    14,
     3306      -1,    60,  1282,    -1,    -1,    -1,    -1,   405,    67,    68,
     3307     596,    -1,    -1,    -1,    -1,   413,    -1,    -1,    -1,    -1,
     3308      -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3309      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   624,    -1,
     3310     438,    -1,    -1,   629,    59,    60,    -1,    -1,    -1,    -1,
     3311      65,   449,   111,    -1,    69,    -1,    -1,    72,    73,    74,
     3312      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3313      -1,    -1,    87,    -1,   472,    -1,    -1,    -1,    -1,    -1,
     3314     478,    -1,    -1,    -1,    -1,   483,   101,    -1,   103,    -1,
     3315      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
     3316     115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3317    1390,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3318      -1,   519,    -1,    -1,   278,   279,   280,    -1,    -1,    -1,
     3319     716,    -1,    -1,   287,   288,    -1,    -1,   535,   292,   293,
     3320      -1,    -1,    -1,    -1,   730,    -1,    -1,    -1,    -1,    -1,
     3321     304,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3322      -1,    -1,    -1,  1443,   750,    -1,    -1,    -1,    -1,    -1,
     3323      -1,    -1,    -1,   571,   152,   153,    -1,    -1,    -1,    -1,
     3324      -1,    -1,   580,    -1,    -1,    -1,   340,    -1,    -1,   587,
     3325      -1,    -1,    -1,  1473,   592,    -1,    -1,    -1,    -1,    -1,
     3326      -1,    -1,    -1,    -1,    -1,   603,    -1,   185,    -1,    -1,
     3327      -1,    -1,    -1,    -1,   192,    -1,    -1,    -1,  1498,    -1,
     3328      -1,    -1,   376,   809,    -1,    -1,    -1,    -1,    -1,    -1,
     3329      -1,    -1,    -1,    -1,    -1,    -1,   822,    -1,    -1,    -1,
     3330      -1,    -1,    -1,    -1,    -1,    -1,   644,    -1,    -1,    -1,
     3331      -1,    -1,    -1,     0,    -1,   841,     3,     4,     5,     6,
     3332       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3333      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3334      -1,   679,    29,    30,    31,    32,   264,    -1,    35,    -1,
     3335      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3336      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3337      57,    -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,
     3338      67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
     3339      77,    -1,    -1,    -1,    -1,    -1,   734,    -1,    -1,    -1,
     3340      -1,   319,   928,    -1,    -1,    -1,   744,   745,    -1,   327,
     3341     328,    -1,   330,   331,   101,    -1,   103,    -1,    -1,   757,
     3342      -1,    -1,   340,    -1,   111,    -1,   344,    -1,   954,    -1,
     3343      -1,    -1,    -1,    -1,    -1,    -1,   774,    -1,   776,    -1,
     3344      -1,    -1,   780,    -1,    -1,   363,    -1,    -1,   366,    -1,
     3345      -1,    -1,    -1,    -1,    -1,   981,   550,   551,   552,   553,
     3346     554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
     3347     564,   565,   566,   567,   392,    -1,    -1,    -1,   396,    36,
     3348      -1,    38,    -1,    -1,    -1,    -1,  1012,    -1,    -1,    -1,
     3349      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1023,    -1,   593,
     3350      -1,    -1,    59,    -1,    -1,    -1,    -1,   845,    65,   427,
     3351      67,    68,    69,    -1,   852,    72,    73,    74,    75,    76,
     3352      77,    -1,    79,    80,    -1,    -1,    -1,   865,    -1,   867,
     3353      87,    -1,   450,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3354      -1,    -1,    -1,   881,   101,    -1,   103,    -1,   105,   106,
     3355     888,    -1,    -1,   110,   111,   112,   113,   114,   115,    -1,
     3356      -1,    -1,   900,   481,    -1,   903,   484,    -1,    -1,    -1,
     3357      -1,    -1,    -1,    -1,    -1,    -1,  1102,    -1,    -1,    -1,
     3358      -1,    -1,    -1,   921,    -1,    -1,    -1,    -1,    -1,    -1,
     3359      -1,    -1,    -1,    -1,    -1,    -1,    -1,   691,    -1,    -1,
     3360      -1,    -1,    -1,    -1,    -1,   523,    -1,    -1,   526,   527,
     3361      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   713,
     3362      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3363     143,    -1,   726,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3364     153,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3365      -1,    -1,   165,   571,   572,    -1,    -1,    -1,    -1,    -1,
     3366      -1,    -1,  1188,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3367    1008,    -1,   590,   591,    -1,   593,    -1,   771,    -1,    -1,
     3368      -1,    -1,    -1,    -1,   602,    -1,   604,   605,    -1,    -1,
     3369      -1,    -1,    -1,   611,    -1,    -1,    -1,    -1,    -1,    -1,
     3370      -1,    -1,    -1,   621,   622,    -1,    -1,    -1,   802,   627,
     3371      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   636,   637,
     3372     638,    -1,   235,   817,    -1,  1063,    -1,    -1,    -1,    -1,
     3373      -1,  1069,    -1,    -1,    -1,    -1,   654,    -1,    -1,    -1,
     3374      -1,   659,   660,    -1,    -1,   663,   664,   260,    -1,    -1,
     3375      -1,    -1,   670,    -1,    -1,    -1,  1282,    -1,    -1,    -1,
     3376    1098,    -1,    -1,    -1,    -1,  1103,    -1,    -1,    -1,    -1,
     3377     688,   689,   690,  1111,   692,    -1,    -1,    -1,   696,     3,
    25043378       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    25053379      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2506       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2507        0,    30,   676,     0,     0,     0,     0,     0,     0,     0,
    2508      625,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2509        0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
    2510        0,    37,    38,     2,   202,     4,     5,     6,     7,     8,
     3380      24,    25,    26,  1141,    -1,    29,    30,    31,    -1,    -1,
     3381     728,   729,    -1,    37,    -1,  1153,    -1,    -1,  1156,    -1,
     3382    1158,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3383      -1,    -1,    -1,    -1,  1172,  1173,    60,    -1,    62,    -1,
     3384      64,    -1,    -1,    67,    68,   763,   764,    -1,    -1,    -1,
     3385     768,   769,    -1,    -1,    -1,    -1,  1194,    -1,    -1,    -1,
     3386      -1,    -1,   375,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3387      -1,    -1,    -1,    -1,   968,    -1,    -1,    -1,    -1,   103,
     3388      -1,    -1,  1220,    -1,    -1,    -1,    -1,   111,    -1,    -1,
     3389      -1,   809,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3390     818,    -1,    -1,   997,    -1,    -1,   824,   825,    -1,    -1,
     3391      -1,   829,    -1,   831,    -1,  1009,    -1,    -1,    -1,    -1,
     3392      -1,    -1,    -1,   841,    -1,    -1,    -1,    10,    11,    12,
     3393      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3394      23,    24,    25,    26,    27,    -1,    29,    30,    31,    -1,
     3395      -1,    -1,    -1,    -1,    37,    -1,  1050,    -1,    -1,    -1,
     3396      -1,    -1,    -1,   476,    -1,    -1,    -1,    -1,    -1,    -1,
     3397      -1,    -1,    -1,    -1,  1312,    -1,  1314,    60,    -1,    -1,
     3398      -1,    -1,    65,    -1,    67,    68,    69,  1513,    71,  1327,
     3399      -1,  1329,    -1,    76,    77,    -1,   914,    -1,    -1,    -1,
     3400      -1,   514,    -1,    -1,   922,    -1,    -1,    -1,    -1,  1347,
     3401     928,    -1,    -1,    -1,   527,    -1,    -1,    -1,   936,    -1,
     3402     103,   534,    -1,    -1,    -1,  1363,  1120,    -1,   111,    -1,
     3403      -1,   949,   950,  1371,   547,   548,  1374,    -1,    10,    11,
     3404      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3405      22,    23,    24,    25,    26,    27,   569,   975,  1396,    -1,
     3406      -1,    -1,    -1,   981,    -1,    37,   579,  1405,    -1,  1163,
     3407    1408,  1409,    -1,   586,    -1,    -1,    -1,    -1,   591,    -1,
     3408      -1,   999,  1000,  1177,  1178,    -1,    -1,    -1,    60,    -1,
     3409      -1,  1009,    -1,    -1,    -1,    -1,    -1,  1015,  1016,    71,
     3410    1018,  1019,  1020,    -1,    -1,    -1,    -1,  1445,    -1,  1447,
     3411      -1,    -1,  1030,  1031,    -1,    -1,    -1,    -1,    -1,    -1,
     3412      -1,    -1,    -1,    -1,  1462,    -1,    -1,    -1,   641,    -1,
     3413      -1,    -1,    -1,    -1,    -1,    -1,   649,     4,     5,     6,
     3414       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3415      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3416      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3417      37,  1089,  1090,  1091,    -1,    -1,   689,    -1,    -1,    -1,
     3418      -1,    -1,    -1,    -1,  1102,    -1,    -1,    -1,    -1,    -1,
     3419      -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,
     3420      67,    68,    -1,     3,     4,     5,     6,     7,     8,     9,
     3421      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3422      20,    21,    22,    23,    24,    25,    26,    -1,  1146,    29,
     3423      30,    31,    32,    -1,    -1,    35,   103,    37,    38,    -1,
     3424      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3425      -1,   764,    -1,   766,    -1,    -1,    -1,    57,    -1,   772,
     3426      60,    -1,    62,    -1,    64,    65,   779,    67,    68,    69,
     3427      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
     3428      -1,    -1,    -1,  1377,    -1,    -1,    -1,    -1,  1206,    -1,
     3429      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3430    1394,   101,    -1,   103,    -1,    -1,    -1,  1225,    -1,   822,
     3431     823,   111,   825,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3432      -1,    -1,    -1,    -1,    -1,    -1,    -1,   840,    -1,    -1,
     3433      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3434      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,
     3435      -1,    -1,    -1,    -1,    -1,  1273,  1274,    37,    -1,    -1,
     3436      -1,    -1,    -1,  1457,  1458,    -1,    -1,   880,    -1,    -1,
     3437      -1,   884,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3438      60,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
    25113439       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2512       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2513       27,     0,     0,     0,     0,     0,    30,   590,     0,     0,
    2514        0,     0,     0,     0,     0,   625,     0,     0,     0,     0,
    2515        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2516        0,    34,     0,    35,     0,     0,   203,    38,     8,     9,
    2517       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2518       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2519        0,     0,     0,     0,   277,    30,   278,     0,     0,     0,
    2520        0,     0,   204,     0,     0,     0,     0,     0,     0,     0,
    2521      267,     0,     0,     0,     0,     0,     0,   279,    33,     0,
    2522        0,     0,     0,   280,     0,    37,    38,   281,     0,     0,
    2523      282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
    2524        0,     0,     0,     0,     0,   288,     0,     0,     0,     0,
    2525        0,     0,     0,     0,     0,     0,     0,     0,     0,   289,
    2526        0,   590,    -3,     0,     0,     0,     0,     0,   291,   591,
    2527      293,   294,   295,   296,     8,     9,    10,    11,    12,    13,
    2528       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2529       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2530      277,    30,   278,     0,     0,     0,     0,     0,     0,     0,
    2531        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2532        0,     0,     0,   279,    33,     0,     0,     0,     0,   640,
    2533        0,    37,    38,   281,     0,     0,   282,   283,   284,   285,
    2534       40,    41,     0,   286,   287,     0,     0,     0,     0,     0,
    2535        0,   288,     0,     0,     0,     0,     0,     0,     0,     0,
    2536        0,     0,     0,     0,     0,   289,   -35,   753,     0,     0,
    2537        0,     0,     0,     0,   291,   292,   293,   294,   295,   296,
    2538        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2539       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2540       26,    27,     0,     0,     0,     0,   277,    30,   278,     0,
    2541        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2542        0,     0,     0,     0,     0,     0,     0,     0,     0,   279,
    2543       33,     0,     0,     0,     0,   280,     0,    37,    38,   281,
    2544        0,     0,   282,   283,   284,   285,    40,    41,     0,   286,
    2545      287,     0,     0,     0,     0,     0,     0,   288,     0,     0,
    2546        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2547        0,   289,     0,   290,     0,     0,     0,     0,     0,     0,
    2548      291,   292,   293,   294,   295,   296,     8,     9,    10,    11,
    2549       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2550       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2551        0,     0,   277,    30,   278,     0,     0,     0,     0,     0,
    2552        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2553        0,     0,     0,     0,     0,   279,    33,     0,     0,     0,
    2554        0,   280,     0,    37,    38,   281,     0,     0,   282,   283,
    2555      284,   285,    40,    41,     0,   286,   287,     0,     0,     0,
    2556        0,     0,     0,   288,     0,     0,     0,     0,     0,     0,
    2557        0,     0,     0,     0,     0,     0,     0,   289,     0,   154,
    2558        0,     0,     0,     0,     0,     0,   291,   292,   293,   294,
    2559      295,   296,     8,     9,    10,    11,    12,    13,    14,    15,
    2560       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2561        0,    25,    26,    27,     0,     0,     0,     0,   277,    30,
    2562      278,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2563        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2564        0,   279,    33,     0,     0,     0,     0,   280,     0,    37,
    2565       38,   281,     0,     0,   282,   283,   284,   285,    40,    41,
    2566        0,   286,   287,     0,     0,     0,     0,     0,     0,   288,
    2567        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2568        0,     0,     0,   289,     0,   590,     0,     0,     0,     0,
    2569        0,     0,   291,   591,   293,   294,   295,   296,     8,     9,
    2570       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2571       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2572        0,     0,     0,     0,   277,    30,   278,     0,     0,     0,
    2573        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2574        0,     0,     0,     0,     0,     0,     0,   279,    33,     0,
    2575        0,     0,     0,   280,     0,    37,    38,   281,     0,     0,
    2576      282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
    2577        0,     0,     0,     0,     0,   288,     0,     0,     0,     0,
    2578        0,     0,     0,     0,     0,     0,     0,     0,     0,   289,
    2579        0,   373,     0,     0,     0,     0,     0,     0,   291,   375,
    2580      293,   294,   295,   296,   467,     2,   202,     4,     5,     6,
    2581        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2582       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2583       25,    26,    27,     0,     0,     0,     0,     0,    30,     8,
    2584        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2585       19,    20,    21,    22,    23,    24,  -278,     0,    25,    26,
    2586       27,    33,     0,    34,     0,    35,    30,     0,    37,    38,
    2587        0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2588       16,    17,    18,    19,    20,    21,    22,    23,    24,    33,
    2589        0,    25,    26,    27,    36,     0,   331,   332,    39,    30,
    2590     -278,     0,     0,     0,     0,    40,    41,    -3,     0,     0,
    2591        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2592        0,     0,    33,     0,     0,     0,     0,    36,     0,    37,
    2593       38,    39,   333,     0,     0,     0,     0,     0,    40,    41,
    2594      109,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2595       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2596       25,    26,    27,    42,     0,   154,     0,     0,    30,     0,
    2597        0,     0,     0,    44,     0,     0,     0,     0,     0,     0,
    2598        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2599        0,    33,     0,     0,     0,     0,    36,     0,    37,    38,
    2600       39,     0,     0,     0,     0,     0,     0,    40,    41,     8,
    2601        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2602       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2603       27,     0,    42,     0,    43,     0,    30,     0,     0,     0,
    2604        0,     0,    44,     0,     0,     0,     0,     0,     0,     0,
    2605        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2606        0,     0,     0,     0,    36,     0,   203,    38,    39,     0,
    2607        0,     0,     0,     0,     0,    40,    41,     8,     9,    10,
    2608       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2609       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2610       42,     0,   266,     0,    30,     0,     0,     0,     0,     0,
    2611      205,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2612        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2613        0,     0,    36,     0,   331,   332,    39,     0,     0,     0,
    2614        0,     0,     0,    40,    41,     8,     9,    10,    11,    12,
    2615       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2616       23,    24,     0,     0,    25,    26,    27,     0,   634,     0,
    2617      333,     0,    30,     0,     0,     0,     0,     0,   625,     0,
    2618        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2619        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2620       36,     0,   331,   332,    39,     0,     0,     0,     0,     0,
    2621        0,    40,    41,     8,     9,    10,    11,    12,    13,    14,
    2622       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2623     -278,     0,    25,    26,    27,     0,     0,     0,   333,     0,
    2624       30,     0,     0,     0,     0,     0,   109,     0,     0,     0,
    2625        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2626        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2627       37,    38,     0,     0,  -278,     8,     9,    10,    11,    12,
    2628       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2629       23,    24,  -278,     0,    25,    26,    27,     0,     0,     0,
    2630        0,     0,    30,     0,   634,     0,   333,     0,     0,     0,
    2631        0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
    2632        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2633        0,     0,    37,    38,     0,     0,  -278,     8,     9,    10,
    2634       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2635       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2636        0,     0,     0,     0,    30,   446,   634,     0,   333,     0,
    2637        0,     0,     0,     0,     0,     0,   625,     0,     0,     0,
    2638        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2639        0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
    2640       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2641       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2642        0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
    2643      447,     0,     0,     0,  1209,     0,     0,     0,   109,     0,
    2644        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2645        0,   108,     0,    37,    38,     8,     9,    10,    11,    12,
    2646       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2647       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2648        0,     0,    30,   446,     0,     0,     0,     0,     0,    43,
    2649        0,     0,     0,     0,     0,     0,     0,   109,     0,     0,
    2650        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2651        0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
    2652       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2653       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2654        0,    30,     0,     0,     0,     0,     0,     0,   447,     0,
    2655        0,     0,     0,     0,     0,     0,   109,     0,     0,     0,
    2656        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2657        0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
    2658       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2659        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2660       30,     0,     0,     0,     0,   634,     0,   333,     0,     0,
    2661        0,     0,     0,     0,     0,   109,     0,     0,     0,     0,
    2662        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2663       37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
    2664       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2665        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2666        0,     0,     0,     0,   634,     0,   333,     0,     0,     0,
    2667        0,     0,     0,     0,   625,     0,     0,     0,     0,     0,
    2668        0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
    2669       38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2670       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2671       25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
    2672        0,     0,     0,     0,     0,   253,     0,     0,     0,     0,
    2673        0,     0,     0,   109,     0,     0,     0,     0,     0,     0,
    2674        0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
    2675        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2676       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2677       26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
    2678        0,     0,     0,     0,   154,     0,     0,     0,     0,     0,
    2679        0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
    2680       33,     0,     0,     0,     0,     0,     0,   203,    38,     8,
    2681        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2682       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2683       27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2684        0,     0,     0,   266,     0,     0,     0,     0,     0,     0,
    2685        0,   267,     0,     0,     0,     0,     0,     0,     0,    33,
    2686        0,     0,     0,     0,     0,     0,    37,    38,     8,     9,
    2687       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2688       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2689        0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    2690        0,     0,   253,     0,     0,     0,     0,     0,     0,     0,
    2691      625,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2692        0,     0,     0,     0,     0,    37,    38,     8,     9,    10,
    2693       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2694       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2695        0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2696        0,   333,     0,     0,     0,     0,     0,     0,     0,   625,
    2697        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2698        0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
    2699       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2700       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2701        0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
    2702      447,     0,     0,     0,     0,     0,     0,     0,   109,     0,
    2703        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2704        0,     0,     0,   203,    38,     8,     9,    10,    11,    12,
    2705       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2706       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2707        0,     0,    30,     0,     0,     0,     0,     0,     0,   266,
    2708        0,     0,     0,     0,     0,     0,     0,   620,     0,     0,
    2709        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2710        0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
    2711       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2712       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2713        0,    30,     0,     0,     0,     0,     0,     0,   590,     0,
    2714        0,     0,     0,     0,     0,     0,   625,     0,     0,     0,
    2715        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2716        0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
    2717       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2718        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2719       30,     0,     0,     0,     0,     0,     0,   333,     0,     0,
    2720        0,     0,     0,     0,     0,   109,     0,     0,     0,     0,
    2721        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2722       37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
    2723       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2724        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2725        0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
    2726        0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
    2727        0,     0,    33,     0,     0,     0,     0,     0,     0,   203,
    2728       38,     2,   202,     4,     5,     6,     7,     8,     9,    10,
    2729       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2730       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2731        0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2732        0,     0,     0,   620,     0,     0,     0,     0,     0,     0,
    2733        0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
    2734        0,    35,     0,     0,    37,    38,     0,   277,     0,   278,
    2735     1043,     0,  1044,     0,     0,  1045,  1046,  1047,  1048,  1049,
    2736     1050,  1051,  1052,  1482,  1053,     0,     0,  1054,    32,     0,
    2737      279,     0,     0,     0,     0,     0,   640,     0,     0,  -396,
    2738      281,     0,     0,   282,   283,   284,   285,    40,    41,     0,
    2739      286,   287,     0,     0,     0,     0,     0,     0,   288,     0,
    2740        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2741        0,     0,   289,     0,   373,     0,     0,   167,     0,     0,
    2742        0,   291,   375,   293,   294,   295,   296,     0,   277,     0,
    2743      278,  1043,     0,  1044,     0,  -126,  1045,  1046,  1047,  1048,
    2744     1049,  1050,  1051,  1052,     0,  1053,     0,     0,  1054,    32,
    2745        0,   279,     0,     0,     0,     0,     0,   640,     0,     0,
    2746        0,   281,     0,     0,   282,   283,   284,   285,    40,    41,
    2747        0,   286,   287,     0,     0,     0,     0,     0,     0,   288,
    2748        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2749        0,     0,     0,   289,     0,   373,     0,     0,   167,     0,
    2750        0,     0,   291,   375,   293,   294,   295,   296,     0,     0,
    2751        0,     0,     0,     0,     0,     0,  -126,     2,   202,     4,
    2752        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2753       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2754        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2755       30,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2756       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2757       25,    26,    27,    33,     0,    34,     0,    35,    30,     0,
    2758       37,    38,     0,   277,     0,   278,  1043,     0,  1044,  1378,
    2759     1379,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,  1482,
    2760     1053,    33,  1295,  1054,    32,     0,   279,     0,    37,    38,
    2761        0,     0,   640,     0,     0,     0,   281,     0,     0,   282,
    2762      283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
    2763        0,     0,     0,     0,   288,     0,     0,     0,     0,     0,
    2764        0,     0,     0,     0,     0,     0,     0,     0,   289,     0,
    2765      373,     0,     0,   167,     0,     0,     0,   291,   375,   293,
    2766      294,   295,   296,   277,     0,   278,  1043,     0,  1044,  1378,
    2767     1379,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,     0,
    2768     1053,     0,     0,  1054,    32,     0,   279,     0,     0,     0,
    2769        0,     0,   640,     0,     0,     0,   281,     0,     0,   282,
    2770      283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
    2771        0,     0,     0,     0,   288,     0,     0,     0,     0,     0,
    2772        0,     0,     0,     0,     0,     0,     0,     0,   289,     0,
    2773      373,     0,     0,   167,     0,     0,     0,   291,   375,   293,
    2774      294,   295,   296,   277,     0,   278,  1043,     0,  1044,     0,
    2775        0,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,     0,
    2776     1053,     0,     0,  1054,    32,     0,   279,     0,     0,     0,
    2777        0,     0,   640,     0,     0,     0,   281,     0,     0,   282,
    2778      283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
    2779        0,     0,     0,     0,   288,     0,     0,     0,     0,     0,
    2780      277,     0,   278,     0,     0,     0,     0,     0,   289,     0,
    2781      373,     0,     0,   167,     0,     0,     0,   291,   375,   293,
    2782      294,   295,   296,   279,     0,     0,     0,     0,     0,   280,
    2783        0,     0,     0,   281,     0,     0,   282,   283,   284,   285,
    2784       40,    41,     0,   286,   287,     0,     0,     0,     0,     0,
    2785        0,   288,     0,     0,     0,     0,     0,   277,     0,   278,
    2786        0,     0,     0,     0,     0,   289,     0,   373,     0,     0,
    2787        0,     0,   768,     0,   291,   375,   293,   294,   295,   296,
    2788      279,     0,     0,     0,     0,     0,   280,     0,     0,     0,
    2789      281,     0,     0,   282,   283,   284,   285,    40,    41,     0,
    2790      286,   287,     0,     0,     0,     0,     0,     0,   288,     0,
    2791        0,     0,     0,     0,   277,     0,   278,     0,     0,     0,
    2792        0,     0,   289,     0,   373,     0,     0,     0,     0,     0,
    2793        0,   291,   375,   293,   294,   295,   296,   279,     0,     0,
    2794        0,     0,     0,   280,     0,     0,     0,   281,     0,     0,
    2795      282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
    2796        0,     0,     0,     0,     0,   288,     0,     0,     0,     0,
    2797        0,   277,     0,   278,     0,     0,     0,     0,     0,   289,
    2798        0,   373,     0,     0,     0,     0,     0,     0,   291,   723,
    2799      293,   294,   295,   296,   279,     0,     0,     0,     0,     0,
    2800      640,     0,     0,     0,   281,     0,     0,   282,   283,   284,
    2801      285,    40,    41,     0,   286,   287,     0,     0,     0,     0,
    2802        0,     0,   288,     0,     0,     0,     0,     0,   277,     0,
    2803      278,     0,     0,     0,     0,     0,   289,     0,   772,     0,
    2804        0,     0,     0,     0,     0,   291,   375,   293,   294,   295,
    2805      296,   279,     0,     0,     0,     0,     0,   280,     0,     0,
    2806        0,   281,     0,     0,   282,   283,   284,   285,    40,    41,
    2807        0,   286,   287,     0,     0,     0,     0,     0,     0,   288,
    2808        0,     0,     0,     0,     0,   277,     0,   278,     0,     0,
    2809        0,     0,     0,   289,     0,   373,     0,     0,     0,     0,
    2810        0,     0,   291,   813,   293,   294,   295,   296,   279,     0,
    2811        0,     0,     0,     0,   280,     0,     0,     0,   281,     0,
    2812        0,   282,   283,   284,   285,    40,    41,     0,   286,   287,
    2813        0,     0,     0,     0,     0,     0,   288,     0,     0,     0,
    2814        0,     0,   277,     0,   278,     0,     0,     0,     0,     0,
    2815      289,     0,     0,     0,     0,     0,     0,     0,     0,   291,
    2816      375,   293,   294,   295,   296,   279,     0,     0,     0,     0,
    2817        0,   280,     0,     0,     0,   281,     0,     0,   282,   283,
    2818      284,   285,    40,    41,     0,   286,   287,     0,     0,     0,
    2819        0,     0,     0,   288,     0,     0,     0,     0,     0,   277,
    2820        0,   278,     0,     0,     0,     0,     0,   507,     0,     0,
    2821        0,     0,     0,     0,     0,     0,   291,   375,   293,   294,
    2822      295,   296,   279,     0,     0,     0,     0,     0,   280,     0,
    2823        0,     0,   281,     0,     0,   282,   283,   284,   285,    40,
    2824       41,     0,   286,   287,     0,     0,     0,     0,     0,     0,
    2825      288,     0,     0,     0,     0,     0,   277,     0,   278,     0,
    2826        0,     0,     0,     0,   510,     0,     0,     0,     0,     0,
    2827        0,     0,     0,   291,   375,   293,   294,   295,   296,   279,
    2828        0,     0,     0,     0,     0,   280,     0,     0,     0,   281,
    2829        0,     0,   282,   283,   284,   285,    40,    41,     0,   286,
    2830      287,     0,     0,     0,     0,     0,     0,   288,     0,     0,
    2831        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2832        0,   513,     0,     0,     0,     0,     0,     0,     0,     0,
    2833      291,   375,   293,   294,   295,   296,     2,   202,     4,     5,
    2834        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2835       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2836        0,     0,     0,     0,     0,     0,     0,     0,     0,    30,
    2837        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2838        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2839        0,     0,    33,     0,    34,     0,    35,    36,     0,   170,
    2840      171,    39,     0,     0,     0,     0,     0,     0,    40,    41,
    2841      201,     2,   202,     4,     5,     6,     7,     8,     9,    10,
    2842       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2843       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2844        0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2845        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2846        0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
    2847        0,    35,     0,     0,   203,    38,   467,     2,   202,     4,
    2848        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2849       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2850        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2851       30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2852        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2853        0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
    2854       37,    38,     2,   202,     4,     5,     6,     7,     8,     9,
    2855       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2856       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2857        0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    2858        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2859        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2860       34,     0,    35,     0,     0,   203,    38,     8,     9,    10,
    2861       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2862       21,    22,    23,    24,     0,     0,    25,    26,    27,   485,
    2863      486,   487,     0,     0,    30,     8,     9,    10,    11,    12,
    2864       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2865       23,    24,     0,     0,    25,    26,    27,    33,     0,     0,
    2866        0,     0,    30,     0,    37,    38,     0,     0,     0,     0,
    2867        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2868        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2869        0,     0,   203,    38
    2870 };
    2871 
    2872 #define yypact_value_is_default(yystate) \
    2873   ((yystate) == (-1269))
    2874 
    2875 #define yytable_value_is_error(yytable_value) \
    2876   YYID (0)
    2877 
    2878 static const yytype_int16 yycheck[] =
    2879 {
    2880        1,    42,     0,   235,     0,   215,    42,   687,    42,   181,
    2881      103,   181,     1,   687,    32,   687,   165,   620,   181,   275,
    2882      343,     0,   183,  1023,    31,   182,   987,   748,   449,   455,
    2883      181,   181,   645,    31,   600,    31,   181,  1305,   602,   182,
    2884      600,     0,   181,   532,    42,   276,    44,   276,    44,   492,
    2885        1,   600,    31,   496,   570,   343,    54,   603,   887,   152,
    2886      887,   980,    60,   609,    60,    63,    42,    63,    66,    37,
    2887       66,   600,    31,   767,  1035,    42,   448,    66,   113,  1042,
    2888      602,     0,     0,    42,   764,    44,   600,    42,    65,   261,
    2889      764,   261,   764,    44,   490,   600,   257,   258,   261,   712,
    2890       75,    60,   419,   420,    63,   262,   104,    66,    44,   107,
    2891      261,   261,    31,    31,   102,   113,   261,   411,   101,   262,
    2892       65,   109,   261,    27,   600,     0,     1,  1395,  1022,  1023,
    2893       57,   339,    65,     0,   111,   103,   430,    89,    52,    78,
    2894      181,    42,    43,    89,   438,   181,   144,   181,   144,   521,
    2895       37,  1378,   103,    88,   152,   108,    31,   101,   109,   157,
    2896      101,   157,   197,   115,    31,    37,   105,    71,    37,   115,
    2897      103,   124,   358,   109,   101,    37,   362,   494,   224,   124,
    2898      252,    95,   200,   181,   182,   144,   182,   122,    63,    42,
    2899       43,    66,   143,   403,   104,   512,    63,   243,   157,   197,
    2900      488,   152,   635,   636,   733,   181,   107,   205,   604,   205,
    2901     1437,   123,   608,  1042,   181,  1215,   214,    75,   651,   217,
    2902      261,   217,   181,   182,     0,   261,   181,   261,   733,   101,
    2903       54,   103,   101,   629,   103,    37,  1382,   633,    65,   101,
    2904      247,   103,   399,   336,   102,   101,   205,   248,   108,   247,
    2905      201,   247,    44,   106,   205,    31,   399,   733,   217,   825,
    2906      577,   106,  1262,   261,   262,   825,   262,   123,   247,   205,
    2907      268,   102,   365,   837,   482,   189,   825,   275,   109,   602,
    2908      104,   827,    37,   107,   235,   236,   707,   288,   247,   805,
    2909        3,   448,   725,     0,     1,   989,   825,   124,   212,   101,
    2910      236,   103,   261,   102,  1464,   448,    42,    43,   222,  1228,
    2911      109,   825,  1275,  1459,    65,   837,   267,   109,  1464,   270,
    2912      825,  1464,    65,   480,    31,   323,  1486,   323,   247,   247,
    2913     1051,   267,     3,  1479,   252,   108,  1479,   480,   289,   411,
    2914     1486,   292,   217,  1486,   342,   343,   101,   108,   103,   825,
    2915      217,   143,   103,   289,   389,   102,   292,   101,   430,    66,
    2916      103,   359,   109,   124,   323,   363,   438,  1261,  1262,     0,
    2917      106,  1200,   247,  1200,  1374,   289,   123,   943,    65,     0,
    2918      247,   814,   417,   591,   343,   336,   680,   422,   339,   123,
    2919      214,   389,   101,    65,   943,    67,    68,    65,  1001,    67,
    2920       68,   399,   588,   399,  1440,  1366,  1367,   358,    54,   102,
    2921     1446,   362,   620,   205,   365,   108,   103,   625,    65,   417,
    2922       67,    68,   944,   108,   422,  1461,   424,   101,   102,   943,
    2923     1466,   524,   108,   101,   106,   634,   635,   636,   106,   124,
    2924      399,   102,   101,   235,   268,   631,  1275,   108,   124,   101,
    2925      448,   275,   651,  1416,   102,   289,   103,   688,   104,   688,
    2926     1423,   107,   101,   859,  1010,  1011,   467,   108,   419,   420,
    2927      464,   247,    83,    84,   472,   267,   252,   344,   686,   710,
    2928     1374,   710,   480,   124,   480,   108,   484,   913,   484,   448,
    2929      488,   747,   101,   411,   655,   446,   985,   646,   449,  1462,
    2930      292,   124,   101,  1116,   455,   484,   152,   118,   119,   952,
    2931      446,   512,   430,   449,   837,   687,   467,   687,   342,   455,
    2932      438,   435,   108,   104,   687,   484,   725,   108,   529,   488,
    2933      104,   532,   689,   534,   108,   359,   687,   687,   124,   363,
    2934      247,   492,   687,   494,   108,   496,   689,   339,   687,   837,
    2935      922,   108,   760,   949,  1275,   469,   507,   482,   930,   510,
    2936      124,   512,   513,   108,   482,   484,   484,   124,   214,   798,
    2937      101,   507,  1094,   524,   510,   108,   111,   513,   104,   124,
    2938      581,   116,   117,   101,   108,   419,   420,  1416,   102,   108,
    2939      588,   124,   685,   507,  1423,    65,   510,    67,    68,   513,
    2940      124,   973,   600,    67,   602,   124,   473,    71,   680,   484,
    2941       74,   101,    76,   103,   102,   814,   108,   484,   653,    83,
    2942      108,   111,   268,   621,   102,  1346,   577,   419,   420,   275,
    2943      816,   101,   124,  1462,   820,   411,   106,   588,   104,   637,
    2944      591,   600,   108,   602,   102,   104,   101,   876,   103,   108,
    2945      722,   652,   650,   654,   430,   653,   111,   113,   114,  1080,
    2946      948,   102,   438,   104,   874,   507,   759,   108,   510,   620,
    2947      589,   513,   101,   507,   625,   669,   510,   104,   102,   513,
    2948      631,   108,   123,   124,   894,   101,   103,   103,   105,   687,
    2949      102,   689,   109,    65,   102,   111,   342,    69,   101,  1420,
    2950      108,  1422,   494,   107,    76,    77,    85,    86,   484,   634,
    2951      635,   636,   103,   359,   105,   102,    57,   363,   109,   720,
    2952      512,   108,   954,   909,   108,   109,   651,   102,   687,   101,
    2953      689,   880,   566,   108,   685,   733,   734,   102,   124,   111,
    2954      102,   102,  1463,   108,   208,   102,   108,   108,   101,   747,
    2955       29,   108,   102,   102,   668,   622,   707,   101,   108,   108,
    2956      989,   686,   680,   677,   102,   922,   102,   681,   686,   104,
    2957      108,   707,   108,   930,   733,   734,   124,   484,   424,   922,
    2958       65,   106,    67,    68,    69,   577,   737,   930,  1468,   102,
    2959      106,    76,    77,  1001,  1468,   108,  1468,   621,   124,   591,
    2960      725,    80,    81,    63,   722,   124,   102,   801,   759,    65,
    2961     1039,    65,   108,   637,   106,    69,   101,   811,   102,   102,
    2962       80,    44,    76,    77,   108,   108,   650,   825,   620,   101,
    2963      102,   103,   826,   625,   121,   760,   123,    60,   101,   837,
    2964       63,    75,   760,    66,    81,    82,   713,   101,   278,    10,
    2965       11,    12,    13,    14,   114,   104,    65,   111,    67,    68,
    2966      727,   291,   292,   102,   103,   816,   825,   112,    65,   820,
    2967       67,    68,    69,   303,   120,   101,    37,   103,   837,  1110,
    2968      121,  1110,   346,     3,   348,   101,   887,   103,  1037,   814,
    2969       10,    11,    12,    13,    14,  1081,   101,   157,   103,    60,
    2970       87,   101,   821,   103,   680,   123,    78,    79,    80,   339,
    2971      103,   909,   555,   556,   557,   558,   101,    37,   101,   102,
    2972      103,   144,   101,   747,   922,   101,   102,   103,  1136,   101,
    2973      104,   103,   930,   105,   157,   104,  1167,  1168,  1167,  1168,
    2974       60,   101,   588,   103,   102,   375,   722,   101,   102,   103,
    2975      948,   818,  1234,  1235,  1236,    54,    55,   217,   909,   182,
    2976      239,   102,   913,   922,   953,   101,   101,   103,   887,   887,
    2977      434,   930,   101,   104,   103,   621,    65,   913,    67,    68,
    2978       69,   982,   205,   101,   985,   103,   987,    76,    77,   948,
    2979      101,   637,   103,   102,   217,   255,  1014,   911,   692,   259,
    2980      694,   952,   953,   954,   650,   108,   109,  1215,    42,    43,
    2981      551,   552,   887,   104,     4,     5,     6,     7,     8,     9,
    2982      887,   553,   554,   559,   560,  1019,  1020,   102,   102,   102,
    2983      887,   103,   108,   101,  1035,   123,   106,   104,   102,     0,
    2984        1,   102,   104,   109,  1045,   104,   104,  1048,  1049,  1050,
    2985     1001,   104,     4,     5,     6,     7,     8,     9,   109,   108,
    2986       28,    75,   102,   102,   106,   109,   104,  1102,   124,   102,
    2987       31,    32,    62,   108,    64,   107,   107,  1449,   953,   107,
    2988       32,  1075,  1076,    44,   344,   101,    10,    11,    12,    13,
    2989       14,   102,    75,   102,   102,   374,   109,  1022,   102,   102,
    2990      323,   747,   102,  1196,  1102,    66,   108,   102,   102,   102,
    2991       62,   887,    64,    37,   102,   102,  1488,   102,   548,   549,
    2992      550,   102,   102,  1042,  1042,   102,   102,   102,   102,  1080,
    2993     1081,   102,    28,   102,   124,   107,    60,  1004,   104,  1053,
    2994      102,    65,   103,   102,  1080,    69,   104,  1378,   102,  1378,
    2995      123,   107,    76,    77,   104,   108,   102,   102,   102,   108,
    2996      101,   591,   954,   423,   106,   108,   104,  1042,   108,   102,
    2997      102,   108,   108,   102,   453,  1042,   399,   101,   104,   458,
    2998      887,   101,   101,   144,   101,   101,   101,   111,  1045,   124,
    2999     1179,   152,   153,   104,   107,   109,   102,   102,  1196,  1200,
    3000      102,   124,   106,   121,   107,  1436,  1437,  1436,  1437,  1001,
    3001      108,  1136,   491,   473,   493,   104,   108,   104,  1136,  1213,
    3002      102,   182,   102,   102,   102,    45,    63,   104,   104,   104,
    3003     1219,   104,   104,  1234,  1235,  1236,   197,   104,   124,   200,
    3004      201,   124,   101,  1475,   205,  1196,   953,   107,  1242,   102,
    3005        4,     5,     6,     7,     8,     9,  1250,  1251,  1252,   124,
    3006      669,   124,   124,   909,   107,   226,  1042,   102,  1219,   230,
    3007      104,   232,   104,   104,   107,   104,   104,   114,   104,   104,
    3008      241,  1200,  1200,   104,   102,   102,   247,  1288,   104,   104,
    3009      101,   252,    55,   723,    54,   102,  1468,  1215,  1468,   102,
    3010     1294,   262,   106,  1178,  1179,  1468,    75,     0,    62,   270,
    3011       64,  1178,  1469,   109,   124,   104,  1305,  1468,  1468,   104,
    3012      157,   102,   104,  1468,  1359,  1200,  1469,   102,    89,  1468,
    3013      101,  1488,   104,  1200,   594,  1042,  1261,   767,    31,  1340,
    3014      107,    40,  1343,  1200,  1219,  1488,  1180,  1181,   124,  1183,
    3015      102,   102,   102,   102,  1305,  1189,  1275,  1275,  1192,   124,
    3016     1358,  1359,   622,   642,   108,  1366,  1367,   627,   109,  1283,
    3017      102,    89,   102,    66,   464,   336,   124,    75,   339,   124,
    3018      217,  1382,   109,   813,   345,   102,  1387,   107,   104,   104,
    3019      124,   101,   801,   107,   107,  1270,   102,   358,   124,   102,
    3020     1275,   362,   811,  1270,   365,   561,  1395,   665,  1275,  1410,
    3021      562,   564,   563,  1117,  1449,   565,  1200,   826,   255,  1348,
    3022     1437,  1496,   259,   702,  1200,  1284,  1452,  1468,  1112,   708,
    3023     1305,  1288,  1468,  1113,  1468,  1071,  1423,   930,   458,   446,
    3024      446,   694,   581,    65,  1395,    67,    68,    69,   932,  1450,
    3025      411,  1449,   974,   713,    76,    77,   647,   880,  1459,   737,
    3026      153,   950,  1219,  1464,   425,   484,   747,   727,   569,   430,
    3027     1468,  1469,  1179,  1469,  1425,   569,  1477,   438,  1479,   101,
    3028       -1,    -1,  1483,  1340,   569,  1486,  1343,    -1,    -1,  1425,
    3029     1488,  1492,  1488,  1200,    -1,  1496,    -1,  1416,  1416,  1275,
    3030       -1,  1452,    -1,   464,  1423,  1423,   467,   344,  1342,  1468,
    3031     1424,    -1,  1219,    -1,    -1,    65,  1452,    67,    68,    69,
    3032     1395,   482,    -1,   484,  1475,  1382,    76,    77,    -1,    -1,
    3033     1387,   492,    -1,   226,  1358,   496,    -1,  1451,    -1,    -1,
    3034       -1,  1416,    -1,  1462,  1462,    -1,    -1,    -1,  1423,  1416,
    3035     1196,   101,    -1,  1410,   247,    -1,  1423,    -1,   818,   252,
    3036       -1,   111,    -1,   524,   525,    -1,    -1,    -1,  1275,    -1,
    3037       -1,  1001,    65,  1487,    67,    68,    69,    -1,    -1,   669,
    3038       -1,    -1,    -1,    76,    77,  1499,   423,  1462,    10,    11,
    3039       12,    13,    14,    -1,    -1,  1462,    -1,    -1,  1305,    -1,
    3040       -1,   880,    -1,    -1,    -1,    -1,    -1,   886,   101,   570,
    3041     1019,  1020,  1042,    -1,    -1,    37,    -1,    -1,   111,    -1,
    3042     1477,    -1,    -1,    -1,    -1,     0,  1483,   588,   589,    -1,
    3043      591,    -1,    -1,    -1,    -1,  1492,   473,    -1,    60,  1496,
    3044     1416,   602,    -1,    -1,    -1,    -1,    -1,  1423,    -1,    -1,
    3045       -1,    -1,   345,    -1,    -1,    -1,    31,    -1,    -1,   620,
    3046       -1,    -1,    -1,    -1,   625,    -1,  1075,  1076,    -1,    -1,
    3047      631,    -1,    -1,   634,   635,   636,    -1,    -1,    -1,   101,
    3048       -1,   103,    -1,  1475,    -1,    -1,  1462,    -1,  1395,   111,
    3049      651,    66,    63,    -1,    -1,   974,    -1,    -1,    -1,    -1,
    3050       -1,    -1,    73,    -1,     0,     1,    -1,    -1,   669,  1416,
    3051       -1,   801,  1358,    -1,    -1,    -1,  1423,    -1,   411,   680,
    3052       -1,   811,    65,  1153,   685,   686,    69,    -1,   689,    -1,
    3053       -1,     3,   425,    76,    77,    31,   826,   430,    10,    11,
    3054       12,    13,    14,   114,  1004,   438,    -1,    -1,    -1,    -1,
    3055       -1,    -1,    -1,    -1,    -1,  1462,    -1,   594,   101,    -1,
    3056      103,   722,    -1,    -1,   725,    37,    -1,    63,   111,    -1,
    3057       66,   464,     3,   734,    -1,    -1,   737,    -1,   153,    10,
    3058       11,    12,    13,    14,    -1,   622,   157,    -1,    60,   482,
    3059      627,   484,  1071,    -1,    -1,    -1,    -1,    -1,   759,   760,
    3060       -1,    -1,    -1,    -1,   765,    -1,    37,    -1,    -1,    -1,
    3061       -1,    -1,    10,    11,    12,    13,    14,    -1,    10,    11,
    3062       12,    13,    14,    -1,    -1,    -1,    -1,    -1,   185,    60,
    3063       -1,    -1,   525,  1242,    -1,   192,    -1,    -1,    -1,    37,
    3064      801,  1250,  1251,  1252,    -1,    37,   217,    -1,    -1,    -1,
    3065      811,    -1,    -1,   814,    -1,   816,    -1,   153,   819,   820,
    3066      821,    -1,    60,    -1,    -1,   826,    -1,    65,    60,    67,
    3067       68,    69,   247,    -1,    -1,   836,   713,   252,    76,    77,
    3068       -1,    -1,    -1,    -1,   255,  1294,    -1,    -1,   259,    -1,
    3069      727,    -1,    -1,     0,    -1,  1174,   589,    -1,    -1,    -1,
    3070       -1,    -1,    -1,   101,   275,   103,    -1,   264,    -1,   101,
    3071       -1,   103,    -1,   111,    -1,    -1,    -1,    -1,  1178,   111,
    3072       -1,   217,    -1,    -1,    31,    -1,   887,    -1,    -1,  1019,
    3073     1020,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3074       -1,   634,   635,   636,    -1,    -1,    -1,    -1,   909,    -1,
    3075       -1,   247,    -1,    -1,    -1,    -1,    -1,    -1,   651,    66,
    3076       -1,   318,    -1,    10,    11,    12,    13,    14,    -1,   326,
    3077      345,    -1,   329,   344,    -1,    -1,   669,    -1,    -1,    -1,
    3078       -1,   818,    -1,   944,    -1,  1075,  1076,   680,    -1,    -1,
    3079       37,   952,   953,   686,    -1,    -1,    -1,    65,    -1,    67,
    3080       68,    69,    -1,    25,    26,    27,   967,    -1,    76,    77,
    3081     1270,    -1,    -1,    60,    90,    91,    92,    93,    94,    95,
    3082       96,    97,    98,    99,    -1,    -1,    -1,    -1,    -1,   722,
    3083       -1,    -1,   725,   101,   391,   103,   411,    -1,   395,    -1,
    3084     1001,   109,    -1,   111,    -1,    -1,   153,   123,    -1,    -1,
    3085      425,    -1,   423,  1014,   101,   430,   103,    -1,  1019,  1020,
    3086       -1,  1022,  1023,   438,   111,    -1,    -1,   760,    -1,   440,
    3087       -1,    -1,    -1,    -1,    96,    -1,    98,    -1,    -1,    -1,
    3088       -1,  1042,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   464,
    3089       -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
    3090       -1,    -1,   473,    -1,    -1,    -1,    -1,   482,   801,   484,
    3091       -1,    -1,    -1,    -1,  1075,  1076,    -1,    -1,   811,    37,
    3092     1081,   814,   479,  1213,    -1,    -1,   819,    -1,   821,   425,
    3093       -1,    -1,    -1,   826,    -1,    -1,    -1,    -1,    -1,    -1,
    3094      247,    -1,    60,    -1,    -1,   252,    -1,    65,    -1,    -1,
    3095      525,    69,  1242,    -1,    -1,   177,    -1,    -1,    76,    77,
    3096     1250,  1251,  1252,    -1,    -1,   187,   188,  1004,    -1,    -1,
    3097      192,    -1,   194,   195,    -1,  1136,    -1,    -1,    -1,    -1,
    3098       -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,   484,    -1,
    3099       -1,    -1,    -1,   111,   887,    65,    -1,    67,    68,    69,
    3100       -1,    -1,    -1,    -1,  1294,    -1,    76,    77,    -1,    -1,
    3101       -1,     0,   569,   570,   589,    -1,    -1,    -1,  1179,    -1,
    3102       -1,    -1,    -1,   594,    -1,    -1,    -1,    -1,    -1,   525,
    3103       -1,   101,    -1,   103,    -1,  1196,    -1,    -1,   345,  1200,
    3104       -1,   111,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3105       -1,   622,  1213,    -1,  1215,    -1,   627,    -1,  1219,   634,
    3106      635,   636,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3107       -1,    -1,    -1,    -1,   967,    -1,   651,    66,    -1,    -1,
    3108       -1,  1242,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1250,
    3109     1251,  1252,    -1,   589,   669,    -1,    -1,    -1,    -1,   656,
    3110     1261,  1262,    -1,   660,   411,   680,    -1,    -1,    -1,    -1,
    3111       -1,   686,    -1,    -1,  1275,    -1,    -1,    -1,   425,    -1,
    3112       -1,    -1,    -1,   430,    -1,    -1,  1019,  1020,    -1,  1022,
    3113     1023,   438,    -1,  1294,    -1,    -1,   693,    -1,   634,   635,
    3114      636,  1178,   713,    -1,  1305,    -1,    -1,   722,    -1,  1042,
    3115      725,    -1,    -1,    -1,    -1,   651,   727,   464,    -1,    -1,
    3116       -1,    -1,    -1,    -1,   153,    -1,    -1,    -1,    -1,    -1,
    3117       -1,    -1,    -1,    -1,    -1,   482,   747,   484,    -1,    -1,
    3118       -1,    -1,  1075,  1076,    -1,   760,    -1,    -1,    -1,    -1,
    3119       -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3120       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3121       25,    26,    -1,  1374,    29,    30,    31,    -1,   525,    -1,
    3122       -1,    -1,    37,    38,    -1,    -1,   801,    -1,    -1,   725,
    3123       -1,    -1,    -1,  1270,  1395,    -1,   811,    -1,    -1,   814,
    3124       -1,    -1,    -1,  1136,   819,    60,   821,   818,   805,    -1,
    3125       -1,   826,    67,    68,    -1,  1416,    -1,    -1,   247,    -1,
    3126       -1,    -1,  1423,   252,    -1,    -1,    -1,    -1,    -1,    -1,
    3127       -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    3128       14,    -1,   589,    -1,    -1,    -1,  1179,    -1,   103,    -1,
    3129       -1,    -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3130       -1,  1462,    65,    37,    67,    68,    69,  1200,  1469,    -1,
    3131       -1,    -1,   887,    76,    77,    -1,    -1,    -1,   814,    -1,
    3132     1213,    -1,  1215,    -1,    -1,   821,    60,   634,   635,   636,
    3133       -1,    65,    -1,    67,    68,    69,    -1,    -1,   101,    -1,
    3134      103,    -1,    76,    77,   651,    -1,    -1,    -1,   111,  1242,
    3135       -1,   573,   574,    -1,    -1,    -1,   345,  1250,  1251,  1252,
    3136      917,    -1,   669,    -1,    -1,    -1,    -1,   101,  1261,  1262,
    3137       -1,    -1,    -1,   680,    -1,    -1,    -1,   111,    -1,   686,
    3138       -1,   603,  1275,    -1,   606,   607,    -1,   609,    -1,   611,
    3139      612,   887,   967,    -1,   616,   617,    -1,    -1,    -1,    -1,
    3140       -1,  1294,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3141       -1,    -1,    -1,    -1,    -1,   722,    -1,    -1,   725,    -1,
    3142       -1,    -1,   411,    -1,    -1,    -1,    65,    -1,    67,    68,
    3143       69,    -1,    -1,  1004,   991,    -1,   425,    76,    77,    -1,
    3144       -1,   430,    -1,    -1,  1019,  1020,    -1,  1022,  1023,   438,
    3145     1007,    -1,    -1,   760,    50,    -1,    52,   953,    -1,    55,
    3146       56,    57,   101,    59,   103,    -1,    -1,  1042,    -1,    -1,
    3147       -1,   967,   111,    -1,    -1,   464,   698,   699,    74,    -1,
    3148       -1,  1374,   704,    10,    11,    12,    13,    14,    -1,    -1,
    3149       86,    87,    -1,   482,   801,   484,    -1,    -1,    -1,    -1,
    3150     1075,  1076,    -1,    -1,   811,    -1,    -1,   814,    -1,    -1,
    3151       37,    -1,   819,    -1,   821,    -1,    -1,    -1,    -1,   826,
    3152       -1,    -1,    -1,  1416,    -1,  1082,  1022,  1023,    -1,    -1,
    3153     1423,    -1,    -1,    60,    -1,    -1,   525,    -1,    65,    -1,
    3154       67,    68,    69,    -1,    -1,    -1,  1042,    -1,    -1,    76,
    3155       77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3156       -1,  1136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1462,
    3157       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
    3158      887,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3440      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3441      29,    30,    31,    32,    -1,    -1,    35,    36,    37,    38,
     3442      39,    -1,    41,    -1,    -1,    44,    45,    46,    47,    48,
     3443      49,    50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,
     3444      59,    60,    -1,    62,    -1,    64,    65,   960,    67,    68,
     3445      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3446      79,    80,   975,   976,    -1,    -1,    -1,    -1,    87,   982,
     3447      -1,    -1,  1390,    -1,    -1,   988,    -1,    -1,   991,    -1,
     3448     993,    -1,   101,    -1,   103,    -1,    36,   106,    38,    -1,
     3449      -1,   110,   111,   112,   113,   114,   115,    -1,    -1,  1012,
     3450      -1,    -1,    -1,    -1,    -1,   124,    -1,    -1,    -1,    59,
     3451    1023,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
     3452      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3453      80,    -1,  1045,    -1,  1047,    -1,    -1,    87,    -1,    -1,
     3454      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1062,
     3455      -1,   101,  1470,   103,    -1,    -1,   106,    -1,    -1,    -1,
     3456     110,   111,   112,   113,   114,   115,    -1,    36,  1081,    38,
     3457      39,    -1,    41,  1491,  1492,    44,    45,    46,    47,    48,
     3458      49,    50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,
     3459      59,    -1,    -1,    -1,    -1,  1513,    65,    -1,    -1,    -1,
     3460      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3461      79,    80,    -1,    -1,  1127,    -1,    -1,    -1,    87,    -1,
    31593462      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3160      589,    -1,    -1,    -1,  1179,    -1,    -1,  1178,    10,    11,
    3161       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3162       22,    23,    24,    25,    26,  1200,    -1,    29,    30,    31,
    3163       -1,    -1,    -1,    -1,    -1,    37,    38,    -1,  1213,    -1,
    3164     1215,    -1,    -1,    -1,    -1,   634,   635,   636,    -1,    -1,
    3165       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    3166      967,    -1,   651,    -1,    -1,    67,    68,  1242,    -1,    -1,
    3167       -1,    -1,    -1,    -1,    -1,  1250,  1251,  1252,    -1,    -1,
    3168      669,    -1,  1178,  1179,    -1,    -1,  1261,  1262,    -1,    -1,
    3169       -1,   680,    -1,    -1,    -1,    -1,    -1,   686,    -1,  1270,
    3170     1275,   103,    -1,    -1,  1200,   107,    -1,    -1,    -1,   111,
    3171       -1,    -1,  1019,  1020,    -1,  1022,  1023,    -1,    -1,  1294,
    3172       -1,    -1,    -1,  1219,    -1,    -1,    -1,    -1,    -1,    -1,
    3173       -1,    -1,    -1,   722,    -1,  1042,   725,    -1,    -1,    -1,
    3174       -1,    -1,    -1,   339,   340,    -1,    -1,    -1,    -1,    -1,
    3175       -1,    -1,    -1,    -1,    -1,   351,   352,    -1,    -1,    -1,
    3176       -1,    -1,    -1,    -1,    -1,  1261,  1262,    -1,  1075,  1076,
    3177       -1,   760,    -1,    -1,  1270,    -1,    -1,    -1,    -1,  1275,
    3178       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3179       19,    20,    21,    22,    23,    24,    25,    26,    27,  1374,
    3180       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,  1305,
    3181       -1,    -1,   801,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3182       -1,    -1,   811,    -1,    -1,   814,    -1,    -1,    -1,  1136,
    3183      819,    60,   821,    -1,    -1,    -1,    -1,   826,    67,    68,
    3184       -1,  1416,    71,    -1,    -1,    -1,    -1,    -1,  1423,    -1,
    3185       -1,    -1,    -1,    -1,    -1,  1077,    -1,    10,    11,    12,
    3186       13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3187       -1,    -1,  1179,    -1,   103,    -1,    -1,    -1,  1374,    -1,
    3188       -1,    -1,   111,    -1,    37,    -1,    -1,  1462,    -1,    -1,
    3189       -1,    -1,    -1,  1200,    -1,    -1,    -1,    -1,   887,  1395,
    3190       -1,    -1,    -1,    -1,    -1,    -1,  1213,    60,  1215,    -1,
    3191       -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,
    3192     1416,    -1,    -1,    76,    77,    -1,    -1,  1423,    -1,    -1,
    3193       -1,    -1,    -1,    -1,    -1,  1242,    -1,    -1,    -1,    -1,
    3194       -1,    -1,    -1,  1250,  1251,  1252,    -1,    -1,   101,    -1,
    3195      103,    -1,    -1,    -1,  1261,  1262,    -1,    -1,   111,    -1,
    3196       -1,    -1,    -1,    -1,    -1,    -1,  1462,    -1,  1275,    -1,
    3197       -1,    -1,    -1,    -1,    -1,  1197,    -1,    -1,   967,    -1,
    3198       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1294,    -1,     7,
    3199       -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
    3200       -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,
    3201       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,    37,
    3202       38,    -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,    -1,
    3203     1019,  1020,    -1,  1022,  1023,    -1,    -1,    -1,    -1,    -1,
    3204       -1,    59,    60,    -1,    -1,    -1,    -1,    65,    -1,    -1,
    3205       -1,    69,    -1,  1042,    72,    73,    74,    75,    76,    77,
    3206       -1,    79,    80,    -1,    -1,    -1,    -1,  1374,    -1,    87,
    3207       -1,   109,    -1,    -1,    -1,    -1,   114,    -1,    -1,    -1,
    3208       -1,    -1,    -1,   101,    -1,   103,  1075,  1076,    -1,    -1,
    3209       -1,    -1,   110,   111,   112,   113,   114,   115,    -1,    -1,
    3210       -1,    -1,    -1,    -1,    -1,   143,    -1,    -1,    -1,  1416,
    3211       -1,    -1,    -1,    -1,    -1,   153,  1423,    -1,   714,   157,
    3212      716,    -1,    -1,    -1,    -1,    -1,    -1,   723,   724,    -1,
    3213       -1,    -1,   728,    -1,     7,    -1,    -1,    10,    11,    12,
    3214       13,    14,    -1,    -1,   740,    -1,    -1,  1136,    -1,   745,
    3215       -1,    -1,    -1,    -1,    -1,  1462,    -1,    -1,    -1,    -1,
    3216       -1,    -1,    -1,    36,    37,    38,    -1,   205,    -1,    -1,
    3217       -1,    -1,    -1,   769,    -1,    -1,    -1,    -1,    -1,   217,
    3218       -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,
    3219     1179,    -1,    65,    -1,    -1,    -1,    69,   235,   236,    72,
    3220       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3221       -1,  1200,    -1,    -1,    87,    -1,    -1,   813,    -1,    -1,
    3222       -1,   259,    -1,    -1,  1213,    -1,  1215,    -1,   101,   267,
    3223      103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
    3224      113,   114,   115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3225       -1,   289,    -1,  1242,   292,    -1,    -1,    -1,    -1,    -1,
    3226       -1,  1250,  1251,  1252,    -1,    -1,    -1,    -1,    -1,    -1,
    3227       -1,    -1,  1261,  1262,   870,   871,   872,   873,    -1,   875,
    3228       -1,    -1,    -1,    -1,    -1,    -1,  1275,    -1,    -1,    -1,
    3229       -1,    -1,    -1,    -1,   890,    -1,    -1,    -1,    -1,    -1,
    3230       -1,   339,    -1,    -1,    -1,  1294,   344,    -1,   904,    -1,
    3231       -1,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
    3232       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3233       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3234       30,    31,    32,    -1,    -1,    35,   942,    37,    -1,    -1,
    3235       -1,    -1,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,
    3236       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3237       60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,
    3238       -1,   419,   420,   979,    -1,  1374,    -1,   425,    -1,    -1,
    3239      986,    -1,    -1,    -1,   990,    -1,    -1,    -1,    -1,   995,
    3240       -1,   997,    -1,    -1,    -1,  1001,  1002,  1003,   446,    -1,
    3241     1006,   449,    -1,   103,    -1,    -1,    -1,   455,    -1,  1015,
    3242       -1,   111,    -1,    96,    -1,    98,    -1,  1416,    -1,    -1,
    3243       -1,    -1,    -1,    -1,  1423,    -1,    -1,  1033,  1034,    10,
    3244       11,    12,    13,    14,   482,    -1,    -1,    -1,    -1,   122,
    3245       -1,    -1,    -1,    -1,    -1,    -1,   494,    -1,    -1,    -1,
    3246       -1,    -1,  1058,    -1,    -1,  1061,    37,    -1,    -1,   507,
    3247       -1,    -1,   510,  1462,   512,   513,    -1,    -1,    -1,    -1,
    3248       -1,    -1,    -1,    -1,    -1,    -1,    -1,   525,    -1,    60,
    3249       -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,
    3250       -1,    -1,    -1,  1099,   177,    76,    77,    -1,    -1,  1105,
    3251     1106,    -1,   185,    -1,   187,   188,    -1,    -1,  1114,   192,
    3252       -1,   194,   195,  1119,    -1,    -1,  1122,    -1,  1124,    -1,
    3253      101,  1127,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   577,
    3254      111,    -1,    -1,    -1,  1140,    -1,    -1,    -1,    -1,    -1,
    3255       -1,   589,    -1,   591,    -1,    -1,   594,  1153,    -1,  1155,
    3256     1156,  1157,  1158,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3257       -1,    -1,    -1,    -1,    -1,  1171,    -1,  1173,    -1,    -1,
    3258       -1,  1177,   620,    -1,    -1,    -1,    -1,   625,    -1,    -1,
    3259       -1,   264,    -1,    -1,    -1,    -1,   634,   635,   636,    -1,
    3260       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1205,
    3261     1206,    -1,    -1,   651,    -1,    -1,    -1,    63,    -1,    -1,
    3262       -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    75,
    3263       -1,    77,    -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,
    3264       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   686,    -1,
    3265       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1253,  1254,    -1,
    3266       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1263,   114,   707,
    3267      116,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3268       -1,    -1,    -1,    -1,    -1,    -1,    -1,   725,    -1,   727,
    3269       -1,    -1,    -1,    -1,    -1,    -1,   142,    -1,    -1,    -1,
    3270       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3271       -1,   157,    -1,  1309,    -1,    -1,    -1,    -1,    -1,    -1,
    3272       -1,    -1,   760,    -1,    -1,  1321,    -1,  1323,  1324,  1325,
    3273       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1335,
    3274       -1,    -1,    -1,    -1,    -1,    43,    -1,    -1,  1344,    -1,
    3275       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3276     1356,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3277       -1,   217,    -1,   219,   220,   221,   814,    -1,    -1,    -1,
    3278      818,    -1,    -1,   821,    -1,    -1,    -1,    -1,    -1,    -1,
    3279       -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3280       -1,    99,    -1,    -1,    -1,    -1,    -1,  1403,  1404,   255,
    3281       -1,    -1,    -1,   259,    -1,    -1,    -1,    -1,    -1,    -1,
    3282     1416,    -1,    -1,    -1,    -1,    -1,    -1,  1423,    -1,   275,
    3283       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3284       20,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
    3285       30,    31,  1448,    -1,    -1,    -1,   154,    37,    -1,    -1,
    3286       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   167,
    3287       -1,    -1,    -1,    -1,    -1,   913,    -1,   323,  1474,    -1,
    3288       60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,
    3289       -1,    71,   190,    -1,    -1,    -1,    76,    77,   344,    -1,
    3290      573,   574,  1498,   349,   350,    -1,   204,  1503,    -1,    -1,
    3291       -1,   357,    -1,    -1,    -1,   213,   954,    -1,    -1,    -1,
    3292       -1,   101,    -1,   103,    -1,   223,    -1,    -1,    -1,   967,
    3293      603,   111,    -1,   606,   607,    -1,   609,    -1,   611,   612,
    3294       -1,    -1,    -1,   616,   617,    -1,    -1,    -1,    -1,    -1,
    3295      248,    -1,    -1,   399,    -1,   253,    -1,    -1,    -1,    -1,
    3296       -1,    -1,    -1,  1001,    -1,    -1,    -1,    -1,   266,    -1,
    3297       -1,   417,    -1,    -1,   272,    -1,   274,   423,    -1,    -1,
    3298       -1,    -1,    -1,    -1,  1022,  1023,    -1,    -1,    -1,    -1,
    3299       -1,    -1,   290,    -1,   440,    -1,    -1,   443,   444,    -1,
    3300       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3301       -1,    -1,    -1,   459,    -1,    -1,    -1,    -1,    -1,    -1,
    3302      693,    -1,    -1,    -1,    -1,   698,   699,   473,    -1,    -1,
    3303       -1,   704,    -1,    -1,   480,   333,    -1,    -1,    -1,    -1,
    3304      338,    -1,  1080,     3,     4,     5,     6,     7,     8,     9,
    3305       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3306       20,    21,    22,    23,    24,    25,    26,    -1,   366,    29,
    3307       30,    31,   370,   371,    -1,   373,    -1,    37,    -1,    -1,
    3308       -1,   379,   380,    -1,   382,   383,    -1,   385,    -1,   387,
    3309       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1136,    -1,
    3310       60,    -1,    62,    -1,    64,    65,   404,    67,    68,    69,
    3311       -1,    -1,    -1,    -1,   412,    -1,    76,    77,    -1,    -1,
    3312       -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,
    3313       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   436,    -1,
    3314     1178,   101,    -1,   103,    -1,    -1,    59,    -1,   594,   447,
    3315       -1,   111,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
    3316       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3317       -1,    -1,   470,    -1,    87,    -1,   622,  1215,   476,    -1,
    3318       -1,   627,    -1,   481,    -1,    -1,    -1,    -1,   101,    -1,
    3319      103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
    3320      113,   114,   115,    -1,    -1,    -1,    -1,    -1,   152,   153,
    3321       -1,   124,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   517,
    3322       -1,    -1,    -1,  1261,  1262,    -1,    -1,    -1,    -1,    -1,
    3323       -1,    -1,  1270,    -1,    -1,   533,    -1,    -1,    -1,    -1,
    3324       -1,   185,    -1,    -1,    -1,    -1,    -1,    -1,   192,    10,
    3325       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3326       21,    22,    23,    24,    25,    26,    -1,   713,    29,    30,
    3327       31,   569,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
    3328      578,   727,    -1,    -1,    -1,    -1,    -1,   585,    -1,    -1,
    3329       -1,    -1,   590,    -1,    -1,    -1,    -1,    -1,    59,    60,
    3330       -1,   747,    -1,   601,    65,    -1,    67,    68,    69,    -1,
    3331       -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
    3332      264,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    3333       -1,    -1,    -1,    -1,    -1,    -1,  1374,    -1,    -1,    -1,
    3334      101,    -1,   103,   641,    -1,   106,    -1,    -1,    -1,   110,
    3335      111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,   805,
    3336       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3337       -1,    -1,   818,    -1,   318,    -1,    -1,    -1,   676,    -1,
    3338       -1,    -1,   326,   327,    -1,   329,   330,  1425,    -1,    -1,
    3339       -1,   837,    -1,    -1,    -1,   339,    -1,    -1,    -1,   343,
    3340       -1,    -1,    -1,    -1,  1077,    -1,    -1,    -1,    -1,    -1,
    3341       -1,    -1,    -1,    -1,  1452,    -1,    -1,    -1,   362,    -1,
    3342       -1,   365,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3343       -1,    -1,    -1,   731,    -1,    -1,    -1,  1475,    -1,    -1,
    3344       -1,    -1,    -1,   741,   742,    -1,    -1,   391,    -1,    -1,
    3345       -1,   395,    -1,    -1,    -1,   753,    -1,    -1,    -1,    -1,
    3346       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3347       -1,    -1,   770,    -1,   772,    -1,   922,    -1,   776,    -1,
    3348       -1,   425,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3349       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   143,    -1,
    3350       -1,    -1,   948,    -1,   448,    -1,    -1,    -1,   153,    -1,
    3351       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3352      165,    -1,    -1,    -1,  1197,    -1,    -1,   973,    -1,    -1,
    3353       -1,    -1,    -1,    -1,    -1,   479,    -1,    -1,   482,    -1,
    3354       -1,    -1,    -1,   841,    -1,    -1,    -1,    -1,    -1,    -1,
    3355      848,    -1,    -1,    -1,    -1,    36,    -1,    38,  1004,    -1,
    3356       -1,    -1,    -1,   861,    -1,   863,    -1,    -1,    -1,  1015,
    3357       -1,    -1,    -1,    -1,    -1,    -1,    -1,   521,    59,   877,
    3358      524,   525,    -1,    -1,    65,   883,    -1,    -1,    69,    -1,
    3359      235,    72,    73,    74,    75,    76,    77,   895,    79,    80,
    3360      898,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    3361       -1,    -1,    -1,    -1,    -1,   260,    -1,    -1,   916,    -1,
    3362      101,    -1,   103,    -1,    -1,   569,   570,    -1,   109,   110,
    3363      111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,    -1,
    3364       -1,    -1,    -1,    -1,   588,   589,    -1,   591,  1094,    -1,
    3365       -1,    -1,    -1,    -1,    -1,    -1,   600,    -1,   602,   603,
    3366       -1,    -1,    -1,    -1,    -1,   609,    -1,    -1,    -1,    -1,
    3367       -1,    -1,    -1,    -1,    -1,   619,   620,    -1,    -1,    -1,
    3368       -1,   625,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3369      634,   635,   636,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3370       -1,    -1,  1000,    -1,    -1,    -1,    -1,   651,    -1,    -1,
    3371       -1,    -1,   656,   657,    -1,    -1,   660,   661,    -1,    -1,
    3372       -1,    -1,    -1,   667,    -1,    -1,    -1,    -1,    -1,   374,
    3373       -1,    -1,  1178,    36,    -1,    38,    -1,    -1,    -1,    -1,
    3374       -1,   685,   686,   687,    -1,   689,    -1,    -1,    -1,   693,
    3375       -1,    -1,    -1,    -1,    -1,    -1,    59,  1055,    -1,    -1,
    3376       -1,    -1,    65,  1061,    67,    68,    69,    -1,    -1,    72,
    3377       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3378       -1,   725,   726,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    3379       -1,    -1,  1090,    -1,    -1,    -1,    -1,  1095,   101,    -1,
    3380      103,    -1,   105,   106,    -1,  1103,    -1,   110,   111,   112,
    3381      113,   114,   115,    -1,    -1,   759,   760,    -1,    -1,    -1,
    3382      764,   765,    -1,    -1,  1270,   276,   277,   278,   279,   474,
    3383       -1,    -1,    -1,  1131,    -1,   286,   287,    -1,    -1,    -1,
    3384      291,   292,    -1,    -1,    -1,  1143,    -1,    -1,  1146,    -1,
    3385     1148,    -1,   303,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3386       -1,   805,    -1,    -1,  1162,  1163,    -1,   512,    -1,    -1,
    3387      814,    -1,    -1,    -1,    -1,    -1,   820,   821,    -1,    -1,
    3388      525,   825,    -1,   827,    -1,    -1,  1184,   532,   339,    -1,
    3389       -1,    -1,    -1,   837,    -1,    -1,    -1,    -1,    -1,    -1,
    3390      545,   546,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3391       -1,    -1,  1210,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3392       -1,    -1,   567,    -1,   375,    -1,    -1,    -1,    -1,    -1,
    3393       -1,    -1,   577,    -1,    -1,    -1,    -1,    -1,    -1,   584,
    3394       -1,    -1,    -1,    -1,   589,    -1,    -1,    -1,    10,    11,
    3395       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3396       22,    23,    24,    25,    26,   909,    -1,    29,    30,    31,
    3397       -1,    -1,    -1,   917,    -1,    37,    -1,    -1,   922,    -1,
    3398       -1,    -1,    -1,    -1,    -1,    -1,   930,    -1,    -1,    -1,
    3399       -1,    -1,    -1,    -1,   639,    -1,    -1,    -1,    60,   943,
    3400      944,   646,  1300,    -1,  1302,    67,    68,    -1,    -1,    -1,
    3401       -1,    -1,    -1,    -1,    -1,  1313,    -1,  1315,    -1,    -1,
    3402       -1,    -1,    -1,   967,    -1,    -1,    -1,    -1,    -1,   973,
    3403       -1,    -1,    -1,    -1,    -1,  1333,    -1,    -1,    -1,    -1,
    3404       -1,   686,  1488,    -1,    -1,    -1,    -1,   991,   992,   111,
    3405       -1,  1349,    -1,    -1,    -1,    -1,    -1,  1001,    -1,  1357,
    3406       -1,    -1,  1360,  1007,  1008,    -1,  1010,  1011,  1012,    -1,
    3407       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1022,  1023,
    3408       -1,    -1,  1380,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3409       -1,  1389,    -1,    -1,  1392,  1393,    -1,   548,   549,   550,
    3410      551,   552,   553,   554,   555,   556,   557,   558,   559,   560,
    3411      561,   562,   563,   564,   565,   760,    -1,   762,    -1,    -1,
    3412       -1,    -1,    -1,   768,    -1,    -1,    -1,    -1,    -1,  1427,
    3413      775,  1429,    -1,    -1,    -1,    -1,    -1,  1081,  1082,  1083,
    3414      591,    -1,    -1,  1441,    -1,    -1,    -1,    -1,    -1,    -1,
    3415     1094,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3416       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3417       -1,    -1,    -1,   818,   819,    -1,   821,    -1,    -1,    -1,
    3418       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3419       -1,   836,  1136,     4,     5,     6,     7,     8,     9,    10,
     3463      -1,    -1,   101,  1146,   103,    -1,    -1,   106,    -1,    -1,
     3464      -1,   110,   111,   112,   113,   114,   115,    -1,  1161,  1162,
     3465      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    34203466      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    34213467      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3422       31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
    3423       -1,   876,    -1,    -1,    -1,   880,    -1,   688,    -1,    -1,
     3468      31,    32,    -1,    -1,    35,    36,    37,    38,    -1,    -1,
     3469      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34243470      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
    3425       -1,    62,  1196,    64,    65,    -1,    67,    68,    69,   710,
    3426       -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
    3427       -1,  1215,   723,    -1,    -1,    -1,    87,    -1,    -1,    -1,
     3471      -1,    62,    -1,    64,    65,    -1,    67,    68,    69,    -1,
     3472      -1,    72,    73,    74,    75,    76,    77,  1240,    79,    80,
     3473      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    34283474      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3429      101,    -1,   103,    -1,    -1,    -1,    -1,   108,    -1,   110,
    3430      111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,   954,
    3431       -1,    -1,    -1,    -1,    -1,    -1,   767,  1261,  1262,    -1,
    3432       -1,    -1,   967,   968,    -1,    -1,    -1,    -1,    36,   974,
    3433       38,    -1,    -1,    -1,    -1,   980,    -1,    -1,   983,    -1,
    3434      985,    -1,    -1,    -1,    -1,    -1,    -1,   798,    -1,    -1,
    3435       -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,  1004,
    3436       -1,    69,   813,    -1,    72,    73,    74,    75,    76,    77,
    3437     1015,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    3438       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3439       -1,    -1,  1037,   101,  1039,   103,    -1,    -1,   106,    -1,
    3440       -1,    -1,   110,   111,   112,   113,   114,   115,    -1,  1054,
    3441       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3442       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1073,    -1,
    3443     1374,    -1,     0,    -1,    -1,     3,     4,     5,     6,     7,
    3444        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3445       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3446       -1,    29,    30,    31,    32,    -1,    -1,    35,    -1,    37,
    3447       38,    -1,  1117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3448       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,
    3449       -1,  1136,    60,    -1,    62,    -1,    64,    65,    -1,    67,
    3450       68,    69,    -1,    -1,    -1,  1449,  1151,  1152,    76,    77,
    3451       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
    3452       -1,    38,    -1,    -1,  1468,  1469,    -1,    -1,    -1,    -1,
    3453       -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   989,    -1,
    3454       -1,    -1,    59,   111,  1488,    -1,    -1,    -1,    65,    -1,
    3455     1001,    -1,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3456       77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    3457       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3458       -1,    -1,    -1,  1228,   101,    -1,   103,    -1,    -1,   106,
    3459       -1,  1042,    -1,   110,   111,   112,   113,   114,   115,    -1,
    3460       -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3461       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3462       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3463       32,    -1,    -1,    35,    36,    37,    38,    39,    -1,    41,
    3464       -1,    -1,    44,    45,    46,    47,    48,    49,    50,    51,
    3465       -1,    53,    -1,    -1,    56,    57,    -1,    59,    60,  1110,
    3466       62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
    3467       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3468       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3469       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3470       -1,   103,  1153,    -1,   106,    -1,    -1,    -1,   110,   111,
    3471      112,   113,   114,   115,    -1,    -1,  1167,  1168,    -1,    -1,
    3472     1365,    -1,   124,    -1,     3,     4,     5,     6,     7,     8,
     3475     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     3476     111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,    -1,
     3477      -1,    -1,    -1,   124,     3,     4,     5,     6,     7,     8,
    34733478       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    34743479      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     
    34763481      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34773482      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3478       59,    60,    -1,    62,    -1,    64,    65,  1432,    67,    68,
     3483      59,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
     3484      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3485      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
     3486      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1381,    -1,
     3487      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3488      -1,   110,   111,   112,   113,   114,   115,     4,     5,     6,
     3489       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3490      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3491      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
     3492      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3493      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3494    1453,    -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,
     3495      67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
     3496      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
     3497      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3498      -1,    -1,    -1,    -1,   101,  1498,   103,    -1,    -1,    -1,
     3499      -1,   108,    -1,   110,   111,   112,   113,   114,   115,     4,
     3500       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3501      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3502      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3503      -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3504      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3505      -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
     3506      65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
     3507      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3508      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3509      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3510      -1,    -1,    -1,   108,    -1,   110,   111,   112,   113,   114,
     3511     115,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3512      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3513      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3514      -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
     3515      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3516      -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,
     3517      -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,    72,
     3518      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3519      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     3520      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     3521     103,    -1,    -1,    -1,    -1,   108,    -1,   110,   111,   112,
     3522     113,   114,   115,     4,     5,     6,     7,     8,     9,    10,
     3523      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3524      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3525      31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
     3526      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3527      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
     3528      -1,    62,    -1,    64,    65,    -1,    67,    68,    69,    -1,
     3529      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
     3530      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
     3531      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3532     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     3533     111,   112,   113,   114,   115,     4,     5,     6,     7,     8,
     3534       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3535      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3536      29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
     3537      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3538      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3539      59,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
    34793540      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    34803541      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    34813542      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34823543      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    3483     1475,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
    3484       -1,    -1,    -1,    -1,    -1,   124,     3,     4,     5,     6,
     3544      -1,   110,   111,   112,   113,   114,   115,     4,     5,     6,
    34853545       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    34863546      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3487       -1,    -1,    29,    30,    31,    32,    -1,    -1,    35,    36,
    3488       37,    38,    10,    11,    12,    13,    14,    15,    16,    17,
    3489       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3490       -1,    -1,    59,    60,    -1,    62,    -1,    64,    65,    37,
     3547      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
     3548      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3549      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3550      -1,    -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,
    34913551      67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3492       77,    -1,    79,    80,    -1,    -1,    -1,  1378,    -1,    -1,
    3493       87,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3494       -1,    -1,    -1,    71,   101,    -1,   103,    -1,    -1,    -1,
    3495       -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    -1,
    3496       -1,    -1,     4,     5,     6,     7,     8,     9,    10,    11,
     3552      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
     3553      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3554      -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
     3555      -1,    -1,    -1,   110,   111,   112,   113,   114,   115,     4,
     3556       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3557      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3558      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3559      -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3560      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3561      -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
     3562      65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
     3563      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3564      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3565      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3566      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
     3567     115,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    34973568      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3498       22,    23,    24,    25,    26,  1436,  1437,    29,    30,    31,
    3499       -1,    -1,    -1,    -1,    36,    37,    38,    10,    11,    12,
     3569      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
     3570      32,    -1,    -1,    35,    -1,    37,    38,    -1,    -1,    -1,
     3571      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3572      -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,    -1,
     3573      62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
     3574      -1,    -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,
     3575      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3576      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
     3577      -1,   103,    -1,    -1,    -1,   107,    -1,    -1,    -1,   111,
     3578       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    35003579      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3501       23,    24,    25,    26,    27,    -1,    -1,    59,    60,    -1,
    3502       62,    -1,    64,    65,    37,    67,    68,    69,    -1,    -1,
    3503       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3504       -1,    -1,    -1,    -1,    -1,    87,    -1,    60,    -1,    -1,
    3505       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,   101,
    3506       -1,   103,    -1,    -1,    -1,    -1,   108,    -1,   110,   111,
    3507      112,   113,   114,   115,     4,     5,     6,     7,     8,     9,
    3508       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3509       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3510       30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,    10,
    3511       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3512       21,    22,    23,    24,    25,    26,    -1,    -1,    -1,    59,
    3513       60,    -1,    62,    -1,    64,    65,    37,    67,    68,    69,
    3514       -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
    3515       80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    60,
     3580      23,    24,    25,    26,    27,    -1,    29,    30,    31,    32,
     3581      -1,    -1,    35,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    35163582      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3517       -1,   101,    -1,   103,    -1,    -1,    -1,    -1,   108,    -1,
    3518      110,   111,   112,   113,   114,   115,     4,     5,     6,     7,
    3519        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3520       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3521       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,
    3522       38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3523       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3524       -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,    67,
    3525       68,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    3526       -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    3527       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3528       -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
    3529       -1,    -1,   110,   111,   112,   113,   114,   115,     4,     5,
    3530        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3531       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3532       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3533       36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3534       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3535       -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,    65,
    3536       -1,    67,    68,    69,    -1,    -1,    72,    73,    74,    75,
    3537       76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,
    3538       -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3539       -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
    3540       -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
     3583      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
     3584      -1,    64,    -1,    -1,    67,    68,    -1,    -1,    71,     3,
    35413585       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    35423586      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3543       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3544       -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
     3587      24,    25,    26,    -1,    -1,    29,    30,    31,    32,    -1,
     3588     103,    35,    -1,    37,    -1,    -1,    -1,    -1,   111,    -1,
    35453589      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3546       -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,
    3547       64,    65,    -1,    67,    68,    69,    -1,    -1,    72,    73,
    3548       74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    3549       -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3550       -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
    3551       -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
    3552      114,   115,     4,     5,     6,     7,     8,     9,    10,    11,
    3553       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3554       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3555       -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
    3556       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3557       -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
    3558       62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
    3559       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3560       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3561       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3562       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
    3563      112,   113,   114,   115,     3,     4,     5,     6,     7,     8,
     3590      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
     3591      64,    -1,    -1,    67,    68,     4,     5,     6,     7,     8,
    35643592       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    35653593      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3566       29,    30,    31,    32,    -1,    -1,    35,    -1,    37,    38,
     3594      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,   103,
     3595      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    35673596      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3568       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,
    35693597      -1,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
    35703598      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,
    35713599      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35723600      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3573       -1,    -1,   101,    -1,   103,    -1,    -1,    -1,   107,    -1,
    3574       -1,    -1,   111,     3,     4,     5,     6,     7,     8,     9,
    3575       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3576       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3577       30,    31,    32,    -1,    -1,    35,    -1,    37,    38,    -1,
    3578       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3579       -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,
    3580       60,    -1,    62,    -1,    64,    65,    -1,    67,    68,    69,
    3581       -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
    3582       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3583       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3584       -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
    3585       -1,   111,     3,     4,     5,     6,     7,     8,     9,    10,
     3601      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3602      -1,    -1,   111,     4,     5,     6,     7,     8,     9,    10,
    35863603      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3587       21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
    3588       31,    32,    -1,    -1,    35,    -1,    37,    -1,    -1,    -1,
     3604      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3605      31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    35893606      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35903607      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    35913608      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    -1,
    3592       71,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3593       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3594       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3595       -1,    -1,   103,    -1,    -1,    37,    -1,    -1,    -1,    -1,
    3596      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3597       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    3598       62,    -1,    64,    -1,    -1,    67,    68,     4,     5,     6,
    3599        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3600       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3601       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3602       37,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
    3603       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3604       -1,    -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,
    3605       67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
    3606       77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3607       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3608       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
    3609       -1,    -1,    -1,    -1,   111,     4,     5,     6,     7,     8,
    3610        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3611       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3612       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
    3613       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3614       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3615       -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,
    3616       -1,    -1,     4,     5,     6,     7,     8,     9,    10,    11,
    3617       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3618       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3619       -1,    -1,    -1,   102,   103,    37,    -1,    -1,    -1,    -1,
    3620       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3621       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    3622       62,    -1,    64,    -1,    -1,    67,    68,    -1,    -1,    -1,
    3623       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3624       -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,
    3625       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3626       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
    36273609       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    36283610      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    36293611      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3630       -1,    -1,    -1,    37,    10,    11,    12,    13,    14,    15,
    3631       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3632       26,    -1,    -1,    29,    30,    31,    60,    -1,    62,    -1,
    3633       64,    37,    -1,    67,    68,    -1,    -1,    -1,    -1,    -1,
     3612      -1,   102,   103,    37,    -1,    -1,    -1,    -1,    -1,    -1,
     3613     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3614      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
     3615      64,    -1,    -1,    67,    68,    -1,    -1,    -1,    -1,    -1,
    36343616      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3635       -1,    -1,    -1,    -1,    60,    89,    -1,    -1,    -1,    65,
    3636       -1,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,   103,
     3617      -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,
     3618      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,
    36373619      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,     4,     5,
    36383620       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    36393621      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    36403622      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3641       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3623      -1,    37,    10,    11,    12,    13,    14,    15,    16,    17,
     3624      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3625      -1,    29,    30,    31,    60,    -1,    62,    -1,    64,    37,
     3626      -1,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36423627      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3643       -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,
    3644       -1,    67,    68,     4,     5,     6,     7,     8,     9,    10,
     3628      -1,    -1,    60,    89,    -1,    -1,    -1,    65,    -1,    67,
     3629      68,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
     3630      -1,    -1,    -1,    -1,    -1,   111,     4,     5,     6,     7,
     3631       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3632      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3633      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
     3634      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3635      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3636      -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
     3637      68,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3638      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3639      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3640      -1,    -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,
     3641      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3642      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
     3643      -1,    64,    -1,    -1,    67,    68,     4,     5,     6,     7,
     3644       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3645      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3646      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
     3647     103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
     3648      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3649      -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
     3650      68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3651      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3652      29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
     3653      -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
     3654      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3655      59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     3656      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3657      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
     3658      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3659      -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,
     3660      -1,   110,   111,   112,   113,   114,   115,    10,    11,    12,
     3661      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3662      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3663      -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
     3664      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3665      -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,
     3666      -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,
     3667      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3668      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     3669      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     3670     103,   104,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
     3671     113,   114,   115,    10,    11,    12,    13,    14,    15,    16,
     3672      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3673      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
     3674      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3675      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3676      -1,    -1,    59,    60,    -1,    -1,    -1,    -1,    65,    -1,
     3677      67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
     3678      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
     3679      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3680      -1,    -1,    -1,    -1,   101,   102,   103,    -1,    -1,    -1,
     3681      -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    10,
    36453682      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    36463683      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3647       31,    -1,    -1,    -1,    -1,    -1,    37,   103,    -1,    -1,
    3648       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3649       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    3650       -1,    62,    -1,    64,    -1,    -1,    67,    68,     4,     5,
    3651        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3652       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3653       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3654       -1,    37,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3655      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3656       -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,
    3657       -1,    67,    68,     4,     5,     6,     7,     8,     9,    10,
    3658       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3659       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3660       31,    -1,    -1,    -1,    -1,    -1,    37,   103,    -1,    -1,
    3661       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3662       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    3663       -1,    62,    -1,    64,    -1,    -1,    67,    68,    10,    11,
    3664       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3665       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3666       -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
    3667       -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3668      111,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
    3669       -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,
    3670       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3671       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3672       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3673       -1,   103,   104,    -1,    -1,    -1,    -1,    -1,   110,   111,
    3674      112,   113,   114,   115,    10,    11,    12,    13,    14,    15,
    3675       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3676       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3677       36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3684      31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
    36783685      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3679       -1,    -1,    -1,    59,    60,    -1,    -1,    -1,    -1,    65,
    3680       -1,    67,    68,    69,    -1,    -1,    72,    73,    74,    75,
    3681       76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,
    3682       -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3683       -1,    -1,    -1,    -1,    -1,   101,   102,   103,    -1,    -1,
    3684       -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
    3685       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3686       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3687       30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,
     3686      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
     3687      -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,
     3688      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
     3689      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    36883690      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3689       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,
    3690       60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,
    3691       -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
    3692       80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     3691     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     3692     111,   112,   113,   114,   115,    10,    11,    12,    13,    14,
     3693      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3694      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3695      -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
    36933696      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3694       -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
    3695      110,   111,   112,   113,   114,   115,    10,    11,    12,    13,
    3696       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3697       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3698       -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
     3697      -1,    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,    -1,
     3698      65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
     3699      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3700      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3701      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3702      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
     3703     115,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3704      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3705      29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
    36993706      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3700       -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,
    3701       -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,    73,
    3702       74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    3703       -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3704       -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
    3705       -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
    3706      114,   115,    10,    11,    12,    13,    14,    15,    16,    17,
    3707       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3708       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,
    3709       38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37103707      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3711       -1,    59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,
    3712       68,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    3713       -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
     3708      59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     3709      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3710      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    37143711      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3715       -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
    3716       -1,    -1,   110,   111,   112,   113,   114,   115,    10,    11,
    3717       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3718       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3719       -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
     3712      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3713      -1,   110,   111,   112,   113,   114,   115,    10,    11,    12,
     3714      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3715      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3716      -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
    37203717      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3721       -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
    3722       -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,
    3723       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3724       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3725       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3726       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
    3727      112,   113,   114,   115,     3,     4,     5,     6,     7,     8,
    3728        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3718      -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,
     3719      -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,
     3720      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3721      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     3722      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     3723     103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
     3724     113,   114,   115,    10,    11,    12,    13,    14,    15,    16,
     3725      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3726      27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3727      37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3728      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3729      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,
     3730      67,    68,    69,    -1,    71,    -1,    -1,    -1,    -1,    76,
     3731      77,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    37293732      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3730       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    10,
    3731       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3732       21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
    3733       31,    60,    -1,    62,    -1,    64,    37,    -1,    67,    68,
    3734       -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    3735       18,    19,    20,    21,    22,    23,    24,    25,    26,    60,
    3736       -1,    29,    30,    31,    65,    -1,    67,    68,    69,    37,
    3737       71,    -1,    -1,    -1,    -1,    76,    77,   106,    -1,    -1,
    3738       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3739       -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,
    3740       68,    69,   103,    -1,    -1,    -1,    -1,    -1,    76,    77,
    3741      111,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3742       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3743       29,    30,    31,   101,    -1,   103,    -1,    -1,    37,    -1,
    3744       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3733      29,    30,    31,    -1,   101,    -1,   103,    -1,    37,    -1,
     3734      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    37453735      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37463736      -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     
    37683758      -1,    76,    77,    10,    11,    12,    13,    14,    15,    16,
    37693759      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3770       27,    -1,    29,    30,    31,    -1,    -1,    -1,   103,    -1,
     3760      -1,    -1,    29,    30,    31,    -1,   101,    -1,   103,    -1,
    37713761      37,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    37723762      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3763      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,
     3764      67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
     3765      77,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3766      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3767      29,    30,    31,    -1,    -1,    -1,   103,    -1,    37,    -1,
     3768      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3769      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3770      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
     3771      -1,    -1,    71,    10,    11,    12,    13,    14,    15,    16,
     3772      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3773      27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3774      37,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3775      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37733776      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
    37743777      67,    68,    -1,    -1,    71,    10,    11,    12,    13,    14,
    37753778      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3776       25,    26,    27,    -1,    29,    30,    31,    -1,    -1,    -1,
    3777       -1,    -1,    37,    -1,   101,    -1,   103,    -1,    -1,    -1,
     3779      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3780      -1,    -1,    37,    38,   101,    -1,   103,    -1,    -1,    -1,
    37783781      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    37793782      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    3780       -1,    -1,    67,    68,    -1,    -1,    71,    10,    11,    12,
    3781       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3782       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3783       -1,    -1,    -1,    -1,    37,    38,   101,    -1,   103,    -1,
    3784       -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3785       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
    3786       -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,    13,
    3787       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3788       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3789       -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
    3790      103,    -1,    -1,    -1,   107,    -1,    -1,    -1,   111,    -1,
    3791       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
    3792       -1,    65,    -1,    67,    68,    10,    11,    12,    13,    14,
     3783      -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
     3784      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3785      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     3786      -1,    37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,
     3787      -1,    -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3788      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
     3789      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
     3790      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3791      27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3792      37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
     3793      -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     3794      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     3795      67,    68,    -1,    -1,    71,    10,    11,    12,    13,    14,
    37933796      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    37943797      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3795       -1,    -1,    37,    38,    -1,    -1,    -1,    -1,    -1,   103,
    3796       -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
     3798      -1,    -1,    37,    38,    -1,    -1,   103,    -1,    -1,    -1,
     3799      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    37973800      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    37983801      -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
     
    38003803      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    38013804      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
    3802       -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3803       -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
     3805      -1,    -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3806      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,
    38043807      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
    38053808      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    38063809      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3807       37,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
     3810      37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
    38083811      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    38093812      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     
    38113814      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    38123815      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    3813       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
     3816      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
    38143817      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    38153818      -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     
    38173820      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    38183821      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
    3819       -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
     3822      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
    38203823      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    38213824      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
     
    38233826      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    38243827      30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
    3825       -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3828      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    38263829      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38273830      60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,
     
    38733876      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    38743877      -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3875       68,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3876       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3877       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3878       -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
     3878      68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3879      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3880      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
     3881      -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
    38793882      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3880       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
    3881       -1,    64,    -1,    -1,    67,    68,    -1,    36,    -1,    38,
    3882       39,    -1,    41,    -1,    -1,    44,    45,    46,    47,    48,
    3883       49,    50,    51,    52,    53,    -1,    -1,    56,    57,    -1,
    3884       59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,   102,
     3883      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
     3884       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3885      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3886      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
     3887      -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,    -1,
     3888      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3889      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
     3890      64,    -1,    -1,    67,    68,    -1,    36,    -1,    38,    39,
     3891      -1,    41,    -1,    -1,    44,    45,    46,    47,    48,    49,
     3892      50,    51,    52,    53,    -1,    -1,    56,    57,    -1,    59,
     3893      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,   102,    69,
     3894      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3895      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     3896      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3897      -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,    -1,
     3898     110,   111,   112,   113,   114,   115,    -1,    36,    -1,    38,
     3899      39,    -1,    41,    -1,   124,    44,    45,    46,    47,    48,
     3900      49,    50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,
     3901      59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
    38853902      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    38863903      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    38873904      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38883905      -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,
    3889       -1,   110,   111,   112,   113,   114,   115,    -1,    36,    -1,
    3890       38,    39,    -1,    41,    -1,   124,    44,    45,    46,    47,
    3891       48,    49,    50,    51,    -1,    53,    -1,    -1,    56,    57,
    3892       -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
    3893       -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    3894       -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    3895       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3896       -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,
    3897       -1,    -1,   110,   111,   112,   113,   114,   115,    -1,    -1,
    3898       -1,    -1,    -1,    -1,    -1,    -1,   124,     4,     5,     6,
    3899        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3900       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3901       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3902       37,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3903       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3904       29,    30,    31,    60,    -1,    62,    -1,    64,    37,    -1,
    3905       67,    68,    -1,    36,    -1,    38,    39,    -1,    41,    42,
    3906       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
    3907       53,    60,    89,    56,    57,    -1,    59,    -1,    67,    68,
    3908       -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
    3909       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3910       -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    3911       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3912      103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,
    3913      113,   114,   115,    36,    -1,    38,    39,    -1,    41,    42,
    3914       43,    44,    45,    46,    47,    48,    49,    50,    51,    -1,
    3915       53,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,
    3916       -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
    3917       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3918       -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    3919       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3920      103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,
    3921      113,   114,   115,    36,    -1,    38,    39,    -1,    41,    -1,
    3922       -1,    44,    45,    46,    47,    48,    49,    50,    51,    -1,
    3923       53,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,
     3906      -1,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
     3907      -1,    -1,    -1,    -1,    -1,   124,     4,     5,     6,     7,
     3908       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3909      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3910      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
     3911      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3912      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
     3913      30,    31,    60,    -1,    62,    -1,    64,    37,    -1,    67,
     3914      68,    -1,    36,    -1,    38,    39,    -1,    41,    42,    43,
     3915      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
     3916      60,    89,    56,    57,    -1,    59,    -1,    67,    68,    -1,
     3917      -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
     3918      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
     3919      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3920      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
     3921      -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,
     3922     114,   115,    36,    -1,    38,    39,    -1,    41,    42,    43,
     3923      44,    45,    46,    47,    48,    49,    50,    51,    -1,    53,
     3924      -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,    -1,
     3925      -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
     3926      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
     3927      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    36,
     3928      -1,    38,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
     3929      -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,
     3930     114,   115,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
     3931      -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,    76,
     3932      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
     3933      87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,
     3934      -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
     3935      -1,    -1,   109,   110,   111,   112,   113,   114,   115,    59,
     3936      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
     3937      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3938      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     3939      -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,
     3940      -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,    -1,
     3941     110,   111,   112,   113,   114,   115,    59,    -1,    -1,    -1,
    39243942      -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
    39253943      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    39263944      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    39273945      36,    -1,    38,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3928      103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,
     3946     103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
    39293947     113,   114,   115,    59,    -1,    -1,    -1,    -1,    -1,    65,
    39303948      -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,
     
    39323950      -1,    87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,
    39333951      -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
    3934       -1,    -1,   108,    -1,   110,   111,   112,   113,   114,   115,
     3952      -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
    39353953      59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
    39363954      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     
    39483966      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    39493967      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    36,    -1,
    3950       38,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3968      38,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,
    39513969      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    39523970     115,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
     
    39543972      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    39553973      -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,
    3956       -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
     3974      -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
    39573975      -1,    -1,   110,   111,   112,   113,   114,   115,    59,    -1,
    39583976      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,
     
    39643982      -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
    39653983      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    3966       -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    36,
    3967       -1,    38,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,
     3984      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3985      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,
    39683986      -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
    3969      114,   115,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
    3970       -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3971       77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    3972       87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,
    3973       -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,
    3974       -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    59,
    3975       -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
    3976       -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
    3977       80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     3987     114,   115,     4,     5,     6,     7,     8,     9,    10,    11,
     3988      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3989      22,    23,    24,    25,    26,    -1,    -1,    -1,    -1,    -1,
     3990      -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
    39783991      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3979       -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3980      110,   111,   112,   113,   114,   115,     4,     5,     6,     7,
    3981        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3982       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3983       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
    3984       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3985       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3986       -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,    67,
    3987       68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
    3988        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3989       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3990       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3991       -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    3992       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3993       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
    3994       -1,    64,    -1,    -1,    67,    68,     3,     4,     5,     6,
     3992      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
     3993      62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
     3994      -1,    -1,    -1,    -1,    76,    77,     3,     4,     5,     6,
    39953995       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    39963996      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     
    39993999      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    40004000      -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,
    4001       67,    68,     4,     5,     6,     7,     8,     9,    10,    11,
    4002       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    4003       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    4004       -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
     4001      67,    68,     3,     4,     5,     6,     7,     8,     9,    10,
     4002      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     4003      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     4004      31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    40054005      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4006       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    4007       62,    -1,    64,    -1,    -1,    67,    68,    10,    11,    12,
    4008       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    4009       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    32,
    4010       33,    34,    -1,    -1,    37,    10,    11,    12,    13,    14,
    4011       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    4012       25,    26,    -1,    -1,    29,    30,    31,    60,    -1,    -1,
    4013       -1,    -1,    37,    -1,    67,    68,    -1,    -1,    -1,    -1,
     4006      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
     4007      -1,    62,    -1,    64,    -1,    -1,    67,    68,     4,     5,
     4008       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     4009      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     4010      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     4011      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    40144012      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4015       -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    4016       -1,    -1,    67,    68
     4013      -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,
     4014      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
     4015      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4016      -1,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
     4017      37,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     4018      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     4019      29,    30,    31,    60,    -1,    -1,    -1,    -1,    37,    -1,
     4020      67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4021      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4022      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68
    40174023};
    40184024
     
    40254031      22,    23,    24,    25,    26,    29,    30,    31,    32,    35,
    40264032      37,    38,    57,    60,    62,    64,    65,    67,    68,    69,
    4027       76,    77,   101,   103,   111,   129,   132,   189,   201,   202,
    4028      203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
    4029      213,   214,   215,   216,   217,   218,   220,   221,   222,   223,
    4030      224,   225,   226,   227,   229,   230,   231,   232,   233,   234,
    4031      235,   243,   244,   270,   271,   272,   280,   283,   289,   290,
    4032      292,   294,   295,   301,   306,   310,   311,   312,   313,   314,
    4033      315,   316,   317,   337,   354,   355,   356,   357,    65,   111,
    4034      131,   204,   206,   214,   216,   226,   230,   232,   271,    75,
    4035      101,   299,   300,   301,   299,   299,    65,    67,    68,    69,
    4036      130,   131,   260,   261,   281,   282,    67,    68,   261,   101,
    4037      292,   215,   216,   101,   111,   306,   311,   312,   313,   315,
    4038      316,   317,   104,   126,   103,   207,   214,   216,   310,   314,
    4039      353,   354,   357,   358,   127,   123,   264,   106,   127,   164,
    4040       67,    68,   129,   259,   127,   127,   127,   108,   127,    67,
    4041       68,   101,   111,   296,   305,   306,   307,   308,   309,   310,
    4042      314,   318,   319,   320,   321,   322,   328,     3,    27,    71,
    4043      228,     3,     5,    67,   103,   111,   206,   217,   221,   224,
    4044      233,   272,   310,   314,   357,   204,   206,   216,   226,   230,
    4045      232,   271,   310,   314,    32,   222,   222,   217,   224,   127,
    4046      222,   217,   222,   217,    68,   101,   106,   261,   272,   106,
    4047      261,   222,   217,   108,   127,   127,     0,   126,   101,   164,
    4048      299,   299,   126,   103,   214,   216,   355,   259,   259,   216,
    4049      123,   101,   111,   296,   306,   310,   103,   111,   357,   293,
    4050      219,   301,   101,   277,   101,   101,   101,    36,    38,    59,
    4051       65,    69,    72,    73,    74,    75,    79,    80,    87,   101,
    4052      103,   110,   111,   112,   113,   114,   115,   128,   132,   133,
    4053      134,   135,   140,   141,   142,   143,   144,   145,   146,   147,
    4054      148,   149,   150,   151,   152,   153,   155,   157,   214,   263,
    4055      279,   353,   358,   216,   102,   102,   102,   102,   102,   102,
    4056      102,    67,    68,   103,   214,   259,   337,   355,   103,   111,
    4057      155,   206,   207,   213,   216,   220,   221,   226,   229,   230,
    4058      232,   249,   250,   254,   255,   256,   257,   271,   337,   349,
    4059      350,   351,   352,   357,   358,   104,   101,   310,   314,   357,
    4060      101,   108,   124,   103,   106,   111,   155,   265,   107,   126,
    4061      108,   124,   101,   108,   124,   108,   124,   108,   124,   299,
    4062      124,   306,   307,   308,   309,   319,   320,   321,   322,   216,
    4063      305,   318,    57,   298,   103,   299,   336,   337,   299,   299,
    4064      164,   126,   101,   299,   336,   299,   299,   216,   296,   101,
    4065      101,   215,   214,   216,   104,   126,   214,   353,   358,   164,
    4066      126,   259,   264,   206,   221,   310,   314,   164,   126,   281,
    4067      216,   226,   124,   216,   216,   279,    38,   103,   214,   236,
    4068      237,   238,   239,   353,   357,   106,   245,   261,   106,   216,
    4069      281,   124,   124,   292,   126,   131,   258,     3,   127,   196,
    4070      197,   211,   213,   216,   126,   298,   101,   298,   155,   306,
    4071      216,   101,   126,   259,   106,    32,    33,    34,   214,   273,
    4072      274,   276,   126,   121,   123,   278,   126,   217,   223,   224,
    4073      259,   302,   303,   304,   140,   153,   154,   101,   140,   142,
    4074      101,   140,   101,   101,   140,   140,   131,   103,   155,   160,
    4075      164,   214,   262,   353,   104,   126,   142,   142,    75,    78,
    4076       79,    80,   101,   103,   105,    90,    91,    92,    93,    94,
    4077       95,    96,    97,    98,    99,   123,   159,   142,   111,   116,
    4078      117,   113,   114,    81,    82,    83,    84,   118,   119,    85,
    4079       86,   112,   120,   121,    87,    88,   122,   123,   360,   101,
    4080      111,   332,   333,   334,   335,   336,   102,   108,   101,   336,
    4081      337,   101,   336,   337,   126,   101,   214,   355,   104,   126,
    4082      103,   111,   127,   214,   216,   348,   349,   357,   358,   127,
    4083      101,   103,   111,   306,   323,   324,   325,   326,   327,   328,
    4084      329,   330,   331,   337,   338,   339,   340,   341,   342,   343,
    4085      111,   357,   216,   127,   127,   111,   214,   216,   350,   259,
    4086      214,   337,   350,   259,   101,   126,   126,   126,   104,   126,
    4087       65,   103,   105,   261,   265,   266,   267,   268,   269,   126,
    4088      126,   126,   126,   126,   126,   296,   102,   102,   102,   102,
    4089      102,   102,   102,   305,   318,   101,   264,   104,   196,   126,
    4090      296,   160,   263,   160,   263,   296,   103,   196,   298,   164,
    4091      126,   196,   102,   238,   239,   104,   126,   101,   109,   111,
    4092      240,   242,   305,   306,   318,   336,   344,   345,   346,   347,
    4093      107,   237,   108,   124,   108,   124,   261,   236,   108,   359,
    4094      123,   246,   245,   216,   251,   252,   253,   256,   257,   102,
    4095      108,   164,   126,   111,   155,   126,   213,   216,   250,   349,
    4096      357,   290,   291,   101,   111,   323,   102,   108,   360,   261,
    4097      273,   101,   106,   261,   263,   273,   102,   108,   101,   102,
    4098      109,   262,   262,   103,   131,   137,   155,   263,   262,   104,
    4099      126,   102,   108,   102,   101,   111,   344,   102,   108,   155,
    4100      103,   131,   103,   136,   137,   126,   103,   131,   155,   155,
    4101      142,   142,   142,   143,   143,   144,   144,   145,   145,   145,
    4102      145,   146,   146,   147,   148,   149,   150,   151,   109,   160,
    4103      155,   126,   333,   334,   335,   216,   332,   299,   299,   155,
    4104      263,   126,   258,   111,   126,   214,   337,   350,   216,   220,
    4105      104,   126,   104,   357,   104,   101,   126,   306,   324,   325,
    4106      326,   329,   339,   340,   341,   104,   126,   216,   323,   327,
    4107      338,   101,   299,   342,   360,   299,   299,   360,   101,   299,
    4108      342,   299,   299,   299,   299,   337,   214,   348,   358,   259,
    4109      104,   108,   104,   108,   360,   214,   350,   360,   247,   248,
    4110      249,   250,   247,   247,   259,   155,   126,   103,   261,   109,
    4111      108,   359,   265,   103,   109,   269,    28,   198,   199,   259,
    4112      247,   131,   296,   131,   298,   101,   336,   337,   101,   336,
    4113      337,   133,   337,   164,   251,   102,   102,   102,   102,   104,
    4114      164,   196,   164,   106,   124,   124,   103,   306,   345,   346,
    4115      347,   154,   216,   344,   241,   242,   241,   299,   299,   261,
    4116      299,   107,   261,   107,   154,   359,   127,   127,   131,   211,
    4117      127,   127,   247,   101,   111,   357,   127,   107,   216,   274,
    4118      275,   127,   126,   126,   101,   127,   102,   303,   160,   161,
    4119      124,    75,   190,   191,   192,   102,   102,   126,   109,   102,
    4120      102,   102,   155,   216,   106,   142,   157,   155,   156,   158,
    4121      108,   127,   126,   126,   102,   108,   155,   126,   153,   109,
    4122      251,   102,   102,   102,   332,   251,   102,   247,   214,   350,
    4123      103,   111,   155,   155,   216,   329,   251,   102,   102,   102,
    4124      102,   102,   102,   102,     7,   216,   323,   327,   338,   126,
    4125      126,   360,   126,   126,   102,   127,   127,   127,   127,   264,
    4126      127,   153,   154,   155,   297,   126,   265,   267,   107,   126,
    4127      200,   261,    38,    39,    41,    44,    45,    46,    47,    48,
    4128       49,    50,    51,    53,    56,   103,   131,   161,   162,   163,
    4129      164,   165,   166,   168,   169,   181,   183,   184,   189,   201,
    4130      295,    28,   127,   123,   264,   126,   126,   102,   127,   164,
    4131      236,   104,   102,   102,   102,   344,   240,   246,   107,   102,
    4132      108,   104,   104,   127,   216,   108,   360,   277,   102,   273,
    4133      204,   206,   214,   285,   286,   287,   288,   279,   102,   102,
    4134      101,   102,   109,   108,   155,   155,   266,   108,   127,   158,
     4033      76,    77,   101,   103,   111,   129,   132,   189,   203,   204,
     4034     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     4035     215,   216,   217,   218,   219,   220,   222,   223,   224,   225,
     4036     226,   227,   228,   229,   231,   232,   233,   234,   235,   236,
     4037     237,   245,   246,   272,   273,   274,   282,   285,   291,   292,
     4038     294,   296,   297,   303,   308,   312,   313,   314,   315,   316,
     4039     317,   318,   319,   339,   356,   357,   358,   359,    65,   111,
     4040     131,   206,   208,   216,   218,   228,   232,   234,   273,    75,
     4041     101,   301,   302,   303,   301,   301,    65,    67,    68,    69,
     4042     130,   131,   262,   263,   283,   284,    67,    68,   263,   101,
     4043     294,    11,   190,   101,   111,   308,   313,   314,   315,   317,
     4044     318,   319,   104,   126,   103,   209,   216,   218,   312,   316,
     4045     355,   356,   359,   360,   127,   123,   266,   106,   127,   164,
     4046      67,    68,   129,   261,   127,   127,   127,   108,   127,    67,
     4047      68,   101,   111,   298,   307,   308,   309,   310,   311,   312,
     4048     316,   320,   321,   322,   323,   324,   330,     3,    27,    71,
     4049     230,     3,     5,    67,   103,   111,   208,   219,   223,   226,
     4050     235,   274,   312,   316,   359,   206,   208,   218,   228,   232,
     4051     234,   273,   312,   316,    32,   224,   224,   219,   226,   127,
     4052     224,   219,   224,   219,    68,   101,   106,   263,   274,   106,
     4053     263,   224,   219,   108,   127,   127,     0,   126,   101,   164,
     4054     301,   301,   126,   103,   216,   218,   357,   261,   261,   218,
     4055     123,   101,   111,   298,   308,   312,   103,   111,   359,   295,
     4056     221,   303,   101,   279,   101,   101,    49,   101,    36,    38,
     4057      59,    65,    69,    72,    73,    74,    75,    79,    80,    87,
     4058     101,   103,   110,   111,   112,   113,   114,   115,   128,   132,
     4059     133,   134,   135,   140,   141,   142,   143,   144,   145,   146,
     4060     147,   148,   149,   150,   151,   152,   153,   155,   157,   216,
     4061     265,   281,   355,   360,   218,   102,   102,   102,   102,   102,
     4062     102,   102,    67,    68,   103,   216,   261,   339,   357,   103,
     4063     111,   155,   208,   209,   215,   218,   222,   223,   228,   231,
     4064     232,   234,   251,   252,   256,   257,   258,   259,   273,   339,
     4065     351,   352,   353,   354,   359,   360,   104,   101,   312,   316,
     4066     359,   101,   108,   124,   103,   106,   111,   155,   267,   107,
     4067     126,   108,   124,   101,   108,   124,   108,   124,   108,   124,
     4068     301,   124,   308,   309,   310,   311,   321,   322,   323,   324,
     4069     218,   307,   320,    57,   300,   103,   301,   338,   339,   301,
     4070     301,   164,   126,   101,   301,   338,   301,   301,   218,   298,
     4071     101,   101,   217,   218,   216,   218,   104,   126,   216,   355,
     4072     360,   164,   126,   261,   266,   208,   223,   312,   316,   164,
     4073     126,   283,   218,   228,   124,   218,   218,   281,    38,   103,
     4074     216,   238,   239,   240,   241,   355,   359,   106,   247,   263,
     4075     106,   218,   283,   124,   124,   294,   126,   131,   260,     3,
     4076     127,   198,   199,   213,   215,   218,   126,   300,   101,   300,
     4077     155,   308,   218,   101,   126,   261,   106,    32,    33,    34,
     4078     216,   275,   276,   278,   126,   121,   123,   280,   126,   219,
     4079     225,   226,   261,   304,   305,   306,   101,   133,   101,   140,
     4080     140,   142,   101,   140,   101,   101,   140,   140,   131,   103,
     4081     155,   160,   164,   216,   264,   355,   104,   126,   142,   142,
     4082      75,    78,    79,    80,   101,   103,   105,    90,    91,    92,
     4083      93,    94,    95,    96,    97,    98,    99,   123,   159,   142,
     4084     111,   116,   117,   113,   114,    81,    82,    83,    84,   118,
     4085     119,    85,    86,   112,   120,   121,    87,    88,   122,   123,
     4086     362,   101,   111,   334,   335,   336,   337,   338,   102,   108,
     4087     101,   338,   339,   101,   338,   339,   126,   101,   216,   357,
     4088     104,   126,   103,   111,   127,   216,   218,   350,   351,   359,
     4089     360,   127,   101,   103,   111,   308,   325,   326,   327,   328,
     4090     329,   330,   331,   332,   333,   339,   340,   341,   342,   343,
     4091     344,   345,   111,   359,   218,   127,   127,   111,   216,   218,
     4092     352,   261,   216,   339,   352,   261,   101,   126,   126,   126,
     4093     104,   126,    65,    73,   103,   105,   263,   267,   268,   269,
     4094     270,   271,   126,   126,   126,   126,   126,   126,   298,   102,
     4095     102,   102,   102,   102,   102,   102,   307,   320,   101,   266,
     4096     104,   198,   126,   298,   160,   265,   160,   265,   298,   103,
     4097     198,   300,   164,   126,   198,   102,   240,   241,   104,   126,
     4098     101,   109,   111,   242,   244,   307,   308,   320,   338,   346,
     4099     347,   348,   349,   107,   239,   108,   124,   108,   124,   263,
     4100     238,   108,   361,   123,   248,   247,   218,   253,   254,   255,
     4101     258,   259,   102,   108,   164,   126,   111,   155,   126,   215,
     4102     218,   252,   351,   359,   292,   293,   101,   111,   325,   102,
     4103     108,   362,   263,   275,   101,   106,   263,   265,   275,   102,
     4104     108,   101,   133,   102,   109,   264,   264,   103,   131,   137,
     4105     155,   265,   264,   104,   126,   102,   108,   102,   101,   111,
     4106     346,   102,   108,   155,   103,   131,   103,   136,   137,   126,
     4107     103,   131,   155,   155,   142,   142,   142,   143,   143,   144,
     4108     144,   145,   145,   145,   145,   146,   146,   147,   148,   149,
     4109     150,   151,   109,   160,   155,   126,   335,   336,   337,   218,
     4110     334,   301,   301,   155,   265,   126,   260,   111,   126,   216,
     4111     339,   352,   218,   222,   104,   126,   104,   359,   104,   101,
     4112     126,   308,   326,   327,   328,   331,   341,   342,   343,   104,
     4113     126,   218,   325,   329,   340,   101,   301,   344,   362,   301,
     4114     301,   362,   101,   301,   344,   301,   301,   301,   301,   339,
     4115     216,   350,   360,   261,   104,   108,   104,   108,   362,   216,
     4116     352,   362,   249,   250,   251,   252,   249,   249,   261,   155,
     4117     126,   103,   263,   109,   108,   361,   267,    73,   103,   109,
     4118     271,    28,   200,   201,   261,   249,   131,   298,   131,   300,
     4119     101,   338,   339,   101,   338,   339,   133,   339,   164,   253,
     4120     102,   102,   102,   102,   104,   164,   198,   164,   106,   124,
     4121     124,   103,   308,   347,   348,   349,   153,   154,   218,   346,
     4122     243,   244,   243,   301,   301,   263,   301,   107,   263,   107,
     4123     154,   361,   127,   127,   131,   213,   127,   127,   249,   101,
     4124     111,   359,   127,   107,   218,   276,   277,   127,   126,   126,
     4125     101,   127,   102,   305,   160,   161,   109,   124,   103,   133,
     4126     191,   192,   193,   102,   102,   126,   109,   102,   102,   102,
     4127     155,   218,   106,   142,   157,   155,   156,   158,   108,   127,
     4128     126,   126,   102,   108,   155,   126,   153,   109,   253,   102,
     4129     102,   102,   334,   253,   102,   249,   216,   352,   103,   111,
     4130     155,   155,   218,   331,   253,   102,   102,   102,   102,   102,
     4131     102,   102,     7,   218,   325,   329,   340,   126,   126,   362,
     4132     126,   126,   102,   127,   127,   127,   127,   266,   127,   153,
     4133     154,   155,   299,   126,   267,   269,   107,   126,   202,   263,
     4134      38,    39,    41,    44,    45,    46,    47,    48,    49,    50,
     4135      51,    53,    56,   103,   131,   161,   162,   163,   164,   165,
     4136     166,   168,   169,   181,   183,   184,   189,   203,   297,    28,
     4137     127,   123,   266,   126,   126,   102,   127,   164,   238,   104,
     4138     102,   102,   102,   346,   242,   248,   107,   102,   108,   104,
     4139     104,   127,   218,   108,   362,   279,   102,   275,   206,   208,
     4140     216,   287,   288,   289,   290,   281,   102,   102,   109,   154,
     4141     101,   102,   109,   108,   155,   155,   268,   108,   127,   158,
    41354142     104,   131,   138,   139,   155,   137,   127,   138,   153,   157,
    4136      127,   101,   336,   337,   127,   127,   126,   127,   127,   127,
    4137      155,   102,   127,   101,   336,   337,   101,   342,   101,   342,
    4138      337,   215,     7,   111,   127,   155,   251,   251,   250,   254,
    4139      254,   255,   108,   108,   102,   102,   104,    89,   115,   127,
    4140      127,   138,   265,   155,   108,   124,   201,   205,   216,   220,
     4143     127,   101,   338,   339,   127,   127,   126,   127,   127,   127,
     4144     155,   102,   127,   101,   338,   339,   101,   344,   101,   344,
     4145     339,   217,     7,   111,   127,   155,   253,   253,   252,   256,
     4146     256,   257,   108,   108,   102,   102,   104,    89,   115,   127,
     4147     127,   138,   267,   155,   108,   124,   203,   207,   218,   222,
    41414148     101,   101,   162,   101,   101,   124,   131,   124,   131,   111,
    41424149     131,   161,   101,   164,   124,   155,   104,   109,   124,   127,
    4143      126,   127,   200,   102,   155,   251,   251,   299,   102,   107,
    4144      101,   336,   337,   126,   102,   126,   127,   296,   107,   126,
    4145      127,   127,   102,   106,   154,   124,   190,   192,   108,   127,
    4146      359,   156,   104,   127,    78,   105,   108,   127,   127,   104,
    4147      127,   102,   126,   102,   102,   104,   104,   104,   127,   102,
    4148      126,   126,   126,   155,   155,   127,   104,   127,   127,   127,
    4149      127,   126,   126,   154,   154,   104,   104,   127,   127,   261,
    4150      216,   160,   160,    45,   160,   126,   124,   124,   160,   124,
    4151      124,   160,    54,    55,   185,   186,   187,   124,   299,   166,
    4152      107,   124,   127,   127,   126,    89,   256,   257,   102,   286,
    4153      108,   124,   108,   124,   107,   284,   102,   102,   109,   158,
    4154      104,   107,   104,   103,   139,   103,   139,   139,   104,   104,
    4155      104,   251,   104,   251,   251,   251,   127,   127,   104,   104,
    4156      102,   102,   104,   108,    89,   250,    89,   127,   104,   104,
    4157      102,   102,   101,   102,   161,   182,   201,   124,   102,   101,
    4158      164,   187,    54,   162,   102,   102,   251,   106,   126,   126,
    4159      285,   124,    75,   193,   127,   109,   126,   126,   127,   127,
    4160      127,   127,   104,   104,   126,   127,   104,   162,    42,    43,
    4161      106,   172,   173,   174,   160,   162,   127,   102,   161,   106,
    4162      174,    89,   126,   101,   127,   126,   259,   296,   107,   102,
    4163      108,   104,   155,   138,   138,   102,   102,   102,   102,   254,
    4164       40,   154,   170,   171,   297,   109,   126,   162,   172,   102,
    4165      124,   162,   124,   126,   102,   126,    89,   126,   102,   285,
    4166      124,    75,   109,   127,   127,   162,    89,   108,   109,   127,
    4167      194,   195,   201,   124,   161,   161,   194,   164,   188,   214,
    4168      353,   102,   126,   107,   155,   104,   104,   154,   170,   173,
    4169      175,   176,   126,   124,   173,   177,   178,   127,   101,   111,
    4170      296,   344,   131,   164,   188,   101,   162,   167,   107,   173,
    4171      201,   161,    52,   167,   180,   107,   173,   102,   216,   127,
    4172      279,   162,   167,   124,   179,   180,   167,   180,   164,   102,
    4173      102,   179,   127,   164,   127
     4150     126,   127,   202,   102,   155,   253,   253,   301,   102,   107,
     4151     101,   338,   339,   126,   102,   126,   127,   298,   107,   126,
     4152     127,   127,   102,   106,   191,   104,   154,   124,   191,   193,
     4153     108,   127,   361,   156,   104,   127,    78,   105,   108,   127,
     4154     127,   104,   127,   102,   126,   102,   102,   104,   104,   104,
     4155     127,   102,   126,   126,   126,   155,   155,   127,   104,   127,
     4156     127,   127,   127,   126,   126,   154,   154,   104,   104,   127,
     4157     127,   263,   218,   160,   160,    45,   160,   126,   124,   124,
     4158     160,   124,   124,   160,    54,    55,   185,   186,   187,   124,
     4159     301,   166,   107,   124,   127,   127,   126,    89,   258,   259,
     4160     102,   288,   108,   124,   108,   124,   107,   286,   109,   133,
     4161     102,   102,   109,   158,   104,   107,   104,   103,   139,   103,
     4162     139,   139,   104,   104,   104,   253,   104,   253,   253,   253,
     4163     127,   127,   104,   104,   102,   102,   104,   108,    89,   252,
     4164      89,   127,   104,   104,   102,   102,   101,   102,   161,   182,
     4165     203,   124,   102,   101,   164,   187,    54,   162,   102,   102,
     4166     253,   106,   126,   126,   287,   133,   194,   101,   124,   194,
     4167     127,   109,   126,   126,   127,   127,   127,   127,   104,   104,
     4168     126,   127,   104,   162,    42,    43,   106,   172,   173,   174,
     4169     160,   162,   127,   102,   161,   106,   174,    89,   126,   101,
     4170     127,   126,   261,   298,   107,   108,   109,   154,   102,   104,
     4171     155,   138,   138,   102,   102,   102,   102,   256,    40,   154,
     4172     170,   171,   299,   109,   126,   162,   172,   102,   124,   162,
     4173     124,   126,   102,   126,    89,   126,   102,   287,   133,   131,
     4174     195,   102,   124,   109,   127,   127,   162,    89,   108,   109,
     4175     127,   196,   197,   203,   124,   161,   161,   196,   164,   188,
     4176     216,   355,   102,   126,   107,   102,   108,   155,   104,   104,
     4177     154,   170,   173,   175,   176,   126,   124,   173,   177,   178,
     4178     127,   101,   111,   298,   346,   131,   164,   188,   101,   124,
     4179     131,   162,   167,   107,   173,   203,   161,    52,   167,   180,
     4180     107,   173,   102,   218,   127,   281,   162,   167,   124,   179,
     4181     180,   167,   180,   164,   102,   102,   179,   127,   164,   127
    41744182};
    41754183
     
    50085016
    50095017/* Line 1806 of yacc.c  */
    5010 #line 282 "parser.yy"
     5018#line 288 "parser.yy"
    50115019    {
    50125020                        typedefTable.enterScope();
     
    50175025
    50185026/* Line 1806 of yacc.c  */
    5019 #line 288 "parser.yy"
     5027#line 294 "parser.yy"
    50205028    {
    50215029                        typedefTable.leaveScope();
     
    50265034
    50275035/* Line 1806 of yacc.c  */
    5028 #line 297 "parser.yy"
     5036#line 303 "parser.yy"
    50295037    { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
    50305038    break;
     
    50335041
    50345042/* Line 1806 of yacc.c  */
    5035 #line 298 "parser.yy"
     5043#line 304 "parser.yy"
    50365044    { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
    50375045    break;
     
    50405048
    50415049/* Line 1806 of yacc.c  */
    5042 #line 299 "parser.yy"
     5050#line 305 "parser.yy"
    50435051    { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); }
    50445052    break;
     
    50475055
    50485056/* Line 1806 of yacc.c  */
    5049 #line 323 "parser.yy"
     5057#line 329 "parser.yy"
    50505058    { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }
    50515059    break;
     
    50545062
    50555063/* Line 1806 of yacc.c  */
    5056 #line 324 "parser.yy"
     5064#line 330 "parser.yy"
    50575065    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
    50585066    break;
     
    50615069
    50625070/* Line 1806 of yacc.c  */
    5063 #line 331 "parser.yy"
     5071#line 337 "parser.yy"
    50645072    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    50655073    break;
     
    50685076
    50695077/* Line 1806 of yacc.c  */
    5070 #line 333 "parser.yy"
     5078#line 339 "parser.yy"
    50715079    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    50725080    break;
     
    50755083
    50765084/* Line 1806 of yacc.c  */
    5077 #line 335 "parser.yy"
     5085#line 341 "parser.yy"
     5086    { (yyval.en) = (yyvsp[(2) - (3)].en); }
     5087    break;
     5088
     5089  case 20:
     5090
     5091/* Line 1806 of yacc.c  */
     5092#line 343 "parser.yy"
     5093    { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
     5094    break;
     5095
     5096  case 22:
     5097
     5098/* Line 1806 of yacc.c  */
     5099#line 353 "parser.yy"
     5100    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); }
     5101    break;
     5102
     5103  case 23:
     5104
     5105/* Line 1806 of yacc.c  */
     5106#line 355 "parser.yy"
     5107    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
     5108    break;
     5109
     5110  case 24:
     5111
     5112/* Line 1806 of yacc.c  */
     5113#line 357 "parser.yy"
     5114    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
     5115    break;
     5116
     5117  case 26:
     5118
     5119/* Line 1806 of yacc.c  */
     5120#line 360 "parser.yy"
     5121    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
     5122    break;
     5123
     5124  case 28:
     5125
     5126/* Line 1806 of yacc.c  */
     5127#line 363 "parser.yy"
     5128    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
     5129    break;
     5130
     5131  case 29:
     5132
     5133/* Line 1806 of yacc.c  */
     5134#line 365 "parser.yy"
     5135    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
     5136    break;
     5137
     5138  case 30:
     5139
     5140/* Line 1806 of yacc.c  */
     5141#line 368 "parser.yy"
     5142    { (yyval.en) = 0; }
     5143    break;
     5144
     5145  case 32:
     5146
     5147/* Line 1806 of yacc.c  */
     5148#line 374 "parser.yy"
     5149    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
     5150    break;
     5151
     5152  case 33:
     5153
     5154/* Line 1806 of yacc.c  */
     5155#line 379 "parser.yy"
     5156    { (yyval.en) = 0; }
     5157    break;
     5158
     5159  case 35:
     5160
     5161/* Line 1806 of yacc.c  */
     5162#line 382 "parser.yy"
     5163    { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); }
     5164    break;
     5165
     5166  case 36:
     5167
     5168/* Line 1806 of yacc.c  */
     5169#line 387 "parser.yy"
     5170    { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); }
     5171    break;
     5172
     5173  case 37:
     5174
     5175/* Line 1806 of yacc.c  */
     5176#line 389 "parser.yy"
     5177    { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }
     5178    break;
     5179
     5180  case 39:
     5181
     5182/* Line 1806 of yacc.c  */
     5183#line 394 "parser.yy"
     5184    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     5185    break;
     5186
     5187  case 40:
     5188
     5189/* Line 1806 of yacc.c  */
     5190#line 399 "parser.yy"
     5191    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     5192    break;
     5193
     5194  case 41:
     5195
     5196/* Line 1806 of yacc.c  */
     5197#line 401 "parser.yy"
     5198    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
     5199    break;
     5200
     5201  case 42:
     5202
     5203/* Line 1806 of yacc.c  */
     5204#line 403 "parser.yy"
     5205    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
     5206    break;
     5207
     5208  case 43:
     5209
     5210/* Line 1806 of yacc.c  */
     5211#line 405 "parser.yy"
     5212    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
     5213    break;
     5214
     5215  case 44:
     5216
     5217/* Line 1806 of yacc.c  */
     5218#line 407 "parser.yy"
     5219    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
     5220    break;
     5221
     5222  case 46:
     5223
     5224/* Line 1806 of yacc.c  */
     5225#line 415 "parser.yy"
    50785226    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    50795227    break;
    50805228
    5081   case 20:
    5082 
    5083 /* Line 1806 of yacc.c  */
    5084 #line 337 "parser.yy"
     5229  case 47:
     5230
     5231/* Line 1806 of yacc.c  */
     5232#line 417 "parser.yy"
    50855233    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    50865234    break;
    50875235
    5088   case 21:
    5089 
    5090 /* Line 1806 of yacc.c  */
    5091 #line 339 "parser.yy"
    5092     { (yyval.en) = (yyvsp[(2) - (3)].en); }
    5093     break;
    5094 
    5095   case 22:
    5096 
    5097 /* Line 1806 of yacc.c  */
    5098 #line 341 "parser.yy"
    5099     { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
    5100     break;
    5101 
    5102   case 24:
    5103 
    5104 /* Line 1806 of yacc.c  */
    5105 #line 351 "parser.yy"
    5106     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); }
    5107     break;
    5108 
    5109   case 25:
    5110 
    5111 /* Line 1806 of yacc.c  */
    5112 #line 353 "parser.yy"
    5113     { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
    5114     break;
    5115 
    5116   case 26:
    5117 
    5118 /* Line 1806 of yacc.c  */
    5119 #line 355 "parser.yy"
    5120     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    5121     break;
    5122 
    5123   case 28:
    5124 
    5125 /* Line 1806 of yacc.c  */
    5126 #line 358 "parser.yy"
    5127     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    5128     break;
    5129 
    5130   case 30:
    5131 
    5132 /* Line 1806 of yacc.c  */
    5133 #line 361 "parser.yy"
    5134     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
    5135     break;
    5136 
    5137   case 31:
    5138 
    5139 /* Line 1806 of yacc.c  */
    5140 #line 363 "parser.yy"
    5141     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
    5142     break;
    5143 
    5144   case 32:
    5145 
    5146 /* Line 1806 of yacc.c  */
    5147 #line 366 "parser.yy"
     5236  case 48:
     5237
     5238/* Line 1806 of yacc.c  */
     5239#line 419 "parser.yy"
     5240    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
     5241    break;
     5242
     5243  case 49:
     5244
     5245/* Line 1806 of yacc.c  */
     5246#line 421 "parser.yy"
     5247    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
     5248    break;
     5249
     5250  case 50:
     5251
     5252/* Line 1806 of yacc.c  */
     5253#line 423 "parser.yy"
     5254    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     5255    break;
     5256
     5257  case 51:
     5258
     5259/* Line 1806 of yacc.c  */
     5260#line 425 "parser.yy"
     5261    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
     5262    break;
     5263
     5264  case 52:
     5265
     5266/* Line 1806 of yacc.c  */
     5267#line 427 "parser.yy"
     5268    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
     5269    break;
     5270
     5271  case 53:
     5272
     5273/* Line 1806 of yacc.c  */
     5274#line 429 "parser.yy"
     5275    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
     5276    break;
     5277
     5278  case 54:
     5279
     5280/* Line 1806 of yacc.c  */
     5281#line 435 "parser.yy"
     5282    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
     5283    break;
     5284
     5285  case 55:
     5286
     5287/* Line 1806 of yacc.c  */
     5288#line 437 "parser.yy"
     5289    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
     5290    break;
     5291
     5292  case 56:
     5293
     5294/* Line 1806 of yacc.c  */
     5295#line 439 "parser.yy"
     5296    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
     5297    break;
     5298
     5299  case 57:
     5300
     5301/* Line 1806 of yacc.c  */
     5302#line 441 "parser.yy"
     5303    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
     5304    break;
     5305
     5306  case 58:
     5307
     5308/* Line 1806 of yacc.c  */
     5309#line 443 "parser.yy"
     5310    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
     5311    break;
     5312
     5313  case 59:
     5314
     5315/* Line 1806 of yacc.c  */
     5316#line 445 "parser.yy"
     5317    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
     5318    break;
     5319
     5320  case 60:
     5321
     5322/* Line 1806 of yacc.c  */
     5323#line 447 "parser.yy"
     5324    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
     5325    break;
     5326
     5327  case 61:
     5328
     5329/* Line 1806 of yacc.c  */
     5330#line 449 "parser.yy"
     5331    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true )); }
     5332    break;
     5333
     5334  case 62:
     5335
     5336/* Line 1806 of yacc.c  */
     5337#line 453 "parser.yy"
     5338    { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
     5339    break;
     5340
     5341  case 63:
     5342
     5343/* Line 1806 of yacc.c  */
     5344#line 454 "parser.yy"
     5345    { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
     5346    break;
     5347
     5348  case 64:
     5349
     5350/* Line 1806 of yacc.c  */
     5351#line 455 "parser.yy"
     5352    { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
     5353    break;
     5354
     5355  case 65:
     5356
     5357/* Line 1806 of yacc.c  */
     5358#line 456 "parser.yy"
     5359    { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
     5360    break;
     5361
     5362  case 67:
     5363
     5364/* Line 1806 of yacc.c  */
     5365#line 462 "parser.yy"
     5366    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
     5367    break;
     5368
     5369  case 68:
     5370
     5371/* Line 1806 of yacc.c  */
     5372#line 464 "parser.yy"
     5373    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
     5374    break;
     5375
     5376  case 70:
     5377
     5378/* Line 1806 of yacc.c  */
     5379#line 470 "parser.yy"
     5380    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5381    break;
     5382
     5383  case 71:
     5384
     5385/* Line 1806 of yacc.c  */
     5386#line 472 "parser.yy"
     5387    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5388    break;
     5389
     5390  case 72:
     5391
     5392/* Line 1806 of yacc.c  */
     5393#line 474 "parser.yy"
     5394    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5395    break;
     5396
     5397  case 74:
     5398
     5399/* Line 1806 of yacc.c  */
     5400#line 480 "parser.yy"
     5401    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5402    break;
     5403
     5404  case 75:
     5405
     5406/* Line 1806 of yacc.c  */
     5407#line 482 "parser.yy"
     5408    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5409    break;
     5410
     5411  case 77:
     5412
     5413/* Line 1806 of yacc.c  */
     5414#line 488 "parser.yy"
     5415    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5416    break;
     5417
     5418  case 78:
     5419
     5420/* Line 1806 of yacc.c  */
     5421#line 490 "parser.yy"
     5422    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5423    break;
     5424
     5425  case 80:
     5426
     5427/* Line 1806 of yacc.c  */
     5428#line 496 "parser.yy"
     5429    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5430    break;
     5431
     5432  case 81:
     5433
     5434/* Line 1806 of yacc.c  */
     5435#line 498 "parser.yy"
     5436    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5437    break;
     5438
     5439  case 82:
     5440
     5441/* Line 1806 of yacc.c  */
     5442#line 500 "parser.yy"
     5443    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5444    break;
     5445
     5446  case 83:
     5447
     5448/* Line 1806 of yacc.c  */
     5449#line 502 "parser.yy"
     5450    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5451    break;
     5452
     5453  case 85:
     5454
     5455/* Line 1806 of yacc.c  */
     5456#line 508 "parser.yy"
     5457    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5458    break;
     5459
     5460  case 86:
     5461
     5462/* Line 1806 of yacc.c  */
     5463#line 510 "parser.yy"
     5464    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5465    break;
     5466
     5467  case 88:
     5468
     5469/* Line 1806 of yacc.c  */
     5470#line 516 "parser.yy"
     5471    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5472    break;
     5473
     5474  case 90:
     5475
     5476/* Line 1806 of yacc.c  */
     5477#line 522 "parser.yy"
     5478    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5479    break;
     5480
     5481  case 92:
     5482
     5483/* Line 1806 of yacc.c  */
     5484#line 528 "parser.yy"
     5485    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5486    break;
     5487
     5488  case 94:
     5489
     5490/* Line 1806 of yacc.c  */
     5491#line 534 "parser.yy"
     5492    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5493    break;
     5494
     5495  case 96:
     5496
     5497/* Line 1806 of yacc.c  */
     5498#line 540 "parser.yy"
     5499    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5500    break;
     5501
     5502  case 98:
     5503
     5504/* Line 1806 of yacc.c  */
     5505#line 546 "parser.yy"
     5506    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
     5507    break;
     5508
     5509  case 99:
     5510
     5511/* Line 1806 of yacc.c  */
     5512#line 548 "parser.yy"
     5513    { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     5514    break;
     5515
     5516  case 100:
     5517
     5518/* Line 1806 of yacc.c  */
     5519#line 550 "parser.yy"
     5520    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
     5521    break;
     5522
     5523  case 103:
     5524
     5525/* Line 1806 of yacc.c  */
     5526#line 561 "parser.yy"
     5527    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5528    break;
     5529
     5530  case 104:
     5531
     5532/* Line 1806 of yacc.c  */
     5533#line 563 "parser.yy"
     5534    { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5535    break;
     5536
     5537  case 105:
     5538
     5539/* Line 1806 of yacc.c  */
     5540#line 565 "parser.yy"
     5541    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
     5542    break;
     5543
     5544  case 106:
     5545
     5546/* Line 1806 of yacc.c  */
     5547#line 570 "parser.yy"
     5548    { (yyval.en) = new NullExprNode; }
     5549    break;
     5550
     5551  case 108:
     5552
     5553/* Line 1806 of yacc.c  */
     5554#line 578 "parser.yy"
     5555    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
     5556    break;
     5557
     5558  case 109:
     5559
     5560/* Line 1806 of yacc.c  */
     5561#line 580 "parser.yy"
     5562    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
     5563    break;
     5564
     5565  case 110:
     5566
     5567/* Line 1806 of yacc.c  */
     5568#line 582 "parser.yy"
     5569    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
     5570    break;
     5571
     5572  case 111:
     5573
     5574/* Line 1806 of yacc.c  */
     5575#line 584 "parser.yy"
     5576    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
     5577    break;
     5578
     5579  case 113:
     5580
     5581/* Line 1806 of yacc.c  */
     5582#line 590 "parser.yy"
     5583    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     5584    break;
     5585
     5586  case 114:
     5587
     5588/* Line 1806 of yacc.c  */
     5589#line 594 "parser.yy"
     5590    { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
     5591    break;
     5592
     5593  case 115:
     5594
     5595/* Line 1806 of yacc.c  */
     5596#line 595 "parser.yy"
     5597    { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
     5598    break;
     5599
     5600  case 116:
     5601
     5602/* Line 1806 of yacc.c  */
     5603#line 596 "parser.yy"
     5604    { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
     5605    break;
     5606
     5607  case 117:
     5608
     5609/* Line 1806 of yacc.c  */
     5610#line 597 "parser.yy"
     5611    { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
     5612    break;
     5613
     5614  case 118:
     5615
     5616/* Line 1806 of yacc.c  */
     5617#line 598 "parser.yy"
     5618    { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
     5619    break;
     5620
     5621  case 119:
     5622
     5623/* Line 1806 of yacc.c  */
     5624#line 599 "parser.yy"
     5625    { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
     5626    break;
     5627
     5628  case 120:
     5629
     5630/* Line 1806 of yacc.c  */
     5631#line 600 "parser.yy"
     5632    { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
     5633    break;
     5634
     5635  case 121:
     5636
     5637/* Line 1806 of yacc.c  */
     5638#line 601 "parser.yy"
     5639    { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
     5640    break;
     5641
     5642  case 122:
     5643
     5644/* Line 1806 of yacc.c  */
     5645#line 602 "parser.yy"
     5646    { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
     5647    break;
     5648
     5649  case 123:
     5650
     5651/* Line 1806 of yacc.c  */
     5652#line 603 "parser.yy"
     5653    { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
     5654    break;
     5655
     5656  case 125:
     5657
     5658/* Line 1806 of yacc.c  */
     5659#line 609 "parser.yy"
     5660    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5661    break;
     5662
     5663  case 126:
     5664
     5665/* Line 1806 of yacc.c  */
     5666#line 614 "parser.yy"
    51485667    { (yyval.en) = 0; }
    51495668    break;
    51505669
    5151   case 34:
    5152 
    5153 /* Line 1806 of yacc.c  */
    5154 #line 372 "parser.yy"
    5155     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    5156     break;
    5157 
    5158   case 35:
    5159 
    5160 /* Line 1806 of yacc.c  */
    5161 #line 377 "parser.yy"
    5162     { (yyval.en) = 0; }
    5163     break;
    5164 
    5165   case 37:
    5166 
    5167 /* Line 1806 of yacc.c  */
    5168 #line 380 "parser.yy"
    5169     { (yyval.en) = (yyvsp[(3) - (3)].en)->set_asArgName( (yyvsp[(1) - (3)].tok) ); }
    5170     break;
    5171 
    5172   case 38:
    5173 
    5174 /* Line 1806 of yacc.c  */
    5175 #line 385 "parser.yy"
    5176     { (yyval.en) = (yyvsp[(7) - (7)].en)->set_asArgName( (yyvsp[(3) - (7)].en) ); }
    5177     break;
    5178 
    5179   case 39:
    5180 
    5181 /* Line 1806 of yacc.c  */
    5182 #line 387 "parser.yy"
    5183     { (yyval.en) = (yyvsp[(9) - (9)].en)->set_asArgName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }
    5184     break;
    5185 
    5186   case 41:
    5187 
    5188 /* Line 1806 of yacc.c  */
    5189 #line 392 "parser.yy"
    5190     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    5191     break;
    5192 
    5193   case 42:
    5194 
    5195 /* Line 1806 of yacc.c  */
    5196 #line 397 "parser.yy"
    5197     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    5198     break;
    5199 
    5200   case 43:
    5201 
    5202 /* Line 1806 of yacc.c  */
    5203 #line 399 "parser.yy"
    5204     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    5205     break;
    5206 
    5207   case 44:
    5208 
    5209 /* Line 1806 of yacc.c  */
    5210 #line 401 "parser.yy"
    5211     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    5212     break;
    5213 
    5214   case 45:
    5215 
    5216 /* Line 1806 of yacc.c  */
    5217 #line 403 "parser.yy"
    5218     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    5219     break;
    5220 
    5221   case 46:
    5222 
    5223 /* Line 1806 of yacc.c  */
    5224 #line 405 "parser.yy"
    5225     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    5226     break;
    5227 
    5228   case 48:
    5229 
    5230 /* Line 1806 of yacc.c  */
    5231 #line 411 "parser.yy"
    5232     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
    5233     break;
    5234 
    5235   case 49:
    5236 
    5237 /* Line 1806 of yacc.c  */
    5238 #line 413 "parser.yy"
    5239     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
    5240     break;
    5241 
    5242   case 50:
    5243 
    5244 /* Line 1806 of yacc.c  */
    5245 #line 415 "parser.yy"
    5246     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    5247     break;
    5248 
    5249   case 51:
    5250 
    5251 /* Line 1806 of yacc.c  */
    5252 #line 417 "parser.yy"
    5253     { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    5254     break;
    5255 
    5256   case 52:
    5257 
    5258 /* Line 1806 of yacc.c  */
    5259 #line 419 "parser.yy"
    5260     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
    5261     break;
    5262 
    5263   case 53:
    5264 
    5265 /* Line 1806 of yacc.c  */
    5266 #line 421 "parser.yy"
    5267     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
    5268     break;
    5269 
    5270   case 54:
    5271 
    5272 /* Line 1806 of yacc.c  */
    5273 #line 427 "parser.yy"
    5274     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
    5275     break;
    5276 
    5277   case 55:
    5278 
    5279 /* Line 1806 of yacc.c  */
    5280 #line 429 "parser.yy"
    5281     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    5282     break;
    5283 
    5284   case 56:
    5285 
    5286 /* Line 1806 of yacc.c  */
    5287 #line 431 "parser.yy"
    5288     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
    5289     break;
    5290 
    5291   case 57:
    5292 
    5293 /* Line 1806 of yacc.c  */
    5294 #line 433 "parser.yy"
    5295     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    5296     break;
    5297 
    5298   case 58:
    5299 
    5300 /* Line 1806 of yacc.c  */
    5301 #line 435 "parser.yy"
    5302     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
    5303     break;
    5304 
    5305   case 59:
    5306 
    5307 /* Line 1806 of yacc.c  */
    5308 #line 437 "parser.yy"
    5309     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
    5310     break;
    5311 
    5312   case 60:
    5313 
    5314 /* Line 1806 of yacc.c  */
    5315 #line 439 "parser.yy"
    5316     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    5317     break;
    5318 
    5319   case 61:
    5320 
    5321 /* Line 1806 of yacc.c  */
    5322 #line 441 "parser.yy"
    5323     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true )); }
    5324     break;
    5325 
    5326   case 62:
    5327 
    5328 /* Line 1806 of yacc.c  */
    5329 #line 445 "parser.yy"
    5330     { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
    5331     break;
    5332 
    5333   case 63:
    5334 
    5335 /* Line 1806 of yacc.c  */
    5336 #line 446 "parser.yy"
    5337     { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
    5338     break;
    5339 
    5340   case 64:
    5341 
    5342 /* Line 1806 of yacc.c  */
    5343 #line 447 "parser.yy"
    5344     { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
    5345     break;
    5346 
    5347   case 65:
    5348 
    5349 /* Line 1806 of yacc.c  */
    5350 #line 448 "parser.yy"
    5351     { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
    5352     break;
    5353 
    5354   case 67:
    5355 
    5356 /* Line 1806 of yacc.c  */
    5357 #line 454 "parser.yy"
    5358     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    5359     break;
    5360 
    5361   case 68:
    5362 
    5363 /* Line 1806 of yacc.c  */
    5364 #line 456 "parser.yy"
    5365     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    5366     break;
    5367 
    5368   case 70:
    5369 
    5370 /* Line 1806 of yacc.c  */
    5371 #line 462 "parser.yy"
    5372     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5373     break;
    5374 
    5375   case 71:
    5376 
    5377 /* Line 1806 of yacc.c  */
    5378 #line 464 "parser.yy"
    5379     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5380     break;
    5381 
    5382   case 72:
    5383 
    5384 /* Line 1806 of yacc.c  */
    5385 #line 466 "parser.yy"
    5386     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5387     break;
    5388 
    5389   case 74:
    5390 
    5391 /* Line 1806 of yacc.c  */
    5392 #line 472 "parser.yy"
    5393     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5394     break;
    5395 
    5396   case 75:
    5397 
    5398 /* Line 1806 of yacc.c  */
    5399 #line 474 "parser.yy"
    5400     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5401     break;
    5402 
    5403   case 77:
    5404 
    5405 /* Line 1806 of yacc.c  */
    5406 #line 480 "parser.yy"
    5407     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5408     break;
    5409 
    5410   case 78:
    5411 
    5412 /* Line 1806 of yacc.c  */
    5413 #line 482 "parser.yy"
    5414     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5415     break;
    5416 
    5417   case 80:
    5418 
    5419 /* Line 1806 of yacc.c  */
    5420 #line 488 "parser.yy"
    5421     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5422     break;
    5423 
    5424   case 81:
    5425 
    5426 /* Line 1806 of yacc.c  */
    5427 #line 490 "parser.yy"
    5428     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5429     break;
    5430 
    5431   case 82:
    5432 
    5433 /* Line 1806 of yacc.c  */
    5434 #line 492 "parser.yy"
    5435     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5436     break;
    5437 
    5438   case 83:
    5439 
    5440 /* Line 1806 of yacc.c  */
    5441 #line 494 "parser.yy"
    5442     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5443     break;
    5444 
    5445   case 85:
    5446 
    5447 /* Line 1806 of yacc.c  */
    5448 #line 500 "parser.yy"
    5449     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5450     break;
    5451 
    5452   case 86:
    5453 
    5454 /* Line 1806 of yacc.c  */
    5455 #line 502 "parser.yy"
    5456     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5457     break;
    5458 
    5459   case 88:
    5460 
    5461 /* Line 1806 of yacc.c  */
    5462 #line 508 "parser.yy"
    5463     { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5464     break;
    5465 
    5466   case 90:
    5467 
    5468 /* Line 1806 of yacc.c  */
    5469 #line 514 "parser.yy"
    5470     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5471     break;
    5472 
    5473   case 92:
    5474 
    5475 /* Line 1806 of yacc.c  */
    5476 #line 520 "parser.yy"
    5477     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5478     break;
    5479 
    5480   case 94:
    5481 
    5482 /* Line 1806 of yacc.c  */
    5483 #line 526 "parser.yy"
    5484     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5485     break;
    5486 
    5487   case 96:
    5488 
    5489 /* Line 1806 of yacc.c  */
    5490 #line 532 "parser.yy"
    5491     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5492     break;
    5493 
    5494   case 98:
    5495 
    5496 /* Line 1806 of yacc.c  */
    5497 #line 538 "parser.yy"
    5498     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    5499     break;
    5500 
    5501   case 99:
    5502 
    5503 /* Line 1806 of yacc.c  */
    5504 #line 540 "parser.yy"
    5505     { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    5506     break;
    5507 
    5508   case 100:
    5509 
    5510 /* Line 1806 of yacc.c  */
    5511 #line 542 "parser.yy"
    5512     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    5513     break;
    5514 
    5515   case 103:
    5516 
    5517 /* Line 1806 of yacc.c  */
    5518 #line 553 "parser.yy"
    5519     { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5520     break;
    5521 
    5522   case 104:
    5523 
    5524 /* Line 1806 of yacc.c  */
    5525 #line 555 "parser.yy"
    5526     { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5527     break;
    5528 
    5529   case 105:
    5530 
    5531 /* Line 1806 of yacc.c  */
    5532 #line 557 "parser.yy"
    5533     { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    5534     break;
    5535 
    5536   case 106:
    5537 
    5538 /* Line 1806 of yacc.c  */
    5539 #line 562 "parser.yy"
    5540     { (yyval.en) = new NullExprNode; }
    5541     break;
    5542 
    5543   case 108:
    5544 
    5545 /* Line 1806 of yacc.c  */
    5546 #line 570 "parser.yy"
    5547     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
    5548     break;
    5549 
    5550   case 109:
    5551 
    5552 /* Line 1806 of yacc.c  */
    5553 #line 572 "parser.yy"
    5554     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
    5555     break;
    5556 
    5557   case 110:
    5558 
    5559 /* Line 1806 of yacc.c  */
    5560 #line 574 "parser.yy"
    5561     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
    5562     break;
    5563 
    5564   case 111:
    5565 
    5566 /* Line 1806 of yacc.c  */
    5567 #line 576 "parser.yy"
    5568     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
    5569     break;
    5570 
    5571   case 113:
    5572 
    5573 /* Line 1806 of yacc.c  */
    5574 #line 582 "parser.yy"
    5575     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    5576     break;
    5577 
    5578   case 114:
    5579 
    5580 /* Line 1806 of yacc.c  */
    5581 #line 586 "parser.yy"
    5582     { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
    5583     break;
    5584 
    5585   case 115:
    5586 
    5587 /* Line 1806 of yacc.c  */
    5588 #line 587 "parser.yy"
    5589     { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
    5590     break;
    5591 
    5592   case 116:
    5593 
    5594 /* Line 1806 of yacc.c  */
    5595 #line 588 "parser.yy"
    5596     { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
    5597     break;
    5598 
    5599   case 117:
    5600 
    5601 /* Line 1806 of yacc.c  */
    5602 #line 589 "parser.yy"
    5603     { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
    5604     break;
    5605 
    5606   case 118:
    5607 
    5608 /* Line 1806 of yacc.c  */
    5609 #line 590 "parser.yy"
    5610     { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
    5611     break;
    5612 
    5613   case 119:
    5614 
    5615 /* Line 1806 of yacc.c  */
    5616 #line 591 "parser.yy"
    5617     { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
    5618     break;
    5619 
    5620   case 120:
    5621 
    5622 /* Line 1806 of yacc.c  */
    5623 #line 592 "parser.yy"
    5624     { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
    5625     break;
    5626 
    5627   case 121:
    5628 
    5629 /* Line 1806 of yacc.c  */
    5630 #line 593 "parser.yy"
    5631     { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
    5632     break;
    5633 
    5634   case 122:
    5635 
    5636 /* Line 1806 of yacc.c  */
    5637 #line 594 "parser.yy"
    5638     { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
    5639     break;
    5640 
    5641   case 123:
    5642 
    5643 /* Line 1806 of yacc.c  */
    5644 #line 595 "parser.yy"
    5645     { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
    5646     break;
    5647 
    5648   case 125:
    5649 
    5650 /* Line 1806 of yacc.c  */
    5651 #line 601 "parser.yy"
    5652     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5653     break;
    5654 
    5655   case 126:
    5656 
    5657 /* Line 1806 of yacc.c  */
    5658 #line 606 "parser.yy"
    5659     { (yyval.en) = 0; }
    5660     break;
    5661 
    56625670  case 130:
    56635671
    56645672/* Line 1806 of yacc.c  */
    5665 #line 615 "parser.yy"
     5673#line 623 "parser.yy"
    56665674    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56675675    break;
     
    56705678
    56715679/* Line 1806 of yacc.c  */
    5672 #line 625 "parser.yy"
     5680#line 633 "parser.yy"
    56735681    {
    56745682                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    56795687
    56805688/* Line 1806 of yacc.c  */
    5681 #line 632 "parser.yy"
     5689#line 640 "parser.yy"
    56825690    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
    56835691    break;
     
    56865694
    56875695/* Line 1806 of yacc.c  */
    5688 #line 639 "parser.yy"
     5696#line 647 "parser.yy"
    56895697    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
    56905698    break;
     
    56935701
    56945702/* Line 1806 of yacc.c  */
    5695 #line 645 "parser.yy"
     5703#line 653 "parser.yy"
    56965704    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    56975705    break;
     
    57005708
    57015709/* Line 1806 of yacc.c  */
    5702 #line 650 "parser.yy"
     5710#line 658 "parser.yy"
    57035711    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57045712    break;
     
    57075715
    57085716/* Line 1806 of yacc.c  */
    5709 #line 652 "parser.yy"
     5717#line 660 "parser.yy"
    57105718    { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); }
    57115719    break;
     
    57145722
    57155723/* Line 1806 of yacc.c  */
    5716 #line 654 "parser.yy"
     5724#line 662 "parser.yy"
    57175725    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57185726    break;
     
    57215729
    57225730/* Line 1806 of yacc.c  */
    5723 #line 661 "parser.yy"
     5731#line 669 "parser.yy"
    57245732    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    57255733    break;
     
    57285736
    57295737/* Line 1806 of yacc.c  */
    5730 #line 666 "parser.yy"
     5738#line 674 "parser.yy"
    57315739    { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
    57325740    break;
     
    57355743
    57365744/* Line 1806 of yacc.c  */
    5737 #line 672 "parser.yy"
     5745#line 680 "parser.yy"
    57385746    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57395747    break;
     
    57425750
    57435751/* Line 1806 of yacc.c  */
    5744 #line 674 "parser.yy"
     5752#line 682 "parser.yy"
    57455753    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
    57465754    break;
     
    57495757
    57505758/* Line 1806 of yacc.c  */
    5751 #line 676 "parser.yy"
     5759#line 684 "parser.yy"
    57525760    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57535761    break;
     
    57565764
    57575765/* Line 1806 of yacc.c  */
    5758 #line 678 "parser.yy"
     5766#line 686 "parser.yy"
    57595767    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
    57605768    break;
     
    57635771
    57645772/* Line 1806 of yacc.c  */
    5765 #line 683 "parser.yy"
     5773#line 691 "parser.yy"
    57665774    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57675775    break;
     
    57705778
    57715779/* Line 1806 of yacc.c  */
    5772 #line 685 "parser.yy"
     5780#line 693 "parser.yy"
    57735781    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
    57745782    break;
     
    57775785
    57785786/* Line 1806 of yacc.c  */
    5779 #line 692 "parser.yy"
     5787#line 700 "parser.yy"
    57805788    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    57815789    break;
     
    57845792
    57855793/* Line 1806 of yacc.c  */
    5786 #line 694 "parser.yy"
     5794#line 702 "parser.yy"
    57875795    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    57885796    break;
     
    57915799
    57925800/* Line 1806 of yacc.c  */
    5793 #line 701 "parser.yy"
     5801#line 709 "parser.yy"
    57945802    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }
    57955803    break;
     
    57985806
    57995807/* Line 1806 of yacc.c  */
    5800 #line 705 "parser.yy"
     5808#line 713 "parser.yy"
    58015809    { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
    58025810    break;
     
    58055813
    58065814/* Line 1806 of yacc.c  */
    5807 #line 706 "parser.yy"
     5815#line 714 "parser.yy"
    58085816    { (yyval.sn) = new StatementNode( StatementNode::Default ); }
    58095817    break;
     
    58125820
    58135821/* Line 1806 of yacc.c  */
    5814 #line 712 "parser.yy"
     5822#line 720 "parser.yy"
    58155823    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
    58165824    break;
     
    58195827
    58205828/* Line 1806 of yacc.c  */
    5821 #line 716 "parser.yy"
     5829#line 724 "parser.yy"
    58225830    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58235831    break;
     
    58265834
    58275835/* Line 1806 of yacc.c  */
    5828 #line 721 "parser.yy"
     5836#line 729 "parser.yy"
    58295837    { (yyval.sn) = 0; }
    58305838    break;
     
    58335841
    58345842/* Line 1806 of yacc.c  */
    5835 #line 727 "parser.yy"
     5843#line 735 "parser.yy"
    58365844    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58375845    break;
     
    58405848
    58415849/* Line 1806 of yacc.c  */
    5842 #line 729 "parser.yy"
     5850#line 737 "parser.yy"
    58435851    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    58445852    break;
     
    58475855
    58485856/* Line 1806 of yacc.c  */
    5849 #line 734 "parser.yy"
     5857#line 742 "parser.yy"
    58505858    { (yyval.sn) = 0; }
    58515859    break;
     
    58545862
    58555863/* Line 1806 of yacc.c  */
    5856 #line 740 "parser.yy"
     5864#line 748 "parser.yy"
    58575865    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58585866    break;
     
    58615869
    58625870/* Line 1806 of yacc.c  */
    5863 #line 742 "parser.yy"
     5871#line 750 "parser.yy"
    58645872    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); }
    58655873    break;
     
    58685876
    58695877/* Line 1806 of yacc.c  */
    5870 #line 744 "parser.yy"
     5878#line 752 "parser.yy"
    58715879    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    58725880    break;
     
    58755883
    58765884/* Line 1806 of yacc.c  */
    5877 #line 746 "parser.yy"
     5885#line 754 "parser.yy"
    58785886    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); }
    58795887    break;
     
    58825890
    58835891/* Line 1806 of yacc.c  */
    5884 #line 751 "parser.yy"
     5892#line 759 "parser.yy"
    58855893    { (yyval.sn) = 0; }
    58865894    break;
     
    58895897
    58905898/* Line 1806 of yacc.c  */
    5891 #line 756 "parser.yy"
    5892     { (yyval.sn) = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
     5899#line 764 "parser.yy"
     5900    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
    58935901    break;
    58945902
     
    58965904
    58975905/* Line 1806 of yacc.c  */
    5898 #line 757 "parser.yy"
    5899     { (yyval.sn) = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
     5906#line 765 "parser.yy"
     5907    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
    59005908    break;
    59015909
     
    59035911
    59045912/* Line 1806 of yacc.c  */
    5905 #line 762 "parser.yy"
     5913#line 770 "parser.yy"
    59065914    { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    59075915    break;
     
    59105918
    59115919/* Line 1806 of yacc.c  */
    5912 #line 764 "parser.yy"
     5920#line 772 "parser.yy"
    59135921    { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
    59145922    break;
     
    59175925
    59185926/* Line 1806 of yacc.c  */
    5919 #line 766 "parser.yy"
     5927#line 774 "parser.yy"
    59205928    { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
    59215929    break;
     
    59245932
    59255933/* Line 1806 of yacc.c  */
    5926 #line 771 "parser.yy"
     5934#line 779 "parser.yy"
    59275935    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    59285936    break;
     
    59315939
    59325940/* Line 1806 of yacc.c  */
    5933 #line 773 "parser.yy"
     5941#line 781 "parser.yy"
    59345942    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    59355943    break;
     
    59385946
    59395947/* Line 1806 of yacc.c  */
    5940 #line 778 "parser.yy"
     5948#line 786 "parser.yy"
    59415949    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
    59425950    break;
     
    59455953
    59465954/* Line 1806 of yacc.c  */
    5947 #line 782 "parser.yy"
     5955#line 790 "parser.yy"
    59485956    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
    59495957    break;
     
    59525960
    59535961/* Line 1806 of yacc.c  */
    5954 #line 785 "parser.yy"
    5955     { (yyval.sn) = new StatementNode( StatementNode::Continue, 0, 0 ); }
     5962#line 793 "parser.yy"
     5963    { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
    59565964    break;
    59575965
     
    59595967
    59605968/* Line 1806 of yacc.c  */
    5961 #line 789 "parser.yy"
     5969#line 797 "parser.yy"
    59625970    { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
    59635971    break;
     
    59665974
    59675975/* Line 1806 of yacc.c  */
    5968 #line 792 "parser.yy"
    5969     { (yyval.sn) = new StatementNode( StatementNode::Break, 0, 0 ); }
     5976#line 800 "parser.yy"
     5977    { (yyval.sn) = new StatementNode( StatementNode::Break ); }
    59705978    break;
    59715979
     
    59735981
    59745982/* Line 1806 of yacc.c  */
    5975 #line 796 "parser.yy"
     5983#line 804 "parser.yy"
    59765984    { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
    59775985    break;
     
    59805988
    59815989/* Line 1806 of yacc.c  */
    5982 #line 798 "parser.yy"
     5990#line 806 "parser.yy"
    59835991    { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
    59845992    break;
     
    59875995
    59885996/* Line 1806 of yacc.c  */
    5989 #line 800 "parser.yy"
     5997#line 808 "parser.yy"
    59905998    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    59915999    break;
     
    59946002
    59956003/* Line 1806 of yacc.c  */
    5996 #line 802 "parser.yy"
    5997     { (yyval.sn) = new StatementNode( StatementNode::Throw, 0, 0 ); }
     6004#line 810 "parser.yy"
     6005    { (yyval.sn) = new StatementNode( StatementNode::Throw ); }
    59986006    break;
    59996007
     
    60016009
    60026010/* Line 1806 of yacc.c  */
    6003 #line 807 "parser.yy"
     6011#line 815 "parser.yy"
    60046012    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    60056013    break;
     
    60086016
    60096017/* Line 1806 of yacc.c  */
    6010 #line 809 "parser.yy"
     6018#line 817 "parser.yy"
    60116019    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    60126020    break;
     
    60156023
    60166024/* Line 1806 of yacc.c  */
    6017 #line 811 "parser.yy"
     6025#line 819 "parser.yy"
    60186026    {
    60196027                        (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
     
    60256033
    60266034/* Line 1806 of yacc.c  */
    6027 #line 822 "parser.yy"
     6035#line 830 "parser.yy"
    60286036    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    60296037    break;
     
    60326040
    60336041/* Line 1806 of yacc.c  */
    6034 #line 824 "parser.yy"
     6042#line 832 "parser.yy"
    60356043    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    60366044    break;
     
    60396047
    60406048/* Line 1806 of yacc.c  */
    6041 #line 829 "parser.yy"
     6049#line 837 "parser.yy"
    60426050    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    60436051    break;
     
    60466054
    60476055/* Line 1806 of yacc.c  */
    6048 #line 831 "parser.yy"
     6056#line 839 "parser.yy"
    60496057    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    60506058    break;
     
    60536061
    60546062/* Line 1806 of yacc.c  */
    6055 #line 836 "parser.yy"
     6063#line 844 "parser.yy"
    60566064    {
    60576065                        (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
     
    60636071
    60646072/* Line 1806 of yacc.c  */
    6065 #line 850 "parser.yy"
     6073#line 858 "parser.yy"
    60666074    {
    60676075                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    60736081
    60746082/* Line 1806 of yacc.c  */
    6075 #line 855 "parser.yy"
     6083#line 863 "parser.yy"
    60766084    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    60776085    break;
     
    60806088
    60816089/* Line 1806 of yacc.c  */
    6082 #line 857 "parser.yy"
     6090#line 865 "parser.yy"
    60836091    {
    60846092                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    60906098
    60916099/* Line 1806 of yacc.c  */
    6092 #line 866 "parser.yy"
    6093     { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
     6100#line 874 "parser.yy"
     6101    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
    60946102    break;
    60956103
     
    60976105
    60986106/* Line 1806 of yacc.c  */
    6099 #line 868 "parser.yy"
    6100     { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
     6107#line 876 "parser.yy"
     6108    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
    61016109    break;
    61026110
     
    61046112
    61056113/* Line 1806 of yacc.c  */
    6106 #line 870 "parser.yy"
    6107     { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
     6114#line 878 "parser.yy"
     6115    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
    61086116    break;
    61096117
     
    61116119
    61126120/* Line 1806 of yacc.c  */
    6113 #line 872 "parser.yy"
    6114     { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
    6115     break;
    6116 
    6117   case 214:
    6118 
    6119 /* Line 1806 of yacc.c  */
    6120 #line 886 "parser.yy"
     6121#line 880 "parser.yy"
     6122    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].constant) ); }
     6123    break;
     6124
     6125  case 210:
     6126
     6127/* Line 1806 of yacc.c  */
     6128#line 882 "parser.yy"
     6129    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].constant), (yyvsp[(12) - (14)].label) ); }
     6130    break;
     6131
     6132  case 211:
     6133
     6134/* Line 1806 of yacc.c  */
     6135#line 887 "parser.yy"
     6136    { (yyval.flag) = false; }
     6137    break;
     6138
     6139  case 212:
     6140
     6141/* Line 1806 of yacc.c  */
     6142#line 889 "parser.yy"
     6143    { (yyval.flag) = true; }
     6144    break;
     6145
     6146  case 213:
     6147
     6148/* Line 1806 of yacc.c  */
     6149#line 894 "parser.yy"
     6150    { (yyval.en) = 0; }
     6151    break;
     6152
     6153  case 216:
     6154
     6155/* Line 1806 of yacc.c  */
     6156#line 901 "parser.yy"
     6157    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     6158    break;
     6159
     6160  case 217:
     6161
     6162/* Line 1806 of yacc.c  */
     6163#line 906 "parser.yy"
     6164    { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
     6165    break;
     6166
     6167  case 218:
     6168
     6169/* Line 1806 of yacc.c  */
     6170#line 908 "parser.yy"
     6171    { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
     6172    break;
     6173
     6174  case 219:
     6175
     6176/* Line 1806 of yacc.c  */
     6177#line 913 "parser.yy"
     6178    { (yyval.constant) = 0; }
     6179    break;
     6180
     6181  case 220:
     6182
     6183/* Line 1806 of yacc.c  */
     6184#line 915 "parser.yy"
     6185    { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
     6186    break;
     6187
     6188  case 221:
     6189
     6190/* Line 1806 of yacc.c  */
     6191#line 917 "parser.yy"
     6192    { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
     6193    break;
     6194
     6195  case 222:
     6196
     6197/* Line 1806 of yacc.c  */
     6198#line 922 "parser.yy"
     6199    { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
     6200    break;
     6201
     6202  case 223:
     6203
     6204/* Line 1806 of yacc.c  */
     6205#line 924 "parser.yy"
     6206    { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
     6207    break;
     6208
     6209  case 224:
     6210
     6211/* Line 1806 of yacc.c  */
     6212#line 931 "parser.yy"
     6213    { (yyval.decl) = 0; }
     6214    break;
     6215
     6216  case 227:
     6217
     6218/* Line 1806 of yacc.c  */
     6219#line 938 "parser.yy"
     6220    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     6221    break;
     6222
     6223  case 228:
     6224
     6225/* Line 1806 of yacc.c  */
     6226#line 943 "parser.yy"
     6227    { (yyval.decl) = 0; }
     6228    break;
     6229
     6230  case 231:
     6231
     6232/* Line 1806 of yacc.c  */
     6233#line 950 "parser.yy"
     6234    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     6235    break;
     6236
     6237  case 236:
     6238
     6239/* Line 1806 of yacc.c  */
     6240#line 964 "parser.yy"
    61216241    {}
    61226242    break;
    61236243
    6124   case 215:
    6125 
    6126 /* Line 1806 of yacc.c  */
    6127 #line 890 "parser.yy"
     6244  case 237:
     6245
     6246/* Line 1806 of yacc.c  */
     6247#line 965 "parser.yy"
    61286248    {}
    61296249    break;
    61306250
    6131   case 217:
    6132 
    6133 /* Line 1806 of yacc.c  */
    6134 #line 898 "parser.yy"
    6135     { (yyval.decl) = 0; }
    6136     break;
    6137 
    6138   case 220:
    6139 
    6140 /* Line 1806 of yacc.c  */
    6141 #line 905 "parser.yy"
    6142     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    6143     break;
    6144 
    6145   case 221:
    6146 
    6147 /* Line 1806 of yacc.c  */
    6148 #line 910 "parser.yy"
    6149     { (yyval.decl) = 0; }
    6150     break;
    6151 
    6152   case 224:
    6153 
    6154 /* Line 1806 of yacc.c  */
    6155 #line 917 "parser.yy"
    6156     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    6157     break;
    6158 
    6159   case 229:
    6160 
    6161 /* Line 1806 of yacc.c  */
    6162 #line 931 "parser.yy"
    6163     {}
    6164     break;
    6165 
    6166   case 230:
    6167 
    6168 /* Line 1806 of yacc.c  */
    6169 #line 932 "parser.yy"
    6170     {}
    6171     break;
    6172 
    6173   case 238:
    6174 
    6175 /* Line 1806 of yacc.c  */
    6176 #line 961 "parser.yy"
     6251  case 245:
     6252
     6253/* Line 1806 of yacc.c  */
     6254#line 994 "parser.yy"
    61776255    {
    61786256                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61816259    break;
    61826260
    6183   case 239:
    6184 
    6185 /* Line 1806 of yacc.c  */
    6186 #line 968 "parser.yy"
     6261  case 246:
     6262
     6263/* Line 1806 of yacc.c  */
     6264#line 1001 "parser.yy"
    61876265    {
    61886266                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61916269    break;
    61926270
    6193   case 240:
    6194 
    6195 /* Line 1806 of yacc.c  */
    6196 #line 973 "parser.yy"
     6271  case 247:
     6272
     6273/* Line 1806 of yacc.c  */
     6274#line 1006 "parser.yy"
    61976275    {
    61986276                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    62016279    break;
    62026280
    6203   case 241:
    6204 
    6205 /* Line 1806 of yacc.c  */
    6206 #line 983 "parser.yy"
     6281  case 248:
     6282
     6283/* Line 1806 of yacc.c  */
     6284#line 1016 "parser.yy"
    62076285    {
    62086286                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    62116289    break;
    62126290
    6213   case 242:
    6214 
    6215 /* Line 1806 of yacc.c  */
    6216 #line 988 "parser.yy"
     6291  case 249:
     6292
     6293/* Line 1806 of yacc.c  */
     6294#line 1021 "parser.yy"
    62176295    {
    62186296                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    62216299    break;
    62226300
    6223   case 243:
    6224 
    6225 /* Line 1806 of yacc.c  */
    6226 #line 993 "parser.yy"
     6301  case 250:
     6302
     6303/* Line 1806 of yacc.c  */
     6304#line 1026 "parser.yy"
    62276305    {
    62286306                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    62316309    break;
    62326310
    6233   case 244:
    6234 
    6235 /* Line 1806 of yacc.c  */
    6236 #line 1001 "parser.yy"
     6311  case 251:
     6312
     6313/* Line 1806 of yacc.c  */
     6314#line 1034 "parser.yy"
    62376315    {
    62386316                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62416319    break;
    62426320
    6243   case 245:
    6244 
    6245 /* Line 1806 of yacc.c  */
    6246 #line 1006 "parser.yy"
     6321  case 252:
     6322
     6323/* Line 1806 of yacc.c  */
     6324#line 1039 "parser.yy"
    62476325    {
    62486326                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62516329    break;
    62526330
    6253   case 246:
    6254 
    6255 /* Line 1806 of yacc.c  */
    6256 #line 1011 "parser.yy"
     6331  case 253:
     6332
     6333/* Line 1806 of yacc.c  */
     6334#line 1044 "parser.yy"
    62576335    {
    62586336                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62616339    break;
    62626340
    6263   case 247:
    6264 
    6265 /* Line 1806 of yacc.c  */
    6266 #line 1016 "parser.yy"
     6341  case 254:
     6342
     6343/* Line 1806 of yacc.c  */
     6344#line 1049 "parser.yy"
    62676345    {
    62686346                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62716349    break;
    62726350
    6273   case 248:
    6274 
    6275 /* Line 1806 of yacc.c  */
    6276 #line 1021 "parser.yy"
     6351  case 255:
     6352
     6353/* Line 1806 of yacc.c  */
     6354#line 1054 "parser.yy"
    62776355    {
    62786356                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    62816359    break;
    62826360
    6283   case 249:
    6284 
    6285 /* Line 1806 of yacc.c  */
    6286 #line 1029 "parser.yy"
     6361  case 256:
     6362
     6363/* Line 1806 of yacc.c  */
     6364#line 1062 "parser.yy"
    62876365    {
    62886366                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    62906368    break;
    62916369
    6292   case 250:
    6293 
    6294 /* Line 1806 of yacc.c  */
    6295 #line 1052 "parser.yy"
     6370  case 257:
     6371
     6372/* Line 1806 of yacc.c  */
     6373#line 1085 "parser.yy"
    62966374    {
    62976375                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    62996377    break;
    63006378
    6301   case 251:
    6302 
    6303 /* Line 1806 of yacc.c  */
    6304 #line 1056 "parser.yy"
     6379  case 258:
     6380
     6381/* Line 1806 of yacc.c  */
     6382#line 1089 "parser.yy"
    63056383    {
    63066384                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    63086386    break;
    63096387
    6310   case 252:
    6311 
    6312 /* Line 1806 of yacc.c  */
    6313 #line 1063 "parser.yy"
     6388  case 259:
     6389
     6390/* Line 1806 of yacc.c  */
     6391#line 1096 "parser.yy"
    63146392    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    63156393    break;
    63166394
    6317   case 253:
    6318 
    6319 /* Line 1806 of yacc.c  */
    6320 #line 1067 "parser.yy"
     6395  case 260:
     6396
     6397/* Line 1806 of yacc.c  */
     6398#line 1100 "parser.yy"
    63216399    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    63226400    break;
    63236401
    6324   case 254:
    6325 
    6326 /* Line 1806 of yacc.c  */
    6327 #line 1072 "parser.yy"
     6402  case 261:
     6403
     6404/* Line 1806 of yacc.c  */
     6405#line 1105 "parser.yy"
    63286406    {
    63296407                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63326410    break;
    63336411
    6334   case 255:
    6335 
    6336 /* Line 1806 of yacc.c  */
    6337 #line 1077 "parser.yy"
     6412  case 262:
     6413
     6414/* Line 1806 of yacc.c  */
     6415#line 1110 "parser.yy"
    63386416    {
    63396417                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63426420    break;
    63436421
    6344   case 256:
    6345 
    6346 /* Line 1806 of yacc.c  */
    6347 #line 1082 "parser.yy"
     6422  case 263:
     6423
     6424/* Line 1806 of yacc.c  */
     6425#line 1115 "parser.yy"
    63486426    {
    63496427                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    63526430    break;
    63536431
    6354   case 257:
    6355 
    6356 /* Line 1806 of yacc.c  */
    6357 #line 1093 "parser.yy"
     6432  case 264:
     6433
     6434/* Line 1806 of yacc.c  */
     6435#line 1126 "parser.yy"
    63586436    {
    63596437                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63626440    break;
    63636441
    6364   case 258:
    6365 
    6366 /* Line 1806 of yacc.c  */
    6367 #line 1098 "parser.yy"
     6442  case 265:
     6443
     6444/* Line 1806 of yacc.c  */
     6445#line 1131 "parser.yy"
    63686446    {
    63696447                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63726450    break;
    63736451
    6374   case 259:
    6375 
    6376 /* Line 1806 of yacc.c  */
    6377 #line 1103 "parser.yy"
     6452  case 266:
     6453
     6454/* Line 1806 of yacc.c  */
     6455#line 1136 "parser.yy"
    63786456    {
    63796457                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63826460    break;
    63836461
    6384   case 260:
    6385 
    6386 /* Line 1806 of yacc.c  */
    6387 #line 1108 "parser.yy"
     6462  case 267:
     6463
     6464/* Line 1806 of yacc.c  */
     6465#line 1141 "parser.yy"
    63886466    {
    63896467                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63926470    break;
    63936471
    6394   case 261:
    6395 
    6396 /* Line 1806 of yacc.c  */
    6397 #line 1113 "parser.yy"
     6472  case 268:
     6473
     6474/* Line 1806 of yacc.c  */
     6475#line 1146 "parser.yy"
    63986476    {
    63996477                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64026480    break;
    64036481
    6404   case 262:
    6405 
    6406 /* Line 1806 of yacc.c  */
    6407 #line 1122 "parser.yy"
     6482  case 269:
     6483
     6484/* Line 1806 of yacc.c  */
     6485#line 1155 "parser.yy"
    64086486    {
    64096487                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    64126490    break;
    64136491
    6414   case 263:
    6415 
    6416 /* Line 1806 of yacc.c  */
    6417 #line 1127 "parser.yy"
     6492  case 270:
     6493
     6494/* Line 1806 of yacc.c  */
     6495#line 1160 "parser.yy"
    64186496    {
    64196497                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    64226500    break;
    64236501
    6424   case 268:
    6425 
    6426 /* Line 1806 of yacc.c  */
    6427 #line 1144 "parser.yy"
     6502  case 275:
     6503
     6504/* Line 1806 of yacc.c  */
     6505#line 1177 "parser.yy"
    64286506    {
    64296507                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64326510    break;
    64336511
    6434   case 269:
    6435 
    6436 /* Line 1806 of yacc.c  */
    6437 #line 1149 "parser.yy"
     6512  case 276:
     6513
     6514/* Line 1806 of yacc.c  */
     6515#line 1182 "parser.yy"
    64386516    {
    64396517                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64426520    break;
    64436521
    6444   case 278:
    6445 
    6446 /* Line 1806 of yacc.c  */
    6447 #line 1171 "parser.yy"
     6522  case 285:
     6523
     6524/* Line 1806 of yacc.c  */
     6525#line 1204 "parser.yy"
    64486526    { (yyval.decl) = 0; }
    64496527    break;
    64506528
    6451   case 281:
    6452 
    6453 /* Line 1806 of yacc.c  */
    6454 #line 1183 "parser.yy"
     6529  case 288:
     6530
     6531/* Line 1806 of yacc.c  */
     6532#line 1216 "parser.yy"
    64556533    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    64566534    break;
    64576535
    6458   case 284:
    6459 
    6460 /* Line 1806 of yacc.c  */
    6461 #line 1194 "parser.yy"
     6536  case 291:
     6537
     6538/* Line 1806 of yacc.c  */
     6539#line 1227 "parser.yy"
    64626540    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    64636541    break;
    64646542
    6465   case 285:
    6466 
    6467 /* Line 1806 of yacc.c  */
    6468 #line 1196 "parser.yy"
     6543  case 292:
     6544
     6545/* Line 1806 of yacc.c  */
     6546#line 1229 "parser.yy"
    64696547    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    64706548    break;
    64716549
    6472   case 286:
    6473 
    6474 /* Line 1806 of yacc.c  */
    6475 #line 1198 "parser.yy"
     6550  case 293:
     6551
     6552/* Line 1806 of yacc.c  */
     6553#line 1231 "parser.yy"
    64766554    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    64776555    break;
    64786556
    6479   case 287:
    6480 
    6481 /* Line 1806 of yacc.c  */
    6482 #line 1200 "parser.yy"
     6557  case 294:
     6558
     6559/* Line 1806 of yacc.c  */
     6560#line 1233 "parser.yy"
    64836561    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    64846562    break;
    64856563
    6486   case 288:
    6487 
    6488 /* Line 1806 of yacc.c  */
    6489 #line 1202 "parser.yy"
     6564  case 295:
     6565
     6566/* Line 1806 of yacc.c  */
     6567#line 1235 "parser.yy"
    64906568    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    64916569    break;
    64926570
    6493   case 289:
    6494 
    6495 /* Line 1806 of yacc.c  */
    6496 #line 1204 "parser.yy"
     6571  case 296:
     6572
     6573/* Line 1806 of yacc.c  */
     6574#line 1237 "parser.yy"
    64976575    {
    64986576                        typedefTable.enterScope();
     
    65006578    break;
    65016579
    6502   case 290:
    6503 
    6504 /* Line 1806 of yacc.c  */
    6505 #line 1208 "parser.yy"
     6580  case 297:
     6581
     6582/* Line 1806 of yacc.c  */
     6583#line 1241 "parser.yy"
    65066584    {
    65076585                        typedefTable.leaveScope();
     
    65106588    break;
    65116589
    6512   case 292:
    6513 
    6514 /* Line 1806 of yacc.c  */
    6515 #line 1217 "parser.yy"
     6590  case 299:
     6591
     6592/* Line 1806 of yacc.c  */
     6593#line 1250 "parser.yy"
    65166594    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65176595    break;
    65186596
    6519   case 293:
    6520 
    6521 /* Line 1806 of yacc.c  */
    6522 #line 1219 "parser.yy"
     6597  case 300:
     6598
     6599/* Line 1806 of yacc.c  */
     6600#line 1252 "parser.yy"
    65236601    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    65246602    break;
    65256603
    6526   case 295:
    6527 
    6528 /* Line 1806 of yacc.c  */
    6529 #line 1230 "parser.yy"
     6604  case 302:
     6605
     6606/* Line 1806 of yacc.c  */
     6607#line 1263 "parser.yy"
    65306608    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65316609    break;
    65326610
    6533   case 297:
    6534 
    6535 /* Line 1806 of yacc.c  */
    6536 #line 1239 "parser.yy"
     6611  case 304:
     6612
     6613/* Line 1806 of yacc.c  */
     6614#line 1272 "parser.yy"
    65376615    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    65386616    break;
    65396617
    6540   case 298:
    6541 
    6542 /* Line 1806 of yacc.c  */
    6543 #line 1241 "parser.yy"
     6618  case 305:
     6619
     6620/* Line 1806 of yacc.c  */
     6621#line 1274 "parser.yy"
    65446622    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    65456623    break;
    65466624
    6547   case 299:
    6548 
    6549 /* Line 1806 of yacc.c  */
    6550 #line 1243 "parser.yy"
     6625  case 306:
     6626
     6627/* Line 1806 of yacc.c  */
     6628#line 1276 "parser.yy"
    65516629    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    65526630    break;
    65536631
    6554   case 300:
    6555 
    6556 /* Line 1806 of yacc.c  */
    6557 #line 1245 "parser.yy"
     6632  case 307:
     6633
     6634/* Line 1806 of yacc.c  */
     6635#line 1278 "parser.yy"
    65586636    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    65596637    break;
    65606638
    6561   case 301:
    6562 
    6563 /* Line 1806 of yacc.c  */
    6564 #line 1247 "parser.yy"
     6639  case 308:
     6640
     6641/* Line 1806 of yacc.c  */
     6642#line 1280 "parser.yy"
    65656643    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    65666644    break;
    65676645
    6568   case 302:
    6569 
    6570 /* Line 1806 of yacc.c  */
    6571 #line 1249 "parser.yy"
     6646  case 309:
     6647
     6648/* Line 1806 of yacc.c  */
     6649#line 1282 "parser.yy"
    65726650    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    65736651    break;
    65746652
    6575   case 303:
    6576 
    6577 /* Line 1806 of yacc.c  */
    6578 #line 1251 "parser.yy"
     6653  case 310:
     6654
     6655/* Line 1806 of yacc.c  */
     6656#line 1284 "parser.yy"
    65796657    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    65806658    break;
    65816659
    6582   case 304:
    6583 
    6584 /* Line 1806 of yacc.c  */
    6585 #line 1253 "parser.yy"
     6660  case 311:
     6661
     6662/* Line 1806 of yacc.c  */
     6663#line 1286 "parser.yy"
    65866664    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    65876665    break;
    65886666
    6589   case 305:
    6590 
    6591 /* Line 1806 of yacc.c  */
    6592 #line 1258 "parser.yy"
     6667  case 312:
     6668
     6669/* Line 1806 of yacc.c  */
     6670#line 1291 "parser.yy"
    65936671    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    65946672    break;
    65956673
    6596   case 306:
    6597 
    6598 /* Line 1806 of yacc.c  */
    6599 #line 1260 "parser.yy"
     6674  case 313:
     6675
     6676/* Line 1806 of yacc.c  */
     6677#line 1293 "parser.yy"
    66006678    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    66016679    break;
    66026680
    6603   case 307:
    6604 
    6605 /* Line 1806 of yacc.c  */
    6606 #line 1262 "parser.yy"
     6681  case 314:
     6682
     6683/* Line 1806 of yacc.c  */
     6684#line 1295 "parser.yy"
    66076685    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    66086686    break;
    66096687
    6610   case 308:
    6611 
    6612 /* Line 1806 of yacc.c  */
    6613 #line 1264 "parser.yy"
     6688  case 315:
     6689
     6690/* Line 1806 of yacc.c  */
     6691#line 1297 "parser.yy"
    66146692    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    66156693    break;
    66166694
    6617   case 309:
    6618 
    6619 /* Line 1806 of yacc.c  */
    6620 #line 1266 "parser.yy"
     6695  case 316:
     6696
     6697/* Line 1806 of yacc.c  */
     6698#line 1299 "parser.yy"
    66216699    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    66226700    break;
    66236701
    6624   case 310:
    6625 
    6626 /* Line 1806 of yacc.c  */
    6627 #line 1268 "parser.yy"
     6702  case 317:
     6703
     6704/* Line 1806 of yacc.c  */
     6705#line 1301 "parser.yy"
    66286706    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    66296707    break;
    66306708
    6631   case 311:
    6632 
    6633 /* Line 1806 of yacc.c  */
    6634 #line 1270 "parser.yy"
     6709  case 318:
     6710
     6711/* Line 1806 of yacc.c  */
     6712#line 1303 "parser.yy"
    66356713    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    66366714    break;
    66376715
    6638   case 312:
    6639 
    6640 /* Line 1806 of yacc.c  */
    6641 #line 1272 "parser.yy"
     6716  case 319:
     6717
     6718/* Line 1806 of yacc.c  */
     6719#line 1305 "parser.yy"
    66426720    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    66436721    break;
    66446722
    6645   case 313:
    6646 
    6647 /* Line 1806 of yacc.c  */
    6648 #line 1274 "parser.yy"
     6723  case 320:
     6724
     6725/* Line 1806 of yacc.c  */
     6726#line 1307 "parser.yy"
    66496727    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    66506728    break;
    66516729
    6652   case 314:
    6653 
    6654 /* Line 1806 of yacc.c  */
    6655 #line 1276 "parser.yy"
     6730  case 321:
     6731
     6732/* Line 1806 of yacc.c  */
     6733#line 1309 "parser.yy"
    66566734    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    66576735    break;
    66586736
    6659   case 315:
    6660 
    6661 /* Line 1806 of yacc.c  */
    6662 #line 1278 "parser.yy"
     6737  case 322:
     6738
     6739/* Line 1806 of yacc.c  */
     6740#line 1311 "parser.yy"
    66636741    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    66646742    break;
    66656743
    6666   case 316:
    6667 
    6668 /* Line 1806 of yacc.c  */
    6669 #line 1280 "parser.yy"
     6744  case 323:
     6745
     6746/* Line 1806 of yacc.c  */
     6747#line 1313 "parser.yy"
    66706748    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    66716749    break;
    66726750
    6673   case 318:
    6674 
    6675 /* Line 1806 of yacc.c  */
    6676 #line 1287 "parser.yy"
     6751  case 325:
     6752
     6753/* Line 1806 of yacc.c  */
     6754#line 1320 "parser.yy"
    66776755    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    66786756    break;
    66796757
    6680   case 319:
    6681 
    6682 /* Line 1806 of yacc.c  */
    6683 #line 1289 "parser.yy"
     6758  case 326:
     6759
     6760/* Line 1806 of yacc.c  */
     6761#line 1322 "parser.yy"
    66846762    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66856763    break;
    66866764
    6687   case 320:
    6688 
    6689 /* Line 1806 of yacc.c  */
    6690 #line 1291 "parser.yy"
     6765  case 327:
     6766
     6767/* Line 1806 of yacc.c  */
     6768#line 1324 "parser.yy"
    66916769    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66926770    break;
    66936771
    6694   case 321:
    6695 
    6696 /* Line 1806 of yacc.c  */
    6697 #line 1293 "parser.yy"
     6772  case 328:
     6773
     6774/* Line 1806 of yacc.c  */
     6775#line 1326 "parser.yy"
    66986776    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    66996777    break;
    67006778
    6701   case 323:
    6702 
    6703 /* Line 1806 of yacc.c  */
    6704 #line 1299 "parser.yy"
     6779  case 330:
     6780
     6781/* Line 1806 of yacc.c  */
     6782#line 1332 "parser.yy"
    67056783    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67066784    break;
    67076785
    6708   case 325:
    6709 
    6710 /* Line 1806 of yacc.c  */
    6711 #line 1306 "parser.yy"
     6786  case 332:
     6787
     6788/* Line 1806 of yacc.c  */
     6789#line 1339 "parser.yy"
    67126790    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67136791    break;
    67146792
    6715   case 326:
    6716 
    6717 /* Line 1806 of yacc.c  */
    6718 #line 1308 "parser.yy"
     6793  case 333:
     6794
     6795/* Line 1806 of yacc.c  */
     6796#line 1341 "parser.yy"
    67196797    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67206798    break;
    67216799
    6722   case 327:
    6723 
    6724 /* Line 1806 of yacc.c  */
    6725 #line 1310 "parser.yy"
     6800  case 334:
     6801
     6802/* Line 1806 of yacc.c  */
     6803#line 1343 "parser.yy"
    67266804    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    67276805    break;
    67286806
    6729   case 328:
    6730 
    6731 /* Line 1806 of yacc.c  */
    6732 #line 1315 "parser.yy"
     6807  case 335:
     6808
     6809/* Line 1806 of yacc.c  */
     6810#line 1348 "parser.yy"
    67336811    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    67346812    break;
    67356813
    6736   case 329:
    6737 
    6738 /* Line 1806 of yacc.c  */
    6739 #line 1317 "parser.yy"
     6814  case 336:
     6815
     6816/* Line 1806 of yacc.c  */
     6817#line 1350 "parser.yy"
    67406818    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    67416819    break;
    67426820
    6743   case 330:
    6744 
    6745 /* Line 1806 of yacc.c  */
    6746 #line 1319 "parser.yy"
     6821  case 337:
     6822
     6823/* Line 1806 of yacc.c  */
     6824#line 1352 "parser.yy"
    67476825    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    67486826    break;
    67496827
    6750   case 331:
    6751 
    6752 /* Line 1806 of yacc.c  */
    6753 #line 1321 "parser.yy"
     6828  case 338:
     6829
     6830/* Line 1806 of yacc.c  */
     6831#line 1354 "parser.yy"
    67546832    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    67556833    break;
    67566834
    6757   case 333:
    6758 
    6759 /* Line 1806 of yacc.c  */
    6760 #line 1327 "parser.yy"
     6835  case 340:
     6836
     6837/* Line 1806 of yacc.c  */
     6838#line 1360 "parser.yy"
    67616839    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67626840    break;
    67636841
    6764   case 334:
    6765 
    6766 /* Line 1806 of yacc.c  */
    6767 #line 1329 "parser.yy"
     6842  case 341:
     6843
     6844/* Line 1806 of yacc.c  */
     6845#line 1362 "parser.yy"
    67686846    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67696847    break;
    67706848
    6771   case 335:
    6772 
    6773 /* Line 1806 of yacc.c  */
    6774 #line 1331 "parser.yy"
     6849  case 342:
     6850
     6851/* Line 1806 of yacc.c  */
     6852#line 1364 "parser.yy"
    67756853    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67766854    break;
    67776855
    6778   case 337:
    6779 
    6780 /* Line 1806 of yacc.c  */
    6781 #line 1337 "parser.yy"
     6856  case 344:
     6857
     6858/* Line 1806 of yacc.c  */
     6859#line 1370 "parser.yy"
    67826860    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67836861    break;
    67846862
    6785   case 338:
    6786 
    6787 /* Line 1806 of yacc.c  */
    6788 #line 1339 "parser.yy"
     6863  case 345:
     6864
     6865/* Line 1806 of yacc.c  */
     6866#line 1372 "parser.yy"
    67896867    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67906868    break;
    67916869
    6792   case 340:
    6793 
    6794 /* Line 1806 of yacc.c  */
    6795 #line 1345 "parser.yy"
     6870  case 347:
     6871
     6872/* Line 1806 of yacc.c  */
     6873#line 1378 "parser.yy"
    67966874    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67976875    break;
    67986876
    6799   case 341:
    6800 
    6801 /* Line 1806 of yacc.c  */
    6802 #line 1347 "parser.yy"
     6877  case 348:
     6878
     6879/* Line 1806 of yacc.c  */
     6880#line 1380 "parser.yy"
    68036881    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68046882    break;
    68056883
    6806   case 342:
    6807 
    6808 /* Line 1806 of yacc.c  */
    6809 #line 1349 "parser.yy"
     6884  case 349:
     6885
     6886/* Line 1806 of yacc.c  */
     6887#line 1382 "parser.yy"
    68106888    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68116889    break;
    68126890
    6813   case 343:
    6814 
    6815 /* Line 1806 of yacc.c  */
    6816 #line 1354 "parser.yy"
     6891  case 350:
     6892
     6893/* Line 1806 of yacc.c  */
     6894#line 1387 "parser.yy"
    68176895    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    68186896    break;
    68196897
    6820   case 344:
    6821 
    6822 /* Line 1806 of yacc.c  */
    6823 #line 1356 "parser.yy"
     6898  case 351:
     6899
     6900/* Line 1806 of yacc.c  */
     6901#line 1389 "parser.yy"
    68246902    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68256903    break;
    68266904
    6827   case 345:
    6828 
    6829 /* Line 1806 of yacc.c  */
    6830 #line 1358 "parser.yy"
     6905  case 352:
     6906
     6907/* Line 1806 of yacc.c  */
     6908#line 1391 "parser.yy"
    68316909    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68326910    break;
    68336911
    6834   case 348:
    6835 
    6836 /* Line 1806 of yacc.c  */
    6837 #line 1368 "parser.yy"
     6912  case 355:
     6913
     6914/* Line 1806 of yacc.c  */
     6915#line 1401 "parser.yy"
    68386916    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); }
    68396917    break;
    68406918
    6841   case 349:
    6842 
    6843 /* Line 1806 of yacc.c  */
    6844 #line 1370 "parser.yy"
     6919  case 356:
     6920
     6921/* Line 1806 of yacc.c  */
     6922#line 1403 "parser.yy"
    68456923    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); }
    68466924    break;
    68476925
    6848   case 350:
    6849 
    6850 /* Line 1806 of yacc.c  */
    6851 #line 1372 "parser.yy"
     6926  case 357:
     6927
     6928/* Line 1806 of yacc.c  */
     6929#line 1405 "parser.yy"
    68526930    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); }
    68536931    break;
    68546932
    6855   case 351:
    6856 
    6857 /* Line 1806 of yacc.c  */
    6858 #line 1374 "parser.yy"
     6933  case 358:
     6934
     6935/* Line 1806 of yacc.c  */
     6936#line 1407 "parser.yy"
    68596937    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); }
    68606938    break;
    68616939
    6862   case 352:
    6863 
    6864 /* Line 1806 of yacc.c  */
    6865 #line 1376 "parser.yy"
     6940  case 359:
     6941
     6942/* Line 1806 of yacc.c  */
     6943#line 1409 "parser.yy"
    68666944    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    68676945    break;
    68686946
    6869   case 353:
    6870 
    6871 /* Line 1806 of yacc.c  */
    6872 #line 1381 "parser.yy"
     6947  case 360:
     6948
     6949/* Line 1806 of yacc.c  */
     6950#line 1414 "parser.yy"
    68736951    { (yyval.aggKey) = DeclarationNode::Struct; }
    68746952    break;
    68756953
    6876   case 354:
    6877 
    6878 /* Line 1806 of yacc.c  */
    6879 #line 1383 "parser.yy"
     6954  case 361:
     6955
     6956/* Line 1806 of yacc.c  */
     6957#line 1416 "parser.yy"
    68806958    { (yyval.aggKey) = DeclarationNode::Union; }
    68816959    break;
    68826960
    6883   case 355:
    6884 
    6885 /* Line 1806 of yacc.c  */
    6886 #line 1388 "parser.yy"
     6961  case 362:
     6962
     6963/* Line 1806 of yacc.c  */
     6964#line 1421 "parser.yy"
    68876965    { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
    68886966    break;
    68896967
    6890   case 356:
    6891 
    6892 /* Line 1806 of yacc.c  */
    6893 #line 1390 "parser.yy"
     6968  case 363:
     6969
     6970/* Line 1806 of yacc.c  */
     6971#line 1423 "parser.yy"
    68946972    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    68956973    break;
    68966974
    6897   case 358:
    6898 
    6899 /* Line 1806 of yacc.c  */
    6900 #line 1396 "parser.yy"
     6975  case 365:
     6976
     6977/* Line 1806 of yacc.c  */
     6978#line 1429 "parser.yy"
    69016979    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    69026980    break;
    69036981
    6904   case 360:
    6905 
    6906 /* Line 1806 of yacc.c  */
    6907 #line 1399 "parser.yy"
     6982  case 367:
     6983
     6984/* Line 1806 of yacc.c  */
     6985#line 1432 "parser.yy"
    69086986    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    69096987    break;
    69106988
    6911   case 362:
    6912 
    6913 /* Line 1806 of yacc.c  */
    6914 #line 1405 "parser.yy"
     6989  case 369:
     6990
     6991/* Line 1806 of yacc.c  */
     6992#line 1438 "parser.yy"
    69156993    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    69166994    break;
    69176995
    6918   case 363:
    6919 
    6920 /* Line 1806 of yacc.c  */
    6921 #line 1407 "parser.yy"
     6996  case 370:
     6997
     6998/* Line 1806 of yacc.c  */
     6999#line 1440 "parser.yy"
    69227000    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    69237001    break;
    69247002
    6925   case 364:
    6926 
    6927 /* Line 1806 of yacc.c  */
    6928 #line 1409 "parser.yy"
     7003  case 371:
     7004
     7005/* Line 1806 of yacc.c  */
     7006#line 1442 "parser.yy"
    69297007    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    69307008    break;
    69317009
    6932   case 365:
    6933 
    6934 /* Line 1806 of yacc.c  */
    6935 #line 1414 "parser.yy"
     7010  case 372:
     7011
     7012/* Line 1806 of yacc.c  */
     7013#line 1447 "parser.yy"
    69367014    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    69377015    break;
    69387016
    6939   case 366:
    6940 
    6941 /* Line 1806 of yacc.c  */
    6942 #line 1416 "parser.yy"
     7017  case 373:
     7018
     7019/* Line 1806 of yacc.c  */
     7020#line 1449 "parser.yy"
    69437021    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    69447022    break;
    69457023
    6946   case 367:
    6947 
    6948 /* Line 1806 of yacc.c  */
    6949 #line 1421 "parser.yy"
     7024  case 374:
     7025
     7026/* Line 1806 of yacc.c  */
     7027#line 1454 "parser.yy"
    69507028    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    69517029    break;
    69527030
    6953   case 368:
    6954 
    6955 /* Line 1806 of yacc.c  */
    6956 #line 1423 "parser.yy"
     7031  case 375:
     7032
     7033/* Line 1806 of yacc.c  */
     7034#line 1456 "parser.yy"
    69577035    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    69587036    break;
    69597037
    6960   case 369:
    6961 
    6962 /* Line 1806 of yacc.c  */
    6963 #line 1426 "parser.yy"
     7038  case 376:
     7039
     7040/* Line 1806 of yacc.c  */
     7041#line 1459 "parser.yy"
    69647042    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    69657043    break;
    69667044
    6967   case 370:
    6968 
    6969 /* Line 1806 of yacc.c  */
    6970 #line 1429 "parser.yy"
     7045  case 377:
     7046
     7047/* Line 1806 of yacc.c  */
     7048#line 1462 "parser.yy"
    69717049    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    69727050    break;
    69737051
    6974   case 372:
    6975 
    6976 /* Line 1806 of yacc.c  */
    6977 #line 1435 "parser.yy"
     7052  case 379:
     7053
     7054/* Line 1806 of yacc.c  */
     7055#line 1468 "parser.yy"
    69787056    { (yyval.en) = 0; }
    69797057    break;
    69807058
    6981   case 373:
    6982 
    6983 /* Line 1806 of yacc.c  */
    6984 #line 1437 "parser.yy"
     7059  case 380:
     7060
     7061/* Line 1806 of yacc.c  */
     7062#line 1470 "parser.yy"
    69857063    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    69867064    break;
    69877065
    6988   case 374:
    6989 
    6990 /* Line 1806 of yacc.c  */
    6991 #line 1442 "parser.yy"
     7066  case 381:
     7067
     7068/* Line 1806 of yacc.c  */
     7069#line 1475 "parser.yy"
    69927070    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    69937071    break;
    69947072
    6995   case 376:
    6996 
    6997 /* Line 1806 of yacc.c  */
    6998 #line 1451 "parser.yy"
     7073  case 383:
     7074
     7075/* Line 1806 of yacc.c  */
     7076#line 1484 "parser.yy"
    69997077    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    70007078    break;
    70017079
    7002   case 377:
    7003 
    7004 /* Line 1806 of yacc.c  */
    7005 #line 1453 "parser.yy"
     7080  case 384:
     7081
     7082/* Line 1806 of yacc.c  */
     7083#line 1486 "parser.yy"
    70067084    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
    70077085    break;
    70087086
    7009   case 378:
    7010 
    7011 /* Line 1806 of yacc.c  */
    7012 #line 1455 "parser.yy"
     7087  case 385:
     7088
     7089/* Line 1806 of yacc.c  */
     7090#line 1488 "parser.yy"
    70137091    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
    70147092    break;
    70157093
    7016   case 379:
    7017 
    7018 /* Line 1806 of yacc.c  */
    7019 #line 1460 "parser.yy"
     7094  case 386:
     7095
     7096/* Line 1806 of yacc.c  */
     7097#line 1493 "parser.yy"
    70207098    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    70217099    break;
    70227100
    7023   case 380:
    7024 
    7025 /* Line 1806 of yacc.c  */
    7026 #line 1462 "parser.yy"
     7101  case 387:
     7102
     7103/* Line 1806 of yacc.c  */
     7104#line 1495 "parser.yy"
    70277105    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    70287106    break;
    70297107
    7030   case 381:
    7031 
    7032 /* Line 1806 of yacc.c  */
    7033 #line 1467 "parser.yy"
     7108  case 388:
     7109
     7110/* Line 1806 of yacc.c  */
     7111#line 1500 "parser.yy"
    70347112    { (yyval.en) = 0; }
    70357113    break;
    70367114
    7037   case 382:
    7038 
    7039 /* Line 1806 of yacc.c  */
    7040 #line 1469 "parser.yy"
     7115  case 389:
     7116
     7117/* Line 1806 of yacc.c  */
     7118#line 1502 "parser.yy"
    70417119    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    70427120    break;
    70437121
    7044   case 383:
    7045 
    7046 /* Line 1806 of yacc.c  */
    7047 #line 1476 "parser.yy"
     7122  case 390:
     7123
     7124/* Line 1806 of yacc.c  */
     7125#line 1509 "parser.yy"
    70487126    { (yyval.decl) = 0; }
    70497127    break;
    70507128
    7051   case 387:
    7052 
    7053 /* Line 1806 of yacc.c  */
    7054 #line 1484 "parser.yy"
     7129  case 394:
     7130
     7131/* Line 1806 of yacc.c  */
     7132#line 1517 "parser.yy"
    70557133    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    70567134    break;
    70577135
    7058   case 388:
    7059 
    7060 /* Line 1806 of yacc.c  */
    7061 #line 1486 "parser.yy"
     7136  case 395:
     7137
     7138/* Line 1806 of yacc.c  */
     7139#line 1519 "parser.yy"
    70627140    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    70637141    break;
    70647142
    7065   case 389:
    7066 
    7067 /* Line 1806 of yacc.c  */
    7068 #line 1488 "parser.yy"
     7143  case 396:
     7144
     7145/* Line 1806 of yacc.c  */
     7146#line 1521 "parser.yy"
    70697147    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    70707148    break;
    70717149
    7072   case 391:
    7073 
    7074 /* Line 1806 of yacc.c  */
    7075 #line 1496 "parser.yy"
     7150  case 398:
     7151
     7152/* Line 1806 of yacc.c  */
     7153#line 1529 "parser.yy"
    70767154    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    70777155    break;
    70787156
    7079   case 392:
    7080 
    7081 /* Line 1806 of yacc.c  */
    7082 #line 1498 "parser.yy"
     7157  case 399:
     7158
     7159/* Line 1806 of yacc.c  */
     7160#line 1531 "parser.yy"
    70837161    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    70847162    break;
    70857163
    7086   case 393:
    7087 
    7088 /* Line 1806 of yacc.c  */
    7089 #line 1500 "parser.yy"
     7164  case 400:
     7165
     7166/* Line 1806 of yacc.c  */
     7167#line 1533 "parser.yy"
    70907168    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    70917169    break;
    70927170
    7093   case 395:
    7094 
    7095 /* Line 1806 of yacc.c  */
    7096 #line 1506 "parser.yy"
     7171  case 402:
     7172
     7173/* Line 1806 of yacc.c  */
     7174#line 1539 "parser.yy"
    70977175    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    70987176    break;
    70997177
    7100   case 396:
    7101 
    7102 /* Line 1806 of yacc.c  */
    7103 #line 1511 "parser.yy"
     7178  case 403:
     7179
     7180/* Line 1806 of yacc.c  */
     7181#line 1544 "parser.yy"
    71047182    { (yyval.decl) = 0; }
    71057183    break;
    71067184
    7107   case 399:
    7108 
    7109 /* Line 1806 of yacc.c  */
    7110 #line 1518 "parser.yy"
     7185  case 406:
     7186
     7187/* Line 1806 of yacc.c  */
     7188#line 1551 "parser.yy"
    71117189    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71127190    break;
    71137191
    7114   case 402:
    7115 
    7116 /* Line 1806 of yacc.c  */
    7117 #line 1525 "parser.yy"
     7192  case 409:
     7193
     7194/* Line 1806 of yacc.c  */
     7195#line 1558 "parser.yy"
    71187196    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71197197    break;
    71207198
    7121   case 403:
    7122 
    7123 /* Line 1806 of yacc.c  */
    7124 #line 1527 "parser.yy"
     7199  case 410:
     7200
     7201/* Line 1806 of yacc.c  */
     7202#line 1560 "parser.yy"
    71257203    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71267204    break;
    71277205
    7128   case 405:
    7129 
    7130 /* Line 1806 of yacc.c  */
    7131 #line 1536 "parser.yy"
     7206  case 412:
     7207
     7208/* Line 1806 of yacc.c  */
     7209#line 1569 "parser.yy"
    71327210    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    71337211    break;
    71347212
    7135   case 406:
    7136 
    7137 /* Line 1806 of yacc.c  */
    7138 #line 1539 "parser.yy"
     7213  case 413:
     7214
     7215/* Line 1806 of yacc.c  */
     7216#line 1572 "parser.yy"
    71397217    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    71407218    break;
    71417219
    7142   case 407:
    7143 
    7144 /* Line 1806 of yacc.c  */
    7145 #line 1541 "parser.yy"
     7220  case 414:
     7221
     7222/* Line 1806 of yacc.c  */
     7223#line 1574 "parser.yy"
    71467224    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    71477225    break;
    71487226
    7149   case 412:
    7150 
    7151 /* Line 1806 of yacc.c  */
    7152 #line 1551 "parser.yy"
     7227  case 419:
     7228
     7229/* Line 1806 of yacc.c  */
     7230#line 1584 "parser.yy"
    71537231    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    71547232    break;
    71557233
    7156   case 414:
    7157 
    7158 /* Line 1806 of yacc.c  */
    7159 #line 1557 "parser.yy"
     7234  case 421:
     7235
     7236/* Line 1806 of yacc.c  */
     7237#line 1590 "parser.yy"
    71607238    {
    71617239                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    71647242    break;
    71657243
    7166   case 415:
    7167 
    7168 /* Line 1806 of yacc.c  */
    7169 #line 1562 "parser.yy"
     7244  case 422:
     7245
     7246/* Line 1806 of yacc.c  */
     7247#line 1595 "parser.yy"
    71707248    {
    71717249                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    71747252    break;
    71757253
    7176   case 417:
    7177 
    7178 /* Line 1806 of yacc.c  */
    7179 #line 1571 "parser.yy"
     7254  case 424:
     7255
     7256/* Line 1806 of yacc.c  */
     7257#line 1604 "parser.yy"
    71807258    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    71817259    break;
    71827260
    7183   case 418:
    7184 
    7185 /* Line 1806 of yacc.c  */
    7186 #line 1580 "parser.yy"
     7261  case 425:
     7262
     7263/* Line 1806 of yacc.c  */
     7264#line 1613 "parser.yy"
    71877265    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    71887266    break;
    71897267
    7190   case 419:
    7191 
    7192 /* Line 1806 of yacc.c  */
    7193 #line 1582 "parser.yy"
     7268  case 426:
     7269
     7270/* Line 1806 of yacc.c  */
     7271#line 1615 "parser.yy"
    71947272    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    71957273    break;
    71967274
    7197   case 431:
    7198 
    7199 /* Line 1806 of yacc.c  */
    7200 #line 1607 "parser.yy"
     7275  case 438:
     7276
     7277/* Line 1806 of yacc.c  */
     7278#line 1640 "parser.yy"
    72017279    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72027280    break;
    72037281
    7204   case 435:
    7205 
    7206 /* Line 1806 of yacc.c  */
    7207 #line 1615 "parser.yy"
     7282  case 442:
     7283
     7284/* Line 1806 of yacc.c  */
     7285#line 1648 "parser.yy"
    72087286    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72097287    break;
    72107288
    7211   case 436:
    7212 
    7213 /* Line 1806 of yacc.c  */
    7214 #line 1620 "parser.yy"
     7289  case 443:
     7290
     7291/* Line 1806 of yacc.c  */
     7292#line 1653 "parser.yy"
    72157293    { (yyval.in) = 0; }
    72167294    break;
    72177295
    7218   case 437:
    7219 
    7220 /* Line 1806 of yacc.c  */
    7221 #line 1622 "parser.yy"
     7296  case 444:
     7297
     7298/* Line 1806 of yacc.c  */
     7299#line 1655 "parser.yy"
    72227300    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    72237301    break;
    72247302
    7225   case 438:
    7226 
    7227 /* Line 1806 of yacc.c  */
    7228 #line 1626 "parser.yy"
     7303  case 445:
     7304
     7305/* Line 1806 of yacc.c  */
     7306#line 1659 "parser.yy"
    72297307    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    72307308    break;
    72317309
    7232   case 439:
    7233 
    7234 /* Line 1806 of yacc.c  */
    7235 #line 1627 "parser.yy"
     7310  case 446:
     7311
     7312/* Line 1806 of yacc.c  */
     7313#line 1660 "parser.yy"
    72367314    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    72377315    break;
    72387316
    7239   case 441:
    7240 
    7241 /* Line 1806 of yacc.c  */
    7242 #line 1632 "parser.yy"
     7317  case 448:
     7318
     7319/* Line 1806 of yacc.c  */
     7320#line 1665 "parser.yy"
    72437321    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    72447322    break;
    72457323
    7246   case 442:
    7247 
    7248 /* Line 1806 of yacc.c  */
    7249 #line 1633 "parser.yy"
     7324  case 449:
     7325
     7326/* Line 1806 of yacc.c  */
     7327#line 1666 "parser.yy"
    72507328    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    72517329    break;
    72527330
    7253   case 443:
    7254 
    7255 /* Line 1806 of yacc.c  */
    7256 #line 1635 "parser.yy"
     7331  case 450:
     7332
     7333/* Line 1806 of yacc.c  */
     7334#line 1668 "parser.yy"
    72577335    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    72587336    break;
    72597337
    7260   case 445:
    7261 
    7262 /* Line 1806 of yacc.c  */
    7263 #line 1651 "parser.yy"
     7338  case 452:
     7339
     7340/* Line 1806 of yacc.c  */
     7341#line 1684 "parser.yy"
    72647342    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
    72657343    break;
    72667344
    7267   case 447:
    7268 
    7269 /* Line 1806 of yacc.c  */
    7270 #line 1657 "parser.yy"
     7345  case 454:
     7346
     7347/* Line 1806 of yacc.c  */
     7348#line 1690 "parser.yy"
    72717349    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
    72727350    break;
    72737351
    7274   case 448:
    7275 
    7276 /* Line 1806 of yacc.c  */
    7277 #line 1663 "parser.yy"
    7278     { (yyval.en) = new VarRefNode( (yyvsp[(2) - (2)].tok) ); }
    7279     break;
    7280 
    7281   case 449:
    7282 
    7283 /* Line 1806 of yacc.c  */
    7284 #line 1666 "parser.yy"
    7285     { (yyval.en) = (yyvsp[(3) - (5)].en); }
    7286     break;
    7287 
    7288   case 450:
    7289 
    7290 /* Line 1806 of yacc.c  */
    7291 #line 1668 "parser.yy"
    7292     { (yyval.en) = (yyvsp[(3) - (5)].en); }
    7293     break;
    7294 
    7295   case 451:
    7296 
    7297 /* Line 1806 of yacc.c  */
    7298 #line 1670 "parser.yy"
    7299     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ); }
    7300     break;
    7301 
    7302   case 452:
    7303 
    7304 /* Line 1806 of yacc.c  */
    7305 #line 1672 "parser.yy"
    7306     { (yyval.en) = (yyvsp[(4) - (6)].en); }
    7307     break;
    7308 
    7309   case 454:
    7310 
    7311 /* Line 1806 of yacc.c  */
    7312 #line 1696 "parser.yy"
     7352  case 455:
     7353
     7354/* Line 1806 of yacc.c  */
     7355#line 1697 "parser.yy"
     7356    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
     7357    break;
     7358
     7359  case 456:
     7360
     7361/* Line 1806 of yacc.c  */
     7362#line 1699 "parser.yy"
     7363    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
     7364    break;
     7365
     7366  case 457:
     7367
     7368/* Line 1806 of yacc.c  */
     7369#line 1702 "parser.yy"
     7370    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
     7371    break;
     7372
     7373  case 458:
     7374
     7375/* Line 1806 of yacc.c  */
     7376#line 1704 "parser.yy"
     7377    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
     7378    break;
     7379
     7380  case 459:
     7381
     7382/* Line 1806 of yacc.c  */
     7383#line 1706 "parser.yy"
     7384    { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); }
     7385    break;
     7386
     7387  case 460:
     7388
     7389/* Line 1806 of yacc.c  */
     7390#line 1708 "parser.yy"
     7391    { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
     7392    break;
     7393
     7394  case 462:
     7395
     7396/* Line 1806 of yacc.c  */
     7397#line 1732 "parser.yy"
    73137398    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73147399    break;
    73157400
    7316   case 455:
    7317 
    7318 /* Line 1806 of yacc.c  */
    7319 #line 1698 "parser.yy"
     7401  case 463:
     7402
     7403/* Line 1806 of yacc.c  */
     7404#line 1734 "parser.yy"
    73207405    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73217406    break;
    73227407
    7323   case 456:
    7324 
    7325 /* Line 1806 of yacc.c  */
    7326 #line 1700 "parser.yy"
     7408  case 464:
     7409
     7410/* Line 1806 of yacc.c  */
     7411#line 1736 "parser.yy"
    73277412    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    73287413    break;
    73297414
    7330   case 458:
    7331 
    7332 /* Line 1806 of yacc.c  */
    7333 #line 1706 "parser.yy"
     7415  case 466:
     7416
     7417/* Line 1806 of yacc.c  */
     7418#line 1742 "parser.yy"
    73347419    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73357420    break;
    73367421
    7337   case 459:
    7338 
    7339 /* Line 1806 of yacc.c  */
    7340 #line 1708 "parser.yy"
     7422  case 467:
     7423
     7424/* Line 1806 of yacc.c  */
     7425#line 1744 "parser.yy"
    73417426    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73427427    break;
    73437428
    7344   case 460:
    7345 
    7346 /* Line 1806 of yacc.c  */
    7347 #line 1713 "parser.yy"
     7429  case 468:
     7430
     7431/* Line 1806 of yacc.c  */
     7432#line 1749 "parser.yy"
    73487433    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    73497434    break;
    73507435
    7351   case 462:
    7352 
    7353 /* Line 1806 of yacc.c  */
    7354 #line 1719 "parser.yy"
     7436  case 470:
     7437
     7438/* Line 1806 of yacc.c  */
     7439#line 1755 "parser.yy"
    73557440    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    73567441    break;
    73577442
    7358   case 463:
    7359 
    7360 /* Line 1806 of yacc.c  */
    7361 #line 1724 "parser.yy"
     7443  case 471:
     7444
     7445/* Line 1806 of yacc.c  */
     7446#line 1760 "parser.yy"
    73627447    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    73637448    break;
    73647449
    7365   case 464:
    7366 
    7367 /* Line 1806 of yacc.c  */
    7368 #line 1726 "parser.yy"
     7450  case 472:
     7451
     7452/* Line 1806 of yacc.c  */
     7453#line 1762 "parser.yy"
    73697454    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    73707455    break;
    73717456
    7372   case 466:
    7373 
    7374 /* Line 1806 of yacc.c  */
    7375 #line 1732 "parser.yy"
     7457  case 474:
     7458
     7459/* Line 1806 of yacc.c  */
     7460#line 1768 "parser.yy"
    73767461    { (yyval.tclass) = DeclarationNode::Type; }
    73777462    break;
    73787463
    7379   case 467:
    7380 
    7381 /* Line 1806 of yacc.c  */
    7382 #line 1734 "parser.yy"
     7464  case 475:
     7465
     7466/* Line 1806 of yacc.c  */
     7467#line 1770 "parser.yy"
    73837468    { (yyval.tclass) = DeclarationNode::Ftype; }
    73847469    break;
    73857470
    7386   case 468:
    7387 
    7388 /* Line 1806 of yacc.c  */
    7389 #line 1736 "parser.yy"
     7471  case 476:
     7472
     7473/* Line 1806 of yacc.c  */
     7474#line 1772 "parser.yy"
    73907475    { (yyval.tclass) = DeclarationNode::Dtype; }
    73917476    break;
    73927477
    7393   case 469:
    7394 
    7395 /* Line 1806 of yacc.c  */
    7396 #line 1741 "parser.yy"
     7478  case 477:
     7479
     7480/* Line 1806 of yacc.c  */
     7481#line 1777 "parser.yy"
    73977482    { (yyval.decl) = 0; }
    73987483    break;
    73997484
    7400   case 470:
    7401 
    7402 /* Line 1806 of yacc.c  */
    7403 #line 1743 "parser.yy"
     7485  case 478:
     7486
     7487/* Line 1806 of yacc.c  */
     7488#line 1779 "parser.yy"
    74047489    { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    74057490    break;
    74067491
    7407   case 471:
    7408 
    7409 /* Line 1806 of yacc.c  */
    7410 #line 1748 "parser.yy"
     7492  case 479:
     7493
     7494/* Line 1806 of yacc.c  */
     7495#line 1784 "parser.yy"
    74117496    {
    74127497                        typedefTable.openContext( *(yyvsp[(2) - (5)].tok) );
     
    74157500    break;
    74167501
    7417   case 472:
    7418 
    7419 /* Line 1806 of yacc.c  */
    7420 #line 1753 "parser.yy"
     7502  case 480:
     7503
     7504/* Line 1806 of yacc.c  */
     7505#line 1789 "parser.yy"
    74217506    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    74227507    break;
    74237508
    7424   case 473:
    7425 
    7426 /* Line 1806 of yacc.c  */
    7427 #line 1755 "parser.yy"
     7509  case 481:
     7510
     7511/* Line 1806 of yacc.c  */
     7512#line 1791 "parser.yy"
    74287513    { (yyval.decl) = 0; }
    74297514    break;
    74307515
    7431   case 474:
    7432 
    7433 /* Line 1806 of yacc.c  */
    7434 #line 1760 "parser.yy"
     7516  case 482:
     7517
     7518/* Line 1806 of yacc.c  */
     7519#line 1796 "parser.yy"
    74357520    { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
    74367521    break;
    74377522
    7438   case 476:
    7439 
    7440 /* Line 1806 of yacc.c  */
    7441 #line 1763 "parser.yy"
     7523  case 484:
     7524
     7525/* Line 1806 of yacc.c  */
     7526#line 1799 "parser.yy"
    74427527    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
    74437528    break;
    74447529
    7445   case 477:
    7446 
    7447 /* Line 1806 of yacc.c  */
    7448 #line 1765 "parser.yy"
     7530  case 485:
     7531
     7532/* Line 1806 of yacc.c  */
     7533#line 1801 "parser.yy"
    74497534    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    74507535    break;
    74517536
    7452   case 478:
    7453 
    7454 /* Line 1806 of yacc.c  */
    7455 #line 1770 "parser.yy"
     7537  case 486:
     7538
     7539/* Line 1806 of yacc.c  */
     7540#line 1806 "parser.yy"
    74567541    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    74577542    break;
    74587543
    7459   case 479:
    7460 
    7461 /* Line 1806 of yacc.c  */
    7462 #line 1772 "parser.yy"
     7544  case 487:
     7545
     7546/* Line 1806 of yacc.c  */
     7547#line 1808 "parser.yy"
    74637548    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    74647549    break;
    74657550
    7466   case 480:
    7467 
    7468 /* Line 1806 of yacc.c  */
    7469 #line 1774 "parser.yy"
     7551  case 488:
     7552
     7553/* Line 1806 of yacc.c  */
     7554#line 1810 "parser.yy"
    74707555    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    74717556    break;
    74727557
    7473   case 481:
    7474 
    7475 /* Line 1806 of yacc.c  */
    7476 #line 1779 "parser.yy"
     7558  case 489:
     7559
     7560/* Line 1806 of yacc.c  */
     7561#line 1815 "parser.yy"
    74777562    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    74787563    break;
    74797564
    7480   case 482:
    7481 
    7482 /* Line 1806 of yacc.c  */
    7483 #line 1781 "parser.yy"
     7565  case 490:
     7566
     7567/* Line 1806 of yacc.c  */
     7568#line 1817 "parser.yy"
    74847569    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    74857570    break;
    74867571
    7487   case 483:
    7488 
    7489 /* Line 1806 of yacc.c  */
    7490 #line 1786 "parser.yy"
     7572  case 491:
     7573
     7574/* Line 1806 of yacc.c  */
     7575#line 1822 "parser.yy"
    74917576    {
    74927577                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    74957580    break;
    74967581
    7497   case 484:
    7498 
    7499 /* Line 1806 of yacc.c  */
    7500 #line 1791 "parser.yy"
     7582  case 492:
     7583
     7584/* Line 1806 of yacc.c  */
     7585#line 1827 "parser.yy"
    75017586    {
    75027587                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    75057590    break;
    75067591
    7507   case 485:
    7508 
    7509 /* Line 1806 of yacc.c  */
    7510 #line 1799 "parser.yy"
     7592  case 493:
     7593
     7594/* Line 1806 of yacc.c  */
     7595#line 1835 "parser.yy"
    75117596    {
    75127597                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    75157600    break;
    75167601
    7517   case 486:
    7518 
    7519 /* Line 1806 of yacc.c  */
    7520 #line 1804 "parser.yy"
     7602  case 494:
     7603
     7604/* Line 1806 of yacc.c  */
     7605#line 1840 "parser.yy"
    75217606    {
    75227607                        typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) );
     
    75257610    break;
    75267611
    7527   case 487:
    7528 
    7529 /* Line 1806 of yacc.c  */
    7530 #line 1809 "parser.yy"
     7612  case 495:
     7613
     7614/* Line 1806 of yacc.c  */
     7615#line 1845 "parser.yy"
    75317616    {
    75327617                        typedefTable.leaveContext();
     
    75367621    break;
    75377622
    7538   case 489:
    7539 
    7540 /* Line 1806 of yacc.c  */
    7541 #line 1819 "parser.yy"
     7623  case 497:
     7624
     7625/* Line 1806 of yacc.c  */
     7626#line 1855 "parser.yy"
    75427627    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    75437628    break;
    75447629
    7545   case 492:
    7546 
    7547 /* Line 1806 of yacc.c  */
    7548 #line 1829 "parser.yy"
     7630  case 500:
     7631
     7632/* Line 1806 of yacc.c  */
     7633#line 1865 "parser.yy"
    75497634    {
    75507635                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    75537638    break;
    75547639
    7555   case 493:
    7556 
    7557 /* Line 1806 of yacc.c  */
    7558 #line 1834 "parser.yy"
     7640  case 501:
     7641
     7642/* Line 1806 of yacc.c  */
     7643#line 1870 "parser.yy"
    75597644    {
    75607645                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    75637648    break;
    75647649
    7565   case 494:
    7566 
    7567 /* Line 1806 of yacc.c  */
    7568 #line 1839 "parser.yy"
     7650  case 502:
     7651
     7652/* Line 1806 of yacc.c  */
     7653#line 1875 "parser.yy"
    75697654    {
    75707655                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    75737658    break;
    75747659
    7575   case 495:
    7576 
    7577 /* Line 1806 of yacc.c  */
    7578 #line 1847 "parser.yy"
     7660  case 503:
     7661
     7662/* Line 1806 of yacc.c  */
     7663#line 1883 "parser.yy"
    75797664    {
    75807665                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    75837668    break;
    75847669
    7585   case 496:
    7586 
    7587 /* Line 1806 of yacc.c  */
    7588 #line 1852 "parser.yy"
     7670  case 504:
     7671
     7672/* Line 1806 of yacc.c  */
     7673#line 1888 "parser.yy"
    75897674    {
    75907675                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    75937678    break;
    75947679
    7595   case 497:
    7596 
    7597 /* Line 1806 of yacc.c  */
    7598 #line 1862 "parser.yy"
     7680  case 505:
     7681
     7682/* Line 1806 of yacc.c  */
     7683#line 1898 "parser.yy"
    75997684    {}
    76007685    break;
    76017686
    7602   case 498:
    7603 
    7604 /* Line 1806 of yacc.c  */
    7605 #line 1864 "parser.yy"
     7687  case 506:
     7688
     7689/* Line 1806 of yacc.c  */
     7690#line 1900 "parser.yy"
    76067691    {
    76077692                        if ( theTree ) {
     
    76137698    break;
    76147699
    7615   case 500:
    7616 
    7617 /* Line 1806 of yacc.c  */
    7618 #line 1876 "parser.yy"
     7700  case 508:
     7701
     7702/* Line 1806 of yacc.c  */
     7703#line 1912 "parser.yy"
    76197704    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    76207705    break;
    76217706
    7622   case 501:
    7623 
    7624 /* Line 1806 of yacc.c  */
    7625 #line 1881 "parser.yy"
     7707  case 509:
     7708
     7709/* Line 1806 of yacc.c  */
     7710#line 1917 "parser.yy"
    76267711    { (yyval.decl) = 0; }
    76277712    break;
    76287713
    7629   case 505:
    7630 
    7631 /* Line 1806 of yacc.c  */
    7632 #line 1889 "parser.yy"
     7714  case 513:
     7715
     7716/* Line 1806 of yacc.c  */
     7717#line 1925 "parser.yy"
    76337718    {}
    76347719    break;
    76357720
    7636   case 506:
    7637 
    7638 /* Line 1806 of yacc.c  */
    7639 #line 1891 "parser.yy"
     7721  case 514:
     7722
     7723/* Line 1806 of yacc.c  */
     7724#line 1927 "parser.yy"
    76407725    {
    76417726                        linkageStack.push( linkage );
     
    76447729    break;
    76457730
    7646   case 507:
    7647 
    7648 /* Line 1806 of yacc.c  */
    7649 #line 1896 "parser.yy"
     7731  case 515:
     7732
     7733/* Line 1806 of yacc.c  */
     7734#line 1932 "parser.yy"
    76507735    {
    76517736                        linkage = linkageStack.top();
     
    76557740    break;
    76567741
    7657   case 508:
    7658 
    7659 /* Line 1806 of yacc.c  */
    7660 #line 1902 "parser.yy"
     7742  case 516:
     7743
     7744/* Line 1806 of yacc.c  */
     7745#line 1938 "parser.yy"
    76617746    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76627747    break;
    76637748
    7664   case 510:
    7665 
    7666 /* Line 1806 of yacc.c  */
    7667 #line 1912 "parser.yy"
     7749  case 518:
     7750
     7751/* Line 1806 of yacc.c  */
     7752#line 1948 "parser.yy"
    76687753    {
    76697754                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    76737758    break;
    76747759
    7675   case 511:
    7676 
    7677 /* Line 1806 of yacc.c  */
    7678 #line 1918 "parser.yy"
     7760  case 519:
     7761
     7762/* Line 1806 of yacc.c  */
     7763#line 1954 "parser.yy"
    76797764    {
    76807765                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    76847769    break;
    76857770
    7686   case 512:
    7687 
    7688 /* Line 1806 of yacc.c  */
    7689 #line 1927 "parser.yy"
     7771  case 520:
     7772
     7773/* Line 1806 of yacc.c  */
     7774#line 1963 "parser.yy"
    76907775    {
    76917776                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    76957780    break;
    76967781
    7697   case 513:
    7698 
    7699 /* Line 1806 of yacc.c  */
    7700 #line 1933 "parser.yy"
     7782  case 521:
     7783
     7784/* Line 1806 of yacc.c  */
     7785#line 1969 "parser.yy"
    77017786    {
    77027787                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77067791    break;
    77077792
    7708   case 514:
    7709 
    7710 /* Line 1806 of yacc.c  */
    7711 #line 1939 "parser.yy"
     7793  case 522:
     7794
     7795/* Line 1806 of yacc.c  */
     7796#line 1975 "parser.yy"
    77127797    {
    77137798                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77177802    break;
    77187803
    7719   case 515:
    7720 
    7721 /* Line 1806 of yacc.c  */
    7722 #line 1945 "parser.yy"
     7804  case 523:
     7805
     7806/* Line 1806 of yacc.c  */
     7807#line 1981 "parser.yy"
    77237808    {
    77247809                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77287813    break;
    77297814
    7730   case 516:
    7731 
    7732 /* Line 1806 of yacc.c  */
    7733 #line 1951 "parser.yy"
     7815  case 524:
     7816
     7817/* Line 1806 of yacc.c  */
     7818#line 1987 "parser.yy"
    77347819    {
    77357820                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77397824    break;
    77407825
    7741   case 517:
    7742 
    7743 /* Line 1806 of yacc.c  */
    7744 #line 1959 "parser.yy"
     7826  case 525:
     7827
     7828/* Line 1806 of yacc.c  */
     7829#line 1995 "parser.yy"
    77457830    {
    77467831                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77507835    break;
    77517836
    7752   case 518:
    7753 
    7754 /* Line 1806 of yacc.c  */
    7755 #line 1965 "parser.yy"
     7837  case 526:
     7838
     7839/* Line 1806 of yacc.c  */
     7840#line 2001 "parser.yy"
    77567841    {
    77577842                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77617846    break;
    77627847
    7763   case 519:
    7764 
    7765 /* Line 1806 of yacc.c  */
    7766 #line 1973 "parser.yy"
     7848  case 527:
     7849
     7850/* Line 1806 of yacc.c  */
     7851#line 2009 "parser.yy"
    77677852    {
    77687853                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77727857    break;
    77737858
    7774   case 520:
    7775 
    7776 /* Line 1806 of yacc.c  */
    7777 #line 1979 "parser.yy"
     7859  case 528:
     7860
     7861/* Line 1806 of yacc.c  */
     7862#line 2015 "parser.yy"
    77787863    {
    77797864                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77837868    break;
    77847869
    7785   case 524:
    7786 
    7787 /* Line 1806 of yacc.c  */
    7788 #line 1994 "parser.yy"
     7870  case 532:
     7871
     7872/* Line 1806 of yacc.c  */
     7873#line 2030 "parser.yy"
    77897874    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    77907875    break;
    77917876
    7792   case 527:
    7793 
    7794 /* Line 1806 of yacc.c  */
    7795 #line 2004 "parser.yy"
     7877  case 535:
     7878
     7879/* Line 1806 of yacc.c  */
     7880#line 2040 "parser.yy"
    77967881    { (yyval.decl) = 0; }
    77977882    break;
    77987883
    7799   case 530:
    7800 
    7801 /* Line 1806 of yacc.c  */
    7802 #line 2011 "parser.yy"
     7884  case 538:
     7885
     7886/* Line 1806 of yacc.c  */
     7887#line 2047 "parser.yy"
    78037888    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    78047889    break;
    78057890
    7806   case 531:
    7807 
    7808 /* Line 1806 of yacc.c  */
    7809 #line 2017 "parser.yy"
     7891  case 539:
     7892
     7893/* Line 1806 of yacc.c  */
     7894#line 2053 "parser.yy"
    78107895    { (yyval.decl) = 0; }
    78117896    break;
    78127897
    7813   case 537:
    7814 
    7815 /* Line 1806 of yacc.c  */
    7816 #line 2032 "parser.yy"
     7898  case 545:
     7899
     7900/* Line 1806 of yacc.c  */
     7901#line 2068 "parser.yy"
    78177902    {}
    78187903    break;
    78197904
    7820   case 538:
    7821 
    7822 /* Line 1806 of yacc.c  */
    7823 #line 2033 "parser.yy"
     7905  case 546:
     7906
     7907/* Line 1806 of yacc.c  */
     7908#line 2069 "parser.yy"
    78247909    {}
    78257910    break;
    78267911
    7827   case 539:
    7828 
    7829 /* Line 1806 of yacc.c  */
    7830 #line 2034 "parser.yy"
     7912  case 547:
     7913
     7914/* Line 1806 of yacc.c  */
     7915#line 2070 "parser.yy"
    78317916    {}
    78327917    break;
    78337918
    7834   case 540:
    7835 
    7836 /* Line 1806 of yacc.c  */
    7837 #line 2035 "parser.yy"
     7919  case 548:
     7920
     7921/* Line 1806 of yacc.c  */
     7922#line 2071 "parser.yy"
    78387923    {}
    78397924    break;
    78407925
    7841   case 541:
    7842 
    7843 /* Line 1806 of yacc.c  */
    7844 #line 2070 "parser.yy"
     7926  case 549:
     7927
     7928/* Line 1806 of yacc.c  */
     7929#line 2106 "parser.yy"
    78457930    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    78467931    break;
    78477932
    7848   case 543:
    7849 
    7850 /* Line 1806 of yacc.c  */
    7851 #line 2073 "parser.yy"
     7933  case 551:
     7934
     7935/* Line 1806 of yacc.c  */
     7936#line 2109 "parser.yy"
    78527937    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    78537938    break;
    78547939
    7855   case 544:
    7856 
    7857 /* Line 1806 of yacc.c  */
    7858 #line 2075 "parser.yy"
     7940  case 552:
     7941
     7942/* Line 1806 of yacc.c  */
     7943#line 2111 "parser.yy"
    78597944    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    78607945    break;
    78617946
    7862   case 545:
    7863 
    7864 /* Line 1806 of yacc.c  */
    7865 #line 2080 "parser.yy"
     7947  case 553:
     7948
     7949/* Line 1806 of yacc.c  */
     7950#line 2116 "parser.yy"
    78667951    {
    78677952                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    78707955    break;
    78717956
    7872   case 546:
    7873 
    7874 /* Line 1806 of yacc.c  */
    7875 #line 2085 "parser.yy"
     7957  case 554:
     7958
     7959/* Line 1806 of yacc.c  */
     7960#line 2121 "parser.yy"
    78767961    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    78777962    break;
    78787963
    7879   case 547:
    7880 
    7881 /* Line 1806 of yacc.c  */
    7882 #line 2090 "parser.yy"
     7964  case 555:
     7965
     7966/* Line 1806 of yacc.c  */
     7967#line 2126 "parser.yy"
    78837968    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    78847969    break;
    78857970
    7886   case 548:
    7887 
    7888 /* Line 1806 of yacc.c  */
    7889 #line 2092 "parser.yy"
     7971  case 556:
     7972
     7973/* Line 1806 of yacc.c  */
     7974#line 2128 "parser.yy"
    78907975    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    78917976    break;
    78927977
    7893   case 549:
    7894 
    7895 /* Line 1806 of yacc.c  */
    7896 #line 2094 "parser.yy"
     7978  case 557:
     7979
     7980/* Line 1806 of yacc.c  */
     7981#line 2130 "parser.yy"
    78977982    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    78987983    break;
    78997984
    7900   case 550:
    7901 
    7902 /* Line 1806 of yacc.c  */
    7903 #line 2099 "parser.yy"
     7985  case 558:
     7986
     7987/* Line 1806 of yacc.c  */
     7988#line 2135 "parser.yy"
    79047989    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    79057990    break;
    79067991
    7907   case 551:
    7908 
    7909 /* Line 1806 of yacc.c  */
    7910 #line 2101 "parser.yy"
     7992  case 559:
     7993
     7994/* Line 1806 of yacc.c  */
     7995#line 2137 "parser.yy"
    79117996    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    79127997    break;
    79137998
    7914   case 552:
    7915 
    7916 /* Line 1806 of yacc.c  */
    7917 #line 2103 "parser.yy"
     7999  case 560:
     8000
     8001/* Line 1806 of yacc.c  */
     8002#line 2139 "parser.yy"
    79188003    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    79198004    break;
    79208005
    7921   case 553:
    7922 
    7923 /* Line 1806 of yacc.c  */
    7924 #line 2105 "parser.yy"
     8006  case 561:
     8007
     8008/* Line 1806 of yacc.c  */
     8009#line 2141 "parser.yy"
    79258010    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79268011    break;
    79278012
    7928   case 554:
    7929 
    7930 /* Line 1806 of yacc.c  */
    7931 #line 2110 "parser.yy"
     8013  case 562:
     8014
     8015/* Line 1806 of yacc.c  */
     8016#line 2146 "parser.yy"
    79328017    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    79338018    break;
    79348019
    7935   case 555:
    7936 
    7937 /* Line 1806 of yacc.c  */
    7938 #line 2112 "parser.yy"
     8020  case 563:
     8021
     8022/* Line 1806 of yacc.c  */
     8023#line 2148 "parser.yy"
    79398024    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79408025    break;
    79418026
    7942   case 556:
    7943 
    7944 /* Line 1806 of yacc.c  */
    7945 #line 2122 "parser.yy"
     8027  case 564:
     8028
     8029/* Line 1806 of yacc.c  */
     8030#line 2158 "parser.yy"
    79468031    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79478032    break;
    79488033
    7949   case 558:
    7950 
    7951 /* Line 1806 of yacc.c  */
    7952 #line 2125 "parser.yy"
     8034  case 566:
     8035
     8036/* Line 1806 of yacc.c  */
     8037#line 2161 "parser.yy"
    79538038    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79548039    break;
    79558040
    7956   case 559:
    7957 
    7958 /* Line 1806 of yacc.c  */
    7959 #line 2130 "parser.yy"
     8041  case 567:
     8042
     8043/* Line 1806 of yacc.c  */
     8044#line 2166 "parser.yy"
    79608045    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    79618046    break;
    79628047
    7963   case 560:
    7964 
    7965 /* Line 1806 of yacc.c  */
    7966 #line 2132 "parser.yy"
     8048  case 568:
     8049
     8050/* Line 1806 of yacc.c  */
     8051#line 2168 "parser.yy"
    79678052    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    79688053    break;
    79698054
    7970   case 561:
    7971 
    7972 /* Line 1806 of yacc.c  */
    7973 #line 2134 "parser.yy"
     8055  case 569:
     8056
     8057/* Line 1806 of yacc.c  */
     8058#line 2170 "parser.yy"
    79748059    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79758060    break;
    79768061
    7977   case 562:
    7978 
    7979 /* Line 1806 of yacc.c  */
    7980 #line 2139 "parser.yy"
     8062  case 570:
     8063
     8064/* Line 1806 of yacc.c  */
     8065#line 2175 "parser.yy"
    79818066    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    79828067    break;
    79838068
    7984   case 563:
    7985 
    7986 /* Line 1806 of yacc.c  */
    7987 #line 2141 "parser.yy"
     8069  case 571:
     8070
     8071/* Line 1806 of yacc.c  */
     8072#line 2177 "parser.yy"
    79888073    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    79898074    break;
    79908075
    7991   case 564:
    7992 
    7993 /* Line 1806 of yacc.c  */
    7994 #line 2143 "parser.yy"
     8076  case 572:
     8077
     8078/* Line 1806 of yacc.c  */
     8079#line 2179 "parser.yy"
    79958080    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79968081    break;
    79978082
    7998   case 565:
    7999 
    8000 /* Line 1806 of yacc.c  */
    8001 #line 2148 "parser.yy"
     8083  case 573:
     8084
     8085/* Line 1806 of yacc.c  */
     8086#line 2184 "parser.yy"
    80028087    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80038088    break;
    80048089
    8005   case 566:
    8006 
    8007 /* Line 1806 of yacc.c  */
    8008 #line 2150 "parser.yy"
     8090  case 574:
     8091
     8092/* Line 1806 of yacc.c  */
     8093#line 2186 "parser.yy"
    80098094    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80108095    break;
    80118096
    8012   case 567:
    8013 
    8014 /* Line 1806 of yacc.c  */
    8015 #line 2152 "parser.yy"
     8097  case 575:
     8098
     8099/* Line 1806 of yacc.c  */
     8100#line 2188 "parser.yy"
    80168101    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80178102    break;
    80188103
    8019   case 571:
    8020 
    8021 /* Line 1806 of yacc.c  */
    8022 #line 2167 "parser.yy"
     8104  case 579:
     8105
     8106/* Line 1806 of yacc.c  */
     8107#line 2203 "parser.yy"
    80238108    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    80248109    break;
    80258110
    8026   case 572:
    8027 
    8028 /* Line 1806 of yacc.c  */
    8029 #line 2169 "parser.yy"
     8111  case 580:
     8112
     8113/* Line 1806 of yacc.c  */
     8114#line 2205 "parser.yy"
    80308115    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    80318116    break;
    80328117
    8033   case 573:
    8034 
    8035 /* Line 1806 of yacc.c  */
    8036 #line 2171 "parser.yy"
     8118  case 581:
     8119
     8120/* Line 1806 of yacc.c  */
     8121#line 2207 "parser.yy"
    80378122    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80388123    break;
    80398124
    8040   case 574:
    8041 
    8042 /* Line 1806 of yacc.c  */
    8043 #line 2176 "parser.yy"
     8125  case 582:
     8126
     8127/* Line 1806 of yacc.c  */
     8128#line 2212 "parser.yy"
    80448129    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80458130    break;
    80468131
    8047   case 575:
    8048 
    8049 /* Line 1806 of yacc.c  */
    8050 #line 2178 "parser.yy"
     8132  case 583:
     8133
     8134/* Line 1806 of yacc.c  */
     8135#line 2214 "parser.yy"
    80518136    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80528137    break;
    80538138
    8054   case 576:
    8055 
    8056 /* Line 1806 of yacc.c  */
    8057 #line 2180 "parser.yy"
     8139  case 584:
     8140
     8141/* Line 1806 of yacc.c  */
     8142#line 2216 "parser.yy"
    80588143    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80598144    break;
    80608145
    8061   case 577:
    8062 
    8063 /* Line 1806 of yacc.c  */
    8064 #line 2185 "parser.yy"
     8146  case 585:
     8147
     8148/* Line 1806 of yacc.c  */
     8149#line 2221 "parser.yy"
    80658150    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80668151    break;
    80678152
    8068   case 578:
    8069 
    8070 /* Line 1806 of yacc.c  */
    8071 #line 2187 "parser.yy"
     8153  case 586:
     8154
     8155/* Line 1806 of yacc.c  */
     8156#line 2223 "parser.yy"
    80728157    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80738158    break;
    80748159
    8075   case 579:
    8076 
    8077 /* Line 1806 of yacc.c  */
    8078 #line 2189 "parser.yy"
     8160  case 587:
     8161
     8162/* Line 1806 of yacc.c  */
     8163#line 2225 "parser.yy"
    80798164    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80808165    break;
    80818166
    8082   case 580:
    8083 
    8084 /* Line 1806 of yacc.c  */
    8085 #line 2204 "parser.yy"
     8167  case 588:
     8168
     8169/* Line 1806 of yacc.c  */
     8170#line 2240 "parser.yy"
    80868171    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80878172    break;
    80888173
    8089   case 582:
    8090 
    8091 /* Line 1806 of yacc.c  */
    8092 #line 2207 "parser.yy"
     8174  case 590:
     8175
     8176/* Line 1806 of yacc.c  */
     8177#line 2243 "parser.yy"
    80938178    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80948179    break;
    80958180
    8096   case 583:
    8097 
    8098 /* Line 1806 of yacc.c  */
    8099 #line 2209 "parser.yy"
     8181  case 591:
     8182
     8183/* Line 1806 of yacc.c  */
     8184#line 2245 "parser.yy"
    81008185    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81018186    break;
    81028187
    8103   case 585:
    8104 
    8105 /* Line 1806 of yacc.c  */
    8106 #line 2215 "parser.yy"
     8188  case 593:
     8189
     8190/* Line 1806 of yacc.c  */
     8191#line 2251 "parser.yy"
    81078192    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81088193    break;
    81098194
    8110   case 586:
    8111 
    8112 /* Line 1806 of yacc.c  */
    8113 #line 2220 "parser.yy"
     8195  case 594:
     8196
     8197/* Line 1806 of yacc.c  */
     8198#line 2256 "parser.yy"
    81148199    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81158200    break;
    81168201
    8117   case 587:
    8118 
    8119 /* Line 1806 of yacc.c  */
    8120 #line 2222 "parser.yy"
     8202  case 595:
     8203
     8204/* Line 1806 of yacc.c  */
     8205#line 2258 "parser.yy"
    81218206    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81228207    break;
    81238208
    8124   case 588:
    8125 
    8126 /* Line 1806 of yacc.c  */
    8127 #line 2224 "parser.yy"
     8209  case 596:
     8210
     8211/* Line 1806 of yacc.c  */
     8212#line 2260 "parser.yy"
    81288213    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81298214    break;
    81308215
    8131   case 589:
    8132 
    8133 /* Line 1806 of yacc.c  */
    8134 #line 2229 "parser.yy"
     8216  case 597:
     8217
     8218/* Line 1806 of yacc.c  */
     8219#line 2265 "parser.yy"
    81358220    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    81368221    break;
    81378222
    8138   case 590:
    8139 
    8140 /* Line 1806 of yacc.c  */
    8141 #line 2231 "parser.yy"
     8223  case 598:
     8224
     8225/* Line 1806 of yacc.c  */
     8226#line 2267 "parser.yy"
    81428227    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81438228    break;
    81448229
    8145   case 591:
    8146 
    8147 /* Line 1806 of yacc.c  */
    8148 #line 2233 "parser.yy"
     8230  case 599:
     8231
     8232/* Line 1806 of yacc.c  */
     8233#line 2269 "parser.yy"
    81498234    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81508235    break;
    81518236
    8152   case 592:
    8153 
    8154 /* Line 1806 of yacc.c  */
    8155 #line 2235 "parser.yy"
     8237  case 600:
     8238
     8239/* Line 1806 of yacc.c  */
     8240#line 2271 "parser.yy"
    81568241    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81578242    break;
    81588243
    8159   case 593:
    8160 
    8161 /* Line 1806 of yacc.c  */
    8162 #line 2240 "parser.yy"
     8244  case 601:
     8245
     8246/* Line 1806 of yacc.c  */
     8247#line 2276 "parser.yy"
    81638248    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    81648249    break;
    81658250
    8166   case 594:
    8167 
    8168 /* Line 1806 of yacc.c  */
    8169 #line 2242 "parser.yy"
     8251  case 602:
     8252
     8253/* Line 1806 of yacc.c  */
     8254#line 2278 "parser.yy"
    81708255    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81718256    break;
    81728257
    8173   case 595:
    8174 
    8175 /* Line 1806 of yacc.c  */
    8176 #line 2244 "parser.yy"
     8258  case 603:
     8259
     8260/* Line 1806 of yacc.c  */
     8261#line 2280 "parser.yy"
    81778262    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81788263    break;
    81798264
    8180   case 596:
    8181 
    8182 /* Line 1806 of yacc.c  */
    8183 #line 2254 "parser.yy"
     8265  case 604:
     8266
     8267/* Line 1806 of yacc.c  */
     8268#line 2290 "parser.yy"
    81848269    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81858270    break;
    81868271
    8187   case 598:
    8188 
    8189 /* Line 1806 of yacc.c  */
    8190 #line 2257 "parser.yy"
     8272  case 606:
     8273
     8274/* Line 1806 of yacc.c  */
     8275#line 2293 "parser.yy"
    81918276    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81928277    break;
    81938278
    8194   case 599:
    8195 
    8196 /* Line 1806 of yacc.c  */
    8197 #line 2259 "parser.yy"
     8279  case 607:
     8280
     8281/* Line 1806 of yacc.c  */
     8282#line 2295 "parser.yy"
    81988283    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81998284    break;
    82008285
    8201   case 600:
    8202 
    8203 /* Line 1806 of yacc.c  */
    8204 #line 2264 "parser.yy"
     8286  case 608:
     8287
     8288/* Line 1806 of yacc.c  */
     8289#line 2300 "parser.yy"
    82058290    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82068291    break;
    82078292
    8208   case 601:
    8209 
    8210 /* Line 1806 of yacc.c  */
    8211 #line 2266 "parser.yy"
     8293  case 609:
     8294
     8295/* Line 1806 of yacc.c  */
     8296#line 2302 "parser.yy"
    82128297    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82138298    break;
    82148299
    8215   case 602:
    8216 
    8217 /* Line 1806 of yacc.c  */
    8218 #line 2268 "parser.yy"
     8300  case 610:
     8301
     8302/* Line 1806 of yacc.c  */
     8303#line 2304 "parser.yy"
    82198304    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82208305    break;
    82218306
    8222   case 603:
    8223 
    8224 /* Line 1806 of yacc.c  */
    8225 #line 2273 "parser.yy"
     8307  case 611:
     8308
     8309/* Line 1806 of yacc.c  */
     8310#line 2309 "parser.yy"
    82268311    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    82278312    break;
    82288313
    8229   case 604:
    8230 
    8231 /* Line 1806 of yacc.c  */
    8232 #line 2275 "parser.yy"
     8314  case 612:
     8315
     8316/* Line 1806 of yacc.c  */
     8317#line 2311 "parser.yy"
    82338318    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82348319    break;
    82358320
    8236   case 605:
    8237 
    8238 /* Line 1806 of yacc.c  */
    8239 #line 2277 "parser.yy"
     8321  case 613:
     8322
     8323/* Line 1806 of yacc.c  */
     8324#line 2313 "parser.yy"
    82408325    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82418326    break;
    82428327
    8243   case 606:
    8244 
    8245 /* Line 1806 of yacc.c  */
    8246 #line 2279 "parser.yy"
     8328  case 614:
     8329
     8330/* Line 1806 of yacc.c  */
     8331#line 2315 "parser.yy"
    82478332    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82488333    break;
    82498334
    8250   case 607:
    8251 
    8252 /* Line 1806 of yacc.c  */
    8253 #line 2284 "parser.yy"
     8335  case 615:
     8336
     8337/* Line 1806 of yacc.c  */
     8338#line 2320 "parser.yy"
    82548339    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    82558340    break;
    82568341
    8257   case 608:
    8258 
    8259 /* Line 1806 of yacc.c  */
    8260 #line 2286 "parser.yy"
     8342  case 616:
     8343
     8344/* Line 1806 of yacc.c  */
     8345#line 2322 "parser.yy"
    82618346    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    82628347    break;
    82638348
    8264   case 609:
    8265 
    8266 /* Line 1806 of yacc.c  */
    8267 #line 2288 "parser.yy"
     8349  case 617:
     8350
     8351/* Line 1806 of yacc.c  */
     8352#line 2324 "parser.yy"
    82688353    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82698354    break;
    82708355
    8271   case 610:
    8272 
    8273 /* Line 1806 of yacc.c  */
    8274 #line 2319 "parser.yy"
     8356  case 618:
     8357
     8358/* Line 1806 of yacc.c  */
     8359#line 2355 "parser.yy"
    82758360    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82768361    break;
    82778362
    8278   case 612:
    8279 
    8280 /* Line 1806 of yacc.c  */
    8281 #line 2322 "parser.yy"
     8363  case 620:
     8364
     8365/* Line 1806 of yacc.c  */
     8366#line 2358 "parser.yy"
    82828367    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82838368    break;
    82848369
    8285   case 613:
    8286 
    8287 /* Line 1806 of yacc.c  */
    8288 #line 2324 "parser.yy"
     8370  case 621:
     8371
     8372/* Line 1806 of yacc.c  */
     8373#line 2360 "parser.yy"
    82898374    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82908375    break;
    82918376
    8292   case 614:
    8293 
    8294 /* Line 1806 of yacc.c  */
    8295 #line 2329 "parser.yy"
     8377  case 622:
     8378
     8379/* Line 1806 of yacc.c  */
     8380#line 2365 "parser.yy"
    82968381    {
    82978382                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    83008385    break;
    83018386
    8302   case 615:
    8303 
    8304 /* Line 1806 of yacc.c  */
    8305 #line 2334 "parser.yy"
     8387  case 623:
     8388
     8389/* Line 1806 of yacc.c  */
     8390#line 2370 "parser.yy"
    83068391    {
    83078392                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    83108395    break;
    83118396
    8312   case 616:
    8313 
    8314 /* Line 1806 of yacc.c  */
    8315 #line 2342 "parser.yy"
     8397  case 624:
     8398
     8399/* Line 1806 of yacc.c  */
     8400#line 2378 "parser.yy"
    83168401    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83178402    break;
    83188403
    8319   case 617:
    8320 
    8321 /* Line 1806 of yacc.c  */
    8322 #line 2344 "parser.yy"
     8404  case 625:
     8405
     8406/* Line 1806 of yacc.c  */
     8407#line 2380 "parser.yy"
    83238408    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83248409    break;
    83258410
    8326   case 618:
    8327 
    8328 /* Line 1806 of yacc.c  */
    8329 #line 2346 "parser.yy"
     8411  case 626:
     8412
     8413/* Line 1806 of yacc.c  */
     8414#line 2382 "parser.yy"
    83308415    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83318416    break;
    83328417
    8333   case 619:
    8334 
    8335 /* Line 1806 of yacc.c  */
    8336 #line 2351 "parser.yy"
     8418  case 627:
     8419
     8420/* Line 1806 of yacc.c  */
     8421#line 2387 "parser.yy"
    83378422    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83388423    break;
    83398424
    8340   case 620:
    8341 
    8342 /* Line 1806 of yacc.c  */
    8343 #line 2353 "parser.yy"
     8425  case 628:
     8426
     8427/* Line 1806 of yacc.c  */
     8428#line 2389 "parser.yy"
    83448429    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83458430    break;
    83468431
    8347   case 621:
    8348 
    8349 /* Line 1806 of yacc.c  */
    8350 #line 2358 "parser.yy"
     8432  case 629:
     8433
     8434/* Line 1806 of yacc.c  */
     8435#line 2394 "parser.yy"
    83518436    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83528437    break;
    83538438
    8354   case 622:
    8355 
    8356 /* Line 1806 of yacc.c  */
    8357 #line 2360 "parser.yy"
     8439  case 630:
     8440
     8441/* Line 1806 of yacc.c  */
     8442#line 2396 "parser.yy"
    83588443    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83598444    break;
    83608445
    8361   case 624:
    8362 
    8363 /* Line 1806 of yacc.c  */
    8364 #line 2375 "parser.yy"
     8446  case 632:
     8447
     8448/* Line 1806 of yacc.c  */
     8449#line 2411 "parser.yy"
    83658450    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83668451    break;
    83678452
    8368   case 625:
    8369 
    8370 /* Line 1806 of yacc.c  */
    8371 #line 2377 "parser.yy"
     8453  case 633:
     8454
     8455/* Line 1806 of yacc.c  */
     8456#line 2413 "parser.yy"
    83728457    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83738458    break;
    83748459
    8375   case 626:
    8376 
    8377 /* Line 1806 of yacc.c  */
    8378 #line 2382 "parser.yy"
     8460  case 634:
     8461
     8462/* Line 1806 of yacc.c  */
     8463#line 2418 "parser.yy"
    83798464    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    83808465    break;
    83818466
    8382   case 627:
    8383 
    8384 /* Line 1806 of yacc.c  */
    8385 #line 2384 "parser.yy"
     8467  case 635:
     8468
     8469/* Line 1806 of yacc.c  */
     8470#line 2420 "parser.yy"
    83868471    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    83878472    break;
    83888473
    8389   case 628:
    8390 
    8391 /* Line 1806 of yacc.c  */
    8392 #line 2386 "parser.yy"
     8474  case 636:
     8475
     8476/* Line 1806 of yacc.c  */
     8477#line 2422 "parser.yy"
    83938478    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83948479    break;
    83958480
    8396   case 629:
    8397 
    8398 /* Line 1806 of yacc.c  */
    8399 #line 2388 "parser.yy"
     8481  case 637:
     8482
     8483/* Line 1806 of yacc.c  */
     8484#line 2424 "parser.yy"
    84008485    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84018486    break;
    84028487
    8403   case 630:
    8404 
    8405 /* Line 1806 of yacc.c  */
    8406 #line 2390 "parser.yy"
     8488  case 638:
     8489
     8490/* Line 1806 of yacc.c  */
     8491#line 2426 "parser.yy"
    84078492    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84088493    break;
    84098494
    8410   case 632:
    8411 
    8412 /* Line 1806 of yacc.c  */
    8413 #line 2396 "parser.yy"
     8495  case 640:
     8496
     8497/* Line 1806 of yacc.c  */
     8498#line 2432 "parser.yy"
    84148499    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84158500    break;
    84168501
    8417   case 633:
    8418 
    8419 /* Line 1806 of yacc.c  */
    8420 #line 2398 "parser.yy"
     8502  case 641:
     8503
     8504/* Line 1806 of yacc.c  */
     8505#line 2434 "parser.yy"
    84218506    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84228507    break;
    84238508
    8424   case 634:
    8425 
    8426 /* Line 1806 of yacc.c  */
    8427 #line 2400 "parser.yy"
     8509  case 642:
     8510
     8511/* Line 1806 of yacc.c  */
     8512#line 2436 "parser.yy"
    84288513    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84298514    break;
    84308515
    8431   case 635:
    8432 
    8433 /* Line 1806 of yacc.c  */
    8434 #line 2405 "parser.yy"
     8516  case 643:
     8517
     8518/* Line 1806 of yacc.c  */
     8519#line 2441 "parser.yy"
    84358520    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    84368521    break;
    84378522
    8438   case 636:
    8439 
    8440 /* Line 1806 of yacc.c  */
    8441 #line 2407 "parser.yy"
     8523  case 644:
     8524
     8525/* Line 1806 of yacc.c  */
     8526#line 2443 "parser.yy"
    84428527    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84438528    break;
    84448529
    8445   case 637:
    8446 
    8447 /* Line 1806 of yacc.c  */
    8448 #line 2409 "parser.yy"
     8530  case 645:
     8531
     8532/* Line 1806 of yacc.c  */
     8533#line 2445 "parser.yy"
    84498534    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84508535    break;
    84518536
    8452   case 638:
    8453 
    8454 /* Line 1806 of yacc.c  */
    8455 #line 2415 "parser.yy"
     8537  case 646:
     8538
     8539/* Line 1806 of yacc.c  */
     8540#line 2451 "parser.yy"
    84568541    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    84578542    break;
    84588543
    8459   case 639:
    8460 
    8461 /* Line 1806 of yacc.c  */
    8462 #line 2417 "parser.yy"
     8544  case 647:
     8545
     8546/* Line 1806 of yacc.c  */
     8547#line 2453 "parser.yy"
    84638548    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    84648549    break;
    84658550
    8466   case 641:
    8467 
    8468 /* Line 1806 of yacc.c  */
    8469 #line 2423 "parser.yy"
     8551  case 649:
     8552
     8553/* Line 1806 of yacc.c  */
     8554#line 2459 "parser.yy"
    84708555    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    84718556    break;
    84728557
    8473   case 642:
    8474 
    8475 /* Line 1806 of yacc.c  */
    8476 #line 2425 "parser.yy"
     8558  case 650:
     8559
     8560/* Line 1806 of yacc.c  */
     8561#line 2461 "parser.yy"
    84778562    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    84788563    break;
    84798564
    8480   case 643:
    8481 
    8482 /* Line 1806 of yacc.c  */
    8483 #line 2427 "parser.yy"
     8565  case 651:
     8566
     8567/* Line 1806 of yacc.c  */
     8568#line 2463 "parser.yy"
    84848569    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    84858570    break;
    84868571
    8487   case 644:
    8488 
    8489 /* Line 1806 of yacc.c  */
    8490 #line 2429 "parser.yy"
     8572  case 652:
     8573
     8574/* Line 1806 of yacc.c  */
     8575#line 2465 "parser.yy"
    84918576    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    84928577    break;
    84938578
    8494   case 646:
    8495 
    8496 /* Line 1806 of yacc.c  */
    8497 #line 2444 "parser.yy"
     8579  case 654:
     8580
     8581/* Line 1806 of yacc.c  */
     8582#line 2480 "parser.yy"
    84988583    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84998584    break;
    85008585
    8501   case 647:
    8502 
    8503 /* Line 1806 of yacc.c  */
    8504 #line 2446 "parser.yy"
     8586  case 655:
     8587
     8588/* Line 1806 of yacc.c  */
     8589#line 2482 "parser.yy"
    85058590    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85068591    break;
    85078592
    8508   case 648:
    8509 
    8510 /* Line 1806 of yacc.c  */
    8511 #line 2451 "parser.yy"
     8593  case 656:
     8594
     8595/* Line 1806 of yacc.c  */
     8596#line 2487 "parser.yy"
    85128597    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85138598    break;
    85148599
    8515   case 649:
    8516 
    8517 /* Line 1806 of yacc.c  */
    8518 #line 2453 "parser.yy"
     8600  case 657:
     8601
     8602/* Line 1806 of yacc.c  */
     8603#line 2489 "parser.yy"
    85198604    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85208605    break;
    85218606
    8522   case 650:
    8523 
    8524 /* Line 1806 of yacc.c  */
    8525 #line 2455 "parser.yy"
     8607  case 658:
     8608
     8609/* Line 1806 of yacc.c  */
     8610#line 2491 "parser.yy"
    85268611    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85278612    break;
    85288613
    8529   case 651:
    8530 
    8531 /* Line 1806 of yacc.c  */
    8532 #line 2457 "parser.yy"
     8614  case 659:
     8615
     8616/* Line 1806 of yacc.c  */
     8617#line 2493 "parser.yy"
    85338618    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85348619    break;
    85358620
    8536   case 652:
    8537 
    8538 /* Line 1806 of yacc.c  */
    8539 #line 2459 "parser.yy"
     8621  case 660:
     8622
     8623/* Line 1806 of yacc.c  */
     8624#line 2495 "parser.yy"
    85408625    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85418626    break;
    85428627
    8543   case 654:
    8544 
    8545 /* Line 1806 of yacc.c  */
    8546 #line 2465 "parser.yy"
     8628  case 662:
     8629
     8630/* Line 1806 of yacc.c  */
     8631#line 2501 "parser.yy"
    85478632    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85488633    break;
    85498634
    8550   case 655:
    8551 
    8552 /* Line 1806 of yacc.c  */
    8553 #line 2467 "parser.yy"
     8635  case 663:
     8636
     8637/* Line 1806 of yacc.c  */
     8638#line 2503 "parser.yy"
    85548639    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85558640    break;
    85568641
    8557   case 656:
    8558 
    8559 /* Line 1806 of yacc.c  */
    8560 #line 2469 "parser.yy"
     8642  case 664:
     8643
     8644/* Line 1806 of yacc.c  */
     8645#line 2505 "parser.yy"
    85618646    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85628647    break;
    85638648
    8564   case 657:
    8565 
    8566 /* Line 1806 of yacc.c  */
    8567 #line 2474 "parser.yy"
     8649  case 665:
     8650
     8651/* Line 1806 of yacc.c  */
     8652#line 2510 "parser.yy"
    85688653    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    85698654    break;
    85708655
    8571   case 658:
    8572 
    8573 /* Line 1806 of yacc.c  */
    8574 #line 2476 "parser.yy"
     8656  case 666:
     8657
     8658/* Line 1806 of yacc.c  */
     8659#line 2512 "parser.yy"
    85758660    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85768661    break;
    85778662
    8578   case 659:
    8579 
    8580 /* Line 1806 of yacc.c  */
    8581 #line 2478 "parser.yy"
     8663  case 667:
     8664
     8665/* Line 1806 of yacc.c  */
     8666#line 2514 "parser.yy"
    85828667    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85838668    break;
    85848669
    8585   case 661:
    8586 
    8587 /* Line 1806 of yacc.c  */
    8588 #line 2485 "parser.yy"
     8670  case 669:
     8671
     8672/* Line 1806 of yacc.c  */
     8673#line 2521 "parser.yy"
    85898674    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    85908675    break;
    85918676
    8592   case 663:
    8593 
    8594 /* Line 1806 of yacc.c  */
    8595 #line 2496 "parser.yy"
     8677  case 671:
     8678
     8679/* Line 1806 of yacc.c  */
     8680#line 2532 "parser.yy"
    85968681    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    85978682    break;
    85988683
    8599   case 664:
    8600 
    8601 /* Line 1806 of yacc.c  */
    8602 #line 2499 "parser.yy"
     8684  case 672:
     8685
     8686/* Line 1806 of yacc.c  */
     8687#line 2535 "parser.yy"
    86038688    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    86048689    break;
    86058690
    8606   case 665:
    8607 
    8608 /* Line 1806 of yacc.c  */
    8609 #line 2501 "parser.yy"
     8691  case 673:
     8692
     8693/* Line 1806 of yacc.c  */
     8694#line 2537 "parser.yy"
    86108695    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    86118696    break;
    86128697
    8613   case 666:
    8614 
    8615 /* Line 1806 of yacc.c  */
    8616 #line 2504 "parser.yy"
     8698  case 674:
     8699
     8700/* Line 1806 of yacc.c  */
     8701#line 2540 "parser.yy"
    86178702    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    86188703    break;
    86198704
    8620   case 667:
    8621 
    8622 /* Line 1806 of yacc.c  */
    8623 #line 2506 "parser.yy"
     8705  case 675:
     8706
     8707/* Line 1806 of yacc.c  */
     8708#line 2542 "parser.yy"
    86248709    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    86258710    break;
    86268711
    8627   case 668:
    8628 
    8629 /* Line 1806 of yacc.c  */
    8630 #line 2508 "parser.yy"
     8712  case 676:
     8713
     8714/* Line 1806 of yacc.c  */
     8715#line 2544 "parser.yy"
    86318716    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    86328717    break;
    86338718
    8634   case 670:
    8635 
    8636 /* Line 1806 of yacc.c  */
    8637 #line 2522 "parser.yy"
     8719  case 678:
     8720
     8721/* Line 1806 of yacc.c  */
     8722#line 2558 "parser.yy"
    86388723    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86398724    break;
    86408725
    8641   case 671:
    8642 
    8643 /* Line 1806 of yacc.c  */
    8644 #line 2524 "parser.yy"
     8726  case 679:
     8727
     8728/* Line 1806 of yacc.c  */
     8729#line 2560 "parser.yy"
    86458730    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86468731    break;
    86478732
    8648   case 672:
    8649 
    8650 /* Line 1806 of yacc.c  */
    8651 #line 2529 "parser.yy"
     8733  case 680:
     8734
     8735/* Line 1806 of yacc.c  */
     8736#line 2565 "parser.yy"
    86528737    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    86538738    break;
    86548739
    8655   case 673:
    8656 
    8657 /* Line 1806 of yacc.c  */
    8658 #line 2531 "parser.yy"
     8740  case 681:
     8741
     8742/* Line 1806 of yacc.c  */
     8743#line 2567 "parser.yy"
    86598744    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    86608745    break;
    86618746
    8662   case 674:
    8663 
    8664 /* Line 1806 of yacc.c  */
    8665 #line 2533 "parser.yy"
     8747  case 682:
     8748
     8749/* Line 1806 of yacc.c  */
     8750#line 2569 "parser.yy"
    86668751    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    86678752    break;
    86688753
    8669   case 675:
    8670 
    8671 /* Line 1806 of yacc.c  */
    8672 #line 2535 "parser.yy"
     8754  case 683:
     8755
     8756/* Line 1806 of yacc.c  */
     8757#line 2571 "parser.yy"
    86738758    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    86748759    break;
    86758760
    8676   case 676:
    8677 
    8678 /* Line 1806 of yacc.c  */
    8679 #line 2537 "parser.yy"
     8761  case 684:
     8762
     8763/* Line 1806 of yacc.c  */
     8764#line 2573 "parser.yy"
    86808765    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86818766    break;
    86828767
    8683   case 678:
    8684 
    8685 /* Line 1806 of yacc.c  */
    8686 #line 2543 "parser.yy"
     8768  case 686:
     8769
     8770/* Line 1806 of yacc.c  */
     8771#line 2579 "parser.yy"
    86878772    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86888773    break;
    86898774
    8690   case 679:
    8691 
    8692 /* Line 1806 of yacc.c  */
    8693 #line 2545 "parser.yy"
     8775  case 687:
     8776
     8777/* Line 1806 of yacc.c  */
     8778#line 2581 "parser.yy"
    86948779    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86958780    break;
    86968781
    8697   case 680:
    8698 
    8699 /* Line 1806 of yacc.c  */
    8700 #line 2547 "parser.yy"
     8782  case 688:
     8783
     8784/* Line 1806 of yacc.c  */
     8785#line 2583 "parser.yy"
    87018786    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87028787    break;
    87038788
    8704   case 681:
    8705 
    8706 /* Line 1806 of yacc.c  */
    8707 #line 2552 "parser.yy"
     8789  case 689:
     8790
     8791/* Line 1806 of yacc.c  */
     8792#line 2588 "parser.yy"
    87088793    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87098794    break;
    87108795
    8711   case 682:
    8712 
    8713 /* Line 1806 of yacc.c  */
    8714 #line 2554 "parser.yy"
     8796  case 690:
     8797
     8798/* Line 1806 of yacc.c  */
     8799#line 2590 "parser.yy"
    87158800    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87168801    break;
    87178802
    8718   case 685:
    8719 
    8720 /* Line 1806 of yacc.c  */
    8721 #line 2564 "parser.yy"
     8803  case 693:
     8804
     8805/* Line 1806 of yacc.c  */
     8806#line 2600 "parser.yy"
    87228807    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    87238808    break;
    87248809
    8725   case 688:
    8726 
    8727 /* Line 1806 of yacc.c  */
    8728 #line 2574 "parser.yy"
     8810  case 696:
     8811
     8812/* Line 1806 of yacc.c  */
     8813#line 2610 "parser.yy"
    87298814    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    87308815    break;
    87318816
    8732   case 689:
    8733 
    8734 /* Line 1806 of yacc.c  */
    8735 #line 2576 "parser.yy"
     8817  case 697:
     8818
     8819/* Line 1806 of yacc.c  */
     8820#line 2612 "parser.yy"
    87368821    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    87378822    break;
    87388823
    8739   case 690:
    8740 
    8741 /* Line 1806 of yacc.c  */
    8742 #line 2578 "parser.yy"
     8824  case 698:
     8825
     8826/* Line 1806 of yacc.c  */
     8827#line 2614 "parser.yy"
    87438828    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    87448829    break;
    87458830
    8746   case 691:
    8747 
    8748 /* Line 1806 of yacc.c  */
    8749 #line 2580 "parser.yy"
     8831  case 699:
     8832
     8833/* Line 1806 of yacc.c  */
     8834#line 2616 "parser.yy"
    87508835    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    87518836    break;
    87528837
    8753   case 692:
    8754 
    8755 /* Line 1806 of yacc.c  */
    8756 #line 2582 "parser.yy"
     8838  case 700:
     8839
     8840/* Line 1806 of yacc.c  */
     8841#line 2618 "parser.yy"
    87578842    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    87588843    break;
    87598844
    8760   case 693:
    8761 
    8762 /* Line 1806 of yacc.c  */
    8763 #line 2584 "parser.yy"
     8845  case 701:
     8846
     8847/* Line 1806 of yacc.c  */
     8848#line 2620 "parser.yy"
    87648849    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    87658850    break;
    87668851
    8767   case 694:
    8768 
    8769 /* Line 1806 of yacc.c  */
    8770 #line 2591 "parser.yy"
     8852  case 702:
     8853
     8854/* Line 1806 of yacc.c  */
     8855#line 2627 "parser.yy"
    87718856    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    87728857    break;
    87738858
    8774   case 695:
    8775 
    8776 /* Line 1806 of yacc.c  */
    8777 #line 2593 "parser.yy"
     8859  case 703:
     8860
     8861/* Line 1806 of yacc.c  */
     8862#line 2629 "parser.yy"
    87788863    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    87798864    break;
    87808865
    8781   case 696:
    8782 
    8783 /* Line 1806 of yacc.c  */
    8784 #line 2595 "parser.yy"
     8866  case 704:
     8867
     8868/* Line 1806 of yacc.c  */
     8869#line 2631 "parser.yy"
    87858870    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    87868871    break;
    87878872
    8788   case 697:
    8789 
    8790 /* Line 1806 of yacc.c  */
    8791 #line 2597 "parser.yy"
     8873  case 705:
     8874
     8875/* Line 1806 of yacc.c  */
     8876#line 2633 "parser.yy"
    87928877    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    87938878    break;
    87948879
    8795   case 698:
    8796 
    8797 /* Line 1806 of yacc.c  */
    8798 #line 2599 "parser.yy"
     8880  case 706:
     8881
     8882/* Line 1806 of yacc.c  */
     8883#line 2635 "parser.yy"
    87998884    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88008885    break;
    88018886
    8802   case 699:
    8803 
    8804 /* Line 1806 of yacc.c  */
    8805 #line 2601 "parser.yy"
     8887  case 707:
     8888
     8889/* Line 1806 of yacc.c  */
     8890#line 2637 "parser.yy"
    88068891    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88078892    break;
    88088893
    8809   case 700:
    8810 
    8811 /* Line 1806 of yacc.c  */
    8812 #line 2603 "parser.yy"
     8894  case 708:
     8895
     8896/* Line 1806 of yacc.c  */
     8897#line 2639 "parser.yy"
    88138898    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88148899    break;
    88158900
    8816   case 701:
    8817 
    8818 /* Line 1806 of yacc.c  */
    8819 #line 2605 "parser.yy"
     8901  case 709:
     8902
     8903/* Line 1806 of yacc.c  */
     8904#line 2641 "parser.yy"
    88208905    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88218906    break;
    88228907
    8823   case 702:
    8824 
    8825 /* Line 1806 of yacc.c  */
    8826 #line 2607 "parser.yy"
     8908  case 710:
     8909
     8910/* Line 1806 of yacc.c  */
     8911#line 2643 "parser.yy"
    88278912    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    88288913    break;
    88298914
    8830   case 703:
    8831 
    8832 /* Line 1806 of yacc.c  */
    8833 #line 2609 "parser.yy"
     8915  case 711:
     8916
     8917/* Line 1806 of yacc.c  */
     8918#line 2645 "parser.yy"
    88348919    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88358920    break;
    88368921
    8837   case 704:
    8838 
    8839 /* Line 1806 of yacc.c  */
    8840 #line 2614 "parser.yy"
     8922  case 712:
     8923
     8924/* Line 1806 of yacc.c  */
     8925#line 2650 "parser.yy"
    88418926    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    88428927    break;
    88438928
    8844   case 705:
    8845 
    8846 /* Line 1806 of yacc.c  */
    8847 #line 2616 "parser.yy"
     8929  case 713:
     8930
     8931/* Line 1806 of yacc.c  */
     8932#line 2652 "parser.yy"
    88488933    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    88498934    break;
    88508935
    8851   case 706:
    8852 
    8853 /* Line 1806 of yacc.c  */
    8854 #line 2621 "parser.yy"
     8936  case 714:
     8937
     8938/* Line 1806 of yacc.c  */
     8939#line 2657 "parser.yy"
    88558940    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    88568941    break;
    88578942
    8858   case 707:
    8859 
    8860 /* Line 1806 of yacc.c  */
    8861 #line 2623 "parser.yy"
     8943  case 715:
     8944
     8945/* Line 1806 of yacc.c  */
     8946#line 2659 "parser.yy"
    88628947    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    88638948    break;
    88648949
    8865   case 709:
    8866 
    8867 /* Line 1806 of yacc.c  */
    8868 #line 2650 "parser.yy"
     8950  case 717:
     8951
     8952/* Line 1806 of yacc.c  */
     8953#line 2686 "parser.yy"
    88698954    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    88708955    break;
    88718956
    8872   case 713:
    8873 
    8874 /* Line 1806 of yacc.c  */
    8875 #line 2661 "parser.yy"
     8957  case 721:
     8958
     8959/* Line 1806 of yacc.c  */
     8960#line 2697 "parser.yy"
    88768961    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88778962    break;
    88788963
    8879   case 714:
    8880 
    8881 /* Line 1806 of yacc.c  */
    8882 #line 2663 "parser.yy"
     8964  case 722:
     8965
     8966/* Line 1806 of yacc.c  */
     8967#line 2699 "parser.yy"
    88838968    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88848969    break;
    88858970
    8886   case 715:
    8887 
    8888 /* Line 1806 of yacc.c  */
    8889 #line 2665 "parser.yy"
     8971  case 723:
     8972
     8973/* Line 1806 of yacc.c  */
     8974#line 2701 "parser.yy"
    88908975    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88918976    break;
    88928977
    8893   case 716:
    8894 
    8895 /* Line 1806 of yacc.c  */
    8896 #line 2667 "parser.yy"
     8978  case 724:
     8979
     8980/* Line 1806 of yacc.c  */
     8981#line 2703 "parser.yy"
    88978982    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88988983    break;
    88998984
    8900   case 717:
    8901 
    8902 /* Line 1806 of yacc.c  */
    8903 #line 2669 "parser.yy"
     8985  case 725:
     8986
     8987/* Line 1806 of yacc.c  */
     8988#line 2705 "parser.yy"
    89048989    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89058990    break;
    89068991
    8907   case 718:
    8908 
    8909 /* Line 1806 of yacc.c  */
    8910 #line 2671 "parser.yy"
     8992  case 726:
     8993
     8994/* Line 1806 of yacc.c  */
     8995#line 2707 "parser.yy"
    89118996    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89128997    break;
    89138998
    8914   case 719:
    8915 
    8916 /* Line 1806 of yacc.c  */
    8917 #line 2678 "parser.yy"
     8999  case 727:
     9000
     9001/* Line 1806 of yacc.c  */
     9002#line 2714 "parser.yy"
    89189003    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89199004    break;
    89209005
    8921   case 720:
    8922 
    8923 /* Line 1806 of yacc.c  */
    8924 #line 2680 "parser.yy"
     9006  case 728:
     9007
     9008/* Line 1806 of yacc.c  */
     9009#line 2716 "parser.yy"
    89259010    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89269011    break;
    89279012
    8928   case 721:
    8929 
    8930 /* Line 1806 of yacc.c  */
    8931 #line 2682 "parser.yy"
     9013  case 729:
     9014
     9015/* Line 1806 of yacc.c  */
     9016#line 2718 "parser.yy"
    89329017    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89339018    break;
    89349019
    8935   case 722:
    8936 
    8937 /* Line 1806 of yacc.c  */
    8938 #line 2684 "parser.yy"
     9020  case 730:
     9021
     9022/* Line 1806 of yacc.c  */
     9023#line 2720 "parser.yy"
    89399024    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89409025    break;
    89419026
    8942   case 723:
    8943 
    8944 /* Line 1806 of yacc.c  */
    8945 #line 2686 "parser.yy"
     9027  case 731:
     9028
     9029/* Line 1806 of yacc.c  */
     9030#line 2722 "parser.yy"
    89469031    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89479032    break;
    89489033
    8949   case 724:
    8950 
    8951 /* Line 1806 of yacc.c  */
    8952 #line 2688 "parser.yy"
     9034  case 732:
     9035
     9036/* Line 1806 of yacc.c  */
     9037#line 2724 "parser.yy"
    89539038    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89549039    break;
    89559040
    8956   case 725:
    8957 
    8958 /* Line 1806 of yacc.c  */
    8959 #line 2693 "parser.yy"
     9041  case 733:
     9042
     9043/* Line 1806 of yacc.c  */
     9044#line 2729 "parser.yy"
    89609045    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    89619046    break;
    89629047
    8963   case 726:
    8964 
    8965 /* Line 1806 of yacc.c  */
    8966 #line 2698 "parser.yy"
     9048  case 734:
     9049
     9050/* Line 1806 of yacc.c  */
     9051#line 2734 "parser.yy"
    89679052    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    89689053    break;
    89699054
    8970   case 727:
    8971 
    8972 /* Line 1806 of yacc.c  */
    8973 #line 2700 "parser.yy"
     9055  case 735:
     9056
     9057/* Line 1806 of yacc.c  */
     9058#line 2736 "parser.yy"
    89749059    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    89759060    break;
    89769061
    8977   case 728:
    8978 
    8979 /* Line 1806 of yacc.c  */
    8980 #line 2702 "parser.yy"
     9062  case 736:
     9063
     9064/* Line 1806 of yacc.c  */
     9065#line 2738 "parser.yy"
    89819066    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    89829067    break;
    89839068
    8984   case 731:
    8985 
    8986 /* Line 1806 of yacc.c  */
    8987 #line 2726 "parser.yy"
     9069  case 739:
     9070
     9071/* Line 1806 of yacc.c  */
     9072#line 2762 "parser.yy"
    89889073    { (yyval.en) = 0; }
    89899074    break;
    89909075
    8991   case 732:
    8992 
    8993 /* Line 1806 of yacc.c  */
    8994 #line 2728 "parser.yy"
     9076  case 740:
     9077
     9078/* Line 1806 of yacc.c  */
     9079#line 2764 "parser.yy"
    89959080    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    89969081    break;
     
    89999084
    90009085/* Line 1806 of yacc.c  */
    9001 #line 9002 "Parser/parser.cc"
     9086#line 9087 "Parser/parser.cc"
    90029087      default: break;
    90039088    }
     
    92309315
    92319316/* Line 2067 of yacc.c  */
    9232 #line 2731 "parser.yy"
     9317#line 2767 "parser.yy"
    92339318
    92349319// ----end of grammar----
  • src/Parser/parser.h

    r18997b9 r353d168  
    256256        StatementNode *sn;
    257257        ConstantNode *constant;
     258        LabelNode *label;
    258259        InitializerNode *in;
     260        bool flag;
    259261
    260262
    261263
    262264/* Line 2068 of yacc.c  */
    263 #line 264 "Parser/parser.h"
     265#line 266 "Parser/parser.h"
    264266} YYSTYPE;
    265267# define YYSTYPE_IS_TRIVIAL 1
  • src/Parser/parser.yy

    r18997b9 r353d168  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 16 16:25:12 2015
    13 // Update Count     : 1267
     12// Last Modified On : Tue Aug 11 16:01:49 2015
     13// Update Count     : 1350
    1414//
    1515
     
    115115        StatementNode *sn;
    116116        ConstantNode *constant;
     117        LabelNode *label;
    117118        InitializerNode *in;
     119        bool flag;
    118120}
    119121
     
    134136%type<en> argument_expression_list              argument_expression                     for_control_expression          assignment_opt
    135137%type<en> subrange
     138%type<en> asm_operands_opt asm_operands_list asm_operand
     139%type<label> label_list
     140%type<constant> asm_clobbers_list_opt
     141%type<flag> asm_volatile_opt
    136142
    137143// statements
     
    332338        | zero_one
    333339                { $$ = new VarRefNode( $1 ); }
    334         | constant
    335                 { $$ = $1; }
    336         | string_literal_list
    337                 { $$ = $1; }
    338340        | '(' comma_expression ')'
    339341                { $$ = $2; }
     
    378380        | assignment_expression
    379381        | no_attr_identifier ':' assignment_expression
    380                 { $$ = $3->set_asArgName( $1 ); }
     382                { $$ = $3->set_argName( $1 ); }
    381383                // Only a list of no_attr_identifier_or_type_name is allowed in this context. However, there is insufficient
    382384                // look ahead to distinguish between this list of parameter names and a tuple, so the tuple form must be used
    383385                // with an appropriate semantic check.
    384386        | '[' push assignment_expression pop ']' ':' assignment_expression
    385                 { $$ = $7->set_asArgName( $3 ); }
     387                { $$ = $7->set_argName( $3 ); }
    386388        | '[' push assignment_expression ',' tuple_expression_list pop ']' ':' assignment_expression
    387                 { $$ = $9->set_asArgName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)$3->set_link( flattenCommas( $5 )))); }
     389                { $$ = $9->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)$3->set_link( flattenCommas( $5 )))); }
    388390        ;
    389391
     
    408410unary_expression:
    409411        postfix_expression
     412        // first location where constant/string can have operator applied: sizeof 3/sizeof "abc"
     413        // still requires semantics checks, e.g., ++3, 3--, *3, &&3
     414        | constant
     415                { $$ = $1; }
     416        | string_literal_list
     417                { $$ = $1; }
    410418        | ICR unary_expression
    411419                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), $2 ); }
     
    635643                // requires its own scope
    636644          push push
    637           label_declaration_opt                                                         // GCC, local labels
     645          local_label_declaration_opt                                           // GCC, local labels
    638646          block_item_list pop '}'                                                       // C99, intermix declarations and statements
    639647                { $$ = new CompoundStmtNode( $5 ); }
     
    754762
    755763fall_through:                                                                                   // CFA
    756         FALLTHRU                                                                        { $$ = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
    757         | FALLTHRU ';'                                                          { $$ = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
     764        FALLTHRU                                                                        { $$ = new StatementNode( StatementNode::Fallthru ); }
     765        | FALLTHRU ';'                                                          { $$ = new StatementNode( StatementNode::Fallthru ); }
    758766        ;
    759767
     
    783791        | CONTINUE ';'
    784792                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    785                 { $$ = new StatementNode( StatementNode::Continue, 0, 0 ); }
     793                { $$ = new StatementNode( StatementNode::Continue ); }
    786794        | CONTINUE no_attr_identifier ';'                                       // CFA, multi-level continue
    787795                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
     
    790798        | BREAK ';'
    791799                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    792                 { $$ = new StatementNode( StatementNode::Break, 0, 0 ); }
     800                { $$ = new StatementNode( StatementNode::Break ); }
    793801        | BREAK no_attr_identifier ';'                                          // CFA, multi-level exit
    794802                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
     
    800808                { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
    801809        | THROW ';'
    802                 { $$ = new StatementNode( StatementNode::Throw, 0, 0 ); }
     810                { $$ = new StatementNode( StatementNode::Throw ); }
    803811        ;
    804812
     
    863871
    864872asm_statement:
    865         ASM type_qualifier_list_opt '(' constant_expression ')' ';'
    866                 { $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
    867         | ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ')' ';' // remaining GCC
    868                 { $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
    869         | ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ':' asm_operands_opt ')' ';'
    870                 { $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
    871         | ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ':' asm_operands_opt ':' asm_clobbers_list ')' ';'
    872                 { $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
     873        ASM asm_volatile_opt '(' string_literal_list ')' ';'
     874                { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, 0 ); }
     875        | ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ')' ';' // remaining GCC
     876                { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6 ); }
     877        | ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ':' asm_operands_opt ')' ';'
     878                { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6, $8 ); }
     879        | ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ':' asm_operands_opt ':' asm_clobbers_list_opt ')' ';'
     880                { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6, $8, $10 ); }
     881        | ASM asm_volatile_opt GOTO '(' string_literal_list ':' ':' asm_operands_opt ':' asm_clobbers_list_opt ':' label_list ')' ';'
     882        { $$ = new AsmStmtNode( StatementNode::Asm, $2, $5, 0, $8, $10, $12 ); }
     883        ;
     884
     885asm_volatile_opt:                                                                               // GCC
     886        // empty
     887                { $$ = false; }
     888        | VOLATILE
     889                { $$ = true; }
    873890        ;
    874891
    875892asm_operands_opt:                                                                               // GCC
    876893        // empty
     894                { $$ = 0; }                                                                             // use default argument
    877895        | asm_operands_list
    878896        ;
     
    881899        asm_operand
    882900        | asm_operands_list ',' asm_operand
     901                { $$ = (ExpressionNode *)$1->set_link( $3 ); }
    883902        ;
    884903
    885904asm_operand:                                                                                    // GCC
    886         STRINGliteral '(' constant_expression ')'       {}
    887         ;
    888 
    889 asm_clobbers_list:                                                                              // GCC
    890         STRINGliteral                                                           {}
    891         | asm_clobbers_list ',' STRINGliteral
     905        string_literal_list '(' constant_expression ')'
     906                { $$ = new AsmExprNode( 0, $1, $3 ); }
     907        | '[' constant_expression ']' string_literal_list '(' constant_expression ')'
     908                { $$ = new AsmExprNode( $2, $4, $6 ); }
     909        ;
     910
     911asm_clobbers_list_opt:                                                                          // GCC
     912        // empty
     913                { $$ = 0; }                                                                             // use default argument
     914        | string_literal_list
     915                { $$ = $1; }
     916        | asm_clobbers_list_opt ',' string_literal_list
     917                { $$ = (ConstantNode *)$1->set_link( $3 ); }
     918        ;
     919
     920label_list:
     921        no_attr_identifier
     922                { $$ = new LabelNode(); $$->append_label( $1 ); }
     923        | label_list ',' no_attr_identifier
     924                { $$ = $1; $1->append_label( $3 ); }
    892925        ;
    893926
     
    918951        ;
    919952
    920 label_declaration_opt:                                                                  // GCC, local label
     953local_label_declaration_opt:                                                    // GCC, local label
    921954        // empty
    922         | label_declaration_list
    923         ;
    924 
    925 label_declaration_list:                                                                 // GCC, local label
    926         LABEL label_list ';'
    927         | label_declaration_list LABEL label_list ';'
    928         ;
    929 
    930 label_list:                                                                                             // GCC, local label
    931         no_attr_identifier_or_type_name                 {}
    932         | label_list ',' no_attr_identifier_or_type_name {}
     955        | local_label_declaration_list
     956        ;
     957
     958local_label_declaration_list:                                                   // GCC, local label
     959        LABEL local_label_list ';'
     960        | local_label_declaration_list LABEL local_label_list ';'
     961        ;
     962
     963local_label_list:                                                                               // GCC, local label
     964        no_attr_identifier_or_type_name                         {}
     965        | local_label_list ',' no_attr_identifier_or_type_name {}
    933966        ;
    934967
     
    16601693
    16611694designator:
    1662         '.' no_attr_identifier_or_type_name                                     // C99, field name
    1663                 { $$ = new VarRefNode( $2 ); }
     1695        // only ".0" and ".1" allowed => semantic check
     1696        FLOATINGconstant
     1697                { $$ = new DesignatorNode( new VarRefNode( $1 ) ); }
     1698        | '.' no_attr_identifier_or_type_name                           // C99, field name
     1699                { $$ = new DesignatorNode( new VarRefNode( $2 ) ); }
    16641700        | '[' push assignment_expression pop ']'                        // C99, single array element
    16651701                // assignment_expression used instead of constant_expression because of shift/reduce conflicts with tuple.
    1666                 { $$ = $3; }
     1702                { $$ = new DesignatorNode( $3, true ); }
    16671703        | '[' push subrange pop ']'                                                     // CFA, multiple array elements
    1668                 { $$ = $3; }
     1704                { $$ = new DesignatorNode( $3, true ); }
    16691705        | '[' push constant_expression ELLIPSIS constant_expression pop ']' // GCC, multiple array elements
    1670                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $3, $5 ); }
     1706                { $$ = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $3, $5 ), true ); }
    16711707        | '.' '[' push field_list pop ']'                                       // CFA, tuple field selector
    1672                 { $$ = $4; }
     1708                { $$ = new DesignatorNode( $4 ); }
    16731709        ;
    16741710
  • src/ResolvExpr/AlternativeFinder.cc

    r18997b9 r353d168  
    343343        }
    344344
     345        /// Adds type variables to the open variable set and marks their assertions
    345346        void makeUnifiableVars( Type *type, OpenVarSet &unifiableVars, AssertionSet &needAssertions ) {
    346347                for ( std::list< TypeDecl* >::const_iterator tyvar = type->get_forall().begin(); tyvar != type->get_forall().end(); ++tyvar ) {
     
    697698                        std::list< Type* >::iterator candidate_end = (*i).expr->get_results().begin();
    698699                        std::advance( candidate_end, castExpr->get_results().size() );
    699                         if ( ! unifyList( (*i).expr->get_results().begin(), candidate_end,
    700                                                          castExpr->get_results().begin(), castExpr->get_results().end(), i->env, needAssertions, haveAssertions, openVars, indexer ) ) continue;
    701700                        Cost thisCost = castCostList( (*i).expr->get_results().begin(), candidate_end,
    702701                                                                                  castExpr->get_results().begin(), castExpr->get_results().end(), indexer, i->env );
  • src/ResolvExpr/CastCost.cc

    r18997b9 r353d168  
    6666
    6767        void CastCost::visit( BasicType *basicType ) {
    68                 if ( dynamic_cast< PointerType* >( dest ) ) {
     68                PointerType *destAsPointer = dynamic_cast< PointerType* >( dest );
     69                if ( destAsPointer && basicType->isInteger() ) {
    6970                        cost = Cost( 1, 0, 0 );
    7071                } else {
     
    7778                        if ( pointerType->get_qualifiers() <= destAsPtr->get_qualifiers() && typesCompatibleIgnoreQualifiers( pointerType->get_base(), destAsPtr->get_base(), indexer, env ) ) {
    7879                                cost = Cost( 0, 0, 1 );
    79                         } else if ( BasicType *destAsBasic = dynamic_cast< BasicType* >( dest ) ) {
    80                                 if ( destAsBasic->isInteger() ) {
    81                                         cost = Cost( 1, 0, 0 );
    82                                 } // if
    8380                        } else {
    8481                                TypeEnvironment newEnv( env );
     
    9289                                } // if
    9390                        } // if
    94                 } // if
     91                } else if ( BasicType *destAsBasic = dynamic_cast< BasicType* >( dest ) ) {
     92                        if ( destAsBasic->isInteger() ) {
     93                                cost = Cost( 1, 0, 0 );
     94                        } // if
     95                }
    9596        }
    9697} // namespace ResolvExpr
  • src/ResolvExpr/CommonType.cc

    r18997b9 r353d168  
    138138        void CommonType::visit( PointerType *pointerType ) {
    139139                if ( PointerType *otherPointer = dynamic_cast< PointerType* >( type2 ) ) {
    140                         if ( widenFirst && dynamic_cast< VoidType* >( otherPointer->get_base() ) ) {
     140                        if ( widenFirst && dynamic_cast< VoidType* >( otherPointer->get_base() ) && ! isFtype(pointerType->get_base(), indexer) ) {
    141141                                result = otherPointer->clone();
    142142                                result->get_qualifiers() += pointerType->get_qualifiers();
    143                         } else if ( widenSecond && dynamic_cast< VoidType* >( pointerType->get_base() ) ) {
     143                        } else if ( widenSecond && dynamic_cast< VoidType* >( pointerType->get_base() ) && ! isFtype(otherPointer->get_base(), indexer) ) {
    144144                                result = pointerType->clone();
    145145                                result->get_qualifiers() += otherPointer->get_qualifiers();
  • src/ResolvExpr/Cost.h

    r18997b9 r353d168  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 09:39:50 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 09:42:04 2015
    13 // Update Count     : 3
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Jul 22 16:43:10 2015
     13// Update Count     : 4
    1414//
    1515
     
    5656
    5757        inline void Cost::incPoly( int inc ) {
    58                 unsafe += inc;
     58                poly += inc;
    5959        }
    6060
    6161        inline void Cost::incSafe( int inc ) {
    62                 unsafe += inc;
     62                safe += inc;
    6363        }
    6464
  • src/ResolvExpr/Resolver.cc

    r18997b9 r353d168  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 12:17:01 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 15 14:54:04 2015
    13 // Update Count     : 167
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Jul 24 17:33:54 2015
     13// Update Count     : 178
    1414//
    1515
     
    4141
    4242                virtual void visit( ExprStmt *exprStmt );
     43                virtual void visit( AsmExpr *asmExpr );
     44                virtual void visit( AsmStmt *asmStmt );
    4345                virtual void visit( IfStmt *ifStmt );
    4446                virtual void visit( WhileStmt *whileStmt );
     
    209211                        exprStmt->set_expr( newExpr );
    210212                } // if
     213        }
     214
     215        void Resolver::visit( AsmExpr *asmExpr ) {
     216                Expression *newExpr = findVoidExpression( asmExpr->get_operand(), *this );
     217                delete asmExpr->get_operand();
     218                asmExpr->set_operand( newExpr );
     219                if ( asmExpr->get_inout() ) {
     220                        newExpr = findVoidExpression( asmExpr->get_inout(), *this );
     221                        delete asmExpr->get_inout();
     222                        asmExpr->set_inout( newExpr );
     223                } // if
     224        }
     225
     226        void Resolver::visit( AsmStmt *asmStmt ) {
     227                acceptAll( asmStmt->get_input(), *this);
     228                acceptAll( asmStmt->get_output(), *this);
    211229        }
    212230
  • src/ResolvExpr/typeops.h

    r18997b9 r353d168  
    117117
    118118        // in Unify.cc
     119        bool isFtype( Type *type, const SymTab::Indexer &indexer );
    119120        bool typesCompatible( Type *, Type *, const SymTab::Indexer &indexer, const TypeEnvironment &env );
    120121        bool typesCompatibleIgnoreQualifiers( Type *, Type *, const SymTab::Indexer &indexer, const TypeEnvironment &env );
  • src/SymTab/IdTable.cc

    r18997b9 r353d168  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 17:04:02 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 17:07:43 2015
    13 // Update Count     : 3
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 19 15:47:58 2015
     13// Update Count     : 38
    1414//
    1515
     
    5252                if ( decl->get_linkage() == LinkageSpec::C ) {
    5353                        manglename = name;
     54                } else if ( LinkageSpec::isOverridable( decl->get_linkage() ) ) {
     55                        // mangle the name without including the appropriate suffix
     56                        // this will make it so that overridable routines are placed
     57                        // into the same "bucket" as their user defined versions.
     58                        manglename = Mangler::mangle( decl, false );
    5459                } else {
    5560                        manglename = Mangler::mangle( decl );
     
    6469                        std::stack< DeclEntry >& entry = it->second;
    6570                        if ( ! entry.empty() && entry.top().second == scopeLevel ) {
     71                                // typesCompatible doesn't really do the right thing here. When checking compatibility of function types,
     72                                // we should ignore outermost pointer qualifiers, except _Atomic?
     73
    6674                                if ( decl->get_linkage() != LinkageSpec::C || ResolvExpr::typesCompatible( decl->get_type(), entry.top().first->get_type(), Indexer() ) ) {
    6775                                        FunctionDecl *newentry = dynamic_cast< FunctionDecl* >( decl );
    6876                                        FunctionDecl *old = dynamic_cast< FunctionDecl* >( entry.top().first );
    69                                         if ( newentry && old && newentry->get_statements() && old->get_statements() ) {
    70                                                 throw SemanticError( "duplicate function definition for ", decl );
     77                                        if ( LinkageSpec::isOverridable( old->get_linkage() ) ) {
     78                                                // new definition shadows the autogenerated one, even at the same scope
     79                                                declTable[ manglename ].push( DeclEntry( decl, scopeLevel ) );
     80                                        } else if ( newentry && old && newentry->get_statements() && old->get_statements() ) {
     81                                                throw SemanticError( "duplicate function definition for 1 ", decl );
    7182                                        } else {
     83                                                // two objects with the same mangled name defined in the same scope.
     84                                                // both objects must be marked extern for this to be okay
    7285                                                ObjectDecl *newobj = dynamic_cast< ObjectDecl* >( decl );
    7386                                                ObjectDecl *oldobj = dynamic_cast< ObjectDecl* >( entry.top().first );
    74                                                 if ( newobj && oldobj && newobj->get_init() && oldobj->get_init() ) {
     87                                                if ( newobj && oldobj && newobj->get_storageClass() != DeclarationNode::Extern && oldobj->get_storageClass() != DeclarationNode::Extern ) {
    7588                                                        throw SemanticError( "duplicate definition for ", decl );
    7689                                                } // if
    7790                                        } // if
    7891                                } else {
    79                                         throw SemanticError( "duplicate definition for ", decl );
     92                                        // C definitions with the same name but incompatible types
     93                                        throw SemanticError( "duplicate definition for 2 ", decl );
    8094                                } // if
    8195                        } else {
     
    8498                } // if
    8599                // ensure the set of routines with C linkage cannot be overloaded
     100                // this ensures that no two declarations with the same unmangled name both have C linkage
    86101                for ( InnerTableType::iterator i = declTable.begin(); i != declTable.end(); ++i ) {
    87102                        if ( ! i->second.empty() && i->second.top().first->get_linkage() == LinkageSpec::C && declTable.size() > 1 ) {
  • src/SymTab/Indexer.cc

    r18997b9 r353d168  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 21:37:33 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun  5 08:05:17 2015
    13 // Update Count     : 5
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 05 13:52:42 2015
     13// Update Count     : 10
    1414//
    1515
     
    2626
    2727namespace SymTab {
     28        template< typename Container, typename VisitorType >
     29        inline void acceptAllNewScope( Container &container, VisitorType &visitor ) {
     30                visitor.enterScope();
     31                acceptAll( container, visitor );
     32                visitor.leaveScope();
     33        }
     34
    2835        Indexer::Indexer( bool useDebug ) : doDebug( useDebug ) {}
    2936
     
    3138
    3239        void Indexer::visit( ObjectDecl *objectDecl ) {
     40                enterScope();
    3341                maybeAccept( objectDecl->get_type(), *this );
     42                leaveScope();
    3443                maybeAccept( objectDecl->get_init(), *this );
    3544                maybeAccept( objectDecl->get_bitfieldWidth(), *this );
     
    149158                leaveScope();
    150159        }
     160
     161
     162        void Indexer::visit( ApplicationExpr *applicationExpr ) {
     163                acceptAllNewScope( applicationExpr->get_results(), *this );
     164                maybeAccept( applicationExpr->get_function(), *this );
     165                acceptAll( applicationExpr->get_args(), *this );
     166        }
     167
     168        void Indexer::visit( UntypedExpr *untypedExpr ) {
     169                acceptAllNewScope( untypedExpr->get_results(), *this );
     170                acceptAll( untypedExpr->get_args(), *this );
     171        }
     172
     173        void Indexer::visit( NameExpr *nameExpr ) {
     174                acceptAllNewScope( nameExpr->get_results(), *this );
     175        }
     176
     177        void Indexer::visit( AddressExpr *addressExpr ) {
     178                acceptAllNewScope( addressExpr->get_results(), *this );
     179                maybeAccept( addressExpr->get_arg(), *this );
     180        }
     181
     182        void Indexer::visit( LabelAddressExpr *labAddressExpr ) {
     183                acceptAllNewScope( labAddressExpr->get_results(), *this );
     184                maybeAccept( labAddressExpr->get_arg(), *this );
     185        }
     186
     187        void Indexer::visit( CastExpr *castExpr ) {
     188                acceptAllNewScope( castExpr->get_results(), *this );
     189                maybeAccept( castExpr->get_arg(), *this );
     190        }
     191
     192        void Indexer::visit( UntypedMemberExpr *memberExpr ) {
     193                acceptAllNewScope( memberExpr->get_results(), *this );
     194                maybeAccept( memberExpr->get_aggregate(), *this );
     195        }
     196
     197        void Indexer::visit( MemberExpr *memberExpr ) {
     198                acceptAllNewScope( memberExpr->get_results(), *this );
     199                maybeAccept( memberExpr->get_aggregate(), *this );
     200        }
     201
     202        void Indexer::visit( VariableExpr *variableExpr ) {
     203                acceptAllNewScope( variableExpr->get_results(), *this );
     204        }
     205
     206        void Indexer::visit( ConstantExpr *constantExpr ) {
     207                acceptAllNewScope( constantExpr->get_results(), *this );
     208                maybeAccept( constantExpr->get_constant(), *this );
     209        }
     210
     211        void Indexer::visit( SizeofExpr *sizeofExpr ) {
     212                acceptAllNewScope( sizeofExpr->get_results(), *this );
     213                if ( sizeofExpr->get_isType() ) {
     214                        maybeAccept( sizeofExpr->get_type(), *this );
     215                } else {
     216                        maybeAccept( sizeofExpr->get_expr(), *this );
     217                }
     218        }
     219
     220        void Indexer::visit( AttrExpr *attrExpr ) {
     221                acceptAllNewScope( attrExpr->get_results(), *this );
     222                if ( attrExpr->get_isType() ) {
     223                        maybeAccept( attrExpr->get_type(), *this );
     224                } else {
     225                        maybeAccept( attrExpr->get_expr(), *this );
     226                }
     227        }
     228
     229        void Indexer::visit( LogicalExpr *logicalExpr ) {
     230                acceptAllNewScope( logicalExpr->get_results(), *this );
     231                maybeAccept( logicalExpr->get_arg1(), *this );
     232                maybeAccept( logicalExpr->get_arg2(), *this );
     233        }
     234
     235        void Indexer::visit( ConditionalExpr *conditionalExpr ) {
     236                acceptAllNewScope( conditionalExpr->get_results(), *this );
     237                maybeAccept( conditionalExpr->get_arg1(), *this );
     238                maybeAccept( conditionalExpr->get_arg2(), *this );
     239                maybeAccept( conditionalExpr->get_arg3(), *this );
     240        }
     241
     242        void Indexer::visit( CommaExpr *commaExpr ) {
     243                acceptAllNewScope( commaExpr->get_results(), *this );
     244                maybeAccept( commaExpr->get_arg1(), *this );
     245                maybeAccept( commaExpr->get_arg2(), *this );
     246        }
     247
     248        void Indexer::visit( TupleExpr *tupleExpr ) {
     249                acceptAllNewScope( tupleExpr->get_results(), *this );
     250                acceptAll( tupleExpr->get_exprs(), *this );
     251        }
     252
     253        void Indexer::visit( SolvedTupleExpr *tupleExpr ) {
     254                acceptAllNewScope( tupleExpr->get_results(), *this );
     255                acceptAll( tupleExpr->get_exprs(), *this );
     256        }
     257
     258        void Indexer::visit( TypeExpr *typeExpr ) {
     259                acceptAllNewScope( typeExpr->get_results(), *this );
     260                maybeAccept( typeExpr->get_type(), *this );
     261        }
     262
     263        void Indexer::visit( AsmExpr *asmExpr ) {
     264                maybeAccept( asmExpr->get_inout(), *this );
     265                maybeAccept( asmExpr->get_constraint(), *this );
     266                maybeAccept( asmExpr->get_operand(), *this );
     267        }
     268
     269        void Indexer::visit( UntypedValofExpr *valofExpr ) {
     270                acceptAllNewScope( valofExpr->get_results(), *this );
     271                maybeAccept( valofExpr->get_body(), *this );
     272        }
     273
    151274
    152275        void Indexer::visit( ContextInstType *contextInst ) {
  • src/SymTab/Indexer.h

    r18997b9 r353d168  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 21:38:55 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 16:51:21 2015
    13 // Update Count     : 3
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 05 13:51:39 2015
     13// Update Count     : 4
    1414//
    1515
     
    4343
    4444                virtual void visit( CompoundStmt *compoundStmt );
     45
     46                virtual void visit( ApplicationExpr *applicationExpr );
     47                virtual void visit( UntypedExpr *untypedExpr );
     48                virtual void visit( NameExpr *nameExpr );
     49                virtual void visit( CastExpr *castExpr );
     50                virtual void visit( AddressExpr *addressExpr );
     51                virtual void visit( LabelAddressExpr *labAddressExpr );
     52                virtual void visit( UntypedMemberExpr *memberExpr );
     53                virtual void visit( MemberExpr *memberExpr );
     54                virtual void visit( VariableExpr *variableExpr );
     55                virtual void visit( ConstantExpr *constantExpr );
     56                virtual void visit( SizeofExpr *sizeofExpr );
     57                virtual void visit( AttrExpr *attrExpr );
     58                virtual void visit( LogicalExpr *logicalExpr );
     59                virtual void visit( ConditionalExpr *conditionalExpr );
     60                virtual void visit( CommaExpr *commaExpr );
     61                virtual void visit( TupleExpr *tupleExpr );
     62                virtual void visit( SolvedTupleExpr *tupleExpr );
     63                virtual void visit( TypeExpr *typeExpr );
     64                virtual void visit( AsmExpr *asmExpr );
     65                virtual void visit( UntypedValofExpr *valofExpr );
    4566
    4667                virtual void visit( ContextInstType *contextInst );
  • src/SymTab/Mangler.cc

    r18997b9 r353d168  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 21:40:29 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun  8 15:12:12 2015
    13 // Update Count     : 8
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 19 15:52:24 2015
     13// Update Count     : 19
    1414//
    1515
     
    3030
    3131namespace SymTab {
    32         Mangler::Mangler() : nextVarNum( 0 ), isTopLevel( true ) {
     32        Mangler::Mangler( bool mangleOverridable ) : nextVarNum( 0 ), isTopLevel( true ), mangleOverridable( mangleOverridable ) {
    3333        }
    3434
     
    4141                nextVarNum = rhs.nextVarNum;
    4242                isTopLevel = rhs.isTopLevel;
     43                mangleOverridable = rhs.mangleOverridable;
    4344        }
    4445
     
    5960                mangleName << "__";
    6061                maybeAccept( declaration->get_type(), *this );
     62                if ( mangleOverridable && LinkageSpec::isOverridable( declaration->get_linkage() ) ) {
     63                        // want to be able to override autogenerated and intrinsic routines,
     64                        // so they need a different name mangling
     65                        if ( declaration->get_linkage() == LinkageSpec::AutoGen ) {
     66                                mangleName << "autogen__";
     67                        } else if ( declaration->get_linkage() == LinkageSpec::Intrinsic ) {
     68                                mangleName << "intrinsic__";
     69                        } else {
     70                                // if we add another kind of overridable function, this has to change
     71                                assert( false );
     72                        } // if
     73                }
    6174                isTopLevel = wasTopLevel;
    6275        }
     
    214227                                varNums[ (*i )->get_name() ] = std::pair< int, int >( nextVarNum++, (int )(*i )->get_kind() );
    215228                                for ( std::list< DeclarationWithType* >::iterator assert = (*i )->get_assertions().begin(); assert != (*i )->get_assertions().end(); ++assert ) {
    216                                         Mangler sub_mangler;
     229                                        Mangler sub_mangler( mangleOverridable );
    217230                                        sub_mangler.nextVarNum = nextVarNum;
    218231                                        sub_mangler.isTopLevel = false;
  • src/SymTab/Mangler.h

    r18997b9 r353d168  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 21:44:03 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun  8 14:47:14 2015
    13 // Update Count     : 5
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 19 15:48:46 2015
     13// Update Count     : 14
    1414//
    1515
     
    2525          public:
    2626                template< typename SynTreeClass >
    27             static std::string mangle( SynTreeClass *decl ); // interface to clients
     27            static std::string mangle( SynTreeClass *decl, bool mangleOverridable = true ); // interface to clients
    2828
    2929///   using Visitor::visit;
     
    5050                int nextVarNum;
    5151                bool isTopLevel;
     52                bool mangleOverridable;
    5253 
    53                 Mangler();
     54                Mangler( bool mangleOverridable );
    5455                Mangler( const Mangler & );
    5556 
     
    6162
    6263        template< typename SynTreeClass >
    63         std::string Mangler::mangle( SynTreeClass *decl ) {
    64                 Mangler mangler;
     64        std::string Mangler::mangle( SynTreeClass *decl, bool mangleOverridable ) {
     65                Mangler mangler( mangleOverridable );
    6566                maybeAccept( decl, mangler );
    6667                return mangler.get_mangleName();
  • src/SymTab/Validate.cc

    r18997b9 r353d168  
    1010// Created On       : Sun May 17 21:50:04 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 22 13:16:00 2015
    13 // Update Count     : 194
     12// Last Modified On : Wed Aug 05 14:00:24 2015
     13// Update Count     : 195
    1414//
    1515
     
    162162        class EliminateTypedef : public Mutator {
    163163          public:
    164                 EliminateTypedef() : scopeLevel( 0 ) {}
     164          EliminateTypedef() : scopeLevel( 0 ) {}
     165            /// Replaces typedefs by forward declarations
    165166                static void eliminateTypedef( std::list< Declaration * > &translationUnit );
    166167          private:
     
    542543                std::list<Statement *> initList;
    543544                initList.push_back( initStmt );
    544 
     545 
    545546                UntypedExpr *cond = new UntypedExpr( new NameExpr( "?<?" ) );
    546547                cond->get_args().push_back( new VariableExpr( index ) );
     
    617618
    618619                // need to remove the prototypes, since this may be nested in a routine
    619                 for ( int start = 0, end = assigns.size() / 2; start < end; start++ ) {
     620                for (int start = 0, end = assigns.size()/2; start < end; start++) {
    620621                        delete assigns.front();
    621622                        assigns.pop_front();
     
    892893                TypedefMap oldNames = typedefNames;
    893894                DeclarationWithType *ret = Mutator::mutate( objDecl );
     895                typedefNames = oldNames;
    894896                if ( FunctionType *funtype = dynamic_cast<FunctionType *>( ret->get_type() ) ) {
    895897                        return new FunctionDecl( ret->get_name(), ret->get_storageClass(), ret->get_linkage(), funtype, 0, ret->get_isInline(), ret->get_isNoreturn() );
     
    897899                        throw SemanticError( "invalid inline or _Noreturn specification in declaration of ", objDecl );
    898900                } // if
    899                 typedefNames = oldNames;
    900901                return ret;
    901902        }
     
    960961        }
    961962
    962         Declaration *EliminateTypedef::mutate( ContextDecl * contextDecl ) {
     963                Declaration *EliminateTypedef::mutate( ContextDecl * contextDecl ) {
    963964                Mutator::mutate( contextDecl );
    964965                return handleAggregate( contextDecl );
  • src/SynTree/ArrayType.cc

    r18997b9 r353d168  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun  6 14:11:48 2015
    13 // Update Count     : 9
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 14:19:07 2015
     13// Update Count     : 11
    1414//
    1515
     
    5050        } // if
    5151        if ( dimension ) {
    52                 os << "with dimension of ";
    53                 dimension->print( os, indent );
     52                os << " with dimension of ";
     53                dimension->print( os, 0 );
    5454        } // if
    5555}
  • src/SynTree/BasicType.cc

    r18997b9 r353d168  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun  7 08:44:36 2015
    13 // Update Count     : 5
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 14:15:45 2015
     13// Update Count     : 6
    1414//
    1515
     
    2828
    2929        Type::print( os, indent );
    30         os << kindNames[ kind ] << ' ';
     30        os << kindNames[ kind ];
    3131}
    3232
  • src/SynTree/Constant.cc

    r18997b9 r353d168  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jun 10 14:41:03 2015
    13 // Update Count     : 8
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Jul 30 15:18:38 2015
     13// Update Count     : 12
    1414//
    1515
     
    2222Constant::Constant( Type *type_, std::string value_ ) : type( type_ ), value( value_ ) {}
    2323
    24 Constant::~Constant() {}
     24Constant::Constant( const Constant &other ) {
     25        type = other.type->clone();
     26        value = other.value;
     27}
    2528
    26 Constant *Constant::clone() const { return 0; }
     29Constant::~Constant() { delete type; }
     30
     31Constant *Constant::clone() const { assert( false ); return 0; }
    2732
    2833void Constant::print( std::ostream &os ) const {
  • src/SynTree/Constant.h

    r18997b9 r353d168  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 08:46:37 2015
    13 // Update Count     : 2
     12// Last Modified On : Thu Jul 30 15:19:16 2015
     13// Update Count     : 5
    1414//
    1515
     
    2424  public:
    2525        Constant( Type *type, std::string value );
     26        Constant( const Constant &other );
    2627        virtual ~Constant();
    2728
  • src/SynTree/Expression.cc

    r18997b9 r353d168  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun  7 08:40:46 2015
    13 // Update Count     : 16
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 14:02:45 2015
     13// Update Count     : 30
    1414//
    1515
     
    3838Expression::~Expression() {
    3939        delete env;
    40         // delete argName;      // xxx -- there's a problem in cloning ConstantExpr I still don't know how to fix
     40        delete argName; // xxx -- there's a problem in cloning ConstantExpr I still don't know how to fix
    4141        deleteAll( results );
    4242}
     
    7272
    7373void ConstantExpr::print( std::ostream &os, int indent ) const {
    74         os << "constant expression " ;
     74        os << std::string( indent, ' ' ) << "constant expression " ;
    7575        constant.print( os );
    7676        Expression::print( os, indent );
     77        os << std::endl;
    7778}
    7879
     
    332333}
    333334
     335void AsmExpr::print( std::ostream &os, int indent ) const {
     336        os << "Asm Expression: " << std::endl;
     337        if ( inout ) inout->print( os, indent + 2 );
     338        if ( constraint ) constraint->print( os, indent + 2 );
     339        if ( operand ) operand->print( os, indent + 2 );
     340}
     341
    334342void UntypedValofExpr::print( std::ostream &os, int indent ) const {
    335343        os << std::string( indent, ' ' ) << "Valof Expression: " << std::endl;
  • src/SynTree/Expression.h

    r18997b9 r353d168  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun  7 22:03:44 2015
    13 // Update Count     : 4
     12// Last Modified On : Fri Jul 24 13:49:28 2015
     13// Update Count     : 18
    1414//
    1515
     
    3030
    3131        std::list<Type *>& get_results() { return results; }
    32         void add_result(Type *t);
     32        void add_result( Type *t );
    3333
    3434        TypeSubstitution *get_env() const { return env; }
     
    446446};
    447447
     448// AsmExpr represents a GCC 'asm constraint operand' used in an asm statement: [output] "=f" (result)
     449class AsmExpr : public Expression {
     450  public:
     451        AsmExpr( Expression *inout, ConstantExpr *constraint, Expression *operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
     452        virtual ~AsmExpr() { delete inout; delete constraint; delete operand; };
     453
     454        Expression *get_inout() const { return inout; }
     455        void set_inout( Expression *newValue ) { inout = newValue; }
     456
     457        ConstantExpr *get_constraint() const { return constraint; }
     458        void set_constraint( ConstantExpr *newValue ) { constraint = newValue; }
     459
     460        Expression *get_operand() const { return operand; }
     461        void set_operand( Expression *newValue ) { operand = newValue; }
     462
     463        virtual AsmExpr *clone() const { return new AsmExpr( *this ); }
     464        virtual void accept( Visitor &v ) { v.visit( this ); }
     465        virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     466        virtual void print( std::ostream &os, int indent = 0 ) const;
     467  private:
     468        // https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Machine-Constraints.html#Machine-Constraints
     469        Expression *inout;
     470        ConstantExpr *constraint;
     471        Expression *operand;
     472};
     473
    448474// ValofExpr represents a GCC 'lambda expression'
    449475class UntypedValofExpr : public Expression {
  • src/SynTree/Initializer.cc

    r18997b9 r353d168  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 09:02:45 2015
    13 // Update Count     : 2
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 14:05:25 2015
     13// Update Count     : 14
    1414//
    1515
     
    4343
    4444void SingleInit::print( std::ostream &os, int indent ) {
    45         os << std::endl << std::string(indent, ' ' ) << "Simple Initializer: ";
    46         value->print( os, indent+2 );
     45        os << std::endl << std::string(indent, ' ' ) << "Simple Initializer: " << std::endl;
     46        value->print( os, indent+4 );
    4747
    4848        if ( ! designators.empty() ) {
    49                 os << std::endl << std::string(indent + 2, ' ' ) << "designated by: "  ;
    50                 for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ )
     49                os << std::endl << std::string(indent + 2, ' ' ) << "designated by: "   << std::endl;
     50                for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ ) {
    5151                        ( *i )->print(os, indent + 4 );
     52                }
    5253        } // if
    5354}
  • src/SynTree/Mutator.cc

    r18997b9 r353d168  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 16 16:10:54 2015
    13 // Update Count     : 3
     12// Last Modified On : Sat Jul 25 19:21:33 2015
     13// Update Count     : 11
    1414//
    1515
     
    9595}
    9696
     97Statement *Mutator::mutate( AsmStmt *asmStmt ) {
     98        asmStmt->set_instruction( maybeMutate( asmStmt->get_instruction(), *this ) );
     99        mutateAll( asmStmt->get_output(), *this );
     100        mutateAll( asmStmt->get_input(), *this );
     101        mutateAll( asmStmt->get_clobber(), *this );
     102        return asmStmt;
     103}
     104
    97105Statement *Mutator::mutate( IfStmt *ifStmt ) {
    98106        ifStmt->set_condition( maybeMutate( ifStmt->get_condition(), *this ) );
     
    291299        typeExpr->set_type( maybeMutate( typeExpr->get_type(), *this ) );
    292300        return typeExpr;
     301}
     302
     303Expression *Mutator::mutate( AsmExpr *asmExpr ) {
     304        asmExpr->set_inout( maybeMutate( asmExpr->get_inout(), *this ) );
     305        asmExpr->set_constraint( maybeMutate( asmExpr->get_constraint(), *this ) );
     306        asmExpr->set_operand( maybeMutate( asmExpr->get_operand(), *this ) );
     307        return asmExpr;
    293308}
    294309
  • src/SynTree/Mutator.h

    r18997b9 r353d168  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jul 13 18:14:47 2015
    13 // Update Count     : 5
     12// Last Modified On : Thu Jul 23 23:24:18 2015
     13// Update Count     : 7
    1414//
    1515#include <cassert>
     
    3737        virtual CompoundStmt* mutate( CompoundStmt *compoundStmt );
    3838        virtual Statement* mutate( ExprStmt *exprStmt );
     39        virtual Statement* mutate( AsmStmt *asmStmt );
    3940        virtual Statement* mutate( IfStmt *ifStmt );
    4041        virtual Statement* mutate( WhileStmt *whileStmt );
     
    7071        virtual Expression* mutate( SolvedTupleExpr *tupleExpr );
    7172        virtual Expression* mutate( TypeExpr *typeExpr );
     73        virtual Expression* mutate( AsmExpr *asmExpr );
    7274        virtual Expression* mutate( UntypedValofExpr *valofExpr );
    7375
  • src/SynTree/Statement.cc

    r18997b9 r353d168  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 15 14:57:40 2015
    13 // Update Count     : 27
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sat Jul 25 12:19:50 2015
     13// Update Count     : 53
    1414//
    1515
     
    4242        expr->print( os, indent + 2 );
    4343}
     44
     45
     46AsmStmt::AsmStmt( std::list<Label> labels, bool voltile, ConstantExpr *instruction, std::list<Expression *> output, std::list<Expression *> input, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels ) : Statement( labels ), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ), gotolabels( gotolabels ) {}
     47
     48AsmStmt::~AsmStmt() {
     49        delete instruction;
     50        deleteAll( output );
     51        deleteAll( input );
     52        deleteAll( clobber );
     53}
     54
     55void AsmStmt::print( std::ostream &os, int indent ) const {
     56        os << "Assembler Statement:" << endl;
     57        os << std::string( indent, ' ' ) << "instruction: " << endl << std::string( indent, ' ' );
     58        instruction->print( os, indent + 2 );
     59        if ( ! output.empty() ) {
     60                os << endl << std::string( indent, ' ' ) << "output: " << endl;
     61                printAll( output, os, indent + 2 );
     62        } // if
     63        if ( ! input.empty() ) {
     64                os << std::string( indent, ' ' ) << "input: " << endl << std::string( indent, ' ' );
     65                printAll( input, os, indent + 2 );
     66        } // if
     67        if ( ! clobber.empty() ) {
     68                os << std::string( indent, ' ' ) << "clobber: " << endl;
     69                printAll( clobber, os, indent + 2 );
     70        } // if
     71}
     72
    4473
    4574const char *BranchStmt::brType[] = { "Goto", "Break", "Continue" };
  • src/SynTree/Statement.h

    r18997b9 r353d168  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Jul 14 12:14:54 2015
    13 // Update Count     : 24
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sat Jul 25 18:25:37 2015
     13// Update Count     : 44
    1414//
    1515
     
    7070};
    7171
     72class AsmStmt : public Statement {
     73  public:
     74        AsmStmt( std::list<Label> labels, bool voltile, ConstantExpr *instruction, std::list<Expression *> input, std::list<Expression *> output, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels );
     75        virtual ~AsmStmt();
     76
     77        bool get_voltile() { return voltile; }
     78        void set_voltile( bool newValue ) { voltile = newValue; }
     79        ConstantExpr *get_instruction() { return instruction; }
     80        void set_instruction( ConstantExpr *newValue ) { instruction = newValue; }
     81        std::list<Expression *> &get_output() { return output; }
     82        void set_output( const std::list<Expression *> &newValue ) { output = newValue; }
     83        std::list<Expression *> &get_input() { return input; }
     84        void set_input( const std::list<Expression *> &newValue ) { input = newValue; }
     85        std::list<ConstantExpr *> &get_clobber() { return clobber; }
     86        void set_clobber( const std::list<ConstantExpr *> &newValue ) { clobber = newValue; }
     87        std::list<Label> &get_gotolabels() { return gotolabels; }
     88        void set_gotolabels( const std::list<Label> &newValue ) { gotolabels = newValue; }
     89
     90        virtual AsmStmt *clone() const { return new AsmStmt( *this ); }
     91        virtual void accept( Visitor &v ) { v.visit( this ); }
     92        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     93        virtual void print( std::ostream &os, int indent = 0 ) const;
     94  private:
     95        bool voltile;
     96        ConstantExpr *instruction;
     97        std::list<Expression *> output, input;
     98        std::list<ConstantExpr *> clobber;
     99        std::list<Label> gotolabels;
     100};
     101
    72102class IfStmt : public Statement {
    73103  public:
     
    100130        void set_condition( Expression *newValue ) { condition = newValue; }
    101131
    102         std::list<Statement *>& get_branches() { return branches; }
     132        std::list<Statement *> & get_branches() { return branches; }
    103133        void add_case( CaseStmt * );
    104134
  • src/SynTree/SynTree.h

    r18997b9 r353d168  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 10:58:22 2015
    13 // Update Count     : 1
     12// Last Modified On : Thu Jul 23 23:25:04 2015
     13// Update Count     : 3
    1414//
    1515
     
    4040class CompoundStmt;
    4141class ExprStmt;
     42class AsmStmt;
    4243class IfStmt;
    4344class WhileStmt;
     
    7576class SolvedTupleExpr;
    7677class TypeExpr;
     78class AsmExpr;
    7779class UntypedValofExpr;
    7880
  • src/SynTree/Visitor.cc

    r18997b9 r353d168  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Jul 14 12:31:03 2015
    13 // Update Count     : 3
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Jul 24 16:11:05 2015
     13// Update Count     : 15
    1414//
    1515
     
    8282}
    8383
     84void Visitor::visit( AsmStmt *asmStmt ) {
     85        maybeAccept( asmStmt->get_instruction(), *this );
     86        acceptAll( asmStmt->get_output(), *this );
     87        acceptAll( asmStmt->get_input(), *this );
     88        acceptAll( asmStmt->get_clobber(), *this );
     89}
     90
    8491void Visitor::visit( IfStmt *ifStmt ) {
    8592        maybeAccept( ifStmt->get_condition(), *this );
     
    246253}
    247254
     255void Visitor::visit( AsmExpr *asmExpr ) {
     256        maybeAccept( asmExpr->get_inout(), *this );
     257        maybeAccept( asmExpr->get_constraint(), *this );
     258        maybeAccept( asmExpr->get_operand(), *this );
     259}
     260
    248261void Visitor::visit( UntypedValofExpr *valofExpr ) {
    249262        acceptAll( valofExpr->get_results(), *this );
     
    282295
    283296void Visitor::visit( StructInstType *aggregateUseType ) {
    284         visit( static_cast< ReferenceToType* >( aggregateUseType ) );
     297        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    285298}
    286299
    287300void Visitor::visit( UnionInstType *aggregateUseType ) {
    288         visit( static_cast< ReferenceToType* >( aggregateUseType ) );
     301        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    289302}
    290303
    291304void Visitor::visit( EnumInstType *aggregateUseType ) {
    292         visit( static_cast< ReferenceToType* >( aggregateUseType ) );
     305        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    293306}
    294307
    295308void Visitor::visit( ContextInstType *aggregateUseType ) {
    296         visit( static_cast< ReferenceToType* >( aggregateUseType ) );
     309        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    297310        acceptAll( aggregateUseType->get_members(), *this );
    298311}
    299312
    300313void Visitor::visit( TypeInstType *aggregateUseType ) {
    301         visit( static_cast< ReferenceToType* >( aggregateUseType ) );
     314        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    302315}
    303316
  • src/SynTree/Visitor.h

    r18997b9 r353d168  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 11:15:55 2015
    13 // Update Count     : 2
     12// Last Modified On : Thu Jul 23 23:22:23 2015
     13// Update Count     : 4
    1414//
    1515
     
    3737        virtual void visit( CompoundStmt *compoundStmt );
    3838        virtual void visit( ExprStmt *exprStmt );
     39        virtual void visit( AsmStmt *asmStmt );
    3940        virtual void visit( IfStmt *ifStmt );
    4041        virtual void visit( WhileStmt *whileStmt );
     
    7071        virtual void visit( SolvedTupleExpr *tupleExpr );
    7172        virtual void visit( TypeExpr *typeExpr );
     73        virtual void visit( AsmExpr *asmExpr );
    7274        virtual void visit( UntypedValofExpr *valofExpr );
    7375
  • src/main.cc

    r18997b9 r353d168  
    1010// Created On       : Fri May 15 23:12:02 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 15 16:45:24 2015
    13 // Update Count     : 145
     12// Last Modified On : Thu Jul 30 16:08:18 2015
     13// Update Count     : 167
    1414//
    1515
     
    228228                // add the assignment statement after the
    229229                // initialization of a type parameter
    230                 OPTPRINT( "tweak" )
    231                 InitTweak::tweak( translationUnit );
    232230                OPTPRINT( "validate" )
    233231                SymTab::validate( translationUnit, symtabp );
     
    251249                OPTPRINT( "fixNames" )
    252250                CodeGen::fixNames( translationUnit );
     251                OPTPRINT( "tweak" )
     252                InitTweak::tweak( translationUnit );
    253253
    254254                if ( libcfap ) {
     
    339339
    340340        printAll( decls, std::cout );
     341        deleteAll( translationUnit );
    341342}
    342343
Note: See TracChangeset for help on using the changeset viewer.