Changeset 6943a987 for src/Parser


Ignore:
Timestamp:
Aug 29, 2016, 10:33:05 AM (9 years ago)
Author:
Aaron Moss <a3moss@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
5e644d3e
Parents:
79841be (diff), 413ad05 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

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

Location:
src/Parser
Files:
2 deleted
20 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/DeclarationNode.cc

    r79841be r6943a987  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Aug  9 08:39:20 2016
    13 // Update Count     : 169
     12// Last Modified On : Sun Aug 28 22:12:44 2016
     13// Update Count     : 278
    1414//
    1515
     
    2525#include "SynTree/Expression.h"
    2626
    27 #include "Parser.h"
    2827#include "TypedefTable.h"
    2928extern TypedefTable typedefTable;
     
    4241UniqueName DeclarationNode::anonymous( "__anonymous" );
    4342
    44 extern LinkageSpec::Type linkage;                                               // defined in parser.yy
     43extern LinkageSpec::Spec linkage;                                               // defined in parser.yy
    4544
    4645DeclarationNode *DeclarationNode::clone() const {
     
    4847        newnode->type = maybeClone( type );
    4948        newnode->name = name;
    50         newnode->storageClasses = storageClasses;
    51 //PAB   newnode->bitfieldWidth = maybeClone( bitfieldWidth );
    52         newnode->bitfieldWidth = bitfieldWidth;
     49        newnode->storageClass = storageClass;
     50        newnode->isInline = isInline;
     51        newnode->isNoreturn = isNoreturn;
     52        newnode->bitfieldWidth = maybeClone( bitfieldWidth );
    5353        newnode->hasEllipsis = hasEllipsis;
    54         newnode->initializer = initializer;
    55         newnode->next = maybeClone( next );
     54        newnode->initializer = maybeClone( initializer );
     55        newnode->set_next( maybeClone( get_next() ) );
    5656        newnode->linkage = linkage;
    5757        return newnode;
    5858} // DeclarationNode::clone
    5959
    60 DeclarationNode::DeclarationNode() : type( 0 ), bitfieldWidth( 0 ), initializer( 0 ), hasEllipsis( false ), linkage( ::linkage ) {
     60DeclarationNode::DeclarationNode()
     61        : type( 0 )
     62        , storageClass( NoStorageClass )
     63        , isInline( false )
     64        , isNoreturn( false )
     65        , bitfieldWidth( 0 )
     66        , initializer( 0 )
     67        , hasEllipsis( false )
     68        , linkage( ::linkage )
     69        , extension( false )
     70        , error() {
    6171}
    6272
     
    8393        } // if
    8494
    85         printEnums( storageClasses.begin(), storageClasses.end(), DeclarationNode::storageName, os );
     95        if ( storageClass != NoStorageClass ) os << DeclarationNode::storageName[storageClass] << ' ';
     96        if ( isInline ) os << DeclarationNode::storageName[Inline] << ' ';
     97        if ( isNoreturn ) os << DeclarationNode::storageName[Noreturn] << ' ';
    8698        if ( type ) {
    8799                type->print( os, indent );
     
    135147} // DeclarationNode::newFunction
    136148
    137 DeclarationNode *DeclarationNode::newQualifier( Qualifier q ) {
     149DeclarationNode * DeclarationNode::newQualifier( Qualifier q ) {
    138150        DeclarationNode *newnode = new DeclarationNode;
    139151        newnode->type = new TypeData();
    140         newnode->type->qualifiers.push_back( q );
     152        newnode->type->qualifiers[ q ] = 1;
    141153        return newnode;
    142154} // DeclarationNode::newQualifier
    143155
    144 DeclarationNode *DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) {
    145         DeclarationNode *newnode = new DeclarationNode;
    146         newnode->storageClasses.push_back( sc );
     156DeclarationNode * DeclarationNode::newForall( DeclarationNode *forall ) {
     157        DeclarationNode *newnode = new DeclarationNode;
     158        newnode->type = new TypeData( TypeData::Unknown );
     159        newnode->type->forall = forall;
     160        return newnode;
     161} // DeclarationNode::newForall
     162
     163DeclarationNode * DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) {
     164        DeclarationNode *newnode = new DeclarationNode;
     165        //switch (sc) {
     166        //      case Inline: newnode->isInline = true; break;
     167        //      case Noreturn: newnode->isNoreturn = true; break;
     168        //      default: newnode->storageClass = sc; break;
     169        //}
     170        newnode->storageClass = sc;
    147171        return newnode;
    148172} // DeclarationNode::newStorageClass
    149173
    150 DeclarationNode *DeclarationNode::newBasicType( BasicType bt ) {
     174DeclarationNode * DeclarationNode::newBasicType( BasicType bt ) {
    151175        DeclarationNode *newnode = new DeclarationNode;
    152176        newnode->type = new TypeData( TypeData::Basic );
     
    155179} // DeclarationNode::newBasicType
    156180
    157 DeclarationNode *DeclarationNode::newBuiltinType( BuiltinType bt ) {
     181DeclarationNode * DeclarationNode::newModifier( Modifier mod ) {
     182        DeclarationNode *newnode = new DeclarationNode;
     183        newnode->type = new TypeData( TypeData::Basic );
     184        newnode->type->basic->modifiers.push_back( mod );
     185        return newnode;
     186} // DeclarationNode::newModifier
     187
     188DeclarationNode * DeclarationNode::newBuiltinType( BuiltinType bt ) {
    158189        DeclarationNode *newnode = new DeclarationNode;
    159190        newnode->type = new TypeData( TypeData::Builtin );
     
    162193} // DeclarationNode::newBuiltinType
    163194
    164 DeclarationNode *DeclarationNode::newModifier( Modifier mod ) {
    165         DeclarationNode *newnode = new DeclarationNode;
    166         newnode->type = new TypeData( TypeData::Basic );
    167         newnode->type->basic->modifiers.push_back( mod );
    168         return newnode;
    169 } // DeclarationNode::newModifier
    170 
    171 DeclarationNode *DeclarationNode::newForall( DeclarationNode *forall ) {
    172         DeclarationNode *newnode = new DeclarationNode;
    173         newnode->type = new TypeData( TypeData::Unknown );
    174         newnode->type->forall = forall;
    175         return newnode;
    176 } // DeclarationNode::newForall
    177 
    178 DeclarationNode *DeclarationNode::newFromTypedef( std::string *name ) {
     195DeclarationNode * DeclarationNode::newFromTypedef( std::string *name ) {
    179196        DeclarationNode *newnode = new DeclarationNode;
    180197        newnode->type = new TypeData( TypeData::SymbolicInst );
     
    185202} // DeclarationNode::newFromTypedef
    186203
    187 DeclarationNode *DeclarationNode::newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields, bool body ) {
     204DeclarationNode * DeclarationNode::newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields, bool body ) {
    188205        DeclarationNode *newnode = new DeclarationNode;
    189206        newnode->type = new TypeData( TypeData::Aggregate );
     
    214231        DeclarationNode *newnode = new DeclarationNode;
    215232        newnode->name = assign_strptr( name );
    216         newnode->enumeratorValue = constant;
     233        newnode->enumeratorValue.reset( constant );
    217234        typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID );
    218235        return newnode;
     
    284301        newnode->type->array->dimension = size;
    285302        newnode->type->array->isStatic = isStatic;
    286         if ( newnode->type->array->dimension == 0 || dynamic_cast<ConstantExpr *>( newnode->type->array->dimension->build() ) ) {
     303        if ( newnode->type->array->dimension == 0 || newnode->type->array->dimension->isExpressionType<ConstantExpr *>() ) {
    287304                newnode->type->array->isVarLen = false;
    288305        } else {
     
    353370                        src = 0;
    354371                } else {
    355                         dst->qualifiers.splice( dst->qualifiers.end(), src->qualifiers );
    356                 } // if
    357         } // if
    358 }
     372                        dst->qualifiers |= src->qualifiers;
     373                } // if
     374        } // if
     375}
     376
     377void DeclarationNode::checkQualifiers( const TypeData *src, const TypeData *dst ) {
     378        TypeData::Qualifiers qsrc = src->qualifiers, qdst = dst->qualifiers;
     379
     380        if ( (qsrc & qdst).any() ) {                                            // common bits between qualifier masks ?
     381                error = "duplicate qualifier ";
     382                int j = 0;                                                                              // separator detector
     383                for ( int i = 0; i < DeclarationNode::NoOfQualifier; i += 1 ) {
     384                        if ( qsrc[i] & qdst[i] ) {                                      // find specific qualifiers in common
     385                                if ( j > 0 ) error += ", ";
     386                                error += DeclarationNode::qualifierName[i];
     387                                j += 1;
     388                        } // if
     389                } // for
     390                error += " in declaration of ";
     391        } // if
     392} // DeclarationNode::checkQualifiers
    359393
    360394DeclarationNode *DeclarationNode::addQualifiers( DeclarationNode *q ) {
    361395        if ( q ) {
    362                 storageClasses.splice( storageClasses.end(), q->storageClasses );
     396                copyStorageClasses(q);
    363397                if ( q->type ) {
    364398                        if ( ! type ) {
    365399                                type = new TypeData;
     400                        } else {
     401                                checkQualifiers( q->type, type );
    366402                        } // if
    367403                        addQualifiersToType( q->type, type );
     
    387423
    388424DeclarationNode *DeclarationNode::copyStorageClasses( DeclarationNode *q ) {
    389         storageClasses = q->storageClasses;
     425        isInline = isInline || q->isInline;
     426        isNoreturn = isNoreturn || q->isNoreturn;
     427        if ( storageClass == NoStorageClass ) {
     428                storageClass = q->storageClass;
     429        } else if ( q->storageClass != NoStorageClass ) {
     430                q->error = "invalid combination of storage classes in declaration of ";
     431        } // if
     432        if ( error.empty() ) error = q->error;
    390433        return this;
    391434}
     
    406449                        switch ( dst->kind ) {
    407450                          case TypeData::Unknown:
    408                                 src->qualifiers.splice( src->qualifiers.end(), dst->qualifiers );
     451                                src->qualifiers |= dst->qualifiers;
    409452                                dst = src;
    410453                                src = 0;
    411454                                break;
    412455                          case TypeData::Basic:
    413                                 dst->qualifiers.splice( dst->qualifiers.end(), src->qualifiers );
     456                                dst->qualifiers |= src->qualifiers;
    414457                                if ( src->kind != TypeData::Unknown ) {
    415458                                        assert( src->kind == TypeData::Basic );
     
    427470                                                dst->base->aggInst->params = maybeClone( src->aggregate->actuals );
    428471                                        } // if
    429                                         dst->base->qualifiers.splice( dst->base->qualifiers.end(), src->qualifiers );
     472                                        dst->base->qualifiers |= src->qualifiers;
    430473                                        src = 0;
    431474                                        break;
     
    447490DeclarationNode *DeclarationNode::addType( DeclarationNode *o ) {
    448491        if ( o ) {
    449                 storageClasses.splice( storageClasses.end(), o->storageClasses );
     492                copyStorageClasses( o );
    450493                if ( o->type ) {
    451494                        if ( ! type ) {
     
    456499                                                type->aggInst->params = maybeClone( o->type->aggregate->actuals );
    457500                                        } // if
    458                                         type->qualifiers.splice( type->qualifiers.end(), o->type->qualifiers );
     501                                        type->qualifiers |= o->type->qualifiers;
    459502                                } else {
    460503                                        type = o->type;
     
    470513
    471514                // there may be typedefs chained onto the type
    472                 if ( o->get_link() ) {
    473                         set_link( o->get_link()->clone() );
     515                if ( o->get_next() ) {
     516                        set_last( o->get_next()->clone() );
    474517                } // if
    475518        } // if
     
    591634                                        p->type->base->aggInst->params = maybeClone( type->aggregate->actuals );
    592635                                } // if
    593                                 p->type->base->qualifiers.splice( p->type->base->qualifiers.end(), type->qualifiers );
     636                                p->type->base->qualifiers |= type->qualifiers;
    594637                                break;
    595638
     
    628671                                        lastArray->base->aggInst->params = maybeClone( type->aggregate->actuals );
    629672                                } // if
    630                                 lastArray->base->qualifiers.splice( lastArray->base->qualifiers.end(), type->qualifiers );
     673                                lastArray->base->qualifiers |= type->qualifiers;
    631674                                break;
    632675                          default:
     
    694737        } // if
    695738        newnode->type->forall = maybeClone( type->forall );
    696         newnode->storageClasses = storageClasses;
     739        newnode->copyStorageClasses( this );
    697740        newnode->name = assign_strptr( newName );
    698741        return newnode;
     
    701744DeclarationNode *DeclarationNode::cloneBaseType( DeclarationNode *o ) {
    702745        if ( o ) {
    703                 o->storageClasses.insert( o->storageClasses.end(), storageClasses.begin(), storageClasses.end() );
     746                o->copyStorageClasses( this );
    704747                if ( type ) {
    705748                        TypeData *srcType = type;
     
    734777        DeclarationNode *newnode = new DeclarationNode;
    735778        newnode->type = maybeClone( type );
    736         newnode->storageClasses = storageClasses;
     779        newnode->copyStorageClasses( this );
    737780        newnode->name = assign_strptr( newName );
    738781        return newnode;
     
    741784DeclarationNode *DeclarationNode::cloneType( DeclarationNode *o ) {
    742785        if ( o ) {
    743                 o->storageClasses.insert( o->storageClasses.end(), storageClasses.begin(), storageClasses.end() );
     786                o->copyStorageClasses( this );
    744787                if ( type ) {
    745788                        TypeData *newType = type->clone();
     
    752795                } // if
    753796        } // if
     797        delete o;
    754798        return o;
    755 }
    756 
    757 DeclarationNode *DeclarationNode::appendList( DeclarationNode *node ) {
    758         if ( node != 0 ) {
    759                 set_link( node );
    760         } // if
    761         return this;
    762799}
    763800
    764801DeclarationNode *DeclarationNode::extractAggregate() const {
    765802        if ( type ) {
    766                 TypeData *ret = type->extractAggregate();
     803                TypeData *ret = typeextractAggregate( type );
    767804                if ( ret ) {
    768805                        DeclarationNode *newnode = new DeclarationNode;
     
    776813void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ) {
    777814        SemanticError errors;
    778         std::back_insert_iterator< std::list< Declaration *> > out( outputList );
     815        std::back_insert_iterator< std::list< Declaration * > > out( outputList );
    779816        const DeclarationNode *cur = firstNode;
    780817        while ( cur ) {
     
    786823                                        *out++ = decl;
    787824                                } // if
     825                                delete extr;
    788826                        } // if
    789827                        Declaration *decl = cur->build();
     
    794832                        errors.append( e );
    795833                } // try
    796                 cur = dynamic_cast<DeclarationNode *>( cur->get_link() );
     834                cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
    797835        } // while
    798836        if ( ! errors.isEmpty() ) {
     
    801839}
    802840
    803 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType *> &outputList ) {
     841void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList ) {
    804842        SemanticError errors;
    805         std::back_insert_iterator< std::list< DeclarationWithType *> > out( outputList );
     843        std::back_insert_iterator< std::list< DeclarationWithType * > > out( outputList );
    806844        const DeclarationNode *cur = firstNode;
    807845        while ( cur ) {
     
    817855                        Declaration *decl = cur->build();
    818856                        if ( decl ) {
    819                                 if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType *>( decl ) ) {
     857                                if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( decl ) ) {
    820858                                        *out++ = dwt;
    821                                 } else if ( StructDecl *agg = dynamic_cast< StructDecl *>( decl ) ) {
     859                                } else if ( StructDecl *agg = dynamic_cast< StructDecl * >( decl ) ) {
    822860                                        StructInstType *inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
    823861                                        *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
    824862                                        delete agg;
    825                                 } else if ( UnionDecl *agg = dynamic_cast< UnionDecl *>( decl ) ) {
     863                                } else if ( UnionDecl *agg = dynamic_cast< UnionDecl * >( decl ) ) {
    826864                                        UnionInstType *inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
    827865                                        *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
     
    831869                        errors.append( e );
    832870                } // try
    833                 cur = dynamic_cast< DeclarationNode *>( cur->get_link() );
     871                cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
    834872        } // while
    835873        if ( ! errors.isEmpty() ) {
     
    838876}
    839877
    840 void buildTypeList( const DeclarationNode *firstNode, std::list< Type *> &outputList ) {
     878void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList ) {
    841879        SemanticError errors;
    842         std::back_insert_iterator< std::list< Type *> > out( outputList );
     880        std::back_insert_iterator< std::list< Type * > > out( outputList );
    843881        const DeclarationNode *cur = firstNode;
    844882        while ( cur ) {
     
    848886                        errors.append( e );
    849887                } // try
    850                 cur = dynamic_cast< DeclarationNode *>( cur->get_link() );
     888                cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
    851889        } // while
    852890        if ( ! errors.isEmpty() ) {
     
    856894
    857895Declaration *DeclarationNode::build() const {
     896        if ( ! error.empty() ) throw SemanticError( error, this );
    858897        if ( type ) {
    859                 return type->buildDecl( name, buildStorageClass(), maybeBuild< Expression >( bitfieldWidth ), buildFuncSpecifier( Inline ), buildFuncSpecifier( Noreturn ), linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
    860         } // if
    861         if ( ! buildFuncSpecifier( Inline ) && ! buildFuncSpecifier( Noreturn ) ) {
    862                 return (new ObjectDecl( name, buildStorageClass(), linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
     898                return buildDecl( type, name, storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
     899        } // if
     900        if ( ! isInline && ! isNoreturn ) {
     901                return (new ObjectDecl( name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
    863902        } // if
    864903        throw SemanticError( "invalid function specifier in declaration of ", this );
     
    870909        switch ( type->kind ) {
    871910          case TypeData::Enum:
    872                 return new EnumInstType( type->buildQualifiers(), type->enumeration->name );
     911                return new EnumInstType( buildQualifiers( type ), type->enumeration->name );
    873912          case TypeData::Aggregate: {
    874913                  ReferenceToType *ret;
    875914                  switch ( type->aggregate->kind ) {
    876915                        case DeclarationNode::Struct:
    877                           ret = new StructInstType( type->buildQualifiers(), type->aggregate->name );
     916                          ret = new StructInstType( buildQualifiers( type ), type->aggregate->name );
    878917                          break;
    879918                        case DeclarationNode::Union:
    880                           ret = new UnionInstType( type->buildQualifiers(), type->aggregate->name );
     919                          ret = new UnionInstType( buildQualifiers( type ), type->aggregate->name );
    881920                          break;
    882921                        case DeclarationNode::Trait:
    883                           ret = new TraitInstType( type->buildQualifiers(), type->aggregate->name );
     922                          ret = new TraitInstType( buildQualifiers( type ), type->aggregate->name );
    884923                          break;
    885924                        default:
     
    890929          }
    891930          case TypeData::Symbolic: {
    892                   TypeInstType *ret = new TypeInstType( type->buildQualifiers(), type->symbolic->name, false );
     931                  TypeInstType *ret = new TypeInstType( buildQualifiers( type ), type->symbolic->name, false );
    893932                  buildList( type->symbolic->actuals, ret->get_parameters() );
    894933                  return ret;
    895934          }
    896935          default:
    897                 return type->build();
     936                return typebuild( type );
    898937        } // switch
    899938}
    900939
    901 DeclarationNode::StorageClass DeclarationNode::buildStorageClass() const {
    902         DeclarationNode::StorageClass ret = DeclarationNode::NoStorageClass;
    903         for ( std::list< DeclarationNode::StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) {
    904           if ( *i == DeclarationNode::Inline || *i == DeclarationNode::Noreturn ) continue; // ignore function specifiers
    905           if ( ret != DeclarationNode::NoStorageClass ) {       // already have a valid storage class ?
    906                         throw SemanticError( "invalid combination of storage classes in declaration of ", this );
    907                 } // if
    908                 ret = *i;
    909         } // for
    910         return ret;
    911 }
    912 
    913 bool DeclarationNode::buildFuncSpecifier( DeclarationNode::StorageClass key ) const {
    914         std::list< DeclarationNode::StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), key );
    915   if ( first == storageClasses.end() ) return false;    // not found
    916         first = std::find( ++first, storageClasses.end(), key ); // found
    917   if ( first == storageClasses.end() ) return true;             // not found again
    918         throw SemanticError( "duplicate function specifier in declaration of ", this );
    919 }
     940// DeclarationNode::StorageClass DeclarationNode::buildStorageClass() const {
     941//      DeclarationNode::StorageClass ret = DeclarationNode::NoStorageClass;
     942//      for ( std::list< DeclarationNode::StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) {
     943//        if ( *i == DeclarationNode::Inline || *i == DeclarationNode::Noreturn ) continue; // ignore function specifiers
     944//        if ( ret != DeclarationNode::NoStorageClass ) {       // already have a valid storage class ?
     945//                      throw SemanticError( "invalid combination of storage classes in declaration of ", this );
     946//              } // if
     947//              ret = *i;
     948//      } // for
     949//      return ret;
     950// }
     951
     952// bool DeclarationNode::buildFuncSpecifier( DeclarationNode::StorageClass key ) const {
     953//      std::list< DeclarationNode::StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), key );
     954//   if ( first == storageClasses.end() ) return false; // not found
     955//      first = std::find( ++first, storageClasses.end(), key ); // found
     956//   if ( first == storageClasses.end() ) return true;          // not found again
     957//      throw SemanticError( "duplicate function specifier in declaration of ", this );
     958// }
    920959
    921960// Local Variables: //
  • src/Parser/ExpressionNode.cc

    r79841be r6943a987  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Aug 10 11:07:38 2016
    13 // Update Count     : 486
     12// Last Modified On : Thu Aug 25 21:39:40 2016
     13// Update Count     : 503
    1414//
    1515
     
    3232using namespace std;
    3333
    34 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ), extension( other.extension ) {}
     34ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.get_name() ), extension( other.extension ) {}
    3535
    3636//##############################################################################
     
    5757static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
    5858
    59 Expression *build_constantInteger( std::string & str ) {
     59Expression *build_constantInteger( const std::string & str ) {
    6060        static const BasicType::Kind kind[2][3] = {
    6161                { BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt },
     
    120120        } // if
    121121
    122         return new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str ) );
     122        Expression * ret = new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str ) );
     123        delete &str;                                                                            // created by lex
     124        return ret;
    123125} // build_constantInteger
    124126
    125 Expression *build_constantFloat( std::string & str ) {
     127Expression *build_constantFloat( const std::string & str ) {
    126128        static const BasicType::Kind kind[2][3] = {
    127129                { BasicType::Float, BasicType::Double, BasicType::LongDouble },
     
    150152        } // if
    151153
    152         return new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str ) );
     154        Expression * ret = new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str ) );
     155        delete &str;                                                                            // created by lex
     156        return ret;
    153157} // build_constantFloat
    154158
    155 Expression *build_constantChar( std::string & str ) {
    156         return new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) );
     159Expression *build_constantChar( const std::string & str ) {
     160        Expression * ret = new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) );
     161        delete &str;                                                                            // created by lex
     162        return ret;
    157163} // build_constantChar
    158164
    159 ConstantExpr *build_constantStr( std::string & str ) {
     165ConstantExpr *build_constantStr( const std::string & str ) {
    160166        // string should probably be a primitive type
    161167        ArrayType *at = new ArrayType( emptyQualifiers, new BasicType( emptyQualifiers, BasicType::Char ),
     
    163169                                                                                        toString( str.size()+1-2 ) ) ),  // +1 for '\0' and -2 for '"'
    164170                                                                   false, false );
    165         return new ConstantExpr( Constant( at, str ) );
     171        ConstantExpr * ret = new ConstantExpr( Constant( at, str ) );
     172        delete &str;                                                                            // created by lex
     173        return ret;
    166174} // build_constantStr
    167175
    168 //##############################################################################
    169 
    170176NameExpr * build_varref( const string *name, bool labelp ) {
    171         return new NameExpr( *name, nullptr );
    172 }
    173 
    174 //##############################################################################
     177        NameExpr *expr = new NameExpr( *name, nullptr );
     178        delete name;
     179        return expr;
     180}
    175181
    176182static const char *OperName[] = {
     
    178184        "SizeOf", "AlignOf", "OffsetOf", "?+?", "?-?", "?*?", "?/?", "?%?", "||", "&&",
    179185        "?|?", "?&?", "?^?", "Cast", "?<<?", "?>>?", "?<?", "?>?", "?<=?", "?>=?", "?==?", "?!=?",
    180         "?=?", "?*=?", "?/=?", "?%=?", "?+=?", "?-=?", "?<<=?", "?>>=?", "?&=?", "?^=?", "?|=?",
     186        "?=?", "?@=?", "?*=?", "?/=?", "?%=?", "?+=?", "?-=?", "?<<=?", "?>>=?", "?&=?", "?^=?", "?|=?",
    181187        "?[?]", "...",
    182188        // monadic
     
    184190};
    185191
    186 //##############################################################################
    187 
    188192Expression *build_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) {
    189         Type *targetType = decl_node->buildType();
     193        Type *targetType = maybeMoveBuildType( decl_node );
    190194        if ( dynamic_cast< VoidType * >( targetType ) ) {
    191195                delete targetType;
    192                 return new CastExpr( maybeBuild<Expression>(expr_node) );
     196                return new CastExpr( maybeMoveBuild< Expression >(expr_node) );
    193197        } else {
    194                 return new CastExpr( maybeBuild<Expression>(expr_node), targetType );
     198                return new CastExpr( maybeMoveBuild< Expression >(expr_node), targetType );
    195199        } // if
    196200}
    197201
    198202Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member ) {
    199         UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeBuild<Expression>(expr_node) );
     203        UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeMoveBuild< Expression >(expr_node) );
    200204        delete member;
    201205        return ret;
     
    204208Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member ) {
    205209        UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
    206         deref->get_args().push_back( maybeBuild<Expression>(expr_node) );
     210        deref->get_args().push_back( maybeMoveBuild< Expression >(expr_node) );
    207211        UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref );
    208212        delete member;
     
    211215
    212216Expression *build_addressOf( ExpressionNode *expr_node ) {
    213                 return new AddressExpr( maybeBuild<Expression>(expr_node) );
     217                return new AddressExpr( maybeMoveBuild< Expression >(expr_node) );
    214218}
    215219Expression *build_sizeOfexpr( ExpressionNode *expr_node ) {
    216         return new SizeofExpr( maybeBuild<Expression>(expr_node) );
     220        return new SizeofExpr( maybeMoveBuild< Expression >(expr_node) );
    217221}
    218222Expression *build_sizeOftype( DeclarationNode *decl_node ) {
    219         return new SizeofExpr( decl_node->buildType() );
     223        return new SizeofExpr( maybeMoveBuildType( decl_node ) );
    220224}
    221225Expression *build_alignOfexpr( ExpressionNode *expr_node ) {
    222         return new AlignofExpr( maybeBuild<Expression>(expr_node) );
     226        return new AlignofExpr( maybeMoveBuild< Expression >(expr_node) );
    223227}
    224228Expression *build_alignOftype( DeclarationNode *decl_node ) {
    225         return new AlignofExpr( decl_node->buildType() );
     229        return new AlignofExpr( maybeMoveBuildType( decl_node) );
    226230}
    227231Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member ) {
    228         return new UntypedOffsetofExpr( decl_node->buildType(), member->get_name() );
     232        Expression* ret = new UntypedOffsetofExpr( maybeMoveBuildType( decl_node ), member->get_name() );
     233        delete member;
     234        return ret;
    229235}
    230236
    231237Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind ) {
    232         return new LogicalExpr( notZeroExpr( maybeBuild<Expression>(expr_node1) ), notZeroExpr( maybeBuild<Expression>(expr_node2) ), kind );
     238        return new LogicalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), notZeroExpr( maybeMoveBuild< Expression >(expr_node2) ), kind );
    233239}
    234240
    235241Expression *build_unary_val( OperKinds op, ExpressionNode *expr_node ) {
    236         std::list<Expression *> args;
    237         args.push_back( maybeBuild<Expression>(expr_node) );
     242        std::list< Expression * > args;
     243        args.push_back( maybeMoveBuild< Expression >(expr_node) );
    238244        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    239245}
    240246Expression *build_unary_ptr( OperKinds op, ExpressionNode *expr_node ) {
    241         std::list<Expression *> args;
    242         args.push_back( new AddressExpr( maybeBuild<Expression>(expr_node) ) );
     247        std::list< Expression * > args;
     248        args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node) ) );
    243249        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    244250}
    245251Expression *build_binary_val( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    246         std::list<Expression *> args;
    247         args.push_back( maybeBuild<Expression>(expr_node1) );
    248         args.push_back( maybeBuild<Expression>(expr_node2) );
     252        std::list< Expression * > args;
     253        args.push_back( maybeMoveBuild< Expression >(expr_node1) );
     254        args.push_back( maybeMoveBuild< Expression >(expr_node2) );
    249255        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    250256}
    251257Expression *build_binary_ptr( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    252         std::list<Expression *> args;
    253         args.push_back( new AddressExpr( maybeBuild<Expression>(expr_node1) ) );
    254         args.push_back( maybeBuild<Expression>(expr_node2) );
     258        std::list< Expression * > args;
     259        args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node1) ) );
     260        args.push_back( maybeMoveBuild< Expression >(expr_node2) );
    255261        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    256262}
    257263
    258264Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 ) {
    259         return new ConditionalExpr( notZeroExpr( maybeBuild<Expression>(expr_node1) ), maybeBuild<Expression>(expr_node2), maybeBuild<Expression>(expr_node3) );
     265        return new ConditionalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), maybeMoveBuild< Expression >(expr_node2), maybeMoveBuild< Expression >(expr_node3) );
    260266}
    261267
    262268Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    263         return new CommaExpr( maybeBuild<Expression>(expr_node1), maybeBuild<Expression>(expr_node2) );
     269        return new CommaExpr( maybeMoveBuild< Expression >(expr_node1), maybeMoveBuild< Expression >(expr_node2) );
    264270}
    265271
    266272Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node ) {
    267         return new AttrExpr( var, maybeBuild<Expression>(expr_node) );
     273        return new AttrExpr( var, maybeMoveBuild< Expression >(expr_node) );
    268274}
    269275Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) {
    270         return new AttrExpr( var, decl_node->buildType() );
     276        return new AttrExpr( var, maybeMoveBuildType( decl_node ) );
    271277}
    272278
    273279Expression *build_tuple( ExpressionNode * expr_node ) {
    274280        TupleExpr *ret = new TupleExpr();
    275         buildList( expr_node, ret->get_exprs() );
     281        buildMoveList( expr_node, ret->get_exprs() );
    276282        return ret;
    277283}
    278284
    279285Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node ) {
    280         std::list<Expression *> args;
    281 
    282         buildList( expr_node, args );
    283         return new UntypedExpr( maybeBuild<Expression>(function), args, nullptr );
     286        std::list< Expression * > args;
     287        buildMoveList( expr_node, args );
     288        return new UntypedExpr( maybeMoveBuild< Expression >(function), args, nullptr );
    284289}
    285290
    286291Expression *build_range( ExpressionNode * low, ExpressionNode *high ) {
    287         Expression *low_cexpr = maybeBuild<Expression>( low );
    288         Expression *high_cexpr = maybeBuild<Expression>( high );
    289         return new RangeExpr( low_cexpr, high_cexpr );
    290 }
    291 
    292 //##############################################################################
    293 
    294 Expression *build_asm( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ) {
    295         return new AsmExpr( maybeBuild< Expression >( inout ), constraint, maybeBuild<Expression>(operand) );
    296 }
    297 
    298 //##############################################################################
    299 
    300 void LabelNode::print( std::ostream &os, int indent ) const {}
    301 
    302 void LabelNode::printOneLine( std::ostream &os, int indent ) const {}
    303 
    304 //##############################################################################
     292        return new RangeExpr( maybeMoveBuild< Expression >( low ), maybeMoveBuild< Expression >( high ) );
     293}
     294
     295Expression *build_asmexpr( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ) {
     296        return new AsmExpr( maybeMoveBuild< Expression >( inout ), constraint, maybeMoveBuild< Expression >(operand) );
     297}
    305298
    306299Expression *build_valexpr( StatementNode *s ) {
    307         return new UntypedValofExpr( maybeBuild<Statement>(s), nullptr );
    308 }
    309 
    310 //##############################################################################
    311  
    312 // ForCtlExprNode::ForCtlExprNode( ParseNode *init_, ExpressionNode *cond, ExpressionNode *incr ) throw ( SemanticError ) : condition( cond ), change( incr ) {
    313 //      if ( init_ == 0 )
    314 //              init = 0;
    315 //      else {
    316 //              DeclarationNode *decl;
    317 //              ExpressionNode *exp;
    318 
    319 //              if (( decl = dynamic_cast<DeclarationNode *>(init_) ) != 0)
    320 //                      init = new StatementNode( decl );
    321 //              else if (( exp = dynamic_cast<ExpressionNode *>( init_)) != 0)
    322 //                      init = new StatementNode( StatementNode::Exp, exp );
    323 //              else
    324 //                      throw SemanticError("Error in for control expression");
    325 //      }
    326 // }
    327 
    328 // ForCtlExprNode::ForCtlExprNode( const ForCtlExprNode &other )
    329 //      : ExpressionNode( other ), init( maybeClone( other.init ) ), condition( maybeClone( other.condition ) ), change( maybeClone( other.change ) ) {
    330 // }
    331 
    332 // ForCtlExprNode::~ForCtlExprNode() {
    333 //      delete init;
    334 //      delete condition;
    335 //      delete change;
    336 // }
    337 
    338 // Expression *ForCtlExprNode::build() const {
    339 //      // this shouldn't be used!
    340 //      assert( false );
    341 //      return 0;
    342 // }
    343 
    344 // void ForCtlExprNode::print( std::ostream &os, int indent ) const{
    345 //      os << string( indent,' ' ) << "For Control Expression -- :" << endl;
    346 
    347 //      os << string( indent + 2, ' ' ) << "initialization:" << endl;
    348 //      if ( init != 0 )
    349 //              init->printList( os, indent + 4 );
    350 
    351 //      os << string( indent + 2, ' ' ) << "condition: " << endl;
    352 //      if ( condition != 0 )
    353 //              condition->print( os, indent + 4 );
    354 //      os << string( indent + 2, ' ' ) << "increment: " << endl;
    355 //      if ( change != 0 )
    356 //              change->print( os, indent + 4 );
    357 // }
    358 
    359 // void ForCtlExprNode::printOneLine( std::ostream &, int indent ) const {
    360 //      assert( false );
    361 // }
    362 
    363 //##############################################################################
    364 
     300        return new UntypedValofExpr( maybeMoveBuild< Statement >(s), nullptr );
     301}
    365302Expression *build_typevalue( DeclarationNode *decl ) {
    366         return new TypeExpr( decl->buildType() );
    367 }
    368 
    369 //##############################################################################
     303        return new TypeExpr( maybeMoveBuildType( decl ) );
     304}
    370305
    371306Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ) {
    372         Declaration * newDecl = maybeBuild<Declaration>(decl_node); // compound literal type
     307        Declaration * newDecl = maybeBuild< Declaration >(decl_node); // compound literal type
    373308        if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type
    374                 return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeBuild<Initializer>(kids) );
     309                return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeMoveBuild< Initializer >(kids) );
    375310        // these types do not have associated type information
    376311        } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl )  ) {
    377                 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeBuild<Initializer>(kids) );
     312                return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
    378313        } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl )  ) {
    379                 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeBuild<Initializer>(kids) );
     314                return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
    380315        } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl )  ) {
    381                 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeBuild<Initializer>(kids) );
     316                return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
    382317        } else {
    383318                assert( false );
  • src/Parser/InitializerNode.cc

    r79841be r6943a987  
    1010// Created On       : Sat May 16 13:20:24 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jul  4 15:37:15 2016
    13 // Update Count     : 15
     12// Last Modified On : Mon Aug 15 18:27:02 2016
     13// Update Count     : 20
    1414//
    1515
     
    2525        : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    2626        if ( aggrp )
    27                 kids = dynamic_cast< InitializerNode *>( get_link() );
     27                kids = dynamic_cast< InitializerNode * >( get_next() );
    2828
    2929        if ( kids != 0 )
    30                 set_link( 0 );
     30                set_last( 0 );
    3131}
    3232
     
    3434        : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    3535        if ( init != 0 )
    36                 set_link(init);
     36                set_last( init );
    3737
    3838        if ( aggrp )
    39                 kids = dynamic_cast< InitializerNode *>( get_link() );
     39                kids = dynamic_cast< InitializerNode * >( get_next() );
    4040
    4141        if ( kids != 0 )
     
    4545InitializerNode::~InitializerNode() {
    4646        delete expr;
     47        delete designator;
     48        delete kids;
    4749}
    4850
     
    5860                        while ( curdes != 0) {
    5961                                curdes->printOneLine(os);
    60                                 curdes = (ExpressionNode *)(curdes->get_link());
     62                                curdes = (ExpressionNode *)(curdes->get_next());
    6163                                if ( curdes ) os << ", ";
    6264                        } // while
     
    7274
    7375        InitializerNode *moreInit;
    74         if  ( get_link() != 0 && ((moreInit = dynamic_cast< InitializerNode * >( get_link() ) ) != 0) )
     76        if  ( get_next() != 0 && ((moreInit = dynamic_cast< InitializerNode * >( get_next() ) ) != 0) )
    7577                moreInit->printOneLine( os );
    7678}
     
    8284                //assert( next_init() != 0 );
    8385
    84                 std::list< Initializer *> initlist;
    85                 buildList<Initializer, InitializerNode>( next_init(), initlist );
     86                std::list< Initializer * > initlist;
     87                buildList< Initializer, InitializerNode >( next_init(), initlist );
    8688
    87                 std::list< Expression *> designlist;
     89                std::list< Expression * > designlist;
    8890
    8991                if ( designator != 0 ) {
    90                         buildList<Expression, ExpressionNode>( designator, designlist );
     92                        buildList< Expression, ExpressionNode >( designator, designlist );
    9193                } // if
    9294
    9395                return new ListInit( initlist, designlist, maybeConstructed );
    9496        } else {
    95                 std::list< Expression *> designators;
     97                std::list< Expression * > designators;
    9698
    9799                if ( designator != 0 )
    98                         buildList<Expression, ExpressionNode>( designator, designators );
     100                        buildList< Expression, ExpressionNode >( designator, designators );
    99101
    100102                if ( get_expression() != 0)
    101                         return new SingleInit( maybeBuild<Expression>( get_expression() ), designators, maybeConstructed );
     103                        return new SingleInit( maybeBuild< Expression >( get_expression() ), designators, maybeConstructed );
    102104        } // if
    103105
  • src/Parser/LinkageSpec.cc

    r79841be r6943a987  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // LinkageSpec.cc -- 
    8 // 
     7// LinkageSpec.cc --
     8//
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:22:09 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 19 15:53:05 2015
    13 // Update Count     : 5
    14 // 
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sun Aug 21 12:32:53 2016
     13// Update Count     : 17
     14//
    1515
    1616#include <string>
     
    2020#include "Common/SemanticError.h"
    2121
    22 LinkageSpec::Type LinkageSpec::fromString( const std::string &stringSpec ) {
    23         if ( stringSpec == "\"Cforall\"" ) {
     22LinkageSpec::Spec LinkageSpec::fromString( const std::string &spec ) {
     23        if ( spec == "\"Cforall\"" ) {
    2424                return Cforall;
    25         } else if ( stringSpec == "\"C\"" ) {
     25        } else if ( spec == "\"C\"" ) {
    2626                return C;
    2727        } else {
    28                 throw SemanticError( "Invalid linkage specifier " + stringSpec );
    29         }
     28                throw SemanticError( "Invalid linkage specifier " + spec );
     29        } // if
     30        delete &spec;                                                                           // allocated by lexer
    3031}
    3132
    32 std::string LinkageSpec::toString( LinkageSpec::Type linkage ) {
    33         switch ( linkage ) {
    34           case Intrinsic:
    35                 return "intrinsic";
    36           case Cforall:
    37                 return "Cforall";
    38           case C:
    39                 return "C";
    40           case AutoGen:
    41                 return "automatically generated";
    42           case Compiler:
    43                 return "compiler built-in";
    44         }
    45         assert( false );
    46         return "";
     33std::string LinkageSpec::toString( LinkageSpec::Spec linkage ) {
     34        assert( linkage >= 0 && linkage < LinkageSpec::NoOfSpecs );
     35        static const char *linkageKinds[LinkageSpec::NoOfSpecs] = {
     36                "intrinsic", "Cforall", "C", "automatically generated", "compiler built-in",
     37        };
     38        return linkageKinds[linkage];
    4739}
    4840
    49 bool LinkageSpec::isDecoratable( Type t ) {
    50         switch ( t ) {
    51           case Intrinsic:
    52           case Cforall:
    53           case AutoGen:
    54                 return true;
    55           case C:
    56           case Compiler:
    57                 return false;
    58         }
    59         assert( false );
    60         return false;
     41bool LinkageSpec::isDecoratable( Spec spec ) {
     42        assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs );
     43        static bool decoratable[LinkageSpec::NoOfSpecs] = {
     44                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     45                        true,           true,           false,  true,           false,
     46        };
     47        return decoratable[spec];
    6148}
    6249
    63 bool LinkageSpec::isGeneratable( Type t ) {
    64         switch ( t ) {
    65           case Intrinsic:
    66           case Cforall:
    67           case AutoGen:
    68           case C:
    69                 return true;
    70           case Compiler:
    71                 return false;
    72         }
    73         assert( false );
    74         return false;
     50bool LinkageSpec::isGeneratable( Spec spec ) {
     51        assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs );
     52        static bool generatable[LinkageSpec::NoOfSpecs] = {
     53                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     54                        true,           true,           true,   true,           false,
     55        };
     56        return generatable[spec];
    7557}
    7658
    77 bool LinkageSpec::isOverloadable( Type t ) {
    78         return isDecoratable( t );
     59bool LinkageSpec::isOverridable( Spec spec ) {
     60        assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs );
     61        static bool overridable[LinkageSpec::NoOfSpecs] = {
     62                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     63                        true,           false,          false,  true,           false,
     64        };
     65        return overridable[spec];
    7966}
    8067
    81 
    82 bool 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 
    96 bool LinkageSpec::isBuiltin( Type t ) {
    97         switch ( t ) {
    98           case Cforall:
    99           case AutoGen:
    100           case C:
    101                 return false;
    102           case Intrinsic:
    103           case Compiler:
    104                 return true;
    105         }
    106         assert( false );
    107         return false;
     68bool LinkageSpec::isBuiltin( Spec spec ) {
     69        assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs );
     70        static bool builtin[LinkageSpec::NoOfSpecs] = {
     71                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     72                        true,           false,          false,  false,          true,
     73        };
     74        return builtin[spec];
    10875}
    10976
  • src/Parser/LinkageSpec.h

    r79841be r6943a987  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:24:28 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Aug 18 14:11:55 2015
    13 // Update Count     : 5
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sat Aug 20 19:22:23 2016
     13// Update Count     : 8
    1414//
    1515
     
    2020
    2121struct LinkageSpec {
    22         enum Type {
     22        enum Spec {
    2323                Intrinsic,                                                                              // C built-in defined in prelude
    2424                Cforall,                                                                                // ordinary
    2525                C,                                                                                              // not overloadable, not mangled
    2626                AutoGen,                                                                                // built by translator (struct assignment)
    27                 Compiler                                                                                // gcc internal
     27                Compiler,                                                                               // gcc internal
     28                NoOfSpecs
    2829        };
    2930 
    30         static Type fromString( const std::string & );
    31         static std::string toString( Type );
     31        static Spec fromString( const std::string & );
     32        static std::string toString( Spec );
    3233 
    33         static bool isDecoratable( Type );
    34         static bool isGeneratable( Type );
    35         static bool isOverloadable( Type );
    36         static bool isOverridable( Type );
    37         static bool isBuiltin( Type );
     34        static bool isDecoratable( Spec );
     35        static bool isGeneratable( Spec );
     36        static bool isOverridable( Spec );
     37        static bool isBuiltin( Spec );
    3838};
    3939
  • src/Parser/ParseNode.cc

    r79841be r6943a987  
    1010// Created On       : Sat May 16 13:26:29 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug  7 23:32:47 2016
    13 // Update Count     : 94
     12// Last Modified On : Wed Aug 17 23:14:16 2016
     13// Update Count     : 126
    1414//
    1515
     
    1717using namespace std;
    1818
    19 // Builder
    2019int ParseNode::indent_by = 4;
    21 
    22 ParseNode::ParseNode() : next( 0 ) {};
    23 ParseNode::ParseNode( const string *name ) : name( *name ), next( 0 ) { delete name; }
    24 ParseNode::ParseNode( const string &name ) : name( name ), next( 0 ) { }
    25 
    26 ParseNode::~ParseNode() {
    27         delete next;
    28 };
    29 
    30 ParseNode *ParseNode::get_last() {
    31         ParseNode *current = this;
    32 
    33         while ( current->get_link() != 0 )
    34         current = current->get_link();
    35 
    36         return current;
    37 }
    38 
    39 ParseNode *ParseNode::set_link( ParseNode *next_ ) {
    40         if ( next_ != 0 ) get_last()->next = next_;
    41         return this;
    42 }
    43 
    44 void ParseNode::print( std::ostream &os, int indent ) const {}
    45 
    46 
    47 void ParseNode::printList( std::ostream &os, int indent ) const {
    48         print( os, indent );
    49 
    50         if ( next ) {
    51                 next->printList( os, indent );
    52         } // if
    53 }
    54 
    55 ParseNode &ParseNode::operator,( ParseNode &p ) {
    56         set_link( &p );
    57 
    58         return *this;
    59 }
    60 
    61 ParseNode *mkList( ParseNode &pn ) {
    62         // it just relies on `operator,' to take care of the "arguments" and provides a nice interface to an awful-looking
    63         // address-of, rendering, for example (StatementNode *)(&(*$5 + *$7)) into (StatementNode *)mkList(($5, $7))
    64         // (although "nice" is probably not the word)
    65         return &pn;
    66 }
    6720
    6821// Local Variables: //
  • src/Parser/ParseNode.h

    r79841be r6943a987  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug 11 12:24:11 2016
    13 // Update Count     : 443
     12// Last Modified On : Sun Aug 28 21:14:51 2016
     13// Update Count     : 575
    1414//
    1515
     
    2222#include <memory>
    2323
    24 #include "Common/utility.h"
    2524#include "Parser/LinkageSpec.h"
    2625#include "SynTree/Type.h"
    2726#include "SynTree/Expression.h"
    2827#include "SynTree/Statement.h"
    29 //#include "SynTree/Declaration.h"
     28#include "SynTree/Label.h"
     29#include "Common/utility.h"
    3030#include "Common/UniqueName.h"
    31 #include "SynTree/Label.h"
    3231
    3332class StatementNode;
     
    3736class InitializerNode;
    3837
    39 // Builder
     38//##############################################################################
     39
    4040class ParseNode {
    4141  public:
    42         ParseNode();
    43         ParseNode( const std::string * );
    44         ParseNode( const std::string & );                                       // for copy constructing subclasses
    45         virtual ~ParseNode();
    46 
    47         ParseNode *get_link() const { return next; }
    48         ParseNode *get_last();
    49         ParseNode *set_link( ParseNode * );
    50         void set_next( ParseNode *newlink ) { next = newlink; }
    51 
    52         virtual ParseNode *clone() const { return 0; };
     42        ParseNode() {};
     43        ParseNode( const std::string *name ) : name( *name ) { assert( false ); delete name; }
     44        ParseNode( const std::string &name ) : name( name ) { assert( false ); }
     45        virtual ~ParseNode() { delete next; };
     46        virtual ParseNode *clone() const = 0;
     47
     48        ParseNode *get_next() const { return next; }
     49        ParseNode *set_next( ParseNode *newlink ) { next = newlink; return this; }
     50        ParseNode *get_last() {
     51                ParseNode *current;
     52                for ( current = this; current->get_next() != 0; current = current->get_next() );
     53                return current;
     54        }
     55        ParseNode *set_last( ParseNode *newlast ) {
     56                if ( newlast != 0 ) get_last()->set_next( newlast );
     57                return this;
     58        }
    5359
    5460        const std::string &get_name() const { return name; }
    5561        void set_name( const std::string &newValue ) { name = newValue; }
    5662
    57         virtual void print( std::ostream &os, int indent = 0 ) const;
    58         virtual void printList( std::ostream &os, int indent = 0 ) const;
    59 
    60         ParseNode &operator,( ParseNode & );
    61   protected:
     63        virtual void print( std::ostream &os, int indent = 0 ) const {}
     64        virtual void printList( std::ostream &os, int indent = 0 ) const {}
     65  private:
     66        static int indent_by;
     67
     68        ParseNode *next = nullptr;
    6269        std::string name;
    63         static int indent_by;
    64         ParseNode *next;
    65 };
    66 
    67 ParseNode *mkList( ParseNode & );
     70}; // ParseNode
    6871
    6972//##############################################################################
     
    7477        InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode *des = 0 );
    7578        ~InitializerNode();
     79        virtual InitializerNode *clone() const { assert( false ); return nullptr; }
    7680
    7781        ExpressionNode *get_expression() const { return expr; }
     
    9296        ExpressionNode *expr;
    9397        bool aggregate;
    94         ExpressionNode *designator; // may be list
     98        ExpressionNode *designator;                                                     // may be list
    9599        InitializerNode *kids;
    96100        bool maybeConstructed;
    97 };
    98 
    99 //##############################################################################
    100 
    101 class ExpressionNode : public ParseNode {
     101}; // InitializerNode
     102
     103//##############################################################################
     104
     105class ExpressionNode final : public ParseNode {
    102106  public:
    103107        ExpressionNode( Expression * expr = nullptr ) : expr( expr ) {}
     
    105109        ExpressionNode( const ExpressionNode &other );
    106110        virtual ~ExpressionNode() {}
    107 
    108         virtual ExpressionNode *clone() const { return 0; }
     111        virtual ExpressionNode *clone() const { return expr ? new ExpressionNode( expr->clone() ) : nullptr; }
    109112
    110113        bool get_extension() const { return extension; }
    111114        ExpressionNode *set_extension( bool exten ) { extension = exten; return this; }
    112115
    113         virtual void print( std::ostream &os, int indent = 0 ) const {}
    114         virtual void printOneLine( std::ostream &os, int indent = 0 ) const {}
    115 
    116         virtual Expression *build() const { return expr; }
     116        void print( std::ostream &os, int indent = 0 ) const {}
     117        void printOneLine( std::ostream &os, int indent = 0 ) const {}
     118
     119        template<typename T>
     120        bool isExpressionType() const {
     121                return nullptr != dynamic_cast<T>(expr.get());
     122        }
     123
     124        Expression *build() const { return const_cast<ExpressionNode*>(this)->expr.release(); }
    117125  private:
    118126        bool extension = false;
    119         Expression *expr;
    120 };
     127        std::unique_ptr<Expression> expr;
     128}; // ExpressionNode
    121129
    122130template< typename T >
    123 struct maybeBuild_t<Expression, T> {
     131struct maybeBuild_t< Expression, T > {
    124132        static inline Expression * doit( const T *orig ) {
    125133                if ( orig ) {
     
    128136                        return p;
    129137                } else {
    130                         return 0;
     138                        return nullptr;
    131139                } // if
    132140        }
    133141};
    134 
    135 //##############################################################################
    136 
    137 Expression *build_constantInteger( std::string &str );
    138 Expression *build_constantFloat( std::string &str );
    139 Expression *build_constantChar( std::string &str );
    140 ConstantExpr *build_constantStr( std::string &str );
    141 
    142 //##############################################################################
    143 
    144 NameExpr *build_varref( const std::string *name, bool labelp = false );
    145 
    146 //##############################################################################
    147 
    148 Expression *build_typevalue( DeclarationNode *decl );
    149 
    150 //##############################################################################
    151142
    152143enum class OperKinds {
     
    154145        SizeOf, AlignOf, OffsetOf, Plus, Minus, Mul, Div, Mod, Or, And,
    155146        BitOr, BitAnd, Xor, Cast, LShift, RShift, LThan, GThan, LEThan, GEThan, Eq, Neq,
    156         Assign, MulAssn, DivAssn, ModAssn, PlusAssn, MinusAssn, LSAssn, RSAssn, AndAssn, ERAssn, OrAssn,
     147        Assign, AtAssn, MulAssn, DivAssn, ModAssn, PlusAssn, MinusAssn, LSAssn, RSAssn, AndAssn, ERAssn, OrAssn,
    157148        Index, Range,
    158149        // monadic
    159150        UnPlus, UnMinus, AddressOf, PointTo, Neg, BitNeg, Incr, IncrPost, Decr, DecrPost, LabelAddress,
    160151        Ctor, Dtor,
     152}; // OperKinds
     153
     154struct LabelNode {
     155        std::list< Label > labels;
    161156};
     157
     158Expression *build_constantInteger( const std::string &str );
     159Expression *build_constantFloat( const std::string &str );
     160Expression *build_constantChar( const std::string &str );
     161ConstantExpr *build_constantStr( const std::string &str );
     162
     163NameExpr *build_varref( const std::string *name, bool labelp = false );
     164Expression *build_typevalue( DeclarationNode *decl );
    162165
    163166Expression *build_cast( DeclarationNode * decl_node, ExpressionNode *expr_node );
     
    183186Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node );
    184187Expression *build_range( ExpressionNode * low, ExpressionNode *high );
    185 
    186 //##############################################################################
    187 
    188 Expression *build_asm( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand );
    189 
    190 //##############################################################################
    191 
    192 class LabelNode : public ExpressionNode {
    193   public:
    194         virtual Expression *build() const { return NULL; }
    195         virtual LabelNode *clone() const { assert( false ); return new LabelNode( *this ); }
    196 
    197         virtual void print( std::ostream &os, int indent = 0) const;
    198         virtual void printOneLine( std::ostream &os, int indent = 0) const;
    199 
    200         const std::list< Label > &get_labels() const { return labels; };
    201         void append_label( std::string * label ) { labels.push_back( *label ); delete label; }
    202   private:
    203         std::list< Label > labels;
    204 };
    205 
    206 //##############################################################################
    207 
     188Expression *build_asmexpr( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand );
    208189Expression *build_valexpr( StatementNode *s );
    209 
    210 //##############################################################################
    211 
    212190Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids );
    213191
     
    218196class DeclarationNode : public ParseNode {
    219197  public:
    220         enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic };
     198        enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic, NoOfQualifier };
    221199        enum StorageClass { Extern, Static, Auto, Register, Inline, Fortran, Noreturn, Threadlocal, NoStorageClass, };
    222200        enum BasicType { Char, Int, Float, Double, Void, Bool, Complex, Imaginary };
     
    226204        enum BuiltinType { Valist };
    227205
     206        static const char *qualifierName[];
    228207        static const char *storageName[];
    229         static const char *qualifierName[];
    230208        static const char *basicTypeName[];
    231209        static const char *modifierName[];
     
    236214        static DeclarationNode *newFunction( std::string *name, DeclarationNode *ret, DeclarationNode *param, StatementNode *body, bool newStyle = false );
    237215        static DeclarationNode *newQualifier( Qualifier );
     216        static DeclarationNode *newForall( DeclarationNode *);
    238217        static DeclarationNode *newStorageClass( StorageClass );
    239218        static DeclarationNode *newBasicType( BasicType );
    240219        static DeclarationNode *newModifier( Modifier );
    241         static DeclarationNode *newForall( DeclarationNode *);
     220        static DeclarationNode *newBuiltinType( BuiltinType );
    242221        static DeclarationNode *newFromTypedef( std::string *);
    243222        static DeclarationNode *newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields, bool body );
     
    258237        static DeclarationNode *newAttr( std::string *, ExpressionNode *expr );
    259238        static DeclarationNode *newAttr( std::string *, DeclarationNode *type );
    260         static DeclarationNode *newBuiltinType( BuiltinType );
     239
     240        DeclarationNode();
     241        ~DeclarationNode();
     242        DeclarationNode *clone() const;
    261243
    262244        DeclarationNode *addQualifiers( DeclarationNode *);
     245        void checkQualifiers( const TypeData *, const TypeData * );
    263246        DeclarationNode *copyStorageClasses( DeclarationNode *);
    264247        DeclarationNode *addType( DeclarationNode *);
     
    275258        DeclarationNode *addNewArray( DeclarationNode *array );
    276259        DeclarationNode *addParamList( DeclarationNode *list );
    277         DeclarationNode *addIdList( DeclarationNode *list );       // old-style functions
     260        DeclarationNode *addIdList( DeclarationNode *list ); // old-style functions
    278261        DeclarationNode *addInitializer( InitializerNode *init );
    279262
     
    284267        DeclarationNode *cloneBaseType( DeclarationNode *newdecl );
    285268
    286         DeclarationNode *appendList( DeclarationNode * );
    287 
    288         DeclarationNode *clone() const;
     269        DeclarationNode *appendList( DeclarationNode *node ) {
     270                return (DeclarationNode *)set_last( node );
     271        }
     272
    289273        void print( std::ostream &os, int indent = 0 ) const;
    290274        void printList( std::ostream &os, int indent = 0 ) const;
     
    295279        bool get_hasEllipsis() const;
    296280        const std::string &get_name() const { return name; }
    297         LinkageSpec::Type get_linkage() const { return linkage; }
     281        LinkageSpec::Spec get_linkage() const { return linkage; }
    298282        DeclarationNode *extractAggregate() const;
    299         ExpressionNode *get_enumeratorValue() const { return enumeratorValue; }
     283        bool has_enumeratorValue() const { return (bool)enumeratorValue; }
     284        ExpressionNode *consume_enumeratorValue() const { return const_cast<DeclarationNode*>(this)->enumeratorValue.release(); }
    300285
    301286        bool get_extension() const { return extension; }
    302287        DeclarationNode *set_extension( bool exten ) { extension = exten; return this; }
    303 
    304         DeclarationNode();
    305         ~DeclarationNode();
    306   private:
    307         StorageClass buildStorageClass() const;
    308         bool buildFuncSpecifier( StorageClass key ) const;
     288  public:
     289        // StorageClass buildStorageClass() const;
     290        // bool buildFuncSpecifier( StorageClass key ) const;
    309291
    310292        TypeData *type;
    311293        std::string name;
    312         std::list< StorageClass > storageClasses;
     294        // std::list< StorageClass > storageClasses;
     295        StorageClass storageClass;
     296        bool isInline, isNoreturn;
    313297        std::list< std::string > attributes;
    314298        ExpressionNode *bitfieldWidth;
    315         ExpressionNode *enumeratorValue;
     299        std::unique_ptr<ExpressionNode> enumeratorValue;
    316300        InitializerNode *initializer;
    317301        bool hasEllipsis;
    318         LinkageSpec::Type linkage;
     302        LinkageSpec::Spec linkage;
    319303        bool extension = false;
     304        std::string error;
    320305
    321306        static UniqueName anonymous;
     
    323308
    324309Type *buildType( TypeData *type );
    325 
    326 //##############################################################################
    327 
    328 class StatementNode : public ParseNode {
    329   public:
    330         enum Type { Exp,   If,        Switch,  Case,    Default,  Choose,   Fallthru,
    331                                 While, Do,        For,
    332                                 Goto,  Continue,  Break,   Return,  Throw,
    333                                 Try,   Catch,     Finally, Asm,
    334                                 Decl
    335         };
    336 
    337         StatementNode();
    338         StatementNode( const std::string *name );
    339         StatementNode( Type t, ExpressionNode *control = 0, StatementNode *block = 0 );
    340         StatementNode( Type t, std::string *target );
     310//Type::Qualifiers buildQualifiers( const TypeData::Qualifiers & qualifiers );
     311
     312static inline Type * maybeMoveBuildType( const DeclarationNode *orig ) {
     313        Type* ret = orig ? orig->buildType() : nullptr;
     314        delete orig;
     315        return ret;
     316}
     317
     318//##############################################################################
     319
     320class StatementNode final : public ParseNode {
     321  public:
     322        StatementNode() { stmt = nullptr; }
     323        StatementNode( Statement *stmt ) : stmt( stmt ) {}
    341324        StatementNode( DeclarationNode *decl );
    342 
    343         ~StatementNode();
    344 
    345         static StatementNode *newCatchStmt( DeclarationNode *d = 0, StatementNode *s = 0, bool catchRestP = false );
    346 
    347         StatementNode *set_block( StatementNode *b ) { block = b; return this; }
    348         StatementNode *get_block() const { return block; }
    349 
    350         void set_control( ExpressionNode *c ) { control = c; }
    351         ExpressionNode *get_control() const { return control; }
    352 
    353         StatementNode::Type get_type() const { return type; }
    354 
    355         virtual StatementNode *add_label( const std::string * );
    356         virtual std::list<std::string> get_labels() const { return labels; }
    357 
    358         void addDeclaration( DeclarationNode *newDecl ) { decl = newDecl; }
    359         void setCatchRest( bool newVal ) { isCatchRest = newVal; }
    360 
    361         std::string get_target() const;
    362 
    363         // StatementNode *add_controlexp( ExpressionNode * );
    364         StatementNode *append_block( StatementNode * );
     325        virtual ~StatementNode() {}
     326
     327        virtual StatementNode *clone() const final { assert( false ); return nullptr; }
     328        Statement *build() const { return const_cast<StatementNode*>(this)->stmt.release(); }
     329
     330        virtual StatementNode *add_label( const std::string * name ) {
     331                stmt->get_labels().emplace_back( *name );
     332                delete name;
     333                return this;
     334        }
     335
    365336        virtual StatementNode *append_last_case( StatementNode * );
    366 
    367         void print( std::ostream &os, int indent = 0) const;
    368         virtual StatementNode *clone() const;
    369         virtual Statement *build() const;
    370   private:
    371         static const char *StType[];
    372         Type type;
    373         ExpressionNode *control;
    374         StatementNode *block;
    375         std::list<std::string> labels;
    376         std::string *target;                            // target label for jump statements
    377         DeclarationNode *decl;
    378         bool isCatchRest;
    379 }; // StatementNode
    380 
    381 class StatementNode2 : public StatementNode {
    382   public:
    383         StatementNode2() {}
    384         StatementNode2( Statement *stmt ) : stmt( stmt ) {}
    385         virtual ~StatementNode2() {}
    386 
    387         virtual StatementNode2 *clone() const { assert( false ); return nullptr; }
    388         virtual Statement *build() const { return stmt; }
    389 
    390         virtual StatementNode2 *add_label( const std::string * name ) {
    391                 stmt->get_labels().emplace_back( *name );
    392                 return this;
    393         }
    394         virtual StatementNode *append_last_case( StatementNode * );
    395         virtual std::list<std::string> get_labels() const { assert( false ); return StatementNode::get_labels(); }
    396337
    397338        virtual void print( std::ostream &os, int indent = 0 ) {}
    398339        virtual void printList( std::ostream &os, int indent = 0 ) {}
    399340  private:
    400         Statement *stmt;
     341        std::unique_ptr<Statement> stmt;
    401342}; // StatementNode
     343
     344Statement *build_expr( ExpressionNode *ctl );
    402345
    403346struct ForCtl {
    404347        ForCtl( ExpressionNode *expr, ExpressionNode *condition, ExpressionNode *change ) :
    405                 init( new StatementNode( StatementNode::Exp, expr ) ), condition( condition ), change( change ) {}
     348                init( new StatementNode( build_expr( expr ) ) ), condition( condition ), change( change ) {}
    406349        ForCtl( DeclarationNode *decl, ExpressionNode *condition, ExpressionNode *change ) :
    407350                init( new StatementNode( decl ) ), condition( condition ), change( change ) {}
     
    412355};
    413356
    414 Statement *build_expr( ExpressionNode *ctl );
    415357Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt );
    416358Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt );
     
    419361Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind = false );
    420362Statement *build_for( ForCtl *forctl, StatementNode *stmt );
    421 Statement *build_branch( std::string identifier, BranchStmt::Type kind );
     363Statement *build_branch( BranchStmt::Type kind );
     364Statement *build_branch( std::string *identifier, BranchStmt::Type kind );
    422365Statement *build_computedgoto( ExpressionNode *ctl );
    423366Statement *build_return( ExpressionNode *ctl );
    424367Statement *build_throw( ExpressionNode *ctl );
    425 
    426 //##############################################################################
    427 
    428 class CompoundStmtNode : public StatementNode {
    429   public:
    430         CompoundStmtNode();
    431         CompoundStmtNode( const std::string * );
    432         CompoundStmtNode( StatementNode * );
    433         ~CompoundStmtNode();
    434 
    435         void add_statement( StatementNode * );
    436 
    437         void print( std::ostream &os, int indent = 0 ) const;
    438         virtual Statement *build() const;
    439   private:
    440         StatementNode *first, *last;
    441 };
    442 
    443 //##############################################################################
    444 
    445 class AsmStmtNode : public StatementNode {
    446   public:
    447         AsmStmtNode( Type, bool voltile, ConstantExpr *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ExpressionNode *clobber = 0, LabelNode *gotolabels = 0 );
    448         ~AsmStmtNode();
    449 
    450         void print( std::ostream &os, int indent = 0 ) const;
    451         Statement *build() const;
    452   private:
    453         bool voltile;
    454         ConstantExpr *instruction;
    455         ExpressionNode *output, *input;
    456         ExpressionNode *clobber;
    457         std::list< Label > gotolabels;
    458 };
     368Statement *build_try( StatementNode *try_stmt, StatementNode *catch_stmt, StatementNode *finally_stmt );
     369Statement *build_catch( DeclarationNode *decl, StatementNode *stmt, bool catchAny = false );
     370Statement *build_finally( StatementNode *stmt );
     371Statement *build_compound( StatementNode *first );
     372Statement *build_asmstmt( bool voltile, ConstantExpr *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ExpressionNode *clobber = 0, LabelNode *gotolabels = 0 );
    459373
    460374//##############################################################################
     
    463377void buildList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) {
    464378        SemanticError errors;
    465         std::back_insert_iterator< std::list< SynTreeType *> > out( outputList );
     379        std::back_insert_iterator< std::list< SynTreeType * > > out( outputList );
    466380        const NodeType *cur = firstNode;
    467381
    468382        while ( cur ) {
    469383                try {
    470 //                      SynTreeType *result = dynamic_cast< SynTreeType *>( maybeBuild<typename std::result_of<decltype(&NodeType::build)(NodeType)>::type>( cur ) );
    471                         SynTreeType *result = dynamic_cast< SynTreeType *>( maybeBuild<typename std::pointer_traits<decltype(cur->build())>::element_type>( cur ) );
     384//                      SynTreeType *result = dynamic_cast< SynTreeType * >( maybeBuild< typename std::result_of< decltype(&NodeType::build)(NodeType)>::type >( cur ) );
     385                        SynTreeType *result = dynamic_cast< SynTreeType * >( maybeBuild< typename std::pointer_traits< decltype(cur->build())>::element_type >( cur ) );
    472386                        if ( result ) {
    473387                                *out++ = result;
     
    477391                        errors.append( e );
    478392                } // try
    479                 cur = dynamic_cast< NodeType *>( cur->get_link() );
     393                cur = dynamic_cast< NodeType * >( cur->get_next() );
    480394        } // while
    481395        if ( ! errors.isEmpty() ) {
     
    486400// in DeclarationNode.cc
    487401void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList );
    488 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType *> &outputList );
     402void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList );
    489403void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList );
     404
     405template< typename SynTreeType, typename NodeType >
     406void buildMoveList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) {
     407        buildList(firstNode, outputList);
     408        delete firstNode;
     409}
     410
    490411
    491412#endif // PARSENODE_H
  • src/Parser/StatementNode.cc

    r79841be r6943a987  
    1010// Created On       : Sat May 16 14:59:41 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug 11 16:19:45 2016
    13 // Update Count     : 210
     12// Last Modified On : Sun Aug 21 11:59:37 2016
     13// Update Count     : 325
    1414//
    1515
     
    2626using namespace std;
    2727
    28 const char *StatementNode::StType[] = {
    29         "Exp",   "If",       "Switch", "Case",    "Default",  "Choose",   "Fallthru",
    30         "While", "Do",       "For",
    31         "Goto",  "Continue", "Break",  "Return",  "Throw",
    32         "Try",   "Catch",    "Finally", "Asm",
    33         "Decl"
    34 };
    35 
    36 StatementNode::StatementNode() : ParseNode(), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
    37 
    38 StatementNode::StatementNode( const string *name ) : ParseNode( name ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
    39 
    40 StatementNode::StatementNode( DeclarationNode *decl ) : type( Decl ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), isCatchRest ( false ) {
     28
     29StatementNode::StatementNode( DeclarationNode *decl ) {
    4130        if ( decl ) {
    42                 if ( DeclarationNode *agg = decl->extractAggregate() ) {
    43                         this->decl = agg;
    44                         StatementNode *nextStmt = new StatementNode;
    45                         nextStmt->type = Decl;
    46                         nextStmt->decl = decl;
    47                         next = nextStmt;
    48                         if ( decl->get_link() ) {
    49                                 next->set_next( new StatementNode( dynamic_cast< DeclarationNode* >( decl->get_link() ) ) );
     31                DeclarationNode *agg = decl->extractAggregate();
     32                if ( agg ) {
     33                        StatementNode *nextStmt = new StatementNode( new DeclStmt( noLabels, maybeBuild< Declaration >( decl ) ) );
     34                        set_next( nextStmt );
     35                        if ( decl->get_next() ) {
     36                                get_next()->set_next( new StatementNode( dynamic_cast< DeclarationNode * >(decl->get_next()) ) );
    5037                                decl->set_next( 0 );
    5138                        } // if
    5239                } else {
    53                         if ( decl->get_link() ) {
    54                                 next = new StatementNode( dynamic_cast< DeclarationNode* >( decl->get_link() ) );
     40                        if ( decl->get_next() ) {
     41                                set_next(new StatementNode( dynamic_cast< DeclarationNode * >( decl->get_next() ) ) );
    5542                                decl->set_next( 0 );
    5643                        } // if
    57                         this->decl = decl;
     44                        agg = decl;
    5845                } // if
     46                stmt.reset( new DeclStmt( noLabels, maybeMoveBuild< Declaration >(agg) ) );
     47        } else {
     48                assert( false );
    5949        } // if
    6050}
    6151
    62 StatementNode::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;
    64 }
    65 
    66 StatementNode::StatementNode( Type t, string *target ) : type( t ), control( 0 ), block( 0 ), labels( 0 ), target( target ), decl( 0 ), isCatchRest ( false ) {}
    67 
    68 StatementNode::~StatementNode() {
    69         delete control;
    70         delete block;
    71         delete target;
    72         delete decl;
    73 }
    74 
    75 StatementNode * StatementNode::newCatchStmt( DeclarationNode *d, StatementNode *s, bool catchRestP ) {
    76         StatementNode *ret = new StatementNode( StatementNode::Catch, 0, s );
    77         ret->addDeclaration( d );
    78         ret->setCatchRest( catchRestP );
    79 
    80         return ret;
    81 }
    82 
    83 std::string StatementNode::get_target() const{
    84         if ( target )
    85                 return *target;
    86 
    87         return string("");
    88 }
    89 
    90 StatementNode * StatementNode::clone() const {
    91         StatementNode *newnode = new StatementNode( type, maybeClone( control ), maybeClone( block ) );
    92         if ( target ) {
    93                 newnode->target = new string( *target );
    94         } else {
    95                 newnode->target = 0;
    96         } // if
    97         newnode->decl = maybeClone( decl );
    98         return newnode;
    99 }
    100 
    101 StatementNode *StatementNode::add_label( const std::string *l ) {
    102         if ( l != 0 ) {
    103                 labels.push_front( *l );
    104                 delete l;
    105         } // if
    106         return this;
    107 }
    108 
    109 StatementNode *StatementNode::append_block( StatementNode *stmt ) {
    110         if ( stmt != 0 ) {
    111                 if ( block == 0 )
    112                         block = stmt;
    113                 else
    114                         block->set_link( stmt );
    115         } // if
    116         return this;
    117 }
    118 
    11952StatementNode *StatementNode::append_last_case( StatementNode *stmt ) {
    120         assert( false );
    121         if ( stmt != 0 ) {
    122                 StatementNode *next = ( StatementNode *)get_link();
    123                 if ( next && ( next->get_type() == StatementNode::Case || next->get_type() == StatementNode::Default ) )
    124                         next->append_last_case( stmt );
    125                 else
    126                         if ( block == 0 )
    127                                 block = stmt;
    128                         else
    129                                 block->set_link( stmt );
    130         } // if
    131         return this;
    132 }
    133 
    134 StatementNode *StatementNode2::append_last_case( StatementNode *stmt ) {
    13553        StatementNode *prev = this;
    136         for ( StatementNode * curr = prev; curr != nullptr; curr = (StatementNode *)curr->get_link() ) {
    137                 StatementNode2 *node = dynamic_cast<StatementNode2 *>(curr);
    138                 assert( node );
    139                 assert( dynamic_cast<CaseStmt *>(node->stmt) );
     54        // find end of list and maintain previous pointer
     55        for ( StatementNode * curr = prev; curr != nullptr; curr = (StatementNode *)curr->get_next() ) {
     56                StatementNode *node = safe_dynamic_cast< StatementNode * >(curr);
     57                assert( dynamic_cast< CaseStmt * >(node->stmt.get()) );
    14058                prev = curr;
    14159        } // for
    142         StatementNode2 *node = dynamic_cast<StatementNode2 *>(prev);
    143         std::list<Statement *> stmts;
    144         buildList( stmt, stmts );
    145         CaseStmt * caseStmt;
    146         caseStmt = dynamic_cast<CaseStmt *>(node->stmt);
     60        // convert from StatementNode list to Statement list
     61        StatementNode *node = dynamic_cast< StatementNode * >(prev);
     62        std::list< Statement * > stmts;
     63        buildMoveList( stmt, stmts );
     64        // splice any new Statements to end of current Statements
     65        CaseStmt * caseStmt = dynamic_cast< CaseStmt * >(node->stmt.get());
    14766        caseStmt->get_statements().splice( caseStmt->get_statements().end(), stmts );
    14867        return this;
    14968}
    15069
    151 void StatementNode::print( std::ostream &os, int indent ) const {
    152         if ( ! labels.empty() ) {
    153                 std::list<std::string>::const_iterator i;
    154 
    155                 os << string( indent, ' ' );
    156                 for ( i = labels.begin(); i != labels.end(); i++ )
    157                         os << *i << ":";
    158                 os << endl;
    159         } // if
    160 
    161         switch ( type ) {
    162           case Decl:
    163                 decl->print( os, indent );
    164                 break;
    165           case Exp:
    166                 if ( control ) {
    167                         os << string( indent, ' ' );
    168                         control->print( os, indent );
    169                         os << endl;
    170                 } else
    171                         os << string( indent, ' ' ) << "Null Statement" << endl;
    172                 break;
    173           default:
    174                 os << string( indent, ' ' ) << StatementNode::StType[type] << endl;
    175                 if ( type == Catch ) {
    176                         if ( decl ) {
    177                                 os << string( indent + ParseNode::indent_by, ' ' ) << "Declaration: " << endl;
    178                                 decl->print( os, indent + 2 * ParseNode::indent_by );
    179                         } else if ( isCatchRest ) {
    180                                 os << string( indent + ParseNode::indent_by, ' ' ) << "Catches the rest " << endl;
    181                         } else {
    182                                 ; // should never reach here
    183                         } // if
    184                 } // if
    185                 if ( control ) {
    186                         os << string( indent + ParseNode::indent_by, ' ' ) << "Control: " << endl;
    187                         control->printList( os, indent + 2 * ParseNode::indent_by );
    188                 } // if
    189                 if ( block ) {
    190                         os << string( indent + ParseNode::indent_by, ' ' ) << "Cases: " << endl;
    191                         block->printList( os, indent + 2 * ParseNode::indent_by );
    192                 } // if
    193                 if ( target ) {
    194                         os << string( indent + ParseNode::indent_by, ' ' ) << "Target: " << get_target() << endl;
    195                 } // if
    196                 break;
    197         } // switch
    198 }
    199 
    200 Statement *StatementNode::build() const {
    201         std::list<Statement *> branches;
    202         std::list<Expression *> exps;
    203         std::list<Label> labs;
    204 
    205         if ( ! labels.empty() ) {
    206                 std::back_insert_iterator< std::list<Label> > lab_it( labs );
    207                 copy( labels.begin(), labels.end(), lab_it );
    208         } // if
    209 
    210         // try {
    211         buildList<Statement, StatementNode>( get_block(), branches );
    212 
    213         switch ( type ) {
    214           case Decl:
    215                 return new DeclStmt( labs, maybeBuild< Declaration >( decl ) );
    216           case Exp:
    217                 {
    218                         Expression *e = maybeBuild< Expression >( get_control() );
    219 
    220                         if ( e )
    221                                 return new ExprStmt( labs, e );
    222                         else
    223                                 return new NullStmt( labs );
    224                 }
    225                 assert( false );
    226           case If:
    227                 // {
    228                 //      Statement *thenb = 0, *elseb = 0;
    229                 //      assert( branches.size() >= 1 );
    230 
    231                 //      thenb = branches.front();
    232                 //      branches.pop_front();
    233                 //      if ( ! branches.empty() ) {
    234                 //              elseb = branches.front();
    235                 //              branches.pop_front();
    236                 //      } // if
    237                 //      return new IfStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), thenb, elseb );
    238                 // }
    239                 assert( false );
    240           case Switch:
    241                 // return new SwitchStmt( labs, maybeBuild<Expression>(get_control()), branches );
    242                 assert( false );
    243           case Case:
    244                 //return new CaseStmt( labs, maybeBuild<Expression>(get_control() ), branches );
    245                 assert( false );
    246           case Default:
    247                 //return new CaseStmt( labs, 0, branches, true );
    248                 assert( false );
    249           case While:
    250                 // assert( branches.size() == 1 );
    251                 // return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front() );
    252                 assert( false );
    253           case Do:
    254                 // assert( branches.size() == 1 );
    255                 // return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front(), true );
    256                 assert( false );
    257           case For:
    258                 // {
    259                 //      assert( branches.size() == 1 );
    260 
    261                 //      ForCtlExprNode *ctl = dynamic_cast<ForCtlExprNode *>( get_control() );
    262                 //      assert( ctl != 0 );
    263 
    264                 //      std::list<Statement *> init;
    265                 //      if ( ctl->get_init() != 0 ) {
    266                 //              buildList( ctl->get_init(), init );
    267                 //      } // if
    268 
    269                 //      Expression *cond = 0;
    270                 //      if ( ctl->get_condition() != 0 )
    271                 //              cond = notZeroExpr( maybeBuild<Expression>(ctl->get_condition()) );
    272 
    273                 //      Expression *incr = 0;
    274                 //      if ( ctl->get_change() != 0 )
    275                 //              incr = maybeBuild<Expression>(ctl->get_change());
    276 
    277                 //      return new ForStmt( labs, init, cond, incr, branches.front() );
    278                 // }
    279                 assert( false );
    280           case Goto:
    281                 // {
    282                 //      if ( get_target() == "" ) {                                     // computed goto
    283                 //              assert( get_control() != 0 );
    284                 //              return new BranchStmt( labs, maybeBuild<Expression>(get_control()), BranchStmt::Goto );
    285                 //      } // if
    286 
    287                 //      return new BranchStmt( labs, get_target(), BranchStmt::Goto );
    288                 // }
    289                 assert( false );
    290           case Break:
    291                 // return new BranchStmt( labs, get_target(), BranchStmt::Break );
    292                 assert( false );
    293           case Continue:
    294                 // return new BranchStmt( labs, get_target(), BranchStmt::Continue );
    295                 assert( false );
    296           case Return:
    297           case Throw :
    298                 // buildList( get_control(), exps );
    299                 // if ( exps.size() ==0 )
    300                 //      return new ReturnStmt( labs, 0, type == Throw );
    301                 // if ( exps.size() > 0 )
    302                 //      return new ReturnStmt( labs, exps.back(), type == Throw );
    303                 assert( false );
    304           case Try:
    305                 {
    306                         assert( branches.size() >= 0 );
    307                         CompoundStmt *tryBlock = dynamic_cast<CompoundStmt *>( branches.front());
    308                         branches.pop_front();
    309                         FinallyStmt *finallyBlock = 0;
    310                         if ( ( finallyBlock = dynamic_cast<FinallyStmt *>( branches.back())) ) {
    311                                 branches.pop_back();
    312                         } // if
    313                         return new TryStmt( labs, tryBlock, branches, finallyBlock );
    314                 }
    315           case Catch:
    316                 {
    317                         assert( branches.size() == 1 );
    318 
    319                         return new CatchStmt( labs, maybeBuild< Declaration >( decl ), branches.front(), isCatchRest );
    320                 }
    321           case Finally:
    322                 {
    323                         assert( branches.size() == 1 );
    324                         CompoundStmt *block = dynamic_cast<CompoundStmt *>( branches.front() );
    325                         assert( block != 0 );
    326 
    327                         return new FinallyStmt( labs, block );
    328                 }
    329           case Asm:
    330                 assert( false );
    331           default:
    332                 // shouldn't be here
    333                 return 0;
    334         } // switch
    335 }
    336 
    33770Statement *build_expr( ExpressionNode *ctl ) {
    338         Expression *e = maybeBuild< Expression >( ctl );
     71        Expression *e = maybeMoveBuild< Expression >( ctl );
    33972
    34073        if ( e )
     
    34679Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt ) {
    34780        Statement *thenb, *elseb = 0;
    348         std::list<Statement *> branches;
    349         buildList<Statement, StatementNode>( then_stmt, branches );
     81        std::list< Statement * > branches;
     82        buildMoveList< Statement, StatementNode >( then_stmt, branches );
    35083        assert( branches.size() == 1 );
    35184        thenb = branches.front();
    35285
    35386        if ( else_stmt ) {
    354                 std::list<Statement *> branches;
    355                 buildList<Statement, StatementNode>( else_stmt, branches );
     87                std::list< Statement * > branches;
     88                buildMoveList< Statement, StatementNode >( else_stmt, branches );
    35689                assert( branches.size() == 1 );
    35790                elseb = branches.front();
    35891        } // if
    359         return new IfStmt( noLabels, notZeroExpr( maybeBuild<Expression>(ctl) ), thenb, elseb );
     92        return new IfStmt( noLabels, notZeroExpr( maybeMoveBuild< Expression >(ctl) ), thenb, elseb );
    36093}
    36194
    36295Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt ) {
    363         std::list<Statement *> branches;
    364         buildList<Statement, StatementNode>( stmt, branches );
     96        std::list< Statement * > branches;
     97        buildMoveList< Statement, StatementNode >( stmt, branches );
    36598        assert( branches.size() >= 0 );                                         // size == 0 for switch (...) {}, i.e., no declaration or statements
    366         return new SwitchStmt( noLabels, maybeBuild<Expression>(ctl), branches );
     99        return new SwitchStmt( noLabels, maybeMoveBuild< Expression >(ctl), branches );
    367100}
    368101Statement *build_case( ExpressionNode *ctl ) {
    369         std::list<Statement *> branches;
    370         return new CaseStmt( noLabels, maybeBuild<Expression>(ctl), branches );
     102        std::list< Statement * > branches;
     103        return new CaseStmt( noLabels, maybeMoveBuild< Expression >(ctl), branches );
    371104}
    372105Statement *build_default() {
    373         std::list<Statement *> branches;
     106        std::list< Statement * > branches;
    374107        return new CaseStmt( noLabels, nullptr, branches, true );
    375108}
    376109
    377110Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind ) {
    378         std::list<Statement *> branches;
    379         buildList<Statement, StatementNode>( stmt, branches );
    380         assert( branches.size() == 1 );
    381         return new WhileStmt( noLabels, notZeroExpr( maybeBuild<Expression>(ctl) ), branches.front(), kind );
     111        std::list< Statement * > branches;
     112        buildMoveList< Statement, StatementNode >( stmt, branches );
     113        assert( branches.size() == 1 );
     114        return new WhileStmt( noLabels, notZeroExpr( maybeMoveBuild< Expression >(ctl) ), branches.front(), kind );
    382115}
    383116
    384117Statement *build_for( ForCtl *forctl, StatementNode *stmt ) {
    385         std::list<Statement *> branches;
    386         buildList<Statement, StatementNode>( stmt, branches );
    387         assert( branches.size() == 1 );
    388 
    389         std::list<Statement *> init;
     118        std::list< Statement * > branches;
     119        buildMoveList< Statement, StatementNode >( stmt, branches );
     120        assert( branches.size() == 1 );
     121
     122        std::list< Statement * > init;
    390123        if ( forctl->init != 0 ) {
    391                 buildList( forctl->init, init );
     124                buildMoveList( forctl->init, init );
    392125        } // if
    393126
    394127        Expression *cond = 0;
    395128        if ( forctl->condition != 0 )
    396                 cond = notZeroExpr( maybeBuild<Expression>(forctl->condition) );
     129                cond = notZeroExpr( maybeMoveBuild< Expression >(forctl->condition) );
    397130
    398131        Expression *incr = 0;
    399132        if ( forctl->change != 0 )
    400                 incr = maybeBuild<Expression>(forctl->change);
     133                incr = maybeMoveBuild< Expression >(forctl->change);
    401134
    402135        delete forctl;
     
    404137}
    405138
    406 Statement *build_branch( std::string identifier, BranchStmt::Type kind ) {
    407         return new BranchStmt( noLabels, identifier, kind );
     139Statement *build_branch( BranchStmt::Type kind ) {
     140        Statement * ret = new BranchStmt( noLabels, "", kind );
     141        return ret;
     142}
     143Statement *build_branch( std::string *identifier, BranchStmt::Type kind ) {
     144        Statement * ret = new BranchStmt( noLabels, *identifier, kind );
     145        delete identifier;                                                                      // allocated by lexer
     146        return ret;
    408147}
    409148Statement *build_computedgoto( ExpressionNode *ctl ) {
    410         return new BranchStmt( noLabels, maybeBuild<Expression>(ctl), BranchStmt::Goto );
     149        return new BranchStmt( noLabels, maybeMoveBuild< Expression >(ctl), BranchStmt::Goto );
    411150}
    412151
    413152Statement *build_return( ExpressionNode *ctl ) {
    414         std::list<Expression *> exps;
    415         buildList( ctl, exps );
     153        std::list< Expression * > exps;
     154        buildMoveList( ctl, exps );
    416155        return new ReturnStmt( noLabels, exps.size() > 0 ? exps.back() : nullptr );
    417156}
    418157Statement *build_throw( ExpressionNode *ctl ) {
    419         std::list<Expression *> exps;
    420         buildList( ctl, exps );
    421         return new ReturnStmt( noLabels, exps.size() > 0 ? exps.back() : nullptr, true );
    422 }
    423 
    424 
    425 CompoundStmtNode::CompoundStmtNode() : first( 0 ), last( 0 ) {}
    426 
    427 CompoundStmtNode::CompoundStmtNode( const string *name_ ) : StatementNode( name_ ), first( 0 ), last( 0 ) {}
    428 
    429 CompoundStmtNode::CompoundStmtNode( StatementNode *stmt ) : first( stmt ) {
    430         if ( first ) {
    431                 last = ( StatementNode *)( stmt->get_last());
    432         } else {
    433                 last = 0;
    434         } // if
    435 }
    436 
    437 CompoundStmtNode::~CompoundStmtNode() {
    438         delete first;
    439 }
    440 
    441 void CompoundStmtNode::add_statement( StatementNode *stmt ) {
    442         if ( stmt != 0 ) {
    443                 last->set_link( stmt );
    444                 last = ( StatementNode *)( stmt->get_link());
    445         } // if
    446 }
    447 
    448 void CompoundStmtNode::print( ostream &os, int indent ) const {
    449         if ( first ) {
    450                 first->printList( os, indent+2 );
    451         } // if
    452 }
    453 
    454 Statement *CompoundStmtNode::build() const {
    455         std::list<Label> labs;
    456         const std::list<std::string> &labels = get_labels();
    457 
    458         if ( ! labels.empty() ) {
    459                 std::back_insert_iterator< std::list<Label> > lab_it( labs );
    460                 copy( labels.begin(), labels.end(), lab_it );
    461         } // if
    462 
    463         CompoundStmt *cs = new CompoundStmt( labs );
    464         buildList( first, cs->get_kids() );
     158        std::list< Expression * > exps;
     159        buildMoveList( ctl, exps );
     160        assertf( exps.size() < 2, "This means we are leaking memory");
     161        return new ReturnStmt( noLabels, !exps.empty() ? exps.back() : nullptr, true );
     162}
     163
     164Statement *build_try( StatementNode *try_stmt, StatementNode *catch_stmt, StatementNode *finally_stmt ) {
     165        std::list< Statement * > branches;
     166        buildMoveList< Statement, StatementNode >( catch_stmt, branches );
     167        CompoundStmt *tryBlock = safe_dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >(try_stmt));
     168        FinallyStmt *finallyBlock = dynamic_cast< FinallyStmt * >(maybeMoveBuild< Statement >(finally_stmt) );
     169        return new TryStmt( noLabels, tryBlock, branches, finallyBlock );
     170}
     171Statement *build_catch( DeclarationNode *decl, StatementNode *stmt, bool catchAny ) {
     172        std::list< Statement * > branches;
     173        buildMoveList< Statement, StatementNode >( stmt, branches );
     174        assert( branches.size() == 1 );
     175        return new CatchStmt( noLabels, maybeMoveBuild< Declaration >(decl), branches.front(), catchAny );
     176}
     177Statement *build_finally( StatementNode *stmt ) {
     178        std::list< Statement * > branches;
     179        buildMoveList< Statement, StatementNode >( stmt, branches );
     180        assert( branches.size() == 1 );
     181        return new FinallyStmt( noLabels, dynamic_cast< CompoundStmt * >( branches.front() ) );
     182}
     183
     184Statement *build_compound( StatementNode *first ) {
     185        CompoundStmt *cs = new CompoundStmt( noLabels );
     186        buildMoveList( first, cs->get_kids() );
    465187        return cs;
    466188}
    467189
    468 
    469 AsmStmtNode::AsmStmtNode( Type t, bool voltile, ConstantExpr *instruction, ExpressionNode *output, ExpressionNode *input, ExpressionNode *clobber, LabelNode *gotolabels ) :
    470         StatementNode( t ), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ) {
    471         if ( gotolabels ) {
    472                 this->gotolabels = gotolabels->get_labels();
    473                 delete gotolabels;
    474         } // if
    475 }
    476 
    477 AsmStmtNode::~AsmStmtNode() {
    478         delete output; delete input; delete clobber;
    479 }
    480 
    481 void AsmStmtNode::print( std::ostream &os, int indent ) const {
    482         StatementNode::print( os, indent );                                     // print statement labels
    483         os << string( indent + ParseNode::indent_by, ' ' ) << "volatile:" << voltile << endl;
    484         if ( instruction ) {
    485                 os << string( indent + ParseNode::indent_by, ' ' ) << "Instruction:" << endl;
    486 //              instruction->printList( os, indent + 2 * ParseNode::indent_by );
    487         } // if
    488         if ( output ) {
    489                 os << string( indent + ParseNode::indent_by, ' ' ) << "Output:" << endl;
    490                 output->printList( os, indent + 2 * ParseNode::indent_by );
    491         } // if
    492         if ( input ) {
    493                 os << string( indent + ParseNode::indent_by, ' ' ) << "Input:" << endl;
    494                 input->printList( os, indent + 2 * ParseNode::indent_by );
    495         } // if
    496         if ( clobber ) {
    497                 os << string( indent + ParseNode::indent_by, ' ' ) << "Clobber:" << endl;
    498 //              clobber->printList( os, indent + 2 * ParseNode::indent_by );
    499         } // if
    500         if ( ! gotolabels.empty() ) {
    501                 os << string( indent + ParseNode::indent_by, ' ' ) << "Goto Labels:" << endl;
    502                 os << string( indent + 2 * ParseNode::indent_by, ' ' );
    503                 for ( std::list<Label>::const_iterator i = gotolabels.begin();; ) {
    504                         os << *i;
    505                         i++;
    506                   if ( i == gotolabels.end() ) break;
    507                         os << ", ";
    508                 }
    509                 os << endl;
    510         } // if
    511 }
    512 
    513 Statement *AsmStmtNode::build() const {
    514         std::list<Label> labs;
    515 
    516         if ( ! get_labels().empty() ) {
    517                 std::back_insert_iterator< std::list<Label> > lab_it( labs );
    518                 copy( get_labels().begin(), get_labels().end(), lab_it );
    519         } // if
    520 
     190Statement *build_asmstmt( bool voltile, ConstantExpr *instruction, ExpressionNode *output, ExpressionNode *input, ExpressionNode *clobber, LabelNode *gotolabels ) {
    521191        std::list< Expression * > out, in;
    522192        std::list< ConstantExpr * > clob;
    523         buildList( output, out );
    524         buildList( input, in );
    525         buildList( clobber, clob );
    526         std::list< Label > gotolabs = gotolabels;
    527         return new AsmStmt( labs, voltile, instruction, out, in, clob, gotolabs );
     193
     194        buildMoveList( output, out );
     195        buildMoveList( input, in );
     196        buildMoveList( clobber, clob );
     197        return new AsmStmt( noLabels, voltile, instruction, out, in, clob, gotolabels ? gotolabels->labels : noLabels );
    528198}
    529199
  • src/Parser/TypeData.cc

    r79841be r6943a987  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug  7 07:51:48 2016
    13 // Update Count     : 58
     12// Last Modified On : Sun Aug 28 18:28:58 2016
     13// Update Count     : 223
    1414//
    1515
     
    9494                break;
    9595        } // switch
    96 }
     96} // TypeData::TypeData
    9797
    9898TypeData::~TypeData() {
     
    163163                break;
    164164        } // switch
    165 }
    166 
    167 TypeData *TypeData::clone() const {
    168         TypeData *newtype = new TypeData( kind );
     165} // TypeData::~TypeData
     166
     167TypeData * TypeData::clone() const {
     168        TypeData * newtype = new TypeData( kind );
    169169        newtype->qualifiers = qualifiers;
    170170        newtype->base = maybeClone( base );
     
    182182                break;
    183183          case Array:
    184 //PAB           newtype->array->dimension = maybeClone( array->dimension );
    185                 newtype->array->dimension = array->dimension;
     184                newtype->array->dimension = maybeClone( array->dimension );
    186185                newtype->array->isVarLen = array->isVarLen;
    187186                newtype->array->isStatic = array->isStatic;
     
    239238        } // switch
    240239        return newtype;
    241 }
     240} // TypeData::clone
    242241
    243242void TypeData::print( std::ostream &os, int indent ) const {
     
    245244        using std::string;
    246245
    247         printEnums( qualifiers.begin(), qualifiers.end(), DeclarationNode::qualifierName, os );
     246        for ( int i = 0; i < DeclarationNode::NoOfQualifier; i += 1 ) {
     247                if ( qualifiers[i] ) os << DeclarationNode::qualifierName[ i ] << ' ';
     248        } // for
    248249
    249250        if ( forall ) {
     
    417418                assert( false );
    418419        } // switch
    419 }
    420 
    421 TypeData *TypeData::extractAggregate( bool toplevel ) const {
    422         TypeData *ret = 0;
    423 
    424         switch ( kind ) {
    425           case Aggregate:
    426                 if ( ! toplevel && aggregate->fields ) {
    427                         ret = clone();
    428                         ret->qualifiers.clear();
    429                 } // if
    430                 break;
    431           case Enum:
    432                 if ( ! toplevel && enumeration->constants ) {
    433                         ret = clone();
    434                         ret->qualifiers.clear();
    435                 } // if
    436                 break;
    437           case AggregateInst:
    438                 if ( aggInst->aggregate ) {
    439                         ret = aggInst->aggregate->extractAggregate( false );
    440                 } // if
    441                 break;
    442           default:
    443                 if ( base ) {
    444                         ret = base->extractAggregate( false );
    445                 } // if
    446         } // switch
    447         return ret;
    448 }
    449 
    450 void buildForall( const DeclarationNode *firstNode, std::list< TypeDecl* > &outputList ) {
     420} // TypeData::print
     421
     422void buildForall( const DeclarationNode * firstNode, std::list< TypeDecl* > &outputList ) {
    451423        buildList( firstNode, outputList );
    452424        for ( std::list< TypeDecl* >::iterator i = outputList.begin(); i != outputList.end(); ++i ) {
     
    454426                        // add assertion parameters to `type' tyvars in reverse order
    455427                        // add dtor:  void ^?{}(T *)
    456                         FunctionType *dtorType = new FunctionType( Type::Qualifiers(), false );
     428                        FunctionType * dtorType = new FunctionType( Type::Qualifiers(), false );
    457429                        dtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), 0 ) );
    458430                        (*i)->get_assertions().push_front( new FunctionDecl( "^?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, dtorType, 0, false, false ) );
    459431
    460432                        // add copy ctor:  void ?{}(T *, T)
    461                         FunctionType *copyCtorType = new FunctionType( Type::Qualifiers(), false );
     433                        FunctionType * copyCtorType = new FunctionType( Type::Qualifiers(), false );
    462434                        copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), 0 ) );
    463435                        copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), 0 ) );
     
    465437
    466438                        // add default ctor:  void ?{}(T *)
    467                         FunctionType *ctorType = new FunctionType( Type::Qualifiers(), false );
     439                        FunctionType * ctorType = new FunctionType( Type::Qualifiers(), false );
    468440                        ctorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), 0 ) );
    469441                        (*i)->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, ctorType, 0, false, false ) );
    470442
    471443                        // add assignment operator:  T * ?=?(T *, T)
    472                         FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
     444                        FunctionType * assignType = new FunctionType( Type::Qualifiers(), false );
    473445                        assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), 0 ) );
    474446                        assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), 0 ) );
     
    479451}
    480452
    481 Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer *init ) const {
    482         if ( kind == TypeData::Function ) {
    483                 FunctionDecl *decl;
    484                 if ( function->hasBody ) {
    485                         if ( function->body ) {
    486                                 Statement *stmt = function->body->build();
    487                                 CompoundStmt *body = dynamic_cast< CompoundStmt* >( stmt );
    488                                 assert( body );
    489                                 decl = new FunctionDecl( name, sc, linkage, buildFunction(), body, isInline, isNoreturn );
    490                         } else {
    491                                 // std::list<Label> ls;
    492                                 decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list<Label>() ), isInline, isNoreturn );
    493                         } // if
    494                 } else {
    495                         decl = new FunctionDecl( name, sc, linkage, buildFunction(), 0, isInline, isNoreturn );
    496                 } // if
    497                 for ( DeclarationNode *cur = function->idList; cur != 0; cur = dynamic_cast< DeclarationNode* >( cur->get_link() ) ) {
    498                         if ( cur->get_name() != "" ) {
    499                                 decl->get_oldIdents().insert( decl->get_oldIdents().end(), cur->get_name() );
    500                         } // if
    501                 } // for
    502                 buildList( function->oldDeclList, decl->get_oldDecls() );
    503                 return decl;
    504         } else if ( kind == TypeData::Aggregate ) {
    505                 return buildAggregate();
    506         } else if ( kind == TypeData::Enum ) {
    507                 return buildEnum();
    508         } else if ( kind == TypeData::Symbolic ) {
    509                 return buildSymbolic( name, sc );
    510         } else if ( kind == TypeData::Variable ) {
    511                 return buildVariable();
    512         } else {
    513                 return new ObjectDecl( name, sc, linkage, bitfieldWidth, build(), init, std::list< Attribute * >(),  isInline, isNoreturn );
    514         } // if
    515         return 0;
    516 }
    517 
    518 Type *TypeData::build() const {
    519         switch ( kind ) {
    520           case Unknown:
     453Type * typebuild( const TypeData * td ) {
     454        assert( td );
     455        switch ( td->kind ) {
     456          case TypeData::Unknown:
    521457                // fill in implicit int
    522                 return new BasicType( buildQualifiers(), BasicType::SignedInt );
    523           case Basic:
    524                 return buildBasicType();
    525           case Pointer:
    526                 return buildPointer();
    527           case Array:
    528                 return buildArray();
    529           case Function:
    530                 return buildFunction();
    531           case AggregateInst:
    532                 return buildAggInst();
    533           case EnumConstant:
     458                return new BasicType( buildQualifiers( td ), BasicType::SignedInt );
     459          case TypeData::Basic:
     460                return buildBasicType( td );
     461          case TypeData::Pointer:
     462                return buildPointer( td );
     463          case TypeData::Array:
     464                return buildArray( td );
     465          case TypeData::Function:
     466                return buildFunction( td );
     467          case TypeData::AggregateInst:
     468                return buildAggInst( td );
     469          case TypeData::EnumConstant:
    534470                // the name gets filled in later -- by SymTab::Validate
    535                 return new EnumInstType( buildQualifiers(), "" );
    536           case SymbolicInst:
    537                 return buildSymbolicInst();;
    538           case Tuple:
    539                 return buildTuple();
    540           case Typeof:
    541                 return buildTypeof();
    542           case Builtin:
    543                 return new VarArgsType( buildQualifiers() );
    544           case Attr:
    545                 return buildAttr();
    546           case Symbolic:
    547           case Enum:
    548           case Aggregate:
    549           case Variable:
     471                return new EnumInstType( buildQualifiers( td ), "" );
     472          case TypeData::SymbolicInst:
     473                return buildSymbolicInst( td );;
     474          case TypeData::Tuple:
     475                return buildTuple( td );
     476          case TypeData::Typeof:
     477                return buildTypeof( td );
     478          case TypeData::Builtin:
     479                return new VarArgsType( buildQualifiers( td ) );
     480          case TypeData::Attr:
     481                return buildAttr( td );
     482          case TypeData::Symbolic:
     483          case TypeData::Enum:
     484          case TypeData::Aggregate:
     485          case TypeData::Variable:
    550486                assert( false );
    551487        } // switch
    552488        return 0;
    553 }
    554 
    555 Type::Qualifiers TypeData::buildQualifiers() const {
     489} // typebuild
     490
     491TypeData * typeextractAggregate( const TypeData * td, bool toplevel ) {
     492        TypeData * ret = 0;
     493
     494        switch ( td->kind ) {
     495          case TypeData::Aggregate:
     496                if ( ! toplevel && td->aggregate->fields ) {
     497                        ret = td->clone();
     498                } // if
     499                break;
     500          case TypeData::Enum:
     501                if ( ! toplevel && td->enumeration->constants ) {
     502                        ret = td->clone();
     503                } // if
     504                break;
     505          case TypeData::AggregateInst:
     506                if ( td->aggInst->aggregate ) {
     507                        ret = typeextractAggregate( td->aggInst->aggregate, false );
     508                } // if
     509                break;
     510          default:
     511                if ( td->base ) {
     512                        ret = typeextractAggregate( td->base, false );
     513                } // if
     514        } // switch
     515        return ret;
     516} // typeextractAggregate
     517
     518Type::Qualifiers buildQualifiers( const TypeData * td ) {
    556519        Type::Qualifiers q;
    557         for ( std::list< DeclarationNode::Qualifier >::const_iterator i = qualifiers.begin(); i != qualifiers.end(); ++i ) {
    558                 switch ( *i ) {
    559                   case DeclarationNode::Const:
    560                         q.isConst = true;
    561                         break;
    562                   case DeclarationNode::Volatile:
    563                         q.isVolatile = true;
    564                         break;
    565                   case DeclarationNode::Restrict:
    566                         q.isRestrict = true;
    567                         break;
    568                   case DeclarationNode::Lvalue:
    569                         q.isLvalue = true;
    570                         break;
    571                   case DeclarationNode::Atomic:
    572                         q.isAtomic = true;
    573                         break;
    574                 } // switch
    575         } // for
     520        q.isConst = td->qualifiers[ DeclarationNode::Const ];
     521        q.isVolatile = td->qualifiers[ DeclarationNode::Volatile ];
     522        q.isRestrict = td->qualifiers[ DeclarationNode::Restrict ];
     523        q.isLvalue = td->qualifiers[ DeclarationNode::Lvalue ];
     524        q.isAtomic = td->qualifiers[ DeclarationNode::Atomic ];;
    576525        return q;
    577 }
    578 
    579 Type *TypeData::buildBasicType() const {
     526} // buildQualifiers
     527
     528Type * buildBasicType( const TypeData * td ) {
    580529        static const BasicType::Kind kindMap[] = { BasicType::Char, BasicType::SignedInt, BasicType::Float, BasicType::Double,
    581530                                                                                           BasicType::Char /* void */, BasicType::Bool, BasicType::DoubleComplex,
     
    586535        BasicType::Kind ret;
    587536
    588         for ( std::list< DeclarationNode::BasicType >::const_iterator i = basic->typeSpec.begin(); i != basic->typeSpec.end(); ++i ) {
     537        for ( std::list< DeclarationNode::BasicType >::const_iterator i = td->basic->typeSpec.begin(); i != td->basic->typeSpec.end(); ++i ) {
    589538                if ( ! init ) {
    590539                        init = true;
    591540                        if ( *i == DeclarationNode::Void ) {
    592                                 if ( basic->typeSpec.size() != 1 || ! basic->modifiers.empty() ) {
    593                                         throw SemanticError( "invalid type specifier \"void\" in type: ", this );
     541                                if ( td->basic->typeSpec.size() != 1 || ! td->basic->modifiers.empty() ) {
     542                                        throw SemanticError( "invalid type specifier \"void\" in type: ", td );
    594543                                } else {
    595                                         return new VoidType( buildQualifiers() );
     544                                        return new VoidType( buildQualifiers( td ) );
    596545                                } // if
    597546                        } else {
     
    602551                          case DeclarationNode::Float:
    603552                                if ( sawDouble ) {
    604                                         throw SemanticError( "invalid type specifier \"float\" in type: ", this );
     553                                        throw SemanticError( "invalid type specifier \"float\" in type: ", td );
    605554                                } else {
    606555                                        switch ( ret ) {
     
    612561                                                break;
    613562                                          default:
    614                                                 throw SemanticError( "invalid type specifier \"float\" in type: ", this );
     563                                                throw SemanticError( "invalid type specifier \"float\" in type: ", td );
    615564                                        } // switch
    616565                                } // if
     
    618567                          case DeclarationNode::Double:
    619568                                if ( sawDouble ) {
    620                                         throw SemanticError( "duplicate type specifier \"double\" in type: ", this );
     569                                        throw SemanticError( "duplicate type specifier \"double\" in type: ", td );
    621570                                } else {
    622571                                        switch ( ret ) {
     
    625574                                                break;
    626575                                          default:
    627                                                 throw SemanticError( "invalid type specifier \"double\" in type: ", this );
     576                                                throw SemanticError( "invalid type specifier \"double\" in type: ", td );
    628577                                        } // switch
    629578                                } // if
     
    638587                                        break;
    639588                                  default:
    640                                         throw SemanticError( "invalid type specifier \"_Complex\" in type: ", this );
     589                                        throw SemanticError( "invalid type specifier \"_Complex\" in type: ", td );
    641590                                } // switch
    642591                                break;
     
    650599                                        break;
    651600                                  default:
    652                                         throw SemanticError( "invalid type specifier \"_Imaginary\" in type: ", this );
     601                                        throw SemanticError( "invalid type specifier \"_Imaginary\" in type: ", td );
    653602                                } // switch
    654603                                break;
    655604                          default:
    656                                 throw SemanticError( std::string( "invalid type specifier \"" ) + DeclarationNode::basicTypeName[ *i ] + "\" in type: ", this );
     605                                throw SemanticError( std::string( "invalid type specifier \"" ) + DeclarationNode::basicTypeName[ *i ] + "\" in type: ", td );
    657606                        } // switch
    658607                } // if
     
    662611        } // for
    663612
    664         for ( std::list< DeclarationNode::Modifier >::const_iterator i = basic->modifiers.begin(); i != basic->modifiers.end(); ++i ) {
     613        for ( std::list< DeclarationNode::Modifier >::const_iterator i = td->basic->modifiers.begin(); i != td->basic->modifiers.end(); ++i ) {
    665614                switch ( *i ) {
    666615                  case DeclarationNode::Long:
     
    692641                                        break;
    693642                                  default:
    694                                         throw SemanticError( "invalid type modifier \"long\" in type: ", this );
     643                                        throw SemanticError( "invalid type modifier \"long\" in type: ", td );
    695644                                } // switch
    696645                        } // if
     
    709658                                        break;
    710659                                  default:
    711                                         throw SemanticError( "invalid type modifier \"short\" in type: ", this );
     660                                        throw SemanticError( "invalid type modifier \"short\" in type: ", td );
    712661                                } // switch
    713662                        } // if
     
    718667                                ret = BasicType::SignedInt;
    719668                        } else if ( sawSigned ) {
    720                                 throw SemanticError( "duplicate type modifer \"signed\" in type: ", this );
     669                                throw SemanticError( "duplicate type modifer \"signed\" in type: ", td );
    721670                        } else {
    722671                                switch ( ret ) {
     
    734683                                        break;
    735684                                  default:
    736                                         throw SemanticError( "invalid type modifer \"signed\" in type: ", this );
     685                                        throw SemanticError( "invalid type modifer \"signed\" in type: ", td );
    737686                                } // switch
    738687                        } // if
     
    743692                                ret = BasicType::UnsignedInt;
    744693                        } else if ( sawSigned ) {
    745                                 throw SemanticError( "invalid type modifer \"unsigned\" in type: ", this );
     694                                throw SemanticError( "invalid type modifer \"unsigned\" in type: ", td );
    746695                        } else {
    747696                                switch ( ret ) {
     
    762711                                        break;
    763712                                  default:
    764                                         throw SemanticError( "invalid type modifer \"unsigned\" in type: ", this );
     713                                        throw SemanticError( "invalid type modifer \"unsigned\" in type: ", td );
    765714                                } // switch
    766715                        } // if
     
    773722        } // for
    774723
    775         BasicType *bt;
     724        BasicType * bt;
    776725        if ( ! init ) {
    777                 bt = new BasicType( buildQualifiers(), BasicType::SignedInt );
     726                bt = new BasicType( buildQualifiers( td ), BasicType::SignedInt );
    778727        } else {
    779                 bt = new BasicType( buildQualifiers(), ret );
     728                bt = new BasicType( buildQualifiers( td ), ret );
    780729        } // if
    781         buildForall( forall, bt->get_forall() );
     730        buildForall( td->forall, bt->get_forall() );
    782731        return bt;
    783 }
    784 
    785 
    786 PointerType *TypeData::buildPointer() const {
    787         PointerType *pt;
    788         if ( base ) {
    789                 pt = new PointerType( buildQualifiers(), base->build() );
     732} // buildBasicType
     733
     734PointerType * buildPointer( const TypeData * td ) {
     735        PointerType * pt;
     736        if ( td->base ) {
     737                pt = new PointerType( buildQualifiers( td ), typebuild( td->base ) );
    790738        } else {
    791                 pt = new PointerType( buildQualifiers(), new BasicType( Type::Qualifiers(), BasicType::SignedInt ) );
     739                pt = new PointerType( buildQualifiers( td ), new BasicType( Type::Qualifiers(), BasicType::SignedInt ) );
    792740        } // if
    793         buildForall( forall, pt->get_forall() );
     741        buildForall( td->forall, pt->get_forall() );
    794742        return pt;
    795 }
    796 
    797 ArrayType *TypeData::buildArray() const {
    798         ArrayType *at;
    799         if ( base ) {
    800                 at = new ArrayType( buildQualifiers(), base->build(), maybeBuild< Expression >( array->dimension ),
    801                                                         array->isVarLen, array->isStatic );
     743} // buildPointer
     744
     745ArrayType * buildArray( const TypeData * td ) {
     746        ArrayType * at;
     747        if ( td->base ) {
     748                at = new ArrayType( buildQualifiers( td ), typebuild( td->base ), maybeBuild< Expression >( td->array->dimension ),
     749                                                        td->array->isVarLen, td->array->isStatic );
    802750        } else {
    803                 at = new ArrayType( buildQualifiers(), new BasicType( Type::Qualifiers(), BasicType::SignedInt ),
    804                                                         maybeBuild< Expression >( array->dimension ), array->isVarLen, array->isStatic );
     751                at = new ArrayType( buildQualifiers( td ), new BasicType( Type::Qualifiers(), BasicType::SignedInt ),
     752                                                        maybeBuild< Expression >( td->array->dimension ), td->array->isVarLen, td->array->isStatic );
    805753        } // if
    806         buildForall( forall, at->get_forall() );
     754        buildForall( td->forall, at->get_forall() );
    807755        return at;
    808 }
    809 
    810 FunctionType *TypeData::buildFunction() const {
    811         assert( kind == Function );
    812         bool hasEllipsis = function->params ? function->params->get_hasEllipsis() : true;
    813         if ( ! function->params ) hasEllipsis = ! function->newStyle;
    814         FunctionType *ft = new FunctionType( buildQualifiers(), hasEllipsis );
    815         buildList( function->params, ft->get_parameters() );
    816         buildForall( forall, ft->get_forall() );
    817         if ( base ) {
    818                 switch ( base->kind ) {
    819                   case Tuple:
    820                         buildList( base->tuple->members, ft->get_returnVals() );
     756} // buildPointer
     757
     758AggregateDecl * buildAggregate( const TypeData * td ) {
     759        assert( td->kind == TypeData::Aggregate );
     760        AggregateDecl * at;
     761        switch ( td->aggregate->kind ) {
     762          case DeclarationNode::Struct:
     763                at = new StructDecl( td->aggregate->name );
     764                buildForall( td->aggregate->params, at->get_parameters() );
     765                break;
     766          case DeclarationNode::Union:
     767                at = new UnionDecl( td->aggregate->name );
     768                buildForall( td->aggregate->params, at->get_parameters() );
     769                break;
     770          case DeclarationNode::Trait:
     771                at = new TraitDecl( td->aggregate->name );
     772                buildList( td->aggregate->params, at->get_parameters() );
     773                break;
     774          default:
     775                assert( false );
     776        } // switch
     777
     778        buildList( td->aggregate->fields, at->get_members() );
     779        at->set_body( td->aggregate->body );
     780
     781        return at;
     782} // buildAggregate
     783
     784ReferenceToType * buildAggInst( const TypeData * td ) {
     785        assert( td->kind == TypeData::AggregateInst );
     786
     787        ReferenceToType * ret;
     788        if ( td->aggInst->aggregate->kind == TypeData::Enum ) {
     789                ret = new EnumInstType( buildQualifiers( td ), td->aggInst->aggregate->enumeration->name );
     790        } else {
     791                assert( td->aggInst->aggregate->kind == TypeData::Aggregate );
     792                switch ( td->aggInst->aggregate->aggregate->kind ) {
     793                  case DeclarationNode::Struct:
     794                        ret = new StructInstType( buildQualifiers( td ), td->aggInst->aggregate->aggregate->name );
     795                        break;
     796                  case DeclarationNode::Union:
     797                        ret = new UnionInstType( buildQualifiers( td ), td->aggInst->aggregate->aggregate->name );
     798                        break;
     799                  case DeclarationNode::Trait:
     800                        ret = new TraitInstType( buildQualifiers( td ), td->aggInst->aggregate->aggregate->name );
    821801                        break;
    822802                  default:
    823                         ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( base->buildDecl( "", DeclarationNode::NoStorageClass, 0, false, false, LinkageSpec::Cforall ) ) );
     803                        assert( false );
     804                } // switch
     805        } // if
     806        buildList( td->aggInst->params, ret->get_parameters() );
     807        buildForall( td->forall, ret->get_forall() );
     808        return ret;
     809} // buildAggInst
     810
     811NamedTypeDecl * buildSymbolic( const TypeData * td, const std::string & name, DeclarationNode::StorageClass sc ) {
     812        assert( td->kind == TypeData::Symbolic );
     813        NamedTypeDecl * ret;
     814        assert( td->base );
     815        if ( td->symbolic->isTypedef ) {
     816                ret = new TypedefDecl( name, sc, typebuild( td->base ) );
     817        } else {
     818                ret = new TypeDecl( name, sc, typebuild( td->base ), TypeDecl::Any );
     819        } // if
     820        buildList( td->symbolic->params, ret->get_parameters() );
     821        buildList( td->symbolic->assertions, ret->get_assertions() );
     822        return ret;
     823} // buildSymbolic
     824
     825TypeDecl * buildVariable( const TypeData * td ) {
     826        assert( td->kind == TypeData::Variable );
     827        static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype };
     828
     829        TypeDecl * ret = new TypeDecl( td->variable->name, DeclarationNode::NoStorageClass, 0, kindMap[ td->variable->tyClass ] );
     830        buildList( td->variable->assertions, ret->get_assertions() );
     831        return ret;
     832} // buildSymbolic
     833
     834EnumDecl * buildEnum( const TypeData * td ) {
     835        assert( td->kind == TypeData::Enum );
     836        EnumDecl * ret = new EnumDecl( td->enumeration->name );
     837        buildList( td->enumeration->constants, ret->get_members() );
     838        std::list< Declaration * >::iterator members = ret->get_members().begin();
     839        for ( const DeclarationNode * cur = td->enumeration-> constants; cur != nullptr; cur = dynamic_cast< DeclarationNode * >( cur->get_next() ), ++members ) {
     840                if ( cur->has_enumeratorValue() ) {
     841                        ObjectDecl * member = dynamic_cast< ObjectDecl * >(* members);
     842                        member->set_init( new SingleInit( maybeMoveBuild< Expression >( cur->consume_enumeratorValue() ), std::list< Expression * >() ) );
     843                } // if
     844        } // for
     845        return ret;
     846} // buildEnum
     847
     848TypeInstType * buildSymbolicInst( const TypeData * td ) {
     849        assert( td->kind == TypeData::SymbolicInst );
     850        TypeInstType * ret = new TypeInstType( buildQualifiers( td ), td->symbolic->name, false );
     851        buildList( td->symbolic->actuals, ret->get_parameters() );
     852        buildForall( td->forall, ret->get_forall() );
     853        return ret;
     854} // buildSymbolicInst
     855
     856TupleType * buildTuple( const TypeData * td ) {
     857        assert( td->kind == TypeData::Tuple );
     858        TupleType * ret = new TupleType( buildQualifiers( td ) );
     859        buildTypeList( td->tuple->members, ret->get_types() );
     860        buildForall( td->forall, ret->get_forall() );
     861        return ret;
     862} // buildTuple
     863
     864TypeofType * buildTypeof( const TypeData * td ) {
     865        assert( td->kind == TypeData::Typeof );
     866        assert( td->typeexpr );
     867        assert( td->typeexpr->expr );
     868        return new TypeofType( buildQualifiers( td ), td->typeexpr->expr->build() );
     869} // buildTypeof
     870
     871AttrType * buildAttr( const TypeData * td ) {
     872        assert( td->kind == TypeData::Attr );
     873        assert( td->attr );
     874        AttrType * ret;
     875        if ( td->attr->expr ) {
     876                ret = new AttrType( buildQualifiers( td ), td->attr->name, td->attr->expr->build() );
     877        } else {
     878                assert( td->attr->type );
     879                ret = new AttrType( buildQualifiers( td ), td->attr->name, td->attr->type->buildType() );
     880        } // if
     881        return ret;
     882} // buildAttr
     883
     884Declaration * buildDecl( const TypeData * td, std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer * init ) {
     885        if ( td->kind == TypeData::Function ) {
     886                FunctionDecl * decl;
     887                if ( td->function->hasBody ) {
     888                        if ( td->function->body ) {
     889                                Statement * stmt = td->function->body->build();
     890                                CompoundStmt * body = dynamic_cast< CompoundStmt* >( stmt );
     891                                assert( body );
     892                                decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), body, isInline, isNoreturn );
     893                        } else {
     894                                // std::list< Label > ls;
     895                                decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), new CompoundStmt( std::list< Label >() ), isInline, isNoreturn );
     896                        } // if
     897                } else {
     898                        decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), 0, isInline, isNoreturn );
     899                } // if
     900                for ( DeclarationNode * cur = td->function->idList; cur != 0; cur = dynamic_cast< DeclarationNode* >( cur->get_next() ) ) {
     901                        if ( cur->get_name() != "" ) {
     902                                decl->get_oldIdents().insert( decl->get_oldIdents().end(), cur->get_name() );
     903                        } // if
     904                } // for
     905                buildList( td->function->oldDeclList, decl->get_oldDecls() );
     906                return decl;
     907        } else if ( td->kind == TypeData::Aggregate ) {
     908                return buildAggregate( td );
     909        } else if ( td->kind == TypeData::Enum ) {
     910                return buildEnum( td );
     911        } else if ( td->kind == TypeData::Symbolic ) {
     912                return buildSymbolic( td, name, sc );
     913        } else if ( td->kind == TypeData::Variable ) {
     914                return buildVariable( td );
     915        } else {
     916                return new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, std::list< Attribute * >(), isInline, isNoreturn );
     917        } // if
     918        return 0;
     919} // buildDecl
     920
     921FunctionType * buildFunction( const TypeData * td ) {
     922        assert( td->kind == TypeData::Function );
     923        bool hasEllipsis = td->function->params ? td->function->params->get_hasEllipsis() : true;
     924        if ( ! td->function->params ) hasEllipsis = ! td->function->newStyle;
     925        FunctionType * ft = new FunctionType( buildQualifiers( td ), hasEllipsis );
     926        buildList( td->function->params, ft->get_parameters() );
     927        buildForall( td->forall, ft->get_forall() );
     928        if ( td->base ) {
     929                switch ( td->base->kind ) {
     930                  case TypeData::Tuple:
     931                        buildList( td->base->tuple->members, ft->get_returnVals() );
     932                        break;
     933                  default:
     934                        ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base,  "", DeclarationNode::NoStorageClass, 0, false, false, LinkageSpec::Cforall ) ) );
    824935                } // switch
    825936        } else {
     
    827938        } // if
    828939        return ft;
    829 }
    830 
    831 AggregateDecl *TypeData::buildAggregate() const {
    832         assert( kind == Aggregate );
    833         AggregateDecl *at;
    834         switch ( aggregate->kind ) {
    835           case DeclarationNode::Struct:
    836                 at = new StructDecl( aggregate->name );
    837                 buildForall( aggregate->params, at->get_parameters() );
    838                 break;
    839           case DeclarationNode::Union:
    840                 at = new UnionDecl( aggregate->name );
    841                 buildForall( aggregate->params, at->get_parameters() );
    842                 break;
    843           case DeclarationNode::Trait:
    844                 at = new TraitDecl( aggregate->name );
    845                 buildList( aggregate->params, at->get_parameters() );
    846                 break;
    847           default:
    848                 assert( false );
    849         } // switch
    850 
    851         buildList( aggregate->fields, at->get_members() );
    852         at->set_body( aggregate->body );
    853 
    854         return at;
    855 }
    856 
    857 ReferenceToType *TypeData::buildAggInst() const {
    858         assert( kind == AggregateInst );
    859 
    860         ReferenceToType *ret;
    861         if ( aggInst->aggregate->kind == Enum ) {
    862                 ret = new EnumInstType( buildQualifiers(), aggInst->aggregate->enumeration->name );
    863         } else {
    864                 assert( aggInst->aggregate->kind == Aggregate );
    865                 switch ( aggInst->aggregate->aggregate->kind ) {
    866                   case DeclarationNode::Struct:
    867                         ret = new StructInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
    868                         break;
    869                   case DeclarationNode::Union:
    870                         ret = new UnionInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
    871                         break;
    872                   case DeclarationNode::Trait:
    873                         ret = new TraitInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
    874                         break;
    875                   default:
    876                         assert( false );
    877                 } // switch
    878         } // if
    879         buildList( aggInst->params, ret->get_parameters() );
    880         buildForall( forall, ret->get_forall() );
    881         return ret;
    882 }
    883 
    884 NamedTypeDecl *TypeData::buildSymbolic( const std::string &name, DeclarationNode::StorageClass sc ) const {
    885         assert( kind == Symbolic );
    886         NamedTypeDecl *ret;
    887         if ( symbolic->isTypedef ) {
    888                 ret = new TypedefDecl( name, sc, maybeBuild< Type >( base ) );
    889         } else {
    890                 ret = new TypeDecl( name, sc, maybeBuild< Type >( base ), TypeDecl::Any );
    891         } // if
    892         buildList( symbolic->params, ret->get_parameters() );
    893         buildList( symbolic->assertions, ret->get_assertions() );
    894         return ret;
    895 }
    896 
    897 TypeDecl *TypeData::buildVariable() const {
    898         assert( kind == Variable );
    899         static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype };
    900 
    901         TypeDecl *ret = new TypeDecl( variable->name, DeclarationNode::NoStorageClass, 0, kindMap[ variable->tyClass ] );
    902         buildList( variable->assertions, ret->get_assertions() );
    903         return ret;
    904 }
    905 
    906 EnumDecl *TypeData::buildEnum() const {
    907         assert( kind == Enum );
    908         EnumDecl *ret = new EnumDecl( enumeration->name );
    909         buildList( enumeration->constants, ret->get_members() );
    910         std::list< Declaration * >::iterator members = ret->get_members().begin();
    911         for ( const DeclarationNode *cur = enumeration->constants; cur != NULL; cur = dynamic_cast<DeclarationNode *>( cur->get_link() ), ++members ) {
    912                 if ( cur->get_enumeratorValue() != NULL ) {
    913                         ObjectDecl *member = dynamic_cast<ObjectDecl *>(*members);
    914                         member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ), std::list< Expression * >() ) );
    915                 } // if
    916         } // for
    917         return ret;
    918 }
    919 
    920 TypeInstType *TypeData::buildSymbolicInst() const {
    921         assert( kind == SymbolicInst );
    922         TypeInstType *ret = new TypeInstType( buildQualifiers(), symbolic->name, false );
    923         buildList( symbolic->actuals, ret->get_parameters() );
    924         buildForall( forall, ret->get_forall() );
    925         return ret;
    926 }
    927 
    928 TupleType *TypeData::buildTuple() const {
    929         assert( kind == Tuple );
    930         TupleType *ret = new TupleType( buildQualifiers() );
    931         buildTypeList( tuple->members, ret->get_types() );
    932         buildForall( forall, ret->get_forall() );
    933         return ret;
    934 }
    935 
    936 TypeofType *TypeData::buildTypeof() const {
    937         assert( kind == Typeof );
    938         assert( typeexpr );
    939         assert( typeexpr->expr );
    940         TypeofType *ret = new TypeofType( buildQualifiers(), typeexpr->expr->build() );
    941         return ret;
    942 }
    943 
    944 AttrType *TypeData::buildAttr() const {
    945         assert( kind == Attr );
    946         assert( attr );
    947         AttrType *ret;
    948         if ( attr->expr ) {
    949                 ret = new AttrType( buildQualifiers(), attr->name, attr->expr->build() );
    950         } else {
    951                 assert( attr->type );
    952                 ret = new AttrType( buildQualifiers(), attr->name, attr->type->buildType() );
    953         } // if
    954         return ret;
    955 }
     940} // buildFunction
    956941
    957942// Local Variables: //
  • src/Parser/TypeData.h

    r79841be r6943a987  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul 12 20:52:02 2016
    13 // Update Count     : 20
     12// Last Modified On : Sun Aug 28 22:39:00 2016
     13// Update Count     : 85
    1414//
    1515
     
    1717#define TYPEDATA_H
    1818
    19 #include <list>
     19#include <bitset>
    2020
    2121#include "ParseNode.h"
     
    2525        enum Kind { Unknown, Basic, Pointer, Array, Function, Aggregate, AggregateInst,
    2626                                Enum, EnumConstant, Symbolic, SymbolicInst, Variable, Tuple, Typeof, Builtin, Attr } kind;
    27 
    28         TypeData( Kind k = Unknown );
    29         ~TypeData();
    30         void print( std::ostream &, int indent = 0 ) const;
    31         TypeData * clone() const;
    32 
    33         Type * build() const;
    34         FunctionType * buildFunction() const;
    35 
    36         TypeData * base;
    37         std::list< DeclarationNode::Qualifier > qualifiers;
    38         DeclarationNode * forall;
    3927
    4028        struct Basic_t {
     
    10997        };
    11098
     99        TypeData * base;
     100        typedef std::bitset< DeclarationNode::NoOfQualifier > Qualifiers;
     101        Qualifiers qualifiers;
     102        DeclarationNode * forall;
     103
    111104        union {
    112105                Basic_t * basic;
     
    124117        };
    125118
    126         TypeData * extractAggregate( bool toplevel = true ) const;
    127         // helper function for DeclNodeImpl::build
    128         Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer * init = 0 ) const;
    129         // helper functions for build()
    130         Type::Qualifiers buildQualifiers() const;
    131         Type * buildBasicType() const;
    132         PointerType * buildPointer() const;
    133         ArrayType * buildArray() const;
    134         AggregateDecl * buildAggregate() const;
    135         ReferenceToType * buildAggInst() const;
    136         NamedTypeDecl * buildSymbolic( const std::string &name, DeclarationNode::StorageClass sc ) const;
    137         TypeDecl* buildVariable() const;
    138         EnumDecl* buildEnum() const;
    139         TypeInstType * buildSymbolicInst() const;
    140         TupleType * buildTuple() const;
    141         TypeofType * buildTypeof() const;
    142         AttrType * buildAttr() const;
     119        TypeData( Kind k = Unknown );
     120        ~TypeData();
     121        void print( std::ostream &, int indent = 0 ) const;
     122        TypeData * clone() const;
    143123};
     124
     125Type * typebuild( const TypeData * );
     126TypeData * typeextractAggregate( const TypeData * td, bool toplevel = true );
     127Type::Qualifiers buildQualifiers( const TypeData * td );
     128Type * buildBasicType( const TypeData * );
     129PointerType * buildPointer( const TypeData * );
     130ArrayType * buildArray( const TypeData * );
     131AggregateDecl * buildAggregate( const TypeData * );
     132ReferenceToType * buildAggInst( const TypeData * );
     133NamedTypeDecl * buildSymbolic( const TypeData *, const std::string &name, DeclarationNode::StorageClass sc );
     134TypeDecl * buildVariable( const TypeData * );
     135EnumDecl * buildEnum( const TypeData * );
     136TypeInstType * buildSymbolicInst( const TypeData * );
     137TupleType * buildTuple( const TypeData * );
     138TypeofType * buildTypeof( const TypeData * );
     139AttrType * buildAttr( const TypeData * );
     140Declaration * buildDecl( const TypeData *, std::string, DeclarationNode::StorageClass, Expression *, bool isInline, bool isNoreturn, LinkageSpec::Spec, Initializer * init = 0 );
     141FunctionType * buildFunction( const TypeData * );
    144142
    145143#endif // TYPEDATA_H
  • src/Parser/TypedefTable.cc

    r79841be r6943a987  
    1010// Created On       : Sat May 16 15:20:13 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr 13 16:57:30 2016
    13 // Update Count     : 24
     12// Last Modified On : Mon Aug 15 18:24:42 2016
     13// Update Count     : 25
    1414//
    1515
     
    6464                tableType::iterator curPos = table.find( identifier );
    6565                if ( curPos == table.end()) {
    66                         list<Entry> newList;
     66                        list< Entry > newList;
    6767                        newList.push_front( newEntry );
    6868                        table[identifier] = newList;
    6969                } else {
    70                         list<Entry>::iterator listPos = (*curPos ).second.begin();
     70                        list< Entry >::iterator listPos = (*curPos ).second.begin();
    7171                        while ( listPos != (*curPos ).second.end() && listPos->scope > scope ) {
    7272                                listPos++;
     
    127127        debugPrint( "Leaving scope " << currentScope << endl );
    128128        for ( tableType::iterator i = table.begin(); i != table.end(); ) {
    129                 list<Entry> &declList = (*i).second;
     129                list< Entry > &declList = (*i).second;
    130130                while ( ! declList.empty() && declList.front().scope == currentScope ) {
    131131                        declList.pop_front();
     
    157157        for ( tableType::const_iterator i = table.begin(); i != table.end(); i++) {
    158158                debugPrint( (*i ).first << ": " );
    159                 list<Entry> declList = (*i).second;
    160                 for ( list<Entry>::const_iterator j = declList.begin(); j != declList.end(); j++ ) {
     159                list< Entry > declList = (*i).second;
     160                for ( list< Entry >::const_iterator j = declList.begin(); j != declList.end(); j++ ) {
    161161                        debugPrint( "(" << (*j).scope << " " << (*j).kind << ") " );
    162162                }
  • src/Parser/TypedefTable.h

    r79841be r6943a987  
    1010// Created On       : Sat May 16 15:24:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr 13 16:59:56 2016
    13 // Update Count     : 27
     12// Last Modified On : Mon Aug 15 18:25:04 2016
     13// Update Count     : 28
    1414//
    1515
     
    3939        };
    4040
    41         typedef std::map<std::string, std::list<Entry> > tableType;
     41        typedef std::map< std::string, std::list< Entry > > tableType;
    4242        tableType table;
    4343
  • src/Parser/lex.cc

    r79841be r6943a987  
    14681468 * Author           : Peter A. Buhr
    14691469 * Created On       : Sat Sep 22 08:58:10 2001
    1470  * Last Modified By :
    1471  * Last Modified On : Sun Jul 31 07:19:36 2016
    1472  * Update Count     : 459
     1470 * Last Modified By : Peter A. Buhr
     1471 * Last Modified On : Wed Aug 24 13:27:04 2016
     1472 * Update Count     : 487
    14731473 */
    14741474#line 20 "lex.ll"
     
    14801480
    14811481#include <string>
     1482#include <cstdio>                                                                               // FILENAME_MAX
    14821483
    14831484#include "lex.h"
     
    14911492#define RETURN_LOCN(x)          yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x )
    14921493#define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x )
    1493 #define RETURN_CHAR(x)          yylval.tok.str = NULL; RETURN_LOCN( x )
     1494#define RETURN_CHAR(x)          yylval.tok.str = nullptr; RETURN_LOCN( x )
    14941495#define RETURN_STR(x)           yylval.tok.str = strtext; RETURN_LOCN( x )
    14951496
    1496 #define WHITE_RETURN(x)                                                                 // do nothing
     1497#define WHITE_RETURN(x)         // do nothing
    14971498#define NEWLINE_RETURN()        WHITE_RETURN( '\n' )
    14981499#define ASCIIOP_RETURN()        RETURN_CHAR( (int)yytext[0] ) // single character operator
    1499 #define NAMEDOP_RETURN(x)       RETURN_VAL( x )                         // multichar operator, with a name
     1500#define NAMEDOP_RETURN(x)       RETURN_CHAR( x )                        // multichar operator, with a name
    15001501#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL( x ) // numeric constant
    15011502#define KEYWORD_RETURN(x)       RETURN_CHAR( x )                        // keyword
     
    15311532
    15321533
    1533 #line 1534 "Parser/lex.cc"
     1534#line 1535 "Parser/lex.cc"
    15341535
    15351536#define INITIAL 0
     
    17231724        register int yy_act;
    17241725   
    1725 #line 138 "lex.ll"
     1726#line 139 "lex.ll"
    17261727
    17271728                                   /* line directives */
    1728 #line 1729 "Parser/lex.cc"
     1729#line 1730 "Parser/lex.cc"
    17291730
    17301731        if ( !(yy_init) )
     
    18231824/* rule 1 can match eol */
    18241825YY_RULE_SETUP
    1825 #line 140 "lex.ll"
     1826#line 141 "lex.ll"
    18261827{
    18271828        /* " stop highlighting */
     1829        static char filename[FILENAME_MAX];                                     // temporarily store current source-file name
    18281830        char *end_num;
    18291831        char *begin_string, *end_string;
    1830         char *filename;
    18311832        long lineno, length;
    18321833        lineno = strtol( yytext + 1, &end_num, 0 );
    18331834        begin_string = strchr( end_num, '"' );
    1834         if ( begin_string ) {
    1835                 end_string = strchr( begin_string + 1, '"' );
    1836                 if ( end_string ) {
    1837                         length = end_string - begin_string - 1;
    1838                         filename = new char[ length + 1 ];
    1839                         memcpy( filename, begin_string + 1, length );
    1840                         filename[ length ] = '\0';
    1841                         //std::cout << "file " << filename << " line " << lineno << std::endl;
    1842                         yylineno = lineno;
    1843                         yyfilename = filename;
    1844                 } // if
     1835        if ( begin_string ) {                                                           // file name ?
     1836                end_string = strchr( begin_string + 1, '"' );   // look for ending delimiter
     1837                assert( end_string );                                                   // closing quote ?
     1838                length = end_string - begin_string - 1;                 // file-name length without quotes or sentinel
     1839                assert( length < FILENAME_MAX );                                // room for sentinel ?
     1840                memcpy( &filename, begin_string + 1, length );  // copy file name from yytext
     1841                filename[ length ] = '\0';                                              // terminate string with sentinel
     1842                //std::cout << "file " << filename << " line " << lineno << std::endl;
     1843                yylineno = lineno;
     1844                yyfilename = filename;
    18451845        } // if
    18461846}
     
    24262426YY_RULE_SETUP
    24272427#line 290 "lex.ll"
    2428 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
     2428{ BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
    24292429        YY_BREAK
    24302430case 116:
    24312431YY_RULE_SETUP
    24322432#line 291 "lex.ll"
    2433 { *strtext += std::string( yytext ); }
     2433{ strtext->append( yytext, yyleng ); }
    24342434        YY_BREAK
    24352435case 117:
     
    24372437YY_RULE_SETUP
    24382438#line 292 "lex.ll"
    2439 { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
     2439{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); }
    24402440        YY_BREAK
    24412441/* ' stop highlighting */
     
    24442444YY_RULE_SETUP
    24452445#line 296 "lex.ll"
    2446 { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
     2446{ BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
    24472447        YY_BREAK
    24482448case 119:
    24492449YY_RULE_SETUP
    24502450#line 297 "lex.ll"
    2451 { *strtext += std::string( yytext ); }
     2451{ strtext->append( yytext, yyleng ); }
    24522452        YY_BREAK
    24532453case 120:
     
    24552455YY_RULE_SETUP
    24562456#line 298 "lex.ll"
    2457 { BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
     2457{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); }
    24582458        YY_BREAK
    24592459/* " stop highlighting */
     
    24622462YY_RULE_SETUP
    24632463#line 302 "lex.ll"
    2464 { rm_underscore(); *strtext += std::string( yytext ); }
     2464{ rm_underscore(); strtext->append( yytext, yyleng ); }
    24652465        YY_BREAK
    24662466case 122:
     
    24732473YY_RULE_SETUP
    24742474#line 304 "lex.ll"
    2475 { *strtext += std::string( yytext ); } // unknown escape character
     2475{ strtext->append( yytext, yyleng ); } // unknown escape character
    24762476        YY_BREAK
    24772477/* punctuation */
  • src/Parser/lex.h

    r79841be r6943a987  
    1010// Created On       : Sat Sep 22 08:58:10 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Mar 21 18:18:06 2016
    13 // Update Count     : 346
     12// Last Modified On : Sun Aug 21 11:28:47 2016
     13// Update Count     : 347
    1414//
    1515
     
    3333    char *file;
    3434    int line;
    35 };
     35}; // Location
    3636
    37 class Token {
    38   public:
     37struct Token {
    3938    std::string *str;                                                                   // must be pointer as used in union
    4039    Location loc;
    4140
    4241    operator std::string *() { return str; }
    43 };
     42}; // Token
    4443
    4544#endif // PARSER_LEX_H
  • src/Parser/lex.ll

    r79841be r6943a987  
    99 * Author           : Peter A. Buhr
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    11  * Last Modified By :
    12  * Last Modified On : Sun Jul 31 07:19:36 2016
    13  * Update Count     : 459
     11 * Last Modified By : Peter A. Buhr
     12 * Last Modified On : Wed Aug 24 13:27:04 2016
     13 * Update Count     : 487
    1414 */
    1515
     
    2525
    2626#include <string>
     27#include <cstdio>                                                                               // FILENAME_MAX
    2728
    2829#include "lex.h"
     
    3637#define RETURN_LOCN(x)          yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x )
    3738#define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x )
    38 #define RETURN_CHAR(x)          yylval.tok.str = NULL; RETURN_LOCN( x )
     39#define RETURN_CHAR(x)          yylval.tok.str = nullptr; RETURN_LOCN( x )
    3940#define RETURN_STR(x)           yylval.tok.str = strtext; RETURN_LOCN( x )
    4041
    41 #define WHITE_RETURN(x)                                                                 // do nothing
     42#define WHITE_RETURN(x)         // do nothing
    4243#define NEWLINE_RETURN()        WHITE_RETURN( '\n' )
    4344#define ASCIIOP_RETURN()        RETURN_CHAR( (int)yytext[0] ) // single character operator
    44 #define NAMEDOP_RETURN(x)       RETURN_VAL( x )                         // multichar operator, with a name
     45#define NAMEDOP_RETURN(x)       RETURN_CHAR( x )                        // multichar operator, with a name
    4546#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL( x ) // numeric constant
    4647#define KEYWORD_RETURN(x)       RETURN_CHAR( x )                        // keyword
     
    140141^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["].*"\n" {
    141142        /* " stop highlighting */
     143        static char filename[FILENAME_MAX];                                     // temporarily store current source-file name
    142144        char *end_num;
    143145        char *begin_string, *end_string;
    144         char *filename;
    145146        long lineno, length;
    146147        lineno = strtol( yytext + 1, &end_num, 0 );
    147148        begin_string = strchr( end_num, '"' );
    148         if ( begin_string ) {
    149                 end_string = strchr( begin_string + 1, '"' );
    150                 if ( end_string ) {
    151                         length = end_string - begin_string - 1;
    152                         filename = new char[ length + 1 ];
    153                         memcpy( filename, begin_string + 1, length );
    154                         filename[ length ] = '\0';
    155                         //std::cout << "file " << filename << " line " << lineno << std::endl;
    156                         yylineno = lineno;
    157                         yyfilename = filename;
    158                 } // if
     149        if ( begin_string ) {                                                           // file name ?
     150                end_string = strchr( begin_string + 1, '"' );   // look for ending delimiter
     151                assert( end_string );                                                   // closing quote ?
     152                length = end_string - begin_string - 1;                 // file-name length without quotes or sentinel
     153                assert( length < FILENAME_MAX );                                // room for sentinel ?
     154                memcpy( &filename, begin_string + 1, length );  // copy file name from yytext
     155                filename[ length ] = '\0';                                              // terminate string with sentinel
     156                //std::cout << "file " << filename << " line " << lineno << std::endl;
     157                yylineno = lineno;
     158                yyfilename = filename;
    159159        } // if
    160160}
     
    288288
    289289                                /* character constant, allows empty value */
    290 ({cwide_prefix}[_]?)?['] { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    291 <QUOTE>[^'\\\n]* { *strtext += std::string( yytext ); }
    292 <QUOTE>['\n]    { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
     290({cwide_prefix}[_]?)?['] { BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
     291<QUOTE>[^'\\\n]* { strtext->append( yytext, yyleng ); }
     292<QUOTE>['\n]    { BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); }
    293293                                /* ' stop highlighting */
    294294
    295295                                /* string constant */
    296 ({swide_prefix}[_]?)?["] { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    297 <STRING>[^"\\\n]* { *strtext += std::string( yytext ); }
    298 <STRING>["\n]   { BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
     296({swide_prefix}[_]?)?["] { BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
     297<STRING>[^"\\\n]* { strtext->append( yytext, yyleng ); }
     298<STRING>["\n]   { BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); }
    299299                                /* " stop highlighting */
    300300
    301301                                /* common character/string constant */
    302 <QUOTE,STRING>{escape_seq} { rm_underscore(); *strtext += std::string( yytext ); }
     302<QUOTE,STRING>{escape_seq} { rm_underscore(); strtext->append( yytext, yyleng ); }
    303303<QUOTE,STRING>"\\"{h_white}*"\n" {}                                             // continuation (ALSO HANDLED BY CPP)
    304 <QUOTE,STRING>"\\" { *strtext += std::string( yytext ); } // unknown escape character
     304<QUOTE,STRING>"\\" { strtext->append( yytext, yyleng ); } // unknown escape character
    305305
    306306                                /* punctuation */
  • src/Parser/module.mk

    r79841be r6943a987  
    1111## Created On       : Sat May 16 15:29:09 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Thu Jan 28 11:57:23 2016
    14 ## Update Count     : 100
     13## Last Modified On : Tue Aug 16 17:28:34 2016
     14## Update Count     : 101
    1515###############################################################################
    1616
     
    2929       Parser/TypeData.cc \
    3030       Parser/LinkageSpec.cc \
    31        Parser/parseutility.cc \
    32        Parser/Parser.cc
     31       Parser/parseutility.cc
    3332
    3433MAINTAINERCLEANFILES += Parser/parser.output
  • src/Parser/parser.cc

    r79841be r6943a987  
    7171#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
    7272#define YYDEBUG 1                                                                               // get the pretty debugging code to compile
    73 extern char *yytext;
    7473
    7574#undef __GNUC_MINOR__
     
    8483#include "LinkageSpec.h"
    8584
    86 DeclarationNode *theTree = 0;                                                   // the resulting parse tree
    87 LinkageSpec::Type linkage = LinkageSpec::Cforall;
    88 std::stack< LinkageSpec::Type > linkageStack;
    89 TypedefTable typedefTable;
    90 
    91 void appendStr( std::string &to, std::string *from ) {
     85extern DeclarationNode * parseTree;
     86extern LinkageSpec::Spec linkage;
     87extern TypedefTable typedefTable;
     88
     89std::stack< LinkageSpec::Spec > linkageStack;
     90
     91void appendStr( std::string *to, std::string *from ) {
    9292        // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
    93         to.insert( to.length() - 1, from->substr( 1, from->length() - 2 ) );
     93        to->insert( to->length() - 1, from->substr( 1, from->length() - 2 ) );
    9494} // appendStr
    9595
     
    361361        InitializerNode *in;
    362362        OperKinds op;
     363        std::string *str;
    363364        bool flag;
    364365
     
    366367
    367368/* Line 293 of yacc.c  */
    368 #line 369 "Parser/parser.cc"
     369#line 370 "Parser/parser.cc"
    369370} YYSTYPE;
    370371# define YYSTYPE_IS_TRIVIAL 1
     
    378379
    379380/* Line 343 of yacc.c  */
    380 #line 381 "Parser/parser.cc"
     381#line 382 "Parser/parser.cc"
    381382
    382383#ifdef short
     
    595596
    596597/* YYFINAL -- State number of the termination state.  */
    597 #define YYFINAL  251
     598#define YYFINAL  250
    598599/* YYLAST -- Last index in YYTABLE.  */
    599 #define YYLAST   10816
     600#define YYLAST   10863
    600601
    601602/* YYNTOKENS -- Number of terminals.  */
     
    604605#define YYNNTS  241
    605606/* YYNRULES -- Number of rules.  */
    606 #define YYNRULES  750
     607#define YYNRULES  751
    607608/* YYNRULES -- Number of states.  */
    608 #define YYNSTATES  1554
     609#define YYNSTATES  1555
    609610
    610611/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     
    663664{
    664665       0,     0,     3,     4,     5,     7,     9,    11,    13,    15,
    665       17,    19,    21,    23,    25,    27,    29,    31,    34,    36,
    666       38,    42,    46,    48,    55,    60,    64,    72,    76,    84,
    667       87,    90,    98,   103,   105,   109,   110,   112,   114,   118,
    668      120,   124,   132,   136,   144,   146,   148,   150,   153,   156,
    669      159,   162,   165,   168,   173,   176,   181,   188,   190,   195,
    670      200,   202,   204,   206,   208,   210,   212,   214,   219,   224,
    671      226,   230,   234,   238,   240,   244,   248,   250,   254,   258,
    672      260,   264,   268,   272,   276,   278,   282,   286,   288,   292,
    673      294,   298,   300,   304,   306,   310,   312,   316,   318,   324,
    674      329,   335,   337,   339,   343,   346,   347,   349,   351,   353,
    675      355,   357,   359,   361,   363,   365,   367,   369,   371,   374,
    676      380,   387,   395,   397,   401,   403,   407,   408,   410,   412,
    677      414,   416,   418,   420,   422,   424,   426,   433,   438,   441,
    678      449,   451,   455,   457,   460,   462,   465,   467,   470,   473,
    679      479,   487,   493,   503,   509,   519,   521,   525,   527,   529,
    680      533,   537,   540,   542,   545,   548,   549,   551,   554,   558,
    681      559,   561,   564,   568,   572,   577,   578,   580,   582,   585,
    682      591,   599,   606,   613,   618,   622,   627,   630,   634,   637,
    683      641,   645,   649,   653,   659,   663,   667,   672,   674,   680,
    684      687,   693,   700,   710,   721,   731,   742,   745,   747,   750,
    685      753,   756,   758,   765,   774,   785,   798,   813,   814,   816,
    686      817,   819,   821,   825,   830,   838,   839,   841,   845,   847,
    687      851,   853,   855,   857,   861,   863,   865,   867,   871,   872,
    688      874,   878,   883,   885,   889,   891,   893,   897,   901,   905,
    689      909,   913,   916,   920,   927,   931,   935,   940,   942,   945,
    690      948,   952,   958,   967,   975,   983,   989,   999,  1002,  1005,
    691     1011,  1015,  1021,  1026,  1030,  1035,  1040,  1048,  1052,  1056,
    692     1060,  1064,  1069,  1076,  1078,  1080,  1082,  1084,  1086,  1088,
    693     1090,  1092,  1093,  1095,  1097,  1100,  1102,  1104,  1106,  1108,
    694     1110,  1112,  1114,  1115,  1121,  1123,  1126,  1130,  1132,  1135,
    695     1137,  1139,  1141,  1143,  1145,  1147,  1149,  1151,  1153,  1155,
     666      17,    19,    21,    23,    25,    27,    29,    31,    33,    36,
     667      38,    40,    44,    48,    50,    57,    62,    66,    74,    78,
     668      86,    89,    92,   100,   105,   107,   111,   112,   114,   116,
     669     120,   122,   126,   134,   138,   146,   148,   150,   152,   155,
     670     158,   161,   164,   167,   170,   175,   178,   183,   190,   192,
     671     197,   202,   204,   206,   208,   210,   212,   214,   216,   221,
     672     226,   228,   232,   236,   240,   242,   246,   250,   252,   256,
     673     260,   262,   266,   270,   274,   278,   280,   284,   288,   290,
     674     294,   296,   300,   302,   306,   308,   312,   314,   318,   320,
     675     326,   331,   337,   339,   341,   345,   348,   349,   351,   353,
     676     355,   357,   359,   361,   363,   365,   367,   369,   371,   373,
     677     375,   378,   384,   391,   399,   401,   405,   407,   411,   412,
     678     414,   416,   418,   420,   422,   424,   426,   428,   430,   437,
     679     442,   445,   453,   455,   459,   461,   464,   466,   469,   471,
     680     474,   477,   483,   491,   497,   507,   513,   523,   525,   529,
     681     531,   533,   537,   541,   544,   546,   549,   552,   553,   555,
     682     558,   562,   563,   565,   568,   572,   576,   581,   582,   584,
     683     586,   589,   595,   603,   610,   617,   622,   626,   631,   634,
     684     638,   641,   645,   649,   653,   657,   663,   667,   671,   676,
     685     678,   684,   691,   697,   704,   714,   725,   735,   746,   749,
     686     751,   754,   757,   760,   762,   769,   778,   789,   802,   817,
     687     818,   820,   821,   823,   825,   829,   834,   842,   843,   845,
     688     849,   851,   855,   857,   859,   861,   865,   867,   869,   871,
     689     875,   876,   878,   882,   887,   889,   893,   895,   897,   901,
     690     905,   909,   913,   917,   920,   924,   931,   935,   939,   944,
     691     946,   949,   952,   956,   962,   971,   979,   987,   993,  1003,
     692    1006,  1009,  1015,  1019,  1025,  1030,  1034,  1039,  1044,  1052,
     693    1056,  1060,  1064,  1068,  1073,  1080,  1082,  1084,  1086,  1088,
     694    1090,  1092,  1094,  1096,  1097,  1099,  1101,  1104,  1106,  1108,
     695    1110,  1112,  1114,  1116,  1118,  1119,  1125,  1127,  1130,  1134,
     696    1136,  1139,  1141,  1143,  1145,  1147,  1149,  1151,  1153,  1155,
    696697    1157,  1159,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,
    697     1177,  1179,  1181,  1184,  1187,  1191,  1195,  1197,  1201,  1203,
    698     1206,  1209,  1212,  1217,  1222,  1227,  1232,  1234,  1237,  1240,
    699     1244,  1246,  1249,  1252,  1254,  1257,  1260,  1264,  1266,  1269,
    700     1272,  1274,  1276,  1281,  1284,  1285,  1292,  1300,  1303,  1306,
    701     1309,  1310,  1313,  1316,  1320,  1323,  1327,  1329,  1332,  1336,
    702     1339,  1342,  1347,  1348,  1350,  1353,  1356,  1358,  1359,  1361,
    703     1364,  1367,  1373,  1376,  1377,  1385,  1388,  1393,  1394,  1397,
    704     1398,  1400,  1402,  1404,  1410,  1416,  1422,  1424,  1430,  1436,
    705     1446,  1448,  1454,  1455,  1457,  1459,  1465,  1467,  1469,  1475,
    706     1481,  1483,  1487,  1491,  1496,  1498,  1500,  1502,  1504,  1507,
    707     1509,  1513,  1517,  1519,  1522,  1524,  1528,  1530,  1532,  1534,
    708     1536,  1538,  1540,  1542,  1544,  1546,  1548,  1550,  1553,  1555,
    709     1557,  1559,  1562,  1563,  1566,  1569,  1571,  1576,  1577,  1579,
    710     1582,  1586,  1591,  1594,  1597,  1599,  1602,  1605,  1611,  1617,
    711     1625,  1632,  1634,  1637,  1640,  1644,  1646,  1649,  1652,  1657,
    712     1660,  1665,  1666,  1671,  1674,  1676,  1678,  1680,  1681,  1684,
    713     1690,  1696,  1710,  1712,  1714,  1718,  1722,  1725,  1729,  1733,
    714     1736,  1741,  1743,  1750,  1760,  1761,  1773,  1775,  1779,  1783,
    715     1787,  1789,  1791,  1797,  1800,  1806,  1807,  1809,  1811,  1815,
    716     1816,  1818,  1820,  1822,  1824,  1825,  1832,  1835,  1837,  1840,
    717     1845,  1848,  1852,  1856,  1860,  1865,  1871,  1877,  1883,  1890,
    718     1892,  1894,  1896,  1900,  1901,  1907,  1908,  1910,  1912,  1915,
    719     1922,  1924,  1928,  1929,  1931,  1936,  1938,  1940,  1942,  1944,
    720     1947,  1949,  1952,  1955,  1957,  1961,  1964,  1968,  1972,  1975,
    721     1980,  1985,  1989,  1998,  2002,  2005,  2007,  2010,  2017,  2026,
    722     2030,  2033,  2037,  2041,  2046,  2051,  2055,  2057,  2059,  2061,
    723     2066,  2073,  2077,  2080,  2084,  2088,  2093,  2098,  2102,  2105,
    724     2107,  2110,  2113,  2115,  2119,  2122,  2126,  2130,  2133,  2138,
    725     2143,  2147,  2154,  2163,  2167,  2170,  2172,  2175,  2178,  2181,
    726     2185,  2189,  2192,  2197,  2202,  2206,  2213,  2222,  2226,  2229,
    727     2231,  2234,  2237,  2239,  2241,  2244,  2248,  2252,  2255,  2260,
    728     2267,  2276,  2278,  2281,  2284,  2286,  2289,  2292,  2296,  2300,
    729     2302,  2307,  2312,  2316,  2322,  2331,  2335,  2338,  2342,  2344,
    730     2350,  2356,  2363,  2370,  2372,  2375,  2378,  2380,  2383,  2386,
    731     2390,  2394,  2396,  2401,  2406,  2410,  2416,  2425,  2429,  2431,
    732     2434,  2436,  2439,  2446,  2452,  2459,  2467,  2475,  2477,  2480,
    733     2483,  2485,  2488,  2491,  2495,  2499,  2501,  2506,  2511,  2515,
    734     2524,  2528,  2530,  2532,  2535,  2537,  2539,  2542,  2546,  2549,
    735     2553,  2556,  2560,  2564,  2567,  2572,  2576,  2579,  2583,  2586,
    736     2591,  2595,  2598,  2605,  2612,  2619,  2627,  2629,  2632,  2634,
    737     2636,  2638,  2641,  2645,  2648,  2652,  2655,  2659,  2663,  2668,
    738     2671,  2675,  2680,  2683,  2689,  2695,  2702,  2709,  2710,  2712,
    739     2713
     698    1177,  1179,  1181,  1183,  1186,  1189,  1193,  1197,  1199,  1203,
     699    1205,  1208,  1211,  1214,  1219,  1224,  1229,  1234,  1236,  1239,
     700    1242,  1246,  1248,  1251,  1254,  1256,  1259,  1262,  1266,  1268,
     701    1271,  1274,  1276,  1278,  1283,  1286,  1287,  1294,  1302,  1305,
     702    1308,  1311,  1312,  1315,  1318,  1322,  1325,  1329,  1331,  1334,
     703    1338,  1341,  1344,  1349,  1350,  1352,  1355,  1358,  1360,  1361,
     704    1363,  1366,  1369,  1375,  1378,  1379,  1387,  1390,  1395,  1396,
     705    1399,  1400,  1402,  1404,  1406,  1412,  1418,  1424,  1426,  1432,
     706    1438,  1448,  1450,  1456,  1457,  1459,  1461,  1467,  1469,  1471,
     707    1477,  1483,  1485,  1489,  1493,  1498,  1500,  1502,  1504,  1506,
     708    1509,  1511,  1515,  1519,  1521,  1524,  1526,  1530,  1532,  1534,
     709    1536,  1538,  1540,  1542,  1544,  1546,  1548,  1550,  1552,  1555,
     710    1557,  1559,  1561,  1564,  1565,  1568,  1571,  1573,  1578,  1579,
     711    1581,  1584,  1588,  1593,  1596,  1599,  1601,  1604,  1607,  1613,
     712    1619,  1627,  1634,  1636,  1639,  1642,  1646,  1648,  1651,  1654,
     713    1659,  1662,  1667,  1668,  1673,  1676,  1678,  1680,  1682,  1683,
     714    1686,  1692,  1698,  1712,  1714,  1716,  1720,  1724,  1727,  1731,
     715    1735,  1738,  1743,  1745,  1752,  1762,  1763,  1775,  1777,  1781,
     716    1785,  1789,  1791,  1793,  1799,  1802,  1808,  1809,  1811,  1813,
     717    1817,  1818,  1820,  1822,  1824,  1826,  1827,  1834,  1837,  1839,
     718    1842,  1847,  1850,  1854,  1858,  1862,  1867,  1873,  1879,  1885,
     719    1892,  1894,  1896,  1898,  1902,  1903,  1909,  1910,  1912,  1914,
     720    1917,  1924,  1926,  1930,  1931,  1933,  1938,  1940,  1942,  1944,
     721    1946,  1949,  1951,  1954,  1957,  1959,  1963,  1966,  1970,  1974,
     722    1977,  1982,  1987,  1991,  2000,  2004,  2007,  2009,  2012,  2019,
     723    2028,  2032,  2035,  2039,  2043,  2048,  2053,  2057,  2059,  2061,
     724    2063,  2068,  2075,  2079,  2082,  2086,  2090,  2095,  2100,  2104,
     725    2107,  2109,  2112,  2115,  2117,  2121,  2124,  2128,  2132,  2135,
     726    2140,  2145,  2149,  2156,  2165,  2169,  2172,  2174,  2177,  2180,
     727    2183,  2187,  2191,  2194,  2199,  2204,  2208,  2215,  2224,  2228,
     728    2231,  2233,  2236,  2239,  2241,  2243,  2246,  2250,  2254,  2257,
     729    2262,  2269,  2278,  2280,  2283,  2286,  2288,  2291,  2294,  2298,
     730    2302,  2304,  2309,  2314,  2318,  2324,  2333,  2337,  2340,  2344,
     731    2346,  2352,  2358,  2365,  2372,  2374,  2377,  2380,  2382,  2385,
     732    2388,  2392,  2396,  2398,  2403,  2408,  2412,  2418,  2427,  2431,
     733    2433,  2436,  2438,  2441,  2448,  2454,  2461,  2469,  2477,  2479,
     734    2482,  2485,  2487,  2490,  2493,  2497,  2501,  2503,  2508,  2513,
     735    2517,  2526,  2530,  2532,  2534,  2537,  2539,  2541,  2544,  2548,
     736    2551,  2555,  2558,  2562,  2566,  2569,  2574,  2578,  2581,  2585,
     737    2588,  2593,  2597,  2600,  2607,  2614,  2621,  2629,  2631,  2634,
     738    2636,  2638,  2640,  2643,  2647,  2650,  2654,  2657,  2661,  2665,
     739    2670,  2673,  2677,  2682,  2685,  2691,  2697,  2704,  2711,  2712,
     740    2714,  2715
    740741};
    741742
     
    745746     302,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
    746747      -1,    72,    -1,    76,    -1,   140,    -1,    72,    -1,    76,
    747       -1,    72,    -1,   140,    -1,    83,    -1,    84,    -1,    82,
    748       -1,   141,    82,    -1,    72,    -1,   140,    -1,   109,   169,
    749      110,    -1,   109,   173,   110,    -1,   142,    -1,   143,   111,
    750      134,   164,   135,   112,    -1,   143,   109,   144,   110,    -1,
    751      143,   113,   139,    -1,   143,   113,   111,   134,   146,   135,
    752      112,    -1,   143,    85,   139,    -1,   143,    85,   111,   134,
    753      146,   135,   112,    -1,   143,    86,    -1,   143,    87,    -1,
    754      109,   275,   110,   114,   279,   372,   115,    -1,   143,   114,
    755      144,   115,    -1,   145,    -1,   144,   116,   145,    -1,    -1,
    756      164,    -1,   147,    -1,   146,   116,   147,    -1,   139,    -1,
    757      139,   113,   147,    -1,   139,   113,   111,   134,   146,   135,
    758      112,    -1,   139,    85,   147,    -1,   139,    85,   111,   134,
    759      146,   135,   112,    -1,   143,    -1,   136,    -1,   141,    -1,
    760       40,   151,    -1,   149,   151,    -1,   150,   151,    -1,    86,
    761      148,    -1,    87,   148,    -1,    37,   148,    -1,    37,   109,
    762      275,   110,    -1,    66,   148,    -1,    66,   109,   275,   110,
    763       -1,    38,   109,   275,   116,   139,   110,    -1,    76,    -1,
    764       76,   109,   145,   110,    -1,    76,   109,   276,   110,    -1,
    765      117,    -1,   118,    -1,   119,    -1,   120,    -1,   121,    -1,
    766      122,    -1,   148,    -1,   109,   275,   110,   151,    -1,   109,
    767      275,   110,   167,    -1,   151,    -1,   152,   117,   151,    -1,
    768      152,   123,   151,    -1,   152,   124,   151,    -1,   152,    -1,
    769      153,   119,   152,    -1,   153,   120,   152,    -1,   153,    -1,
    770      154,    88,   153,    -1,   154,    89,   153,    -1,   154,    -1,
    771      155,   125,   154,    -1,   155,   126,   154,    -1,   155,    90,
    772      154,    -1,   155,    91,   154,    -1,   155,    -1,   156,    92,
    773      155,    -1,   156,    93,   155,    -1,   156,    -1,   157,   118,
    774      156,    -1,   157,    -1,   158,   127,   157,    -1,   158,    -1,
    775      159,   128,   158,    -1,   159,    -1,   160,    94,   159,    -1,
    776      160,    -1,   161,    95,   160,    -1,   161,    -1,   161,   129,
    777      169,   130,   162,    -1,   161,   129,   130,   162,    -1,   161,
    778      129,   169,   130,   167,    -1,   162,    -1,   162,    -1,   148,
    779      166,   164,    -1,   167,   373,    -1,    -1,   164,    -1,   131,
    780       -1,    97,    -1,    98,    -1,    99,    -1,   100,    -1,   101,
    781       -1,   102,    -1,   103,    -1,   104,    -1,   105,    -1,   106,
    782       -1,   111,   112,    -1,   111,   134,   164,   135,   112,    -1,
    783      111,   134,   116,   168,   135,   112,    -1,   111,   134,   164,
    784      116,   168,   135,   112,    -1,   165,    -1,   168,   116,   165,
    785       -1,   164,    -1,   169,   116,   164,    -1,    -1,   169,    -1,
    786      172,    -1,   173,    -1,   177,    -1,   178,    -1,   190,    -1,
    787      192,    -1,   193,    -1,   198,    -1,   127,   143,   114,   144,
    788      115,   132,    -1,    72,   130,   312,   171,    -1,   114,   115,
    789       -1,   114,   134,   134,   209,   174,   135,   115,    -1,   175,
    790       -1,   174,   134,   175,    -1,   212,    -1,    40,   212,    -1,
    791      308,    -1,   171,   135,    -1,   171,    -1,   176,   171,    -1,
    792      170,   132,    -1,    41,   109,   169,   110,   171,    -1,    41,
    793      109,   169,   110,   171,    42,   171,    -1,    43,   109,   169,
    794      110,   183,    -1,    43,   109,   169,   110,   114,   134,   205,
    795      184,   115,    -1,    53,   109,   169,   110,   183,    -1,    53,
    796      109,   169,   110,   114,   134,   205,   186,   115,    -1,   163,
    797       -1,   163,    96,   163,    -1,   310,    -1,   179,    -1,   180,
    798      116,   179,    -1,    44,   180,   130,    -1,    45,   130,    -1,
    799      181,    -1,   182,   181,    -1,   182,   171,    -1,    -1,   185,
    800       -1,   182,   176,    -1,   185,   182,   176,    -1,    -1,   187,
    801       -1,   182,   189,    -1,   182,   176,   188,    -1,   187,   182,
    802      189,    -1,   187,   182,   176,   188,    -1,    -1,   189,    -1,
    803       56,    -1,    56,   132,    -1,    47,   109,   169,   110,   171,
    804       -1,    46,   171,    47,   109,   169,   110,   132,    -1,    48,
    805      109,   134,   191,   110,   171,    -1,   170,   135,   132,   170,
    806      132,   170,    -1,   212,   170,   132,   170,    -1,    51,    72,
    807      132,    -1,    51,   117,   169,   132,    -1,    50,   132,    -1,
    808       50,    72,   132,    -1,    49,   132,    -1,    49,    72,   132,
    809       -1,    52,   170,   132,    -1,    61,   165,   132,    -1,    62,
    810      165,   132,    -1,    62,   165,    63,   164,   132,    -1,    57,
    811      173,   194,    -1,    57,   173,   196,    -1,    57,   173,   194,
    812      196,    -1,   195,    -1,    58,   109,    96,   110,   173,    -1,
    813      195,    58,   109,    96,   110,   173,    -1,    59,   109,    96,
    814      110,   173,    -1,   195,    59,   109,    96,   110,   173,    -1,
    815       58,   109,   134,   134,   197,   135,   110,   173,   135,    -1,
    816      195,    58,   109,   134,   134,   197,   135,   110,   173,   135,
    817       -1,    59,   109,   134,   134,   197,   135,   110,   173,   135,
    818       -1,   195,    59,   109,   134,   134,   197,   135,   110,   173,
    819      135,    -1,    60,   173,    -1,   225,    -1,   225,   309,    -1,
    820      225,   357,    -1,   366,   139,    -1,   366,    -1,    64,   199,
    821      109,   141,   110,   132,    -1,    64,   199,   109,   141,   130,
    822      200,   110,   132,    -1,    64,   199,   109,   141,   130,   200,
    823      130,   200,   110,   132,    -1,    64,   199,   109,   141,   130,
    824      200,   130,   200,   130,   203,   110,   132,    -1,    64,   199,
    825       51,   109,   141,   130,   130,   200,   130,   203,   130,   204,
    826      110,   132,    -1,    -1,    11,    -1,    -1,   201,    -1,   202,
    827       -1,   201,   116,   202,    -1,   141,   109,   163,   110,    -1,
    828      111,   163,   112,   141,   109,   163,   110,    -1,    -1,   141,
    829       -1,   203,   116,   141,    -1,   139,    -1,   204,   116,   139,
    830       -1,   135,    -1,   206,    -1,   212,    -1,   206,   134,   212,
    831       -1,   135,    -1,   208,    -1,   222,    -1,   208,   134,   222,
    832       -1,    -1,   210,    -1,    29,   211,   132,    -1,   210,    29,
    833      211,   132,    -1,   274,    -1,   211,   116,   274,    -1,   213,
    834       -1,   222,    -1,   214,   135,   132,    -1,   219,   135,   132,
    835       -1,   216,   135,   132,    -1,   293,   135,   132,    -1,   296,
    836      135,   132,    -1,   215,   277,    -1,   231,   215,   277,    -1,
    837      214,   135,   116,   134,   272,   277,    -1,   367,   272,   311,
    838       -1,   370,   272,   311,    -1,   227,   370,   272,   311,    -1,
    839      217,    -1,   227,   217,    -1,   231,   217,    -1,   231,   227,
    840      217,    -1,   216,   135,   116,   134,   272,    -1,   111,   112,
    841      272,   109,   134,   260,   135,   110,    -1,   370,   272,   109,
    842      134,   260,   135,   110,    -1,   218,   272,   109,   134,   260,
    843      135,   110,    -1,   111,   134,   262,   135,   112,    -1,   111,
    844      134,   262,   135,   116,   134,   263,   135,   112,    -1,     3,
    845      215,    -1,     3,   217,    -1,   219,   135,   116,   134,   139,
    846       -1,     3,   225,   309,    -1,   220,   135,   116,   134,   309,
    847       -1,   227,     3,   225,   309,    -1,   225,     3,   309,    -1,
    848      225,     3,   227,   309,    -1,     3,   139,   131,   164,    -1,
    849      221,   135,   116,   134,   139,   131,   164,    -1,   223,   135,
    850      132,    -1,   220,   135,   132,    -1,   221,   135,   132,    -1,
    851      240,   135,   132,    -1,   224,   309,   311,   277,    -1,   223,
    852      116,   312,   309,   311,   277,    -1,   236,    -1,   240,    -1,
    853      242,    -1,   283,    -1,   237,    -1,   241,    -1,   243,    -1,
    854      284,    -1,    -1,   227,    -1,   228,    -1,   227,   228,    -1,
    855      229,    -1,   314,    -1,    10,    -1,    12,    -1,    11,    -1,
    856       14,    -1,    67,    -1,    -1,    13,   109,   230,   286,   110,
    857       -1,   232,    -1,   227,   232,    -1,   231,   227,   232,    -1,
    858      233,    -1,   232,   233,    -1,   234,    -1,     5,    -1,     7,
    859       -1,     4,    -1,     6,    -1,     8,    -1,     9,    -1,    69,
    860       -1,    71,    -1,    16,    -1,    21,    -1,    20,    -1,    18,
    861       -1,    19,    -1,    17,    -1,    22,    -1,    23,    -1,    15,
    862       -1,    25,    -1,    26,    -1,    27,    -1,    24,    -1,   237,
    863       -1,   231,   237,    -1,   236,   233,    -1,   236,   233,   227,
    864       -1,   236,   233,   237,    -1,   238,    -1,   226,   239,   226,
    865       -1,   235,    -1,   227,   235,    -1,   238,   228,    -1,   238,
    866      235,    -1,    28,   109,   276,   110,    -1,    28,   109,   169,
    867      110,    -1,    78,   109,   276,   110,    -1,    78,   109,   169,
    868      110,    -1,   241,    -1,   231,   241,    -1,   240,   233,    -1,
    869      240,   233,   227,    -1,   244,    -1,   227,   244,    -1,   241,
    870      228,    -1,   243,    -1,   231,   243,    -1,   242,   233,    -1,
    871      242,   233,   227,    -1,    74,    -1,   227,    74,    -1,   243,
    872      228,    -1,   245,    -1,   256,    -1,   247,   114,   248,   115,
    873       -1,   247,   274,    -1,    -1,   247,   274,   246,   114,   248,
    874      115,    -1,   247,   109,   292,   110,   114,   248,   115,    -1,
    875      247,   285,    -1,    31,   312,    -1,    32,   312,    -1,    -1,
    876      248,   249,    -1,   250,   132,    -1,    40,   250,   132,    -1,
    877      251,   132,    -1,    40,   251,   132,    -1,   366,    -1,   366,
    878      274,    -1,   250,   116,   274,    -1,   250,   116,    -1,   225,
    879      252,    -1,   251,   116,   312,   252,    -1,    -1,   254,    -1,
    880      318,   253,    -1,   331,   253,    -1,   357,    -1,    -1,   254,
    881       -1,   130,   163,    -1,    30,   312,    -1,   255,   114,   258,
    882      372,   115,    -1,   255,   274,    -1,    -1,   255,   274,   257,
    883      114,   258,   372,   115,    -1,   274,   259,    -1,   258,   116,
    884      274,   259,    -1,    -1,   131,   163,    -1,    -1,   261,    -1,
    885      263,    -1,   262,    -1,   262,   135,   116,   134,   263,    -1,
    886      263,   135,   116,   134,    96,    -1,   262,   135,   116,   134,
    887       96,    -1,   267,    -1,   263,   135,   116,   134,   267,    -1,
    888      262,   135,   116,   134,   267,    -1,   262,   135,   116,   134,
    889      263,   135,   116,   134,   267,    -1,   268,    -1,   263,   135,
    890      116,   134,   268,    -1,    -1,   265,    -1,   266,    -1,   266,
    891      135,   116,   134,    96,    -1,   270,    -1,   269,    -1,   266,
    892      135,   116,   134,   270,    -1,   266,   135,   116,   134,   269,
    893       -1,   269,    -1,   362,   272,   373,    -1,   370,   272,   373,
    894       -1,   227,   370,   272,   373,    -1,   217,    -1,   270,    -1,
    895      362,    -1,   370,    -1,   227,   370,    -1,   371,    -1,   224,
    896      336,   373,    -1,   224,   340,   373,    -1,   224,    -1,   224,
    897      351,    -1,   139,    -1,   271,   116,   139,    -1,   137,    -1,
    898       74,    -1,    75,    -1,   138,    -1,    74,    -1,    75,    -1,
    899      139,    -1,    74,    -1,    75,    -1,   366,    -1,   225,    -1,
    900      225,   357,    -1,   366,    -1,   371,    -1,   225,    -1,   225,
    901      345,    -1,    -1,   131,   278,    -1,   107,   278,    -1,   164,
    902       -1,   114,   279,   372,   115,    -1,    -1,   278,    -1,   280,
    903      278,    -1,   279,   116,   278,    -1,   279,   116,   280,   278,
    904       -1,   281,   130,    -1,   274,   130,    -1,   282,    -1,   281,
    905      282,    -1,   113,   274,    -1,   111,   134,   164,   135,   112,
    906       -1,   111,   134,   310,   135,   112,    -1,   111,   134,   163,
    907       96,   163,   135,   112,    -1,   113,   111,   134,   146,   135,
    908      112,    -1,   284,    -1,   231,   284,    -1,   283,   233,    -1,
    909      283,   233,   227,    -1,   285,    -1,   227,   285,    -1,   284,
    910      228,    -1,    75,   109,   292,   110,    -1,   287,   373,    -1,
    911      286,   116,   287,   373,    -1,    -1,   289,   274,   288,   290,
    912       -1,   225,   336,    -1,    33,    -1,    35,    -1,    34,    -1,
    913       -1,   290,   291,    -1,   128,   274,   109,   292,   110,    -1,
    914      128,   114,   134,   298,   115,    -1,   128,   109,   134,   286,
    915      135,   110,   114,   134,   298,   115,   109,   292,   110,    -1,
    916      276,    -1,   164,    -1,   292,   116,   276,    -1,   292,   116,
    917      164,    -1,    33,   294,    -1,   232,    33,   294,    -1,   293,
    918      116,   294,    -1,   295,   290,    -1,   295,   290,   131,   276,
    919       -1,   274,    -1,   273,   109,   134,   286,   135,   110,    -1,
    920       36,   274,   109,   134,   286,   135,   110,   114,   115,    -1,
    921       -1,    36,   274,   109,   134,   286,   135,   110,   114,   297,
    922      298,   115,    -1,   299,    -1,   298,   134,   299,    -1,   300,
    923      135,   132,    -1,   301,   135,   132,    -1,   215,    -1,   217,
    924       -1,   300,   135,   116,   134,   272,    -1,   225,   309,    -1,
    925      301,   135,   116,   134,   309,    -1,    -1,   303,    -1,   305,
    926       -1,   303,   134,   305,    -1,    -1,   303,    -1,   212,    -1,
    927      307,    -1,   198,    -1,    -1,     5,    82,   306,   114,   304,
    928      115,    -1,    40,   305,    -1,   308,    -1,   323,   173,    -1,
    929      327,   134,   207,   173,    -1,   216,   173,    -1,   224,   323,
    930      173,    -1,   227,   323,   173,    -1,   231,   323,   173,    -1,
    931      231,   227,   323,   173,    -1,   224,   327,   134,   207,   173,
    932       -1,   227,   327,   134,   207,   173,    -1,   231,   327,   134,
    933      207,   173,    -1,   231,   227,   327,   134,   207,   173,    -1,
    934      318,    -1,   331,    -1,   323,    -1,   163,   122,   163,    -1,
    935       -1,    64,   109,   141,   110,   312,    -1,    -1,   313,    -1,
    936      314,    -1,   313,   314,    -1,    39,   109,   109,   315,   110,
    937      110,    -1,   316,    -1,   315,   116,   316,    -1,    -1,   317,
    938       -1,   317,   109,   170,   110,    -1,   272,    -1,   234,    -1,
    939      235,    -1,   228,    -1,   319,   312,    -1,   320,    -1,   321,
    940      312,    -1,   322,   312,    -1,   137,    -1,   109,   319,   110,
    941       -1,   149,   318,    -1,   149,   227,   318,    -1,   109,   320,
    942      110,    -1,   319,   349,    -1,   109,   320,   110,   349,    -1,
    943      109,   321,   110,   350,    -1,   109,   321,   110,    -1,   109,
    944      320,   110,   109,   134,   264,   135,   110,    -1,   109,   322,
    945      110,    -1,   324,   312,    -1,   325,    -1,   326,   312,    -1,
    946      319,   109,   134,   264,   135,   110,    -1,   109,   325,   110,
    947      109,   134,   264,   135,   110,    -1,   109,   324,   110,    -1,
    948      149,   323,    -1,   149,   227,   323,    -1,   109,   325,   110,
    949       -1,   109,   325,   110,   349,    -1,   109,   326,   110,   350,
    950       -1,   109,   326,   110,    -1,   328,    -1,   329,    -1,   330,
    951       -1,   319,   109,   271,   110,    -1,   109,   329,   110,   109,
    952      271,   110,    -1,   109,   328,   110,    -1,   149,   327,    -1,
    953      149,   227,   327,    -1,   109,   329,   110,    -1,   109,   329,
    954      110,   349,    -1,   109,   330,   110,   350,    -1,   109,   330,
    955      110,    -1,   332,   312,    -1,   333,    -1,   334,   312,    -1,
    956      335,   312,    -1,   341,    -1,   109,   332,   110,    -1,   149,
    957      331,    -1,   149,   227,   331,    -1,   109,   333,   110,    -1,
    958      332,   349,    -1,   109,   333,   110,   349,    -1,   109,   334,
    959      110,   350,    -1,   109,   334,   110,    -1,   332,   109,   134,
    960      264,   135,   110,    -1,   109,   333,   110,   109,   134,   264,
    961      135,   110,    -1,   109,   335,   110,    -1,   319,   312,    -1,
    962      337,    -1,   338,   312,    -1,   339,   312,    -1,   149,   336,
    963       -1,   149,   227,   336,    -1,   109,   337,   110,    -1,   319,
    964      355,    -1,   109,   337,   110,   349,    -1,   109,   338,   110,
    965      350,    -1,   109,   338,   110,    -1,   319,   109,   134,   264,
    966      135,   110,    -1,   109,   337,   110,   109,   134,   264,   135,
    967      110,    -1,   109,   339,   110,    -1,   341,   312,    -1,   342,
    968       -1,   343,   312,    -1,   344,   312,    -1,    74,    -1,    75,
    969       -1,   149,   340,    -1,   149,   227,   340,    -1,   109,   342,
    970      110,    -1,   341,   355,    -1,   109,   342,   110,   355,    -1,
    971      341,   109,   134,   264,   135,   110,    -1,   109,   342,   110,
    972      109,   134,   264,   135,   110,    -1,   346,    -1,   347,   312,
    973       -1,   348,   312,    -1,   149,    -1,   149,   227,    -1,   149,
    974      345,    -1,   149,   227,   345,    -1,   109,   346,   110,    -1,
    975      349,    -1,   109,   346,   110,   349,    -1,   109,   347,   110,
    976      350,    -1,   109,   347,   110,    -1,   109,   134,   264,   135,
    977      110,    -1,   109,   346,   110,   109,   134,   264,   135,   110,
    978       -1,   109,   348,   110,    -1,   111,   112,    -1,   111,   112,
    979      350,    -1,   350,    -1,   111,   134,   164,   135,   112,    -1,
    980      111,   134,   117,   135,   112,    -1,   350,   111,   134,   164,
    981      135,   112,    -1,   350,   111,   134,   117,   135,   112,    -1,
    982      352,    -1,   353,   312,    -1,   354,   312,    -1,   149,    -1,
    983      149,   227,    -1,   149,   351,    -1,   149,   227,   351,    -1,
    984      109,   352,   110,    -1,   355,    -1,   109,   352,   110,   355,
    985       -1,   109,   353,   110,   350,    -1,   109,   353,   110,    -1,
    986      109,   134,   264,   135,   110,    -1,   109,   352,   110,   109,
    987      134,   264,   135,   110,    -1,   109,   354,   110,    -1,   356,
    988       -1,   356,   350,    -1,   350,    -1,   111,   112,    -1,   111,
    989      134,   227,   117,   135,   112,    -1,   111,   134,   227,   135,
    990      112,    -1,   111,   134,   227,   164,   135,   112,    -1,   111,
    991      134,     7,   226,   164,   135,   112,    -1,   111,   134,   227,
    992        7,   164,   135,   112,    -1,   358,    -1,   359,   312,    -1,
    993      360,   312,    -1,   149,    -1,   149,   227,    -1,   149,   357,
    994       -1,   149,   227,   357,    -1,   109,   358,   110,    -1,   349,
    995       -1,   109,   358,   110,   349,    -1,   109,   359,   110,   350,
    996       -1,   109,   359,   110,    -1,   109,   358,   110,   109,   134,
    997      264,   135,   110,    -1,   109,   360,   110,    -1,   362,    -1,
    998      370,    -1,   227,   370,    -1,   363,    -1,   364,    -1,   149,
    999      225,    -1,   227,   149,   225,    -1,   149,   371,    -1,   227,
    1000      149,   371,    -1,   149,   361,    -1,   227,   149,   361,    -1,
    1001      111,   112,   225,    -1,   365,   225,    -1,   111,   112,   350,
    1002      225,    -1,   365,   350,   225,    -1,   350,   225,    -1,   111,
    1003      112,   363,    -1,   365,   363,    -1,   111,   112,   350,   363,
    1004       -1,   365,   350,   363,    -1,   350,   363,    -1,   111,   134,
    1005      227,   117,   135,   112,    -1,   111,   134,   227,   164,   135,
    1006      112,    -1,   111,   134,   231,   164,   135,   112,    -1,   111,
    1007      134,   231,   227,   164,   135,   112,    -1,   370,    -1,   227,
    1008      370,    -1,   367,    -1,   368,    -1,   369,    -1,   149,   225,
    1009       -1,   227,   149,   225,    -1,   149,   371,    -1,   227,   149,
    1010      371,    -1,   149,   366,    -1,   227,   149,   366,    -1,   111,
    1011      112,   225,    -1,   111,   112,   350,   225,    -1,   350,   225,
    1012       -1,   111,   112,   368,    -1,   111,   112,   350,   368,    -1,
    1013      350,   368,    -1,   111,   134,   263,   135,   112,    -1,   111,
    1014      112,   109,   260,   110,    -1,   370,   109,   134,   260,   135,
    1015      110,    -1,   218,   109,   134,   260,   135,   110,    -1,    -1,
    1016      116,    -1,    -1,   131,   164,    -1
     748      -1,    72,    -1,   140,    -1,    83,    -1,    84,    -1,   142,
     749      -1,    82,    -1,   142,    82,    -1,    72,    -1,   140,    -1,
     750     109,   170,   110,    -1,   109,   174,   110,    -1,   143,    -1,
     751     144,   111,   134,   165,   135,   112,    -1,   144,   109,   145,
     752     110,    -1,   144,   113,   139,    -1,   144,   113,   111,   134,
     753     147,   135,   112,    -1,   144,    85,   139,    -1,   144,    85,
     754     111,   134,   147,   135,   112,    -1,   144,    86,    -1,   144,
     755      87,    -1,   109,   275,   110,   114,   279,   372,   115,    -1,
     756     144,   114,   145,   115,    -1,   146,    -1,   145,   116,   146,
     757      -1,    -1,   165,    -1,   148,    -1,   147,   116,   148,    -1,
     758     139,    -1,   139,   113,   148,    -1,   139,   113,   111,   134,
     759     147,   135,   112,    -1,   139,    85,   148,    -1,   139,    85,
     760     111,   134,   147,   135,   112,    -1,   144,    -1,   136,    -1,
     761     141,    -1,    40,   152,    -1,   150,   152,    -1,   151,   152,
     762      -1,    86,   149,    -1,    87,   149,    -1,    37,   149,    -1,
     763      37,   109,   275,   110,    -1,    66,   149,    -1,    66,   109,
     764     275,   110,    -1,    38,   109,   275,   116,   139,   110,    -1,
     765      76,    -1,    76,   109,   146,   110,    -1,    76,   109,   276,
     766     110,    -1,   117,    -1,   118,    -1,   119,    -1,   120,    -1,
     767     121,    -1,   122,    -1,   149,    -1,   109,   275,   110,   152,
     768      -1,   109,   275,   110,   168,    -1,   152,    -1,   153,   117,
     769     152,    -1,   153,   123,   152,    -1,   153,   124,   152,    -1,
     770     153,    -1,   154,   119,   153,    -1,   154,   120,   153,    -1,
     771     154,    -1,   155,    88,   154,    -1,   155,    89,   154,    -1,
     772     155,    -1,   156,   125,   155,    -1,   156,   126,   155,    -1,
     773     156,    90,   155,    -1,   156,    91,   155,    -1,   156,    -1,
     774     157,    92,   156,    -1,   157,    93,   156,    -1,   157,    -1,
     775     158,   118,   157,    -1,   158,    -1,   159,   127,   158,    -1,
     776     159,    -1,   160,   128,   159,    -1,   160,    -1,   161,    94,
     777     160,    -1,   161,    -1,   162,    95,   161,    -1,   162,    -1,
     778     162,   129,   170,   130,   163,    -1,   162,   129,   130,   163,
     779      -1,   162,   129,   170,   130,   168,    -1,   163,    -1,   163,
     780      -1,   149,   167,   165,    -1,   168,   373,    -1,    -1,   165,
     781      -1,   131,    -1,   107,    -1,    97,    -1,    98,    -1,    99,
     782      -1,   100,    -1,   101,    -1,   102,    -1,   103,    -1,   104,
     783      -1,   105,    -1,   106,    -1,   111,   112,    -1,   111,   134,
     784     165,   135,   112,    -1,   111,   134,   116,   169,   135,   112,
     785      -1,   111,   134,   165,   116,   169,   135,   112,    -1,   166,
     786      -1,   169,   116,   166,    -1,   165,    -1,   170,   116,   165,
     787      -1,    -1,   170,    -1,   173,    -1,   174,    -1,   178,    -1,
     788     179,    -1,   191,    -1,   193,    -1,   194,    -1,   199,    -1,
     789     127,   144,   114,   145,   115,   132,    -1,    72,   130,   312,
     790     172,    -1,   114,   115,    -1,   114,   134,   134,   210,   175,
     791     135,   115,    -1,   176,    -1,   175,   134,   176,    -1,   213,
     792      -1,    40,   213,    -1,   308,    -1,   172,   135,    -1,   172,
     793      -1,   177,   172,    -1,   171,   132,    -1,    41,   109,   170,
     794     110,   172,    -1,    41,   109,   170,   110,   172,    42,   172,
     795      -1,    43,   109,   170,   110,   184,    -1,    43,   109,   170,
     796     110,   114,   134,   206,   185,   115,    -1,    53,   109,   170,
     797     110,   184,    -1,    53,   109,   170,   110,   114,   134,   206,
     798     187,   115,    -1,   164,    -1,   164,    96,   164,    -1,   310,
     799      -1,   180,    -1,   181,   116,   180,    -1,    44,   181,   130,
     800      -1,    45,   130,    -1,   182,    -1,   183,   182,    -1,   183,
     801     172,    -1,    -1,   186,    -1,   183,   177,    -1,   186,   183,
     802     177,    -1,    -1,   188,    -1,   183,   190,    -1,   183,   177,
     803     189,    -1,   188,   183,   190,    -1,   188,   183,   177,   189,
     804      -1,    -1,   190,    -1,    56,    -1,    56,   132,    -1,    47,
     805     109,   170,   110,   172,    -1,    46,   172,    47,   109,   170,
     806     110,   132,    -1,    48,   109,   134,   192,   110,   172,    -1,
     807     171,   135,   132,   171,   132,   171,    -1,   213,   171,   132,
     808     171,    -1,    51,    72,   132,    -1,    51,   117,   170,   132,
     809      -1,    50,   132,    -1,    50,    72,   132,    -1,    49,   132,
     810      -1,    49,    72,   132,    -1,    52,   171,   132,    -1,    61,
     811     166,   132,    -1,    62,   166,   132,    -1,    62,   166,    63,
     812     165,   132,    -1,    57,   174,   195,    -1,    57,   174,   197,
     813      -1,    57,   174,   195,   197,    -1,   196,    -1,    58,   109,
     814      96,   110,   174,    -1,   196,    58,   109,    96,   110,   174,
     815      -1,    59,   109,    96,   110,   174,    -1,   196,    59,   109,
     816      96,   110,   174,    -1,    58,   109,   134,   134,   198,   135,
     817     110,   174,   135,    -1,   196,    58,   109,   134,   134,   198,
     818     135,   110,   174,   135,    -1,    59,   109,   134,   134,   198,
     819     135,   110,   174,   135,    -1,   196,    59,   109,   134,   134,
     820     198,   135,   110,   174,   135,    -1,    60,   174,    -1,   226,
     821      -1,   226,   309,    -1,   226,   357,    -1,   366,   139,    -1,
     822     366,    -1,    64,   200,   109,   141,   110,   132,    -1,    64,
     823     200,   109,   141,   130,   201,   110,   132,    -1,    64,   200,
     824     109,   141,   130,   201,   130,   201,   110,   132,    -1,    64,
     825     200,   109,   141,   130,   201,   130,   201,   130,   204,   110,
     826     132,    -1,    64,   200,    51,   109,   141,   130,   130,   201,
     827     130,   204,   130,   205,   110,   132,    -1,    -1,    11,    -1,
     828      -1,   202,    -1,   203,    -1,   202,   116,   203,    -1,   141,
     829     109,   164,   110,    -1,   111,   164,   112,   141,   109,   164,
     830     110,    -1,    -1,   141,    -1,   204,   116,   141,    -1,   139,
     831      -1,   205,   116,   139,    -1,   135,    -1,   207,    -1,   213,
     832      -1,   207,   134,   213,    -1,   135,    -1,   209,    -1,   223,
     833      -1,   209,   134,   223,    -1,    -1,   211,    -1,    29,   212,
     834     132,    -1,   211,    29,   212,   132,    -1,   274,    -1,   212,
     835     116,   274,    -1,   214,    -1,   223,    -1,   215,   135,   132,
     836      -1,   220,   135,   132,    -1,   217,   135,   132,    -1,   293,
     837     135,   132,    -1,   296,   135,   132,    -1,   216,   277,    -1,
     838     232,   216,   277,    -1,   215,   135,   116,   134,   272,   277,
     839      -1,   367,   272,   311,    -1,   370,   272,   311,    -1,   228,
     840     370,   272,   311,    -1,   218,    -1,   228,   218,    -1,   232,
     841     218,    -1,   232,   228,   218,    -1,   217,   135,   116,   134,
     842     272,    -1,   111,   112,   272,   109,   134,   260,   135,   110,
     843      -1,   370,   272,   109,   134,   260,   135,   110,    -1,   219,
     844     272,   109,   134,   260,   135,   110,    -1,   111,   134,   262,
     845     135,   112,    -1,   111,   134,   262,   135,   116,   134,   263,
     846     135,   112,    -1,     3,   216,    -1,     3,   218,    -1,   220,
     847     135,   116,   134,   139,    -1,     3,   226,   309,    -1,   221,
     848     135,   116,   134,   309,    -1,   228,     3,   226,   309,    -1,
     849     226,     3,   309,    -1,   226,     3,   228,   309,    -1,     3,
     850     139,   131,   165,    -1,   222,   135,   116,   134,   139,   131,
     851     165,    -1,   224,   135,   132,    -1,   221,   135,   132,    -1,
     852     222,   135,   132,    -1,   240,   135,   132,    -1,   225,   309,
     853     311,   277,    -1,   224,   116,   312,   309,   311,   277,    -1,
     854     236,    -1,   240,    -1,   242,    -1,   283,    -1,   237,    -1,
     855     241,    -1,   243,    -1,   284,    -1,    -1,   228,    -1,   229,
     856      -1,   228,   229,    -1,   230,    -1,   314,    -1,    10,    -1,
     857      12,    -1,    11,    -1,    14,    -1,    67,    -1,    -1,    13,
     858     109,   231,   286,   110,    -1,   233,    -1,   228,   233,    -1,
     859     232,   228,   233,    -1,   234,    -1,   233,   234,    -1,     5,
     860      -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
     861      -1,    69,    -1,    71,    -1,    16,    -1,    21,    -1,    20,
     862      -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
     863      -1,    15,    -1,    25,    -1,    26,    -1,    27,    -1,    24,
     864      -1,   237,    -1,   232,   237,    -1,   236,   234,    -1,   236,
     865     234,   228,    -1,   236,   234,   237,    -1,   238,    -1,   227,
     866     239,   227,    -1,   235,    -1,   228,   235,    -1,   238,   229,
     867      -1,   238,   235,    -1,    28,   109,   276,   110,    -1,    28,
     868     109,   170,   110,    -1,    78,   109,   276,   110,    -1,    78,
     869     109,   170,   110,    -1,   241,    -1,   232,   241,    -1,   240,
     870     234,    -1,   240,   234,   228,    -1,   244,    -1,   228,   244,
     871      -1,   241,   229,    -1,   243,    -1,   232,   243,    -1,   242,
     872     234,    -1,   242,   234,   228,    -1,    74,    -1,   228,    74,
     873      -1,   243,   229,    -1,   245,    -1,   256,    -1,   247,   114,
     874     248,   115,    -1,   247,   274,    -1,    -1,   247,   274,   246,
     875     114,   248,   115,    -1,   247,   109,   292,   110,   114,   248,
     876     115,    -1,   247,   285,    -1,    31,   312,    -1,    32,   312,
     877      -1,    -1,   248,   249,    -1,   250,   132,    -1,    40,   250,
     878     132,    -1,   251,   132,    -1,    40,   251,   132,    -1,   366,
     879      -1,   366,   274,    -1,   250,   116,   274,    -1,   250,   116,
     880      -1,   226,   252,    -1,   251,   116,   312,   252,    -1,    -1,
     881     254,    -1,   318,   253,    -1,   331,   253,    -1,   357,    -1,
     882      -1,   254,    -1,   130,   164,    -1,    30,   312,    -1,   255,
     883     114,   258,   372,   115,    -1,   255,   274,    -1,    -1,   255,
     884     274,   257,   114,   258,   372,   115,    -1,   274,   259,    -1,
     885     258,   116,   274,   259,    -1,    -1,   131,   164,    -1,    -1,
     886     261,    -1,   263,    -1,   262,    -1,   262,   135,   116,   134,
     887     263,    -1,   263,   135,   116,   134,    96,    -1,   262,   135,
     888     116,   134,    96,    -1,   267,    -1,   263,   135,   116,   134,
     889     267,    -1,   262,   135,   116,   134,   267,    -1,   262,   135,
     890     116,   134,   263,   135,   116,   134,   267,    -1,   268,    -1,
     891     263,   135,   116,   134,   268,    -1,    -1,   265,    -1,   266,
     892      -1,   266,   135,   116,   134,    96,    -1,   270,    -1,   269,
     893      -1,   266,   135,   116,   134,   270,    -1,   266,   135,   116,
     894     134,   269,    -1,   269,    -1,   362,   272,   373,    -1,   370,
     895     272,   373,    -1,   228,   370,   272,   373,    -1,   218,    -1,
     896     270,    -1,   362,    -1,   370,    -1,   228,   370,    -1,   371,
     897      -1,   225,   336,   373,    -1,   225,   340,   373,    -1,   225,
     898      -1,   225,   351,    -1,   139,    -1,   271,   116,   139,    -1,
     899     137,    -1,    74,    -1,    75,    -1,   138,    -1,    74,    -1,
     900      75,    -1,   139,    -1,    74,    -1,    75,    -1,   366,    -1,
     901     226,    -1,   226,   357,    -1,   366,    -1,   371,    -1,   226,
     902      -1,   226,   345,    -1,    -1,   131,   278,    -1,   107,   278,
     903      -1,   165,    -1,   114,   279,   372,   115,    -1,    -1,   278,
     904      -1,   280,   278,    -1,   279,   116,   278,    -1,   279,   116,
     905     280,   278,    -1,   281,   130,    -1,   274,   130,    -1,   282,
     906      -1,   281,   282,    -1,   113,   274,    -1,   111,   134,   165,
     907     135,   112,    -1,   111,   134,   310,   135,   112,    -1,   111,
     908     134,   164,    96,   164,   135,   112,    -1,   113,   111,   134,
     909     147,   135,   112,    -1,   284,    -1,   232,   284,    -1,   283,
     910     234,    -1,   283,   234,   228,    -1,   285,    -1,   228,   285,
     911      -1,   284,   229,    -1,    75,   109,   292,   110,    -1,   287,
     912     373,    -1,   286,   116,   287,   373,    -1,    -1,   289,   274,
     913     288,   290,    -1,   226,   336,    -1,    33,    -1,    35,    -1,
     914      34,    -1,    -1,   290,   291,    -1,   128,   274,   109,   292,
     915     110,    -1,   128,   114,   134,   298,   115,    -1,   128,   109,
     916     134,   286,   135,   110,   114,   134,   298,   115,   109,   292,
     917     110,    -1,   276,    -1,   165,    -1,   292,   116,   276,    -1,
     918     292,   116,   165,    -1,    33,   294,    -1,   233,    33,   294,
     919      -1,   293,   116,   294,    -1,   295,   290,    -1,   295,   290,
     920     131,   276,    -1,   274,    -1,   273,   109,   134,   286,   135,
     921     110,    -1,    36,   274,   109,   134,   286,   135,   110,   114,
     922     115,    -1,    -1,    36,   274,   109,   134,   286,   135,   110,
     923     114,   297,   298,   115,    -1,   299,    -1,   298,   134,   299,
     924      -1,   300,   135,   132,    -1,   301,   135,   132,    -1,   216,
     925      -1,   218,    -1,   300,   135,   116,   134,   272,    -1,   226,
     926     309,    -1,   301,   135,   116,   134,   309,    -1,    -1,   303,
     927      -1,   305,    -1,   303,   134,   305,    -1,    -1,   303,    -1,
     928     213,    -1,   307,    -1,   199,    -1,    -1,     5,    82,   306,
     929     114,   304,   115,    -1,    40,   305,    -1,   308,    -1,   323,
     930     174,    -1,   327,   134,   208,   174,    -1,   217,   174,    -1,
     931     225,   323,   174,    -1,   228,   323,   174,    -1,   232,   323,
     932     174,    -1,   232,   228,   323,   174,    -1,   225,   327,   134,
     933     208,   174,    -1,   228,   327,   134,   208,   174,    -1,   232,
     934     327,   134,   208,   174,    -1,   232,   228,   327,   134,   208,
     935     174,    -1,   318,    -1,   331,    -1,   323,    -1,   164,   122,
     936     164,    -1,    -1,    64,   109,   142,   110,   312,    -1,    -1,
     937     313,    -1,   314,    -1,   313,   314,    -1,    39,   109,   109,
     938     315,   110,   110,    -1,   316,    -1,   315,   116,   316,    -1,
     939      -1,   317,    -1,   317,   109,   171,   110,    -1,   272,    -1,
     940     234,    -1,   235,    -1,   229,    -1,   319,   312,    -1,   320,
     941      -1,   321,   312,    -1,   322,   312,    -1,   137,    -1,   109,
     942     319,   110,    -1,   150,   318,    -1,   150,   228,   318,    -1,
     943     109,   320,   110,    -1,   319,   349,    -1,   109,   320,   110,
     944     349,    -1,   109,   321,   110,   350,    -1,   109,   321,   110,
     945      -1,   109,   320,   110,   109,   134,   264,   135,   110,    -1,
     946     109,   322,   110,    -1,   324,   312,    -1,   325,    -1,   326,
     947     312,    -1,   319,   109,   134,   264,   135,   110,    -1,   109,
     948     325,   110,   109,   134,   264,   135,   110,    -1,   109,   324,
     949     110,    -1,   150,   323,    -1,   150,   228,   323,    -1,   109,
     950     325,   110,    -1,   109,   325,   110,   349,    -1,   109,   326,
     951     110,   350,    -1,   109,   326,   110,    -1,   328,    -1,   329,
     952      -1,   330,    -1,   319,   109,   271,   110,    -1,   109,   329,
     953     110,   109,   271,   110,    -1,   109,   328,   110,    -1,   150,
     954     327,    -1,   150,   228,   327,    -1,   109,   329,   110,    -1,
     955     109,   329,   110,   349,    -1,   109,   330,   110,   350,    -1,
     956     109,   330,   110,    -1,   332,   312,    -1,   333,    -1,   334,
     957     312,    -1,   335,   312,    -1,   341,    -1,   109,   332,   110,
     958      -1,   150,   331,    -1,   150,   228,   331,    -1,   109,   333,
     959     110,    -1,   332,   349,    -1,   109,   333,   110,   349,    -1,
     960     109,   334,   110,   350,    -1,   109,   334,   110,    -1,   332,
     961     109,   134,   264,   135,   110,    -1,   109,   333,   110,   109,
     962     134,   264,   135,   110,    -1,   109,   335,   110,    -1,   319,
     963     312,    -1,   337,    -1,   338,   312,    -1,   339,   312,    -1,
     964     150,   336,    -1,   150,   228,   336,    -1,   109,   337,   110,
     965      -1,   319,   355,    -1,   109,   337,   110,   349,    -1,   109,
     966     338,   110,   350,    -1,   109,   338,   110,    -1,   319,   109,
     967     134,   264,   135,   110,    -1,   109,   337,   110,   109,   134,
     968     264,   135,   110,    -1,   109,   339,   110,    -1,   341,   312,
     969      -1,   342,    -1,   343,   312,    -1,   344,   312,    -1,    74,
     970      -1,    75,    -1,   150,   340,    -1,   150,   228,   340,    -1,
     971     109,   342,   110,    -1,   341,   355,    -1,   109,   342,   110,
     972     355,    -1,   341,   109,   134,   264,   135,   110,    -1,   109,
     973     342,   110,   109,   134,   264,   135,   110,    -1,   346,    -1,
     974     347,   312,    -1,   348,   312,    -1,   150,    -1,   150,   228,
     975      -1,   150,   345,    -1,   150,   228,   345,    -1,   109,   346,
     976     110,    -1,   349,    -1,   109,   346,   110,   349,    -1,   109,
     977     347,   110,   350,    -1,   109,   347,   110,    -1,   109,   134,
     978     264,   135,   110,    -1,   109,   346,   110,   109,   134,   264,
     979     135,   110,    -1,   109,   348,   110,    -1,   111,   112,    -1,
     980     111,   112,   350,    -1,   350,    -1,   111,   134,   165,   135,
     981     112,    -1,   111,   134,   117,   135,   112,    -1,   350,   111,
     982     134,   165,   135,   112,    -1,   350,   111,   134,   117,   135,
     983     112,    -1,   352,    -1,   353,   312,    -1,   354,   312,    -1,
     984     150,    -1,   150,   228,    -1,   150,   351,    -1,   150,   228,
     985     351,    -1,   109,   352,   110,    -1,   355,    -1,   109,   352,
     986     110,   355,    -1,   109,   353,   110,   350,    -1,   109,   353,
     987     110,    -1,   109,   134,   264,   135,   110,    -1,   109,   352,
     988     110,   109,   134,   264,   135,   110,    -1,   109,   354,   110,
     989      -1,   356,    -1,   356,   350,    -1,   350,    -1,   111,   112,
     990      -1,   111,   134,   228,   117,   135,   112,    -1,   111,   134,
     991     228,   135,   112,    -1,   111,   134,   228,   165,   135,   112,
     992      -1,   111,   134,     7,   227,   165,   135,   112,    -1,   111,
     993     134,   228,     7,   165,   135,   112,    -1,   358,    -1,   359,
     994     312,    -1,   360,   312,    -1,   150,    -1,   150,   228,    -1,
     995     150,   357,    -1,   150,   228,   357,    -1,   109,   358,   110,
     996      -1,   349,    -1,   109,   358,   110,   349,    -1,   109,   359,
     997     110,   350,    -1,   109,   359,   110,    -1,   109,   358,   110,
     998     109,   134,   264,   135,   110,    -1,   109,   360,   110,    -1,
     999     362,    -1,   370,    -1,   228,   370,    -1,   363,    -1,   364,
     1000      -1,   150,   226,    -1,   228,   150,   226,    -1,   150,   371,
     1001      -1,   228,   150,   371,    -1,   150,   361,    -1,   228,   150,
     1002     361,    -1,   111,   112,   226,    -1,   365,   226,    -1,   111,
     1003     112,   350,   226,    -1,   365,   350,   226,    -1,   350,   226,
     1004      -1,   111,   112,   363,    -1,   365,   363,    -1,   111,   112,
     1005     350,   363,    -1,   365,   350,   363,    -1,   350,   363,    -1,
     1006     111,   134,   228,   117,   135,   112,    -1,   111,   134,   228,
     1007     165,   135,   112,    -1,   111,   134,   232,   165,   135,   112,
     1008      -1,   111,   134,   232,   228,   165,   135,   112,    -1,   370,
     1009      -1,   228,   370,    -1,   367,    -1,   368,    -1,   369,    -1,
     1010     150,   226,    -1,   228,   150,   226,    -1,   150,   371,    -1,
     1011     228,   150,   371,    -1,   150,   366,    -1,   228,   150,   366,
     1012      -1,   111,   112,   226,    -1,   111,   112,   350,   226,    -1,
     1013     350,   226,    -1,   111,   112,   368,    -1,   111,   112,   350,
     1014     368,    -1,   350,   368,    -1,   111,   134,   263,   135,   112,
     1015      -1,   111,   112,   109,   260,   110,    -1,   370,   109,   134,
     1016     260,   135,   110,    -1,   219,   109,   134,   260,   135,   110,
     1017      -1,    -1,   116,    -1,    -1,   131,   165,    -1
    10171018};
    10181019
     
    10201021static const yytype_uint16 yyrline[] =
    10211022{
    1022        0,   299,   299,   305,   314,   315,   316,   320,   321,   322,
    1023      326,   327,   331,   332,   336,   337,   341,   342,   353,   355,
    1024      357,   359,   364,   365,   371,   375,   377,   378,   380,   381,
    1025      383,   385,   387,   396,   397,   403,   404,   408,   409,   413,
    1026      417,   419,   421,   423,   428,   431,   433,   435,   440,   453,
    1027      455,   457,   459,   461,   463,   465,   467,   469,   471,   473,
    1028      480,   481,   487,   488,   489,   490,   494,   495,   497,   502,
    1029      503,   505,   507,   512,   513,   515,   520,   521,   523,   528,
    1030      529,   531,   533,   535,   540,   541,   543,   548,   549,   554,
    1031      555,   560,   561,   566,   567,   572,   573,   578,   579,   582,
    1032      584,   589,   594,   595,   597,   603,   604,   608,   609,   610,
    1033      611,   612,   613,   614,   615,   616,   617,   618,   624,   626,
    1034      628,   630,   635,   636,   641,   642,   648,   649,   655,   656,
    1035      657,   658,   659,   660,   661,   662,   663,   673,   680,   682,
    1036      692,   693,   698,   700,   706,   708,   712,   713,   718,   723,
    1037      726,   728,   730,   740,   742,   753,   754,   756,   761,   763,
    1038      767,   768,   773,   774,   778,   783,   784,   788,   790,   796,
    1039      797,   801,   803,   805,   807,   813,   814,   818,   820,   825,
    1040      827,   829,   834,   836,   841,   843,   847,   850,   854,   857,
    1041      861,   863,   865,   867,   872,   874,   876,   885,   887,   889,
    1042      891,   893,   898,   900,   902,   904,   909,   922,   923,   928,
    1043      930,   935,   939,   941,   943,   945,   947,   953,   954,   960,
    1044      961,   965,   966,   971,   973,   979,   980,   982,   987,   989,
    1045      996,   998,  1002,  1003,  1008,  1010,  1014,  1015,  1019,  1021,
    1046     1025,  1026,  1030,  1031,  1035,  1036,  1051,  1052,  1053,  1054,
    1047     1055,  1059,  1064,  1071,  1081,  1086,  1091,  1099,  1104,  1109,
    1048     1114,  1119,  1127,  1149,  1154,  1161,  1163,  1170,  1175,  1180,
    1049     1191,  1196,  1201,  1206,  1211,  1220,  1225,  1233,  1234,  1235,
    1050     1236,  1242,  1247,  1255,  1256,  1257,  1258,  1262,  1263,  1264,
    1051     1265,  1270,  1271,  1280,  1281,  1286,  1287,  1292,  1294,  1296,
    1052     1298,  1300,  1303,  1302,  1314,  1315,  1317,  1327,  1328,  1333,
    1053     1337,  1339,  1341,  1343,  1345,  1347,  1349,  1351,  1356,  1358,
    1054     1360,  1362,  1364,  1366,  1368,  1370,  1372,  1374,  1376,  1378,
    1055     1380,  1386,  1387,  1389,  1391,  1393,  1398,  1399,  1405,  1406,
    1056     1408,  1410,  1415,  1417,  1419,  1421,  1426,  1427,  1429,  1431,
    1057     1436,  1437,  1439,  1444,  1445,  1447,  1449,  1454,  1456,  1458,
    1058     1463,  1464,  1468,  1470,  1476,  1475,  1479,  1481,  1486,  1488,
    1059     1494,  1495,  1500,  1501,  1503,  1504,  1513,  1514,  1516,  1518,
    1060     1523,  1525,  1531,  1532,  1534,  1537,  1540,  1545,  1546,  1551,
    1061     1556,  1560,  1562,  1568,  1567,  1574,  1576,  1582,  1583,  1591,
    1062     1592,  1596,  1597,  1598,  1600,  1602,  1609,  1610,  1612,  1614,
    1063     1619,  1620,  1626,  1627,  1631,  1632,  1637,  1638,  1639,  1641,
    1064     1649,  1650,  1652,  1655,  1657,  1661,  1662,  1663,  1665,  1667,
    1065     1671,  1676,  1684,  1685,  1694,  1696,  1701,  1702,  1703,  1707,
    1066     1708,  1709,  1713,  1714,  1715,  1719,  1720,  1721,  1726,  1727,
    1067     1728,  1729,  1735,  1736,  1738,  1743,  1744,  1749,  1750,  1751,
    1068     1752,  1753,  1768,  1769,  1774,  1775,  1781,  1783,  1786,  1788,
    1069     1790,  1813,  1814,  1816,  1818,  1823,  1824,  1826,  1831,  1836,
    1070     1837,  1843,  1842,  1846,  1850,  1852,  1854,  1860,  1861,  1866,
    1071     1871,  1873,  1878,  1880,  1881,  1883,  1888,  1890,  1892,  1897,
    1072     1899,  1904,  1909,  1917,  1923,  1922,  1936,  1937,  1942,  1943,
    1073     1947,  1952,  1957,  1965,  1970,  1981,  1982,  1993,  1994,  2000,
    1074     2001,  2005,  2006,  2007,  2010,  2009,  2020,  2029,  2035,  2041,
    1075     2050,  2056,  2062,  2068,  2074,  2082,  2088,  2096,  2102,  2111,
    1076     2112,  2113,  2117,  2121,  2123,  2128,  2129,  2133,  2134,  2139,
    1077     2145,  2146,  2149,  2151,  2152,  2156,  2157,  2158,  2159,  2193,
    1078     2195,  2196,  2198,  2203,  2208,  2213,  2215,  2217,  2222,  2224,
    1079     2226,  2228,  2233,  2235,  2244,  2246,  2247,  2252,  2254,  2256,
    1080     2261,  2263,  2265,  2270,  2272,  2274,  2283,  2284,  2285,  2289,
    1081     2291,  2293,  2298,  2300,  2302,  2307,  2309,  2311,  2326,  2328,
    1082     2329,  2331,  2336,  2337,  2342,  2344,  2346,  2351,  2353,  2355,
    1083     2357,  2362,  2364,  2366,  2376,  2378,  2379,  2381,  2386,  2388,
    1084     2390,  2395,  2397,  2399,  2401,  2406,  2408,  2410,  2441,  2443,
    1085     2444,  2446,  2451,  2456,  2464,  2466,  2468,  2473,  2475,  2480,
    1086     2482,  2496,  2497,  2499,  2504,  2506,  2508,  2510,  2512,  2517,
    1087     2518,  2520,  2522,  2527,  2529,  2531,  2537,  2539,  2541,  2545,
    1088     2547,  2549,  2551,  2565,  2566,  2568,  2573,  2575,  2577,  2579,
    1089     2581,  2586,  2587,  2589,  2591,  2596,  2598,  2600,  2606,  2607,
    1090     2609,  2618,  2621,  2623,  2626,  2628,  2630,  2643,  2644,  2646,
    1091     2651,  2653,  2655,  2657,  2659,  2664,  2665,  2667,  2669,  2674,
    1092     2676,  2684,  2685,  2686,  2691,  2692,  2696,  2698,  2700,  2702,
    1093     2704,  2706,  2713,  2715,  2717,  2719,  2721,  2723,  2725,  2727,
    1094     2729,  2731,  2736,  2738,  2740,  2745,  2771,  2772,  2774,  2778,
    1095     2779,  2783,  2785,  2787,  2789,  2791,  2793,  2800,  2802,  2804,
    1096     2806,  2808,  2810,  2815,  2820,  2822,  2824,  2842,  2844,  2849,
    1097     2850
     1023       0,   300,   300,   304,   311,   312,   313,   317,   318,   319,
     1024     323,   324,   328,   329,   333,   334,   338,   342,   343,   354,
     1025     356,   358,   360,   365,   366,   372,   376,   378,   379,   381,
     1026     382,   384,   386,   388,   397,   398,   404,   405,   409,   410,
     1027     414,   418,   420,   422,   424,   429,   432,   434,   436,   441,
     1028     454,   456,   458,   460,   462,   464,   466,   468,   470,   472,
     1029     474,   481,   482,   488,   489,   490,   491,   495,   496,   498,
     1030     503,   504,   506,   508,   513,   514,   516,   521,   522,   524,
     1031     529,   530,   532,   534,   536,   541,   542,   544,   549,   550,
     1032     555,   556,   561,   562,   567,   568,   573,   574,   579,   580,
     1033     583,   585,   590,   595,   596,   598,   604,   605,   609,   610,
     1034     611,   612,   613,   614,   615,   616,   617,   618,   619,   620,
     1035     626,   628,   630,   632,   637,   638,   643,   644,   650,   651,
     1036     657,   658,   659,   660,   661,   662,   663,   664,   665,   675,
     1037     682,   684,   694,   695,   700,   702,   708,   710,   714,   715,
     1038     720,   725,   728,   730,   732,   742,   744,   755,   756,   758,
     1039     762,   764,   768,   769,   774,   775,   779,   784,   785,   789,
     1040     791,   797,   798,   802,   804,   806,   808,   814,   815,   819,
     1041     821,   826,   828,   830,   835,   837,   842,   844,   848,   851,
     1042     855,   858,   862,   864,   866,   868,   873,   875,   877,   882,
     1043     884,   886,   888,   890,   895,   897,   899,   901,   906,   918,
     1044     919,   924,   926,   931,   935,   937,   939,   941,   943,   949,
     1045     950,   956,   957,   961,   962,   967,   969,   975,   976,   978,
     1046     983,   988,   998,  1000,  1004,  1005,  1010,  1012,  1016,  1017,
     1047    1021,  1023,  1027,  1028,  1032,  1033,  1037,  1038,  1053,  1054,
     1048    1055,  1056,  1057,  1061,  1066,  1073,  1083,  1088,  1093,  1101,
     1049    1106,  1111,  1116,  1121,  1129,  1151,  1156,  1163,  1165,  1172,
     1050    1177,  1182,  1193,  1198,  1203,  1208,  1213,  1222,  1227,  1235,
     1051    1236,  1237,  1238,  1244,  1249,  1257,  1258,  1259,  1260,  1264,
     1052    1265,  1266,  1267,  1272,  1273,  1282,  1283,  1288,  1289,  1294,
     1053    1296,  1298,  1300,  1302,  1305,  1304,  1316,  1317,  1319,  1329,
     1054    1330,  1335,  1337,  1339,  1341,  1343,  1346,  1348,  1351,  1356,
     1055    1358,  1360,  1362,  1364,  1366,  1368,  1370,  1372,  1374,  1376,
     1056    1378,  1380,  1386,  1387,  1389,  1391,  1393,  1398,  1399,  1405,
     1057    1406,  1408,  1410,  1415,  1417,  1419,  1421,  1426,  1427,  1429,
     1058    1431,  1436,  1437,  1439,  1444,  1445,  1447,  1449,  1454,  1456,
     1059    1458,  1463,  1464,  1468,  1470,  1476,  1475,  1479,  1481,  1486,
     1060    1488,  1494,  1495,  1500,  1501,  1503,  1504,  1513,  1514,  1516,
     1061    1518,  1523,  1525,  1531,  1532,  1534,  1537,  1540,  1545,  1546,
     1062    1551,  1556,  1560,  1562,  1568,  1567,  1574,  1576,  1582,  1583,
     1063    1591,  1592,  1596,  1597,  1598,  1600,  1602,  1609,  1610,  1612,
     1064    1614,  1619,  1620,  1626,  1627,  1631,  1632,  1637,  1638,  1639,
     1065    1641,  1649,  1650,  1652,  1655,  1657,  1661,  1662,  1663,  1665,
     1066    1667,  1671,  1676,  1684,  1685,  1694,  1696,  1701,  1702,  1703,
     1067    1707,  1708,  1709,  1713,  1714,  1715,  1719,  1720,  1721,  1726,
     1068    1727,  1728,  1729,  1735,  1736,  1738,  1743,  1744,  1749,  1750,
     1069    1751,  1752,  1753,  1768,  1769,  1774,  1775,  1781,  1783,  1786,
     1070    1788,  1790,  1813,  1814,  1816,  1818,  1823,  1824,  1826,  1831,
     1071    1836,  1837,  1843,  1842,  1846,  1850,  1852,  1854,  1860,  1861,
     1072    1866,  1871,  1873,  1878,  1880,  1881,  1883,  1888,  1890,  1892,
     1073    1897,  1899,  1904,  1909,  1917,  1923,  1922,  1936,  1937,  1942,
     1074    1943,  1947,  1952,  1957,  1965,  1970,  1981,  1982,  1987,  1988,
     1075    1994,  1995,  1999,  2000,  2001,  2004,  2003,  2014,  2023,  2029,
     1076    2035,  2044,  2050,  2056,  2062,  2068,  2076,  2082,  2090,  2096,
     1077    2105,  2106,  2107,  2111,  2115,  2117,  2122,  2123,  2127,  2128,
     1078    2133,  2139,  2140,  2143,  2145,  2146,  2150,  2151,  2152,  2153,
     1079    2187,  2189,  2190,  2192,  2197,  2202,  2207,  2209,  2211,  2216,
     1080    2218,  2220,  2222,  2227,  2229,  2238,  2240,  2241,  2246,  2248,
     1081    2250,  2255,  2257,  2259,  2264,  2266,  2268,  2277,  2278,  2279,
     1082    2283,  2285,  2287,  2292,  2294,  2296,  2301,  2303,  2305,  2320,
     1083    2322,  2323,  2325,  2330,  2331,  2336,  2338,  2340,  2345,  2347,
     1084    2349,  2351,  2356,  2358,  2360,  2370,  2372,  2373,  2375,  2380,
     1085    2382,  2384,  2389,  2391,  2393,  2395,  2400,  2402,  2404,  2435,
     1086    2437,  2438,  2440,  2445,  2450,  2458,  2460,  2462,  2467,  2469,
     1087    2474,  2476,  2490,  2491,  2493,  2498,  2500,  2502,  2504,  2506,
     1088    2511,  2512,  2514,  2516,  2521,  2523,  2525,  2531,  2533,  2535,
     1089    2539,  2541,  2543,  2545,  2559,  2560,  2562,  2567,  2569,  2571,
     1090    2573,  2575,  2580,  2581,  2583,  2585,  2590,  2592,  2594,  2600,
     1091    2601,  2603,  2612,  2615,  2617,  2620,  2622,  2624,  2637,  2638,
     1092    2640,  2645,  2647,  2649,  2651,  2653,  2658,  2659,  2661,  2663,
     1093    2668,  2670,  2678,  2679,  2680,  2685,  2686,  2690,  2692,  2694,
     1094    2696,  2698,  2700,  2707,  2709,  2711,  2713,  2715,  2717,  2719,
     1095    2721,  2723,  2725,  2730,  2732,  2734,  2739,  2765,  2766,  2768,
     1096    2772,  2773,  2777,  2779,  2781,  2783,  2785,  2787,  2794,  2796,
     1097    2798,  2800,  2802,  2804,  2809,  2814,  2816,  2818,  2836,  2838,
     1098    2843,  2844
    10981099};
    10991100#endif
     
    11251126  "'?'", "':'", "'='", "';'", "$accept", "push", "pop", "constant",
    11261127  "identifier", "no_01_identifier", "no_attr_identifier", "zero_one",
    1127   "string_literal_list", "primary_expression", "postfix_expression",
    1128   "argument_expression_list", "argument_expression", "field_list", "field",
    1129   "unary_expression", "ptrref_operator", "unary_operator",
    1130   "cast_expression", "multiplicative_expression", "additive_expression",
    1131   "shift_expression", "relational_expression", "equality_expression",
    1132   "AND_expression", "exclusive_OR_expression", "inclusive_OR_expression",
    1133   "logical_AND_expression", "logical_OR_expression",
    1134   "conditional_expression", "constant_expression", "assignment_expression",
    1135   "assignment_expression_opt", "assignment_operator", "tuple",
    1136   "tuple_expression_list", "comma_expression", "comma_expression_opt",
    1137   "statement", "labeled_statement", "compound_statement",
    1138   "block_item_list", "block_item", "statement_list",
    1139   "expression_statement", "selection_statement", "case_value",
    1140   "case_value_list", "case_label", "case_label_list", "case_clause",
    1141   "switch_clause_list_opt", "switch_clause_list", "choose_clause_list_opt",
    1142   "choose_clause_list", "fall_through_opt", "fall_through",
    1143   "iteration_statement", "for_control_expression", "jump_statement",
    1144   "exception_statement", "handler_list", "handler_clause",
    1145   "finally_clause", "exception_declaration", "asm_statement",
    1146   "asm_volatile_opt", "asm_operands_opt", "asm_operands_list",
    1147   "asm_operand", "asm_clobbers_list_opt", "label_list",
    1148   "declaration_list_opt", "declaration_list", "old_declaration_list_opt",
    1149   "old_declaration_list", "local_label_declaration_opt",
    1150   "local_label_declaration_list", "local_label_list", "declaration",
    1151   "new_declaration", "new_variable_declaration", "new_variable_specifier",
     1128  "string_literal", "string_literal_list", "primary_expression",
     1129  "postfix_expression", "argument_expression_list", "argument_expression",
     1130  "field_list", "field", "unary_expression", "ptrref_operator",
     1131  "unary_operator", "cast_expression", "multiplicative_expression",
     1132  "additive_expression", "shift_expression", "relational_expression",
     1133  "equality_expression", "AND_expression", "exclusive_OR_expression",
     1134  "inclusive_OR_expression", "logical_AND_expression",
     1135  "logical_OR_expression", "conditional_expression", "constant_expression",
     1136  "assignment_expression", "assignment_expression_opt",
     1137  "assignment_operator", "tuple", "tuple_expression_list",
     1138  "comma_expression", "comma_expression_opt", "statement",
     1139  "labeled_statement", "compound_statement", "block_item_list",
     1140  "block_item", "statement_list", "expression_statement",
     1141  "selection_statement", "case_value", "case_value_list", "case_label",
     1142  "case_label_list", "case_clause", "switch_clause_list_opt",
     1143  "switch_clause_list", "choose_clause_list_opt", "choose_clause_list",
     1144  "fall_through_opt", "fall_through", "iteration_statement",
     1145  "for_control_expression", "jump_statement", "exception_statement",
     1146  "handler_list", "handler_clause", "finally_clause",
     1147  "exception_declaration", "asm_statement", "asm_volatile_opt",
     1148  "asm_operands_opt", "asm_operands_list", "asm_operand",
     1149  "asm_clobbers_list_opt", "label_list", "declaration_list_opt",
     1150  "declaration_list", "old_declaration_list_opt", "old_declaration_list",
     1151  "local_label_declaration_opt", "local_label_declaration_list",
     1152  "local_label_list", "declaration", "new_declaration",
     1153  "new_variable_declaration", "new_variable_specifier",
    11521154  "new_function_declaration", "new_function_specifier",
    11531155  "new_function_return", "new_typedef_declaration", "typedef_declaration",
     
    11561158  "type_qualifier_list", "type_qualifier", "type_qualifier_name", "$@1",
    11571159  "declaration_qualifier_list", "storage_class_list", "storage_class",
    1158   "storage_class_name", "basic_type_name", "basic_declaration_specifier",
    1159   "basic_type_specifier", "direct_type_name", "indirect_type_name",
    1160   "sue_declaration_specifier", "sue_type_specifier",
    1161   "typedef_declaration_specifier", "typedef_type_specifier",
    1162   "elaborated_type_name", "aggregate_name", "$@2", "aggregate_key",
    1163   "field_declaration_list", "field_declaration",
     1160  "basic_type_name", "basic_declaration_specifier", "basic_type_specifier",
     1161  "direct_type_name", "indirect_type_name", "sue_declaration_specifier",
     1162  "sue_type_specifier", "typedef_declaration_specifier",
     1163  "typedef_type_specifier", "elaborated_type_name", "aggregate_name",
     1164  "$@2", "aggregate_key", "field_declaration_list", "field_declaration",
    11641165  "new_field_declaring_list", "field_declaring_list", "field_declarator",
    11651166  "bit_subrange_size_opt", "bit_subrange_size", "enum_key", "enum_name",
     
    12381239{
    12391240       0,   133,   134,   135,   136,   136,   136,   137,   137,   137,
    1240      138,   138,   139,   139,   140,   140,   141,   141,   142,   142,
    1241      142,   142,   143,   143,   143,   143,   143,   143,   143,   143,
    1242      143,   143,   143,   144,   144,   145,   145,   146,   146,   147,
    1243      147,   147,   147,   147,   148,   148,   148,   148,   148,   148,
    1244      148,   148,   148,   148,   148,   148,   148,   148,   148,   148,
    1245      149,   149,   150,   150,   150,   150,   151,   151,   151,   152,
    1246      152,   152,   152,   153,   153,   153,   154,   154,   154,   155,
    1247      155,   155,   155,   155,   156,   156,   156,   157,   157,   158,
    1248      158,   159,   159,   160,   160,   161,   161,   162,   162,   162,
    1249      162,   163,   164,   164,   164,   165,   165,   166,   166,   166,
    1250      166,   166,   166,   166,   166,   166,   166,   166,   167,   167,
    1251      167,   167,   168,   168,   169,   169,   170,   170,   171,   171,
    1252      171,   171,   171,   171,   171,   171,   171,   172,   173,   173,
    1253      174,   174,   175,   175,   175,   175,   176,   176,   177,   178,
    1254      178,   178,   178,   178,   178,   179,   179,   179,   180,   180,
    1255      181,   181,   182,   182,   183,   184,   184,   185,   185,   186,
    1256      186,   187,   187,   187,   187,   188,   188,   189,   189,   190,
    1257      190,   190,   191,   191,   192,   192,   192,   192,   192,   192,
    1258      192,   192,   192,   192,   193,   193,   193,   194,   194,   194,
    1259      194,   194,   195,   195,   195,   195,   196,   197,   197,   197,
    1260      197,   197,   198,   198,   198,   198,   198,   199,   199,   200,
    1261      200,   201,   201,   202,   202,   203,   203,   203,   204,   204,
     1241     138,   138,   139,   139,   140,   140,   141,   142,   142,   143,
     1242     143,   143,   143,   144,   144,   144,   144,   144,   144,   144,
     1243     144,   144,   144,   144,   145,   145,   146,   146,   147,   147,
     1244     148,   148,   148,   148,   148,   149,   149,   149,   149,   149,
     1245     149,   149,   149,   149,   149,   149,   149,   149,   149,   149,
     1246     149,   150,   150,   151,   151,   151,   151,   152,   152,   152,
     1247     153,   153,   153,   153,   154,   154,   154,   155,   155,   155,
     1248     156,   156,   156,   156,   156,   157,   157,   157,   158,   158,
     1249     159,   159,   160,   160,   161,   161,   162,   162,   163,   163,
     1250     163,   163,   164,   165,   165,   165,   166,   166,   167,   167,
     1251     167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
     1252     168,   168,   168,   168,   169,   169,   170,   170,   171,   171,
     1253     172,   172,   172,   172,   172,   172,   172,   172,   172,   173,
     1254     174,   174,   175,   175,   176,   176,   176,   176,   177,   177,
     1255     178,   179,   179,   179,   179,   179,   179,   180,   180,   180,
     1256     181,   181,   182,   182,   183,   183,   184,   185,   185,   186,
     1257     186,   187,   187,   188,   188,   188,   188,   189,   189,   190,
     1258     190,   191,   191,   191,   192,   192,   193,   193,   193,   193,
     1259     193,   193,   193,   193,   193,   193,   194,   194,   194,   195,
     1260     195,   195,   195,   195,   196,   196,   196,   196,   197,   198,
     1261     198,   198,   198,   198,   199,   199,   199,   199,   199,   200,
     1262     200,   201,   201,   202,   202,   203,   203,   204,   204,   204,
    12621263     205,   205,   206,   206,   207,   207,   208,   208,   209,   209,
    1263      210,   210,   211,   211,   212,   212,   213,   213,   213,   213,
    1264      213,   214,   214,   214,   215,   215,   215,   216,   216,   216,
    1265      216,   216,   217,   217,   217,   218,   218,   219,   219,   219,
    1266      220,   220,   220,   220,   220,   221,   221,   222,   222,   222,
    1267      222,   223,   223,   224,   224,   224,   224,   225,   225,   225,
    1268      225,   226,   226,   227,   227,   228,   228,   229,   229,   229,
    1269      229,   229,   230,   229,   231,   231,   231,   232,   232,   233,
    1270      234,   234,   234,   234,   234,   234,   234,   234,   235,   235,
     1264     210,   210,   211,   211,   212,   212,   213,   213,   214,   214,
     1265     214,   214,   214,   215,   215,   215,   216,   216,   216,   217,
     1266     217,   217,   217,   217,   218,   218,   218,   219,   219,   220,
     1267     220,   220,   221,   221,   221,   221,   221,   222,   222,   223,
     1268     223,   223,   223,   224,   224,   225,   225,   225,   225,   226,
     1269     226,   226,   226,   227,   227,   228,   228,   229,   229,   230,
     1270     230,   230,   230,   230,   231,   230,   232,   232,   232,   233,
     1271     233,   234,   234,   234,   234,   234,   234,   234,   234,   235,
    12711272     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
    1272      235,   236,   236,   236,   236,   236,   237,   237,   238,   238,
    1273      238,   238,   239,   239,   239,   239,   240,   240,   240,   240,
    1274      241,   241,   241,   242,   242,   242,   242,   243,   243,   243,
    1275      244,   244,   245,   245,   246,   245,   245,   245,   247,   247,
    1276      248,   248,   249,   249,   249,   249,   250,   250,   250,   250,
    1277      251,   251,   252,   252,   252,   252,   252,   253,   253,   254,
    1278      255,   256,   256,   257,   256,   258,   258,   259,   259,   260,
    1279      260,   261,   261,   261,   261,   261,   262,   262,   262,   262,
    1280      263,   263,   264,   264,   265,   265,   266,   266,   266,   266,
    1281      267,   267,   267,   267,   267,   268,   268,   268,   268,   268,
    1282      269,   269,   270,   270,   271,   271,   272,   272,   272,   273,
    1283      273,   273,   274,   274,   274,   275,   275,   275,   276,   276,
    1284      276,   276,   277,   277,   277,   278,   278,   279,   279,   279,
    1285      279,   279,   280,   280,   281,   281,   282,   282,   282,   282,
    1286      282,   283,   283,   283,   283,   284,   284,   284,   285,   286,
    1287      286,   288,   287,   287,   289,   289,   289,   290,   290,   291,
    1288      291,   291,   292,   292,   292,   292,   293,   293,   293,   294,
    1289      294,   295,   295,   296,   297,   296,   298,   298,   299,   299,
    1290      300,   300,   300,   301,   301,   302,   302,   303,   303,   304,
    1291      304,   305,   305,   305,   306,   305,   305,   307,   307,   307,
    1292      308,   308,   308,   308,   308,   308,   308,   308,   308,   309,
    1293      309,   309,   310,   311,   311,   312,   312,   313,   313,   314,
    1294      315,   315,   316,   316,   316,   317,   317,   317,   317,   318,
    1295      318,   318,   318,   319,   319,   320,   320,   320,   321,   321,
    1296      321,   321,   322,   322,   323,   323,   323,   324,   324,   324,
    1297      325,   325,   325,   326,   326,   326,   327,   327,   327,   328,
    1298      328,   328,   329,   329,   329,   330,   330,   330,   331,   331,
    1299      331,   331,   332,   332,   333,   333,   333,   334,   334,   334,
    1300      334,   335,   335,   335,   336,   336,   336,   336,   337,   337,
    1301      337,   338,   338,   338,   338,   339,   339,   339,   340,   340,
    1302      340,   340,   341,   341,   342,   342,   342,   343,   343,   344,
    1303      344,   345,   345,   345,   346,   346,   346,   346,   346,   347,
    1304      347,   347,   347,   348,   348,   348,   349,   349,   349,   350,
    1305      350,   350,   350,   351,   351,   351,   352,   352,   352,   352,
    1306      352,   353,   353,   353,   353,   354,   354,   354,   355,   355,
    1307      355,   356,   356,   356,   356,   356,   356,   357,   357,   357,
    1308      358,   358,   358,   358,   358,   359,   359,   359,   359,   360,
    1309      360,   361,   361,   361,   362,   362,   363,   363,   363,   363,
    1310      363,   363,   364,   364,   364,   364,   364,   364,   364,   364,
    1311      364,   364,   365,   365,   365,   365,   366,   366,   366,   367,
    1312      367,   368,   368,   368,   368,   368,   368,   369,   369,   369,
    1313      369,   369,   369,   370,   371,   371,   371,   372,   372,   373,
    1314      373
     1273     235,   235,   236,   236,   236,   236,   236,   237,   237,   238,
     1274     238,   238,   238,   239,   239,   239,   239,   240,   240,   240,
     1275     240,   241,   241,   241,   242,   242,   242,   242,   243,   243,
     1276     243,   244,   244,   245,   245,   246,   245,   245,   245,   247,
     1277     247,   248,   248,   249,   249,   249,   249,   250,   250,   250,
     1278     250,   251,   251,   252,   252,   252,   252,   252,   253,   253,
     1279     254,   255,   256,   256,   257,   256,   258,   258,   259,   259,
     1280     260,   260,   261,   261,   261,   261,   261,   262,   262,   262,
     1281     262,   263,   263,   264,   264,   265,   265,   266,   266,   266,
     1282     266,   267,   267,   267,   267,   267,   268,   268,   268,   268,
     1283     268,   269,   269,   270,   270,   271,   271,   272,   272,   272,
     1284     273,   273,   273,   274,   274,   274,   275,   275,   275,   276,
     1285     276,   276,   276,   277,   277,   277,   278,   278,   279,   279,
     1286     279,   279,   279,   280,   280,   281,   281,   282,   282,   282,
     1287     282,   282,   283,   283,   283,   283,   284,   284,   284,   285,
     1288     286,   286,   288,   287,   287,   289,   289,   289,   290,   290,
     1289     291,   291,   291,   292,   292,   292,   292,   293,   293,   293,
     1290     294,   294,   295,   295,   296,   297,   296,   298,   298,   299,
     1291     299,   300,   300,   300,   301,   301,   302,   302,   303,   303,
     1292     304,   304,   305,   305,   305,   306,   305,   305,   307,   307,
     1293     307,   308,   308,   308,   308,   308,   308,   308,   308,   308,
     1294     309,   309,   309,   310,   311,   311,   312,   312,   313,   313,
     1295     314,   315,   315,   316,   316,   316,   317,   317,   317,   317,
     1296     318,   318,   318,   318,   319,   319,   320,   320,   320,   321,
     1297     321,   321,   321,   322,   322,   323,   323,   323,   324,   324,
     1298     324,   325,   325,   325,   326,   326,   326,   327,   327,   327,
     1299     328,   328,   328,   329,   329,   329,   330,   330,   330,   331,
     1300     331,   331,   331,   332,   332,   333,   333,   333,   334,   334,
     1301     334,   334,   335,   335,   335,   336,   336,   336,   336,   337,
     1302     337,   337,   338,   338,   338,   338,   339,   339,   339,   340,
     1303     340,   340,   340,   341,   341,   342,   342,   342,   343,   343,
     1304     344,   344,   345,   345,   345,   346,   346,   346,   346,   346,
     1305     347,   347,   347,   347,   348,   348,   348,   349,   349,   349,
     1306     350,   350,   350,   350,   351,   351,   351,   352,   352,   352,
     1307     352,   352,   353,   353,   353,   353,   354,   354,   354,   355,
     1308     355,   355,   356,   356,   356,   356,   356,   356,   357,   357,
     1309     357,   358,   358,   358,   358,   358,   359,   359,   359,   359,
     1310     360,   360,   361,   361,   361,   362,   362,   363,   363,   363,
     1311     363,   363,   363,   364,   364,   364,   364,   364,   364,   364,
     1312     364,   364,   364,   365,   365,   365,   365,   366,   366,   366,
     1313     367,   367,   368,   368,   368,   368,   368,   368,   369,   369,
     1314     369,   369,   369,   369,   370,   371,   371,   371,   372,   372,
     1315     373,   373
    13151316};
    13161317
     
    13191320{
    13201321       0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
    1321        1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
    1322        3,     3,     1,     6,     4,     3,     7,     3,     7,     2,
    1323        2,     7,     4,     1,     3,     0,     1,     1,     3,     1,
    1324        3,     7,     3,     7,     1,     1,     1,     2,     2,     2,
    1325        2,     2,     2,     4,     2,     4,     6,     1,     4,     4,
    1326        1,     1,     1,     1,     1,     1,     1,     4,     4,     1,
    1327        3,     3,     3,     1,     3,     3,     1,     3,     3,     1,
    1328        3,     3,     3,     3,     1,     3,     3,     1,     3,     1,
    1329        3,     1,     3,     1,     3,     1,     3,     1,     5,     4,
    1330        5,     1,     1,     3,     2,     0,     1,     1,     1,     1,
    1331        1,     1,     1,     1,     1,     1,     1,     1,     2,     5,
    1332        6,     7,     1,     3,     1,     3,     0,     1,     1,     1,
    1333        1,     1,     1,     1,     1,     1,     6,     4,     2,     7,
    1334        1,     3,     1,     2,     1,     2,     1,     2,     2,     5,
    1335        7,     5,     9,     5,     9,     1,     3,     1,     1,     3,
    1336        3,     2,     1,     2,     2,     0,     1,     2,     3,     0,
    1337        1,     2,     3,     3,     4,     0,     1,     1,     2,     5,
    1338        7,     6,     6,     4,     3,     4,     2,     3,     2,     3,
    1339        3,     3,     3,     5,     3,     3,     4,     1,     5,     6,
    1340        5,     6,     9,    10,     9,    10,     2,     1,     2,     2,
    1341        2,     1,     6,     8,    10,    12,    14,     0,     1,     0,
    1342        1,     1,     3,     4,     7,     0,     1,     3,     1,     3,
    1343        1,     1,     1,     3,     1,     1,     1,     3,     0,     1,
    1344        3,     4,     1,     3,     1,     1,     3,     3,     3,     3,
    1345        3,     2,     3,     6,     3,     3,     4,     1,     2,     2,
    1346        3,     5,     8,     7,     7,     5,     9,     2,     2,     5,
    1347        3,     5,     4,     3,     4,     4,     7,     3,     3,     3,
    1348        3,     4,     6,     1,     1,     1,     1,     1,     1,     1,
    1349        1,     0,     1,     1,     2,     1,     1,     1,     1,     1,
    1350        1,     1,     0,     5,     1,     2,     3,     1,     2,     1,
     1322       1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
     1323       1,     3,     3,     1,     6,     4,     3,     7,     3,     7,
     1324       2,     2,     7,     4,     1,     3,     0,     1,     1,     3,
     1325       1,     3,     7,     3,     7,     1,     1,     1,     2,     2,
     1326       2,     2,     2,     2,     4,     2,     4,     6,     1,     4,
     1327       4,     1,     1,     1,     1,     1,     1,     1,     4,     4,
     1328       1,     3,     3,     3,     1,     3,     3,     1,     3,     3,
     1329       1,     3,     3,     3,     3,     1,     3,     3,     1,     3,
     1330       1,     3,     1,     3,     1,     3,     1,     3,     1,     5,
     1331       4,     5,     1,     1,     3,     2,     0,     1,     1,     1,
    13511332       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1333       2,     5,     6,     7,     1,     3,     1,     3,     0,     1,
     1334       1,     1,     1,     1,     1,     1,     1,     1,     6,     4,
     1335       2,     7,     1,     3,     1,     2,     1,     2,     1,     2,
     1336       2,     5,     7,     5,     9,     5,     9,     1,     3,     1,
     1337       1,     3,     3,     2,     1,     2,     2,     0,     1,     2,
     1338       3,     0,     1,     2,     3,     3,     4,     0,     1,     1,
     1339       2,     5,     7,     6,     6,     4,     3,     4,     2,     3,
     1340       2,     3,     3,     3,     3,     5,     3,     3,     4,     1,
     1341       5,     6,     5,     6,     9,    10,     9,    10,     2,     1,
     1342       2,     2,     2,     1,     6,     8,    10,    12,    14,     0,
     1343       1,     0,     1,     1,     3,     4,     7,     0,     1,     3,
     1344       1,     3,     1,     1,     1,     3,     1,     1,     1,     3,
     1345       0,     1,     3,     4,     1,     3,     1,     1,     3,     3,
     1346       3,     3,     3,     2,     3,     6,     3,     3,     4,     1,
     1347       2,     2,     3,     5,     8,     7,     7,     5,     9,     2,
     1348       2,     5,     3,     5,     4,     3,     4,     4,     7,     3,
     1349       3,     3,     3,     4,     6,     1,     1,     1,     1,     1,
     1350       1,     1,     1,     0,     1,     1,     2,     1,     1,     1,
     1351       1,     1,     1,     1,     0,     5,     1,     2,     3,     1,
     1352       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    13521353       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1353        1,     1,     2,     2,     3,     3,     1,     3,     1,     2,
    1354        2,     2,     4,     4,     4,     4,     1,     2,     2,     3,
    1355        1,     2,     2,     1,     2,     2,     3,     1,     2,     2,
    1356        1,     1,     4,     2,     0,     6,     7,     2,     2,     2,
    1357        0,     2,     2,     3,     2,     3,     1,     2,     3,     2,
    1358        2,     4,     0,     1,     2,     2,     1,     0,     1,     2,
    1359        2,     5,     2,     0,     7,     2,     4,     0,     2,     0,
    1360        1,     1,     1,     5,     5,     5,     1,     5,     5,     9,
    1361        1,     5,     0,     1,     1,     5,     1,     1,     5,     5,
    1362        1,     3,     3,     4,     1,     1,     1,     1,     2,     1,
    1363        3,     3,     1,     2,     1,     3,     1,     1,     1,     1,
    1364        1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
    1365        1,     2,     0,     2,     2,     1,     4,     0,     1,     2,
    1366        3,     4,     2,     2,     1,     2,     2,     5,     5,     7,
    1367        6,     1,     2,     2,     3,     1,     2,     2,     4,     2,
    1368        4,     0,     4,     2,     1,     1,     1,     0,     2,     5,
    1369        5,    13,     1,     1,     3,     3,     2,     3,     3,     2,
    1370        4,     1,     6,     9,     0,    11,     1,     3,     3,     3,
    1371        1,     1,     5,     2,     5,     0,     1,     1,     3,     0,
    1372        1,     1,     1,     1,     0,     6,     2,     1,     2,     4,
    1373        2,     3,     3,     3,     4,     5,     5,     5,     6,     1,
    1374        1,     1,     3,     0,     5,     0,     1,     1,     2,     6,
    1375        1,     3,     0,     1,     4,     1,     1,     1,     1,     2,
     1354       1,     1,     1,     2,     2,     3,     3,     1,     3,     1,
     1355       2,     2,     2,     4,     4,     4,     4,     1,     2,     2,
     1356       3,     1,     2,     2,     1,     2,     2,     3,     1,     2,
     1357       2,     1,     1,     4,     2,     0,     6,     7,     2,     2,
     1358       2,     0,     2,     2,     3,     2,     3,     1,     2,     3,
     1359       2,     2,     4,     0,     1,     2,     2,     1,     0,     1,
     1360       2,     2,     5,     2,     0,     7,     2,     4,     0,     2,
     1361       0,     1,     1,     1,     5,     5,     5,     1,     5,     5,
     1362       9,     1,     5,     0,     1,     1,     5,     1,     1,     5,
     1363       5,     1,     3,     3,     4,     1,     1,     1,     1,     2,
     1364       1,     3,     3,     1,     2,     1,     3,     1,     1,     1,
     1365       1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
     1366       1,     1,     2,     0,     2,     2,     1,     4,     0,     1,
     1367       2,     3,     4,     2,     2,     1,     2,     2,     5,     5,
     1368       7,     6,     1,     2,     2,     3,     1,     2,     2,     4,
     1369       2,     4,     0,     4,     2,     1,     1,     1,     0,     2,
     1370       5,     5,    13,     1,     1,     3,     3,     2,     3,     3,
     1371       2,     4,     1,     6,     9,     0,    11,     1,     3,     3,
     1372       3,     1,     1,     5,     2,     5,     0,     1,     1,     3,
     1373       0,     1,     1,     1,     1,     0,     6,     2,     1,     2,
     1374       4,     2,     3,     3,     3,     4,     5,     5,     5,     6,
     1375       1,     1,     1,     3,     0,     5,     0,     1,     1,     2,
     1376       6,     1,     3,     0,     1,     4,     1,     1,     1,     1,
     1377       2,     1,     2,     2,     1,     3,     2,     3,     3,     2,
     1378       4,     4,     3,     8,     3,     2,     1,     2,     6,     8,
     1379       3,     2,     3,     3,     4,     4,     3,     1,     1,     1,
     1380       4,     6,     3,     2,     3,     3,     4,     4,     3,     2,
    13761381       1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
    1377        4,     3,     8,     3,     2,     1,     2,     6,     8,     3,
    1378        2,     3,     3,     4,     4,     3,     1,     1,     1,     4,
    1379        6,     3,     2,     3,     3,     4,     4,     3,     2,     1,
    1380        2,     2,     1,     3,     2,     3,     3,     2,     4,     4,
    1381        3,     6,     8,     3,     2,     1,     2,     2,     2,     3,
    1382        3,     2,     4,     4,     3,     6,     8,     3,     2,     1,
    1383        2,     2,     1,     1,     2,     3,     3,     2,     4,     6,
    1384        8,     1,     2,     2,     1,     2,     2,     3,     3,     1,
    1385        4,     4,     3,     5,     8,     3,     2,     3,     1,     5,
    1386        5,     6,     6,     1,     2,     2,     1,     2,     2,     3,
    1387        3,     1,     4,     4,     3,     5,     8,     3,     1,     2,
    1388        1,     2,     6,     5,     6,     7,     7,     1,     2,     2,
    1389        1,     2,     2,     3,     3,     1,     4,     4,     3,     8,
    1390        3,     1,     1,     2,     1,     1,     2,     3,     2,     3,
    1391        2,     3,     3,     2,     4,     3,     2,     3,     2,     4,
    1392        3,     2,     6,     6,     6,     7,     1,     2,     1,     1,
    1393        1,     2,     3,     2,     3,     2,     3,     3,     4,     2,
    1394        3,     4,     2,     5,     5,     6,     6,     0,     1,     0,
    1395        2
     1382       4,     3,     6,     8,     3,     2,     1,     2,     2,     2,
     1383       3,     3,     2,     4,     4,     3,     6,     8,     3,     2,
     1384       1,     2,     2,     1,     1,     2,     3,     3,     2,     4,
     1385       6,     8,     1,     2,     2,     1,     2,     2,     3,     3,
     1386       1,     4,     4,     3,     5,     8,     3,     2,     3,     1,
     1387       5,     5,     6,     6,     1,     2,     2,     1,     2,     2,
     1388       3,     3,     1,     4,     4,     3,     5,     8,     3,     1,
     1389       2,     1,     2,     6,     5,     6,     7,     7,     1,     2,
     1390       2,     1,     2,     2,     3,     3,     1,     4,     4,     3,
     1391       8,     3,     1,     1,     2,     1,     1,     2,     3,     2,
     1392       3,     2,     3,     3,     2,     4,     3,     2,     3,     2,
     1393       4,     3,     2,     6,     6,     6,     7,     1,     2,     1,
     1394       1,     1,     2,     3,     2,     3,     2,     3,     3,     4,
     1395       2,     3,     4,     2,     5,     5,     6,     6,     0,     1,
     1396       0,     2
    13961397};
    13971398
     
    14011402static const yytype_uint16 yydefact[] =
    14021403{
    1403      291,   291,   312,   310,   313,   311,   314,   315,   297,   299,
    1404      298,     0,   300,   326,   318,   323,   321,   322,   320,   319,
    1405      324,   325,   330,   327,   328,   329,   545,   545,   545,     0,
    1406        0,     0,   291,   217,   301,   316,   317,     7,   357,     0,
    1407        8,    14,    15,     0,     2,    60,    61,   563,     9,   291,
    1408      523,   521,   244,     3,   452,     3,   257,     0,     3,     3,
    1409        3,   245,     3,     0,     0,     0,   292,   293,   295,   291,
    1410      304,   307,   309,   338,   283,   331,   336,   284,   346,   285,
    1411      353,   350,   360,     0,     0,   361,   286,   471,   475,     3,
    1412        3,     0,     2,   517,   522,   527,   296,     0,     0,   545,
    1413      575,   545,     2,   586,   587,   588,   291,     0,   729,   730,
    1414        0,    12,     0,    13,   291,   267,   268,     0,   292,   287,
    1415      288,   289,   290,   524,   302,   390,   546,   547,   368,   369,
    1416       12,   443,   444,    11,   439,   442,     0,   501,   496,   487,
    1417      443,   444,     0,     0,   526,   218,     0,   291,     0,     0,
    1418        0,     0,     0,     0,     0,     0,   291,   291,     2,     0,
    1419      731,   292,   580,   592,   735,   728,   726,   733,     0,     0,
    1420        0,   251,     2,     0,   530,   437,   438,   436,     0,     0,
    1421        0,     0,   545,     0,   632,   633,     0,     0,   543,   539,
    1422      545,   560,   545,   545,   541,     2,   540,   545,   599,   545,
    1423      545,   602,     0,     0,     0,   291,   291,   310,   358,     2,
    1424      291,   258,   294,   305,   339,   351,   476,     0,     2,     0,
    1425      452,   259,   292,   332,   347,   354,   472,     0,     2,     0,
    1426      308,   333,   340,   341,     0,   348,   352,   355,   359,   444,
    1427      291,   370,   363,   367,     0,   392,   473,   477,     0,     0,
    1428        0,     1,   291,     2,   528,   574,   576,   291,     2,   739,
    1429      292,   742,   543,   543,     0,   292,     0,     0,   270,   545,
    1430      541,     2,   291,     0,     0,   291,   548,     2,   499,     2,
    1431      552,     0,     0,     0,     0,     0,     0,    18,    57,     4,
    1432        5,     6,    16,     0,     0,   291,     2,    62,    63,    64,
    1433       65,    45,    19,    46,    22,    44,    66,   291,     0,    69,
    1434       73,    76,    79,    84,    87,    89,    91,    93,    95,    97,
    1435      102,   493,   749,   450,   492,     0,   448,   449,     0,   564,
    1436      579,   582,   585,   591,   594,   597,   357,     0,     2,   737,
    1437        0,   291,   740,     2,    60,   291,     3,   424,     0,   432,
    1438      292,   291,   304,   331,   284,   346,   353,     3,     3,   406,
    1439      410,   420,   425,   471,   291,   426,   704,   705,   291,   427,
    1440      429,   291,     2,   581,   593,   727,     2,     2,   246,     2,
    1441      457,     0,   455,   454,   453,   138,     2,     2,   248,     2,
    1442        2,   247,     2,   278,     2,   279,     0,   277,     0,     0,
    1443        0,     0,     0,     0,     0,     0,     0,   565,   604,     0,
    1444      452,     2,   559,   568,   658,   561,   562,   531,   291,     2,
    1445      598,   607,   600,   601,     0,   273,   291,   291,   337,   292,
    1446        0,   292,     0,   291,   732,   736,   734,   532,   291,   543,
    1447      252,   260,   306,     0,     2,   533,   291,   497,   334,   335,
    1448      280,   349,   356,     0,   291,     0,   747,   397,     0,   474,
    1449      498,   249,   250,   518,   291,   434,     0,   291,   234,     0,
    1450        2,   236,     0,   292,     0,   254,     2,   255,   275,     0,
    1451        0,     2,   291,   543,   291,   484,   486,   485,     0,     0,
    1452      749,     0,   291,     0,   291,   488,   291,   558,   556,   557,
    1453      555,     0,   550,   553,     0,     0,   291,    52,   291,    66,
    1454       47,   291,    54,   291,   291,    50,    51,     2,   124,     0,
    1455        0,   446,     0,   445,   726,   118,   291,    17,     0,    29,
    1456       30,    35,     2,     0,    35,   108,   109,   110,   111,   112,
    1457      113,   114,   115,   116,   117,   107,     0,    48,    49,     0,
     1404     293,   293,   313,   311,   314,   312,   315,   316,   299,   301,
     1405     300,     0,   302,   327,   319,   324,   322,   323,   321,   320,
     1406     325,   326,   331,   328,   329,   330,   546,   546,   546,     0,
     1407       0,     0,   293,   219,   303,   317,   318,     7,   358,     0,
     1408       8,    14,    15,     0,     2,    61,    62,   564,     9,   293,
     1409     524,   522,   246,     3,   453,     3,   259,     0,     3,     3,
     1410       3,   247,     3,     0,     0,     0,   294,   295,   297,   293,
     1411     306,   309,   339,   285,   332,   337,   286,   347,   287,   354,
     1412     351,   361,     0,     0,   362,   288,   472,   476,     3,     3,
     1413       0,     2,   518,   523,   528,   298,     0,     0,   546,   576,
     1414     546,     2,   587,   588,   589,   293,     0,   730,   731,     0,
     1415      12,     0,    13,   293,   269,   270,     0,   294,   289,   290,
     1416     291,   292,   525,   304,   391,   547,   548,   369,   370,    12,
     1417     444,   445,    11,   440,   443,     0,   502,   497,   488,   444,
     1418     445,     0,     0,   527,   220,     0,   293,     0,     0,     0,
     1419       0,     0,     0,     0,     0,   293,   293,     2,     0,   732,
     1420     294,   581,   593,   736,   729,   727,   734,     0,     0,     0,
     1421     253,     2,     0,   531,   438,   439,   437,     0,     0,     0,
     1422       0,   546,     0,   633,   634,     0,     0,   544,   540,   546,
     1423     561,   546,   546,   542,     2,   541,   546,   600,   546,   546,
     1424     603,     0,     0,     0,   293,   293,   311,   359,     2,   293,
     1425     260,   296,   307,   340,   352,   477,     0,     2,     0,   453,
     1426     261,   294,   333,   348,   355,   473,     0,     2,     0,   310,
     1427     334,   341,   342,     0,   349,   353,   356,   360,   445,   293,
     1428     371,   364,   368,     0,   393,   474,   478,     0,     0,     0,
     1429       1,   293,     2,   529,   575,   577,   293,     2,   740,   294,
     1430     743,   544,   544,     0,   294,     0,     0,   272,   546,   542,
     1431       2,   293,     0,     0,   293,   549,     2,   500,     2,   553,
     1432       0,     0,     0,     0,     0,     0,    19,    58,     4,     5,
     1433       6,    17,     0,     0,   293,     2,    63,    64,    65,    66,
     1434      46,    20,    47,    16,    23,    45,    67,   293,     0,    70,
     1435      74,    77,    80,    85,    88,    90,    92,    94,    96,    98,
     1436     103,   494,   750,   451,   493,     0,   449,   450,     0,   565,
     1437     580,   583,   586,   592,   595,   598,   358,     0,     2,   738,
     1438       0,   293,   741,     2,    61,   293,     3,   425,     0,   433,
     1439     294,   293,   306,   332,   286,   347,   354,     3,     3,   407,
     1440     411,   421,   426,   472,   293,   427,   705,   706,   293,   428,
     1441     430,   293,     2,   582,   594,   728,     2,     2,   248,     2,
     1442     458,     0,   456,   455,   454,   140,     2,     2,   250,     2,
     1443       2,   249,     2,   280,     2,   281,     0,   279,     0,     0,
     1444       0,     0,     0,     0,     0,     0,     0,   566,   605,     0,
     1445     453,     2,   560,   569,   659,   562,   563,   532,   293,     2,
     1446     599,   608,   601,   602,     0,   275,   293,   293,   338,   294,
     1447       0,   294,     0,   293,   733,   737,   735,   533,   293,   544,
     1448     254,   262,   308,     0,     2,   534,   293,   498,   335,   336,
     1449     282,   350,   357,     0,   293,     0,   748,   398,     0,   475,
     1450     499,   251,   252,   519,   293,   435,     0,   293,   236,     0,
     1451       2,   238,     0,   294,     0,   256,     2,   257,   277,     0,
     1452       0,     2,   293,   544,   293,   485,   487,   486,     0,     0,
     1453     750,     0,   293,     0,   293,   489,   293,   559,   557,   558,
     1454     556,     0,   551,   554,     0,     0,   293,    53,   293,    67,
     1455      48,   293,    55,   293,   293,    51,    52,     2,   126,     0,
     1456       0,   447,     0,   446,   727,   120,   293,    18,     0,    30,
     1457      31,    36,     2,     0,    36,   110,   111,   112,   113,   114,
     1458     115,   116,   117,   118,   119,   109,   108,     0,    49,    50,
    14581459       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1459        0,     0,     0,     0,     0,     0,     0,     0,     0,   104,
    1460        2,   644,   451,   641,   545,   545,   649,   478,   291,     2,
    1461      583,   584,     0,   595,   596,     0,     2,   738,   741,   118,
    1462      291,     0,     2,   706,   292,   710,   701,   702,   708,     0,
    1463        2,     2,   666,   545,   749,   615,   545,   545,   749,   545,
    1464      629,   545,   545,   680,   433,   663,   545,   545,   671,   678,
    1465      291,   428,   292,     0,     0,   291,   716,   292,   721,   749,
    1466      713,   291,   718,   749,   291,   291,   291,     0,   118,     0,
    1467       18,     2,     0,    19,     0,   458,   747,     0,     0,   464,
    1468      238,     0,   291,     0,     0,     0,   543,   567,   571,   573,
    1469      603,   606,   610,   613,   566,   605,     0,   281,   656,     0,
    1470      291,   274,     0,     0,     0,     0,   272,     2,     0,   256,
    1471      534,   291,     0,     0,   291,     2,   362,   382,   371,     0,
    1472        0,   376,   370,   748,     0,     0,   395,     0,   292,     3,
    1473      413,     3,   417,   416,   589,     0,   529,   291,    60,     3,
    1474      291,   432,   292,     3,   426,   427,     2,     0,     0,     0,
    1475      483,   303,   291,   479,   481,     3,     2,     2,     0,   500,
    1476        3,     0,   552,   126,     0,     0,   219,     0,     0,     0,
    1477        0,    36,     0,     0,   118,   291,    20,     0,    21,     0,
    1478      690,   695,   447,   687,   545,   545,     0,   105,     3,     2,
    1479       27,     0,    33,     0,     2,    25,     0,   103,    70,    71,
    1480       72,    74,    75,    77,    78,    82,    83,    80,    81,    85,
    1481       86,    88,    90,    92,    94,    96,     0,     0,   750,   291,
    1482        0,     0,     0,   645,   646,   642,   643,   495,   494,   291,
    1483        0,   291,   712,   291,   717,   292,   291,   660,   291,   291,
    1484      703,   659,     2,   291,     0,     0,     0,     0,     0,     0,
    1485        0,     0,   681,     0,   667,   618,   634,   668,     2,   614,
    1486      621,   430,   616,   617,   431,     2,   628,   637,   630,   631,
    1487      664,   665,   679,   707,   711,   709,   749,   265,     2,   743,
    1488        2,   421,   715,   720,   422,     0,   400,     3,     3,     3,
    1489        3,   452,     3,     0,     2,   466,   463,   748,     0,   459,
    1490        2,   462,   465,     0,   291,   239,   261,     3,   269,   271,
    1491        0,   452,     2,   569,   570,     2,   608,   609,     0,   657,
    1492      535,     3,   343,   342,   345,   344,   291,   536,     0,   537,
    1493      370,     0,     0,   291,   291,     0,     0,   690,   380,   383,
    1494      387,   545,   387,   386,   379,   372,   545,   374,   377,   291,
    1495      397,   391,   101,   398,   747,     0,     0,   435,   237,     0,
    1496        0,     3,     2,   666,   428,     0,   525,     0,   749,   487,
    1497        0,   291,   291,   291,     0,   549,   551,   127,     0,     0,
    1498      212,     0,     0,     0,   220,   221,    53,     0,    55,    58,
    1499       59,     0,     2,   125,     0,     0,     0,   691,   692,   688,
    1500      689,   457,    67,    68,   106,   122,     3,   105,     0,     0,
    1501       24,    35,     3,     0,    32,    99,     0,     3,   648,   652,
    1502      655,   647,     3,   590,     3,   714,   719,     2,    60,   291,
    1503        3,     3,   292,     0,     3,   620,   624,   627,   636,   670,
    1504      674,   677,   291,     3,   619,   635,   669,   291,   291,   423,
    1505      291,   291,   744,     0,     0,     0,     0,   253,     0,   101,
    1506        0,     3,     3,     0,   460,     0,   456,     0,     0,   242,
    1507      291,     0,     0,   126,     0,     0,     0,     0,     0,   126,
    1508        0,     0,   105,   105,    18,     2,     0,     0,     3,   128,
    1509      129,     2,   140,   130,   131,   132,   133,   134,   135,   142,
    1510      144,     0,     0,     0,   282,   291,   291,   545,     0,   538,
    1511      291,   373,   375,     0,   389,   691,   384,   388,   385,   378,
    1512      382,   365,   396,     0,   577,     2,   662,   661,     0,   667,
    1513        2,   480,   482,   502,     3,   510,   511,     0,     2,   506,
    1514        3,     3,     0,     0,   554,   219,     0,     0,     0,   219,
    1515        0,     0,   118,   694,   698,   700,   693,   747,   105,     0,
    1516        3,   659,    39,     3,    37,    34,     0,     3,    98,   100,
    1517        0,     2,   650,   651,     0,     0,   291,     0,     0,     0,
    1518        3,   636,     0,     2,   622,   623,     2,   638,     2,   672,
    1519      673,     0,     0,    60,     0,     3,     3,     3,     3,   408,
    1520      407,   411,     2,     2,   746,   745,   119,     0,     0,     0,
    1521        0,     3,   461,     3,     0,   240,   143,     3,   292,   291,
    1522        0,     0,     0,     0,     2,     0,   188,     0,   186,     0,
    1523        0,     0,     0,     0,     0,     0,   545,   118,     0,   148,
    1524      145,   291,     0,     0,   264,   276,     3,     3,   544,   611,
    1525      366,   381,   394,   291,   263,   291,     0,   513,   490,   291,
    1526        0,     0,   489,   504,     0,     0,     0,   213,     0,   222,
    1527       56,     2,   696,   697,     0,   123,   120,     0,     0,     0,
    1528        0,     0,    23,     0,   653,   291,   578,   262,   722,   723,
    1529      724,     0,   675,   291,   291,   291,     3,     3,     0,   683,
    1530        0,     0,     0,     0,   291,   291,     3,   542,   119,   468,
    1531        0,     0,   243,   292,     0,     0,     0,     0,   291,   189,
    1532      187,   184,     0,   190,     0,     0,     0,     0,   194,   197,
    1533      195,   191,     0,   192,   126,    35,   141,   139,   241,     0,
    1534        0,   415,   419,   418,     0,   507,     2,   508,     2,   509,
    1535      503,   291,   225,     0,   223,     0,   225,   291,    31,   121,
    1536        2,    42,     2,    40,    38,    28,    26,     3,   725,     3,
    1537        3,     3,     0,     0,   682,   684,   625,   639,   266,     2,
    1538      405,     3,   404,     0,   470,   467,   126,     0,     0,   126,
    1539        3,     0,   126,   185,     0,     2,     2,   206,   196,     0,
    1540        0,     0,   137,     0,   572,   612,     2,     0,     0,     2,
    1541      226,     0,     0,   214,     0,     3,     0,     0,     0,     0,
    1542        0,     0,   685,   686,   291,     0,   469,   149,     0,     0,
    1543        2,   162,   126,   151,     0,   179,     0,   126,     0,     2,
    1544      153,     0,     2,     0,     2,     2,     2,   193,    32,   291,
    1545      512,   514,   505,     0,     0,     0,     0,     0,     3,     3,
    1546      654,   626,   640,   676,   409,   126,   155,   158,     0,   157,
    1547      161,     3,   164,   163,     0,   126,   181,   126,     3,     0,
    1548      291,     0,   291,     0,     2,     0,     2,   136,     2,   227,
    1549      228,     0,   224,   215,   699,     0,     0,   150,     0,     0,
    1550      160,   230,   165,     2,   232,   180,     0,   183,   169,   198,
    1551        3,   207,   211,   200,     3,     0,   291,     0,   291,     0,
    1552        0,     0,    43,    41,   156,   159,   126,     0,   166,   291,
    1553      126,   126,     0,   170,     0,     0,   690,   208,   209,   210,
    1554        0,   199,     3,   201,     3,   291,   216,   229,   146,   167,
    1555      152,   126,   233,   182,   177,   175,   171,   154,   126,     0,
    1556      691,     0,     0,     0,     0,   147,   168,   178,   172,   176,
    1557      175,   173,     3,     3,     0,     0,   491,   174,   202,   204,
    1558        3,     3,   203,   205
     1460       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1461     105,     2,   645,   452,   642,   546,   546,   650,   479,   293,
     1462       2,   584,   585,     0,   596,   597,     0,     2,   739,   742,
     1463     120,   293,     0,     2,   707,   294,   711,   702,   703,   709,
     1464       0,     2,     2,   667,   546,   750,   616,   546,   546,   750,
     1465     546,   630,   546,   546,   681,   434,   664,   546,   546,   672,
     1466     679,   293,   429,   294,     0,     0,   293,   717,   294,   722,
     1467     750,   714,   293,   719,   750,   293,   293,   293,     0,   120,
     1468       0,    19,     2,     0,    20,     0,   459,   748,     0,     0,
     1469     465,   240,     0,   293,     0,     0,     0,   544,   568,   572,
     1470     574,   604,   607,   611,   614,   567,   606,     0,   283,   657,
     1471       0,   293,   276,     0,     0,     0,     0,   274,     2,     0,
     1472     258,   535,   293,     0,     0,   293,     2,   363,   383,   372,
     1473       0,     0,   377,   371,   749,     0,     0,   396,     0,   294,
     1474       3,   414,     3,   418,   417,   590,     0,   530,   293,    61,
     1475       3,   293,   433,   294,     3,   427,   428,     2,     0,     0,
     1476       0,   484,   305,   293,   480,   482,     3,     2,     2,     0,
     1477     501,     3,     0,   553,   128,     0,     0,   221,     0,     0,
     1478       0,     0,    37,     0,     0,   120,   293,    21,     0,    22,
     1479       0,   691,   696,   448,   688,   546,   546,     0,   106,     3,
     1480       2,    28,     0,    34,     0,     2,    26,     0,   104,    71,
     1481      72,    73,    75,    76,    78,    79,    83,    84,    81,    82,
     1482      86,    87,    89,    91,    93,    95,    97,     0,     0,   751,
     1483     293,     0,     0,     0,   646,   647,   643,   644,   496,   495,
     1484     293,     0,   293,   713,   293,   718,   294,   293,   661,   293,
     1485     293,   704,   660,     2,   293,     0,     0,     0,     0,     0,
     1486       0,     0,     0,   682,     0,   668,   619,   635,   669,     2,
     1487     615,   622,   431,   617,   618,   432,     2,   629,   638,   631,
     1488     632,   665,   666,   680,   708,   712,   710,   750,   267,     2,
     1489     744,     2,   422,   716,   721,   423,     0,   401,     3,     3,
     1490       3,     3,   453,     3,     0,     2,   467,   464,   749,     0,
     1491     460,     2,   463,   466,     0,   293,   241,   263,     3,   271,
     1492     273,     0,   453,     2,   570,   571,     2,   609,   610,     0,
     1493     658,   536,     3,   344,   343,   346,   345,   293,   537,     0,
     1494     538,   371,     0,     0,   293,   293,     0,     0,   691,   381,
     1495     384,   388,   546,   388,   387,   380,   373,   546,   375,   378,
     1496     293,   398,   392,   102,   399,   748,     0,     0,   436,   239,
     1497       0,     0,     3,     2,   667,   429,     0,   526,     0,   750,
     1498     488,     0,   293,   293,   293,     0,   550,   552,   129,     0,
     1499       0,   214,     0,     0,     0,   222,   223,    54,     0,    56,
     1500      59,    60,     0,     2,   127,     0,     0,     0,   692,   693,
     1501     689,   690,   458,    68,    69,   107,   124,     3,   106,     0,
     1502       0,    25,    36,     3,     0,    33,   100,     0,     3,   649,
     1503     653,   656,   648,     3,   591,     3,   715,   720,     2,    61,
     1504     293,     3,     3,   294,     0,     3,   621,   625,   628,   637,
     1505     671,   675,   678,   293,     3,   620,   636,   670,   293,   293,
     1506     424,   293,   293,   745,     0,     0,     0,     0,   255,     0,
     1507     102,     0,     3,     3,     0,   461,     0,   457,     0,     0,
     1508     244,   293,     0,     0,   128,     0,     0,     0,     0,     0,
     1509     128,     0,     0,   106,   106,    19,     2,     0,     0,     3,
     1510     130,   131,     2,   142,   132,   133,   134,   135,   136,   137,
     1511     144,   146,     0,     0,     0,   284,   293,   293,   546,     0,
     1512     539,   293,   374,   376,     0,   390,   692,   385,   389,   386,
     1513     379,   383,   366,   397,     0,   578,     2,   663,   662,     0,
     1514     668,     2,   481,   483,   503,     3,   511,   512,     0,     2,
     1515     507,     3,     3,     0,     0,   555,   221,     0,     0,     0,
     1516     221,     0,     0,   120,   695,   699,   701,   694,   748,   106,
     1517       0,     3,   660,    40,     3,    38,    35,     0,     3,    99,
     1518     101,     0,     2,   651,   652,     0,     0,   293,     0,     0,
     1519       0,     3,   637,     0,     2,   623,   624,     2,   639,     2,
     1520     673,   674,     0,     0,    61,     0,     3,     3,     3,     3,
     1521     409,   408,   412,     2,     2,   747,   746,   121,     0,     0,
     1522       0,     0,     3,   462,     3,     0,   242,   145,     3,   294,
     1523     293,     0,     0,     0,     0,     2,     0,   190,     0,   188,
     1524       0,     0,     0,     0,     0,     0,     0,   546,   120,     0,
     1525     150,   147,   293,     0,     0,   266,   278,     3,     3,   545,
     1526     612,   367,   382,   395,   293,   265,   293,     0,   514,   491,
     1527     293,     0,     0,   490,   505,     0,     0,     0,   215,     0,
     1528     224,    57,     2,   697,   698,     0,   125,   122,     0,     0,
     1529       0,     0,     0,    24,     0,   654,   293,   579,   264,   723,
     1530     724,   725,     0,   676,   293,   293,   293,     3,     3,     0,
     1531     684,     0,     0,     0,     0,   293,   293,     3,   543,   121,
     1532     469,     0,     0,   245,   294,     0,     0,     0,     0,   293,
     1533     191,   189,   186,     0,   192,     0,     0,     0,     0,   196,
     1534     199,   197,   193,     0,   194,   128,    36,   143,   141,   243,
     1535       0,     0,   416,   420,   419,     0,   508,     2,   509,     2,
     1536     510,   504,   293,   227,     0,   225,     0,   227,   293,    32,
     1537     123,     2,    43,     2,    41,    39,    29,    27,     3,   726,
     1538       3,     3,     3,     0,     0,   683,   685,   626,   640,   268,
     1539       2,   406,     3,   405,     0,   471,   468,   128,     0,     0,
     1540     128,     3,     0,   128,   187,     0,     2,     2,   208,   198,
     1541       0,     0,     0,   139,     0,   573,   613,     2,     0,     0,
     1542       2,   228,     0,     0,   216,     0,     3,     0,     0,     0,
     1543       0,     0,     0,   686,   687,   293,     0,   470,   151,     0,
     1544       0,     2,   164,   128,   153,     0,   181,     0,   128,     0,
     1545       2,   155,     0,     2,     0,     2,     2,     2,   195,    33,
     1546     293,   513,   515,   506,     0,     0,     0,     0,     0,     3,
     1547       3,   655,   627,   641,   677,   410,   128,   157,   160,     0,
     1548     159,   163,     3,   166,   165,     0,   128,   183,   128,     3,
     1549       0,   293,     0,   293,     0,     2,     0,     2,   138,     2,
     1550     229,   230,     0,   226,   217,   700,     0,     0,   152,     0,
     1551       0,   162,   232,   167,     2,   234,   182,     0,   185,   171,
     1552     200,     3,   209,   213,   202,     3,     0,   293,     0,   293,
     1553       0,     0,     0,    44,    42,   158,   161,   128,     0,   168,
     1554     293,   128,   128,     0,   172,     0,     0,   691,   210,   211,
     1555     212,     0,   201,     3,   203,     3,   293,   218,   231,   148,
     1556     169,   154,   128,   235,   184,   179,   177,   173,   156,   128,
     1557       0,   692,     0,     0,     0,     0,   149,   170,   180,   174,
     1558     178,   177,   175,     3,     3,     0,     0,   492,   176,   204,
     1559     206,     3,     3,   205,   207
    15591560};
    15601561
     
    15621563static const yytype_int16 yydefgoto[] =
    15631564{
    1564       -1,   813,   468,   301,    47,   134,   135,   302,   303,   304,
    1565      305,   761,   762,  1133,  1134,   306,   381,   308,   309,   310,
    1566      311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
    1567     1030,   518,   975,   546,   322,   976,   947,  1057,  1518,  1059,
    1568     1060,  1061,  1062,  1519,  1063,  1064,  1437,  1438,  1401,  1402,
    1569     1403,  1497,  1498,  1502,  1503,  1538,  1539,  1065,  1361,  1066,
    1570     1067,  1298,  1299,  1300,  1480,  1068,   146,   953,   954,   955,
    1571     1381,  1461,  1472,  1473,   469,   470,   874,   875,  1038,    51,
    1572       52,    53,    54,    55,   347,   159,    58,    59,    60,    61,
    1573       62,   349,    64,    65,   265,    67,    68,   275,   351,   352,
    1574       71,    72,    73,    74,   119,    76,   205,   354,   120,    79,
    1575      121,    81,    82,   455,    83,   454,   688,   689,   690,   908,
    1576     1086,   909,    84,    85,   458,   456,   696,   855,   856,   857,
    1577      858,   699,   700,   701,   359,   360,   361,   362,   466,   340,
    1578      136,   137,   522,   324,   171,   645,   646,   647,   648,   649,
    1579       86,   122,    88,   489,   490,   939,   491,   278,   495,   325,
    1580       89,   138,   139,    90,  1321,  1108,  1109,  1110,  1111,    91,
    1581       92,   717,    93,   274,    94,    95,   188,  1032,   679,   412,
    1582      126,    96,   501,   502,   503,   189,   269,   191,   192,   193,
    1583      270,    99,   100,   101,   102,   103,   104,   105,   196,   197,
    1584      198,   199,   200,   825,   605,   606,   607,   608,   201,   610,
    1585      611,   612,   572,   573,   574,   575,   751,   106,   614,   615,
    1586      616,   617,   618,   619,   968,   753,   754,   755,   595,   365,
    1587      366,   367,   368,   326,   165,   108,   109,   110,   370,   694,
    1588      569
     1565      -1,   814,   468,   300,    47,   133,   134,   301,   302,   303,
     1566     304,   305,   762,   763,  1134,  1135,   306,   381,   308,   309,
     1567     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
     1568     320,  1031,   518,   976,   547,   322,   977,   948,  1058,  1519,
     1569    1060,  1061,  1062,  1063,  1520,  1064,  1065,  1438,  1439,  1402,
     1570    1403,  1404,  1498,  1499,  1503,  1504,  1539,  1540,  1066,  1362,
     1571    1067,  1068,  1299,  1300,  1301,  1481,  1069,   145,   954,   955,
     1572     956,  1382,  1462,  1473,  1474,   469,   470,   875,   876,  1039,
     1573      51,    52,    53,    54,    55,   347,   158,    58,    59,    60,
     1574      61,    62,   349,    64,    65,   264,    67,    68,   274,   351,
     1575     352,    71,    72,    73,   118,    75,   204,   354,   119,    78,
     1576     120,    80,    81,   455,    82,   454,   689,   690,   691,   909,
     1577    1087,   910,    83,    84,   458,   456,   697,   856,   857,   858,
     1578     859,   700,   701,   702,   359,   360,   361,   362,   466,   340,
     1579     135,   136,   522,   324,   170,   646,   647,   648,   649,   650,
     1580      85,   121,    87,   489,   490,   940,   491,   277,   495,   325,
     1581      88,   137,   138,    89,  1322,  1109,  1110,  1111,  1112,    90,
     1582      91,   718,    92,   273,    93,    94,   187,  1033,   680,   412,
     1583     125,    95,   501,   502,   503,   188,   268,   190,   191,   192,
     1584     269,    98,    99,   100,   101,   102,   103,   104,   195,   196,
     1585     197,   198,   199,   826,   606,   607,   608,   609,   200,   611,
     1586     612,   613,   573,   574,   575,   576,   752,   105,   615,   616,
     1587     617,   618,   619,   620,   969,   754,   755,   756,   596,   365,
     1588     366,   367,   368,   326,   164,   107,   108,   109,   370,   695,
     1589     570
    15891590};
    15901591
    15911592/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15921593   STATE-NUM.  */
    1593 #define YYPACT_NINF -1310
     1594#define YYPACT_NINF -1323
    15941595static const yytype_int16 yypact[] =
    15951596{
    1596     7316,  8697, -1310,    16, -1310, -1310, -1310, -1310, -1310, -1310,
    1597    -1310,    22, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
    1598    -1310, -1310, -1310, -1310, -1310, -1310,   101,   101,   101,  1152,
    1599      941,    64,  7548,   141, -1310, -1310, -1310, -1310, -1310,    87,
    1600    -1310, -1310, -1310,   868,   134, -1310, -1310, -1310, -1310,  9158,
    1601    -1310, -1310, -1310, -1310,   149,   144, -1310,  1337, -1310, -1310,
    1602    -1310, -1310,   139,   935,   260,   102,  2892, -1310, -1310,  9196,
    1603      790, -1310, -1310, -1310,   904,   293,  5512,   547,   778,   904,
    1604     1166, -1310, -1310,   554,   624, -1310,   904,  1343, -1310,   187,
    1605    -1310,   308,   336, -1310, -1310, -1310, -1310,   251,   144,   101,
    1606    -1310,   101, -1310, -1310, -1310, -1310,  8923,  1337, -1310, -1310,
    1607     1337, -1310,   337, -1310,  9043, -1310, -1310,  1053,  9381, -1310,
    1608     1729,  1729,  1729, -1310, -1310, -1310,   101, -1310, -1310, -1310,
    1609      410,   413,   418, -1310, -1310, -1310,   433, -1310, -1310, -1310,
    1610    -1310, -1310,   468,   477, -1310, -1310,    37,  8666,  2607,   742,
    1611      369,   496,   509,   523,   530,   535,  8584,  6836,   536,   546,
    1612    -1310,  9234, -1310, -1310, -1310, -1310,   561, -1310,   245,  4633,
    1613     4633, -1310,   562,   361, -1310, -1310, -1310, -1310,   574,   383,
    1614      408,   429,   101,   577, -1310, -1310,   935,  3015,   664, -1310,
    1615       86, -1310,   101,   101,   144, -1310, -1310,    89, -1310,   101,
    1616      101, -1310,  3541,   634,   653,  1729,  6748, -1310, -1310,   623,
    1617     9158, -1310, -1310,   904, -1310, -1310, -1310,   144, -1310,  1337,
    1618      149, -1310,  7737, -1310,  1729,  1729,  1729,   144, -1310,  1152,
    1619    -1310,  5996, -1310, -1310,   642,  1729, -1310,  1729, -1310,    87,
    1620     8666, -1310,   672, -1310,   941,   697,  1729, -1310,  1152,   699,
    1621      702, -1310,  7548,   567, -1310, -1310, -1310,  9125, -1310, -1310,
    1622     4167, -1310,   664,    10,  5116,  9381,  1053,  3541, -1310,    94,
    1623    -1310, -1310,  9043,  1337,   715, 10741, -1310, -1310,    11, -1310,
    1624    10483,   740,   772, 10231,   759, 10288, 10307, -1310,   763, -1310,
    1625    -1310, -1310, -1310, 10364, 10364,  8440,   765, -1310, -1310, -1310,
    1626    -1310, -1310, -1310,   799, -1310,   616,  2256,  8779, 10288, -1310,
    1627      475,   860,   810,   276,   913,   766,   767,   793,   832,    41,
    1628    -1310, -1310,   807,   704, -1310,   331, -1310, -1310,  2607, -1310,
    1629    -1310,   242,   835, -1310,   421,   835,   841,    87, -1310, -1310,
    1630      846,  8923, -1310,   847,   857,  8892, -1310, -1310,  1352,  2069,
    1631     8155,  6748,   904, -1310,   904,  1729,  1729, -1310, -1310, -1310,
    1632    -1310, -1310, -1310,  1729,  8923,  1337, -1310, -1310,  9419,  1457,
    1633    -1310,  7886, -1310, -1310, -1310, -1310, -1310, -1310, -1310,   875,
    1634    10098, 10288, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
    1635    -1310, -1310, -1310, -1310, -1310, -1310,  1053, -1310,   928,   862,
    1636      891,   893,  1023,   916,   937,   951,  3015, -1310, -1310,   942,
    1637      149,   958, -1310, -1310,   970, -1310, -1310, -1310,  9125, -1310,
    1638    -1310, -1310, -1310, -1310,  3541, -1310,  8666,  8666, -1310,  1729,
    1639     1053,  6867,  1337,  8228, -1310, -1310, -1310, -1310,  9125,    10,
    1640    -1310, -1310,   904,   144, -1310, -1310,  9125, -1310,  6513, -1310,
    1641    -1310,  1729,  1729,   382,  5342,   969,   972,   960,  1031,  1729,
    1642    -1310, -1310, -1310, -1310,  9605, -1310,   450,  6629, -1310,   144,
    1643     1033, -1310,  1053, 10565, 10155, -1310, -1310, -1310, -1310,  1039,
    1644     3541, -1310,  8301,   664,  7432, -1310, -1310, -1310,   984,   626,
    1645      807,   941, 10741,   606,  9043, -1310, 10741, -1310, -1310, -1310,
    1646    -1310,   690, -1310,  1044,   772,   255,  8440, -1310,  9457, -1310,
    1647    -1310,  8440, -1310,  8553,  8440, -1310, -1310,  1042, -1310,   722,
    1648     1047,   818,  1048, -1310, -1310,  9310,  6479, -1310,   321, -1310,
    1649    -1310,  5116, -1310,   602,  5116, -1310, -1310, -1310, -1310, -1310,
    1650    -1310, -1310, -1310, -1310, -1310, -1310,  5116, -1310, -1310, 10288,
    1651    10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288,
    1652    10288, 10288, 10288, 10288, 10288, 10288, 10288,  2426,  5116, -1310,
    1653      704,   830, -1310, -1310,   101,   101, -1310, -1310,  8666, -1310,
    1654    -1310,   970,   567, -1310,   970, 10212, -1310, -1310, -1310,  4524,
    1655     6479,  1049,  1054, -1310,  9381, -1310, -1310,   561, -1310,  1056,
    1656      774,  1073,  2515,    95,   807, -1310,   101,   101,   807,    98,
    1657    -1310,   101,   101,   970, -1310, -1310,   101,   101, -1310,   835,
    1658     9490,  1337, 10710,   283,   326,  9490, -1310,  4167, -1310,   807,
    1659    -1310,  8923, -1310,    80,  7852,  7852,  7852,  1337, -1310,  4787,
    1660     1065,   875,   744,  1066,  1067, -1310,  1070,  4633,   333, -1310,
    1661     1134,  1337,  7852,   567,  1053,   567,   664,   494,   835, -1310,
    1662    -1310,   584,   835, -1310, -1310, -1310,   772, -1310,   835,   144,
    1663     9605, -1310,   737,  1083,   750,  1090, -1310,  1089,   144, -1310,
    1664    -1310,  9125,   144,  1088,  9457,  1092, -1310,  1677, -1310,   441,
    1665      448,   941, -1310,   941,  1091, 10288, -1310,   941, 10710, -1310,
    1666    -1310,  1098, -1310, -1310, -1310,   567, -1310, 10638,   857, -1310,
    1667     7852,   853,  8155, -1310, -1310,   561,  1095,  1097,   984,  3316,
    1668    -1310, -1310, 10741, -1310, -1310,  1099, -1310, -1310,  1105, -1310,
    1669     1099,  1111, 10483,  5116,    62,  1102,   167,  1113,  1121,  1129,
    1670     1130, -1310,  1131,  1132,  9348,  6598, -1310,  5116, -1310,   818,
    1671      978, -1310, -1310, -1310,   101,   101,  5540,  5116,  1135, -1310,
    1672    -1310,   757, -1310,  5116, -1310, -1310,   914, -1310, -1310, -1310,
    1673    -1310,   475,   475,   860,   860,   810,   810,   810,   810,   276,
    1674      276,   913,   766,   767,   793,   832, 10288,   282, -1310,  9605,
    1675     1136,  1137,  1140,   830, -1310, -1310, -1310, -1310, -1310,  9605,
    1676      779,  7852, -1310,  8923, -1310,  6955,  9005, -1310,  7886,  6836,
    1677    -1310, -1310,   774,  9605,  1063,  1142,  1143,  1145,  1146,  1147,
    1678     1148,  1154, -1310,  3759,  2515, -1310, -1310, -1310, -1310, -1310,
    1679    -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
    1680    -1310, -1310,   970, -1310, -1310, -1310,   807, -1310, -1310, -1310,
    1681    -1310, -1310, -1310, -1310, -1310,  1156, -1310,  1159,  1160, -1310,
    1682    -1310,   149,  1135,  4787, -1310, -1310, -1310, 10098,  1157, -1310,
    1683    -1310, -1310, -1310,   941,  6225,  1247, -1310, -1310, -1310, -1310,
    1684     1150,   149, -1310, -1310,   970, -1310, -1310,   970,   137,   970,
    1685    -1310, -1310, -1310, -1310, -1310, -1310,  9272, -1310,   144, -1310,
    1686    -1310,   451,   452,  9419,  7074,  2178, 10288,  3429, -1310, -1310,
    1687     1149,    39,  1149, -1310,   941, -1310,   101, -1310, -1310,  8073,
    1688      960, -1310, -1310, -1310,   972,  1168,  1169, -1310, -1310,  1170,
    1689     1172, -1310,   853,  1305, -1310,   359, -1310,  3316,   807, -1310,
    1690     1177, 10741,  9528,  8666,  1180, -1310, -1310,  1175,  1182,  1164,
    1691    -1310, 10288,    56,   233,  1179, -1310,  1183,   567,  1183, -1310,
    1692    -1310,  1183,  1184, -1310,  1189,  1190,  1192,   978, -1310, -1310,
    1693    -1310, 10098, -1310, -1310, -1310, -1310,  1188,  5116,  1193,   567,
    1694    -1310,  5116, -1310,   567, -1310, -1310,  5116, -1310,   595,   835,
    1695    -1310, -1310, -1310, -1310, -1310, -1310, -1310,   875,   857,  8892,
    1696    -1310, -1310,  7193,  1196, -1310,   622,   835, -1310,   644,   649,
    1697      835, -1310,  1729,  4053, -1310, -1310, -1310,  9605,  9605, -1310,
    1698     8228,  8228, -1310,  1194,  1195,  1198,  1199, -1310,  1200,   531,
    1699       27,  1135, -1310,   567, -1310,  4633, -1310,  5116,   453, -1310,
    1700     6359,  1213,  1217, 10041,  1222,  1223,    43,    49,   106,  5116,
    1701     1228,   144,  5116,  5116,  1208,  1237,   142,  1218, -1310, -1310,
    1702    -1310,  1236, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
    1703    -1310,   941,  1249,  5116, -1310,  9605,  9605,   101,  1252, -1310,
    1704     8810, -1310, -1310,   987, -1310,  3429, -1310, -1310, -1310, -1310,
    1705     1677, -1310, -1310,  1253, -1310, -1310, -1310, -1310,  1254,  1305,
    1706    -1310, -1310,  1239, -1310,  1099, -1310, -1310,  1053,  1258, -1310,
    1707    -1310, -1310,   806,  1262, -1310,   167,  1267, 10288,  1248,   167,
    1708      167,  1273,  9310,   693,   835, -1310, -1310,  1070,  5116,  1274,
    1709     1188,   208,   157,  1269, -1310, -1310,  1278,  1269, -1310, -1310,
    1710     1282, -1310, -1310,   970,  1286,  1288,  6717,  1287,  1289,  1291,
    1711    -1310, -1310,  1290, -1310, -1310,   970, -1310, -1310, -1310, -1310,
    1712      970,  5116,  5116,   857,  1292, -1310, -1310, -1310, -1310, -1310,
    1713    -1310, -1310, -1310, -1310, -1310, -1310, -1310, 10288, 10288,  1294,
    1714     1295,  1269, -1310, -1310,   941, -1310, -1310, -1310,  5073,  9528,
    1715     5116,  5116,  1370,  5116, -1310,  1298, -1310,  1299, -1310,  1302,
    1716     5116,  1306,  5116,  1123,  1307,    30,   101,  5821,  1435, -1310,
    1717    -1310,  6225,  1303,   456, -1310, -1310, -1310, -1310, -1310, -1310,
    1718    -1310, -1310, -1310,  9861, -1310,  8301,  1330, -1310, -1310,  9528,
    1719      463,   481, -1310,  1328,  1314,   772,  1341, -1310,   306, -1310,
    1720    -1310, -1310, -1310,   970,  1332, -1310, -1310,  1342,   753,   834,
    1721      567,  1345, -1310,  1350, -1310,  9605, -1310, -1310, -1310, -1310,
    1722    -1310,  1351, -1310,  9605,  9605,  9605, -1310, -1310,  1359, -1310,
    1723     1362,  1365,  1366,   557,  7925,  8040, -1310, -1310,   420, -1310,
    1724     1368,  1371, -1310,  8374,   815,   844,  1346,   866,  6094, -1310,
    1725    -1310, -1310,   485, -1310,   888,  1369,  1375,   144,  1417,  1051,
    1726    -1310, -1310,  5116, -1310, 10041,  5116, -1310, -1310, -1310,  1377,
    1727     1379, -1310, -1310, -1310,  1376, -1310, -1310, -1310, -1310, -1310,
    1728    -1310,  9528,   772,   195, -1310,  1353,   772,  9605, -1310, -1310,
    1729    -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
    1730    -1310, -1310,  1384,  1388, -1310, -1310, -1310, -1310, -1310, -1310,
    1731    -1310,  1394, -1310,  1397, -1310, -1310, 10041,   217,  5116, 10041,
    1732    -1310,  1400,  5116, -1310,   289,  1421,  1423, -1310, -1310,  1403,
    1733     1415,  1393, -1310,  1001, -1310, -1310, -1310,  1337,  1053,  1412,
    1734      799,   323, 10288, -1310,   953, -1310,   567,   567,  1418,  1425,
    1735     1426,  1428, -1310, -1310,  8228,  1427, -1310,  1497, 10288,  1420,
    1736    -1310, -1310,  9953, -1310,   955, -1310,  1419, 10041,  1424, -1310,
    1737    -1310,  1442, -1310,  1445, -1310,  1461,  1462, -1310,  1430,  9528,
    1738    -1310, -1310, -1310,   772,   567,  1453,  1436,  1459,  1269,  1269,
    1739    -1310, -1310, -1310, -1310, -1310, 10041,   204, -1310,   370, -1310,
    1740    -1310,  3684, -1310, -1310,  1439,  5116, -1310,  5116,  3684,   144,
    1741     9457,   144,  9457,  1463, -1310,  1465, -1310, -1310,  1464,   799,
    1742    -1310,   968, -1310, -1310, -1310,  1460,  1466, -1310, 10288, 10288,
    1743    -1310, -1310,  1075,   122, -1310, -1310,  1444, -1310,  1075, -1310,
    1744    -1310,  2191,   567, -1310, -1310,   144,  9457,   144,  9457,  1472,
    1745     1450,   567, -1310, -1310, -1310, -1310,  9953,  1469,  1075,  7664,
    1746     5116,  9865,  1470,  1075,  1479,  2191,  3509, -1310, -1310, -1310,
    1747     1482, -1310, -1310, -1310, -1310,  8666, -1310, -1310, -1310,  9732,
    1748    -1310,  9953, -1310, -1310,  1468,  9644, -1310, -1310,  9865,   144,
    1749     3509,   144,  1484,  1486,   976, -1310,  9732, -1310, -1310, -1310,
    1750     9644, -1310, -1310, -1310,   144,   144, -1310, -1310, -1310, -1310,
    1751    -1310, -1310, -1310, -1310
     1597    7329,  8828, -1323,    37, -1323, -1323, -1323, -1323, -1323, -1323,
     1598   -1323,   109, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
     1599   -1323, -1323, -1323, -1323, -1323, -1323,    85,    85,    85,   873,
     1600     733,   178,  7561,   370, -1323, -1323, -1323, -1323, -1323,   191,
     1601   -1323, -1323, -1323,   614,   225, -1323, -1323, -1323, -1323,  4615,
     1602   -1323, -1323, -1323, -1323,   229,   285, -1323,   934, -1323, -1323,
     1603   -1323, -1323,   435,  1196,   579,   110,  7677, -1323, -1323,  4858,
     1604    1038, -1323, -1323,   580,   596,  6761,  1021,   875,   580,  1103,
     1605   -1323, -1323,  1317,   308, -1323,   580,  1224, -1323,   495, -1323,
     1606     616,   623, -1323, -1323, -1323, -1323,   547,   285,    85, -1323,
     1607      85, -1323, -1323, -1323, -1323,  9174,   934, -1323, -1323,   934,
     1608   -1323,   551, -1323,  9403, -1323, -1323,  1899,  9436, -1323,   844,
     1609     844,   844, -1323, -1323, -1323,    85, -1323, -1323, -1323,   584,
     1610     608,   632, -1323, -1323, -1323,   646, -1323, -1323, -1323, -1323,
     1611   -1323,   664,   687, -1323, -1323,   -28,  8797,  2908,   117,   701,
     1612     717,   726,   771,   786,   799,  8715,  6849,   731,   757, -1323,
     1613    5600, -1323, -1323, -1323, -1323,   804, -1323,   223,  5225,  5225,
     1614   -1323,   802,   365, -1323, -1323, -1323, -1323,   816,   443,   480,
     1615     534,    85,   827, -1323, -1323,  1196,  4341,   868, -1323,    50,
     1616   -1323,    85,    85,   285, -1323, -1323,    61, -1323,    85,    85,
     1617   -1323,  4647,   857,   864,   844,  6523, -1323, -1323,   869,  4615,
     1618   -1323, -1323,   580, -1323, -1323, -1323,   285, -1323,   934,   229,
     1619   -1323,  7868, -1323,   844,   844,   844,   285, -1323,   873, -1323,
     1620    5676, -1323, -1323,   852,   844, -1323,   844, -1323,   191,  8797,
     1621   -1323,   884, -1323,   733,   890,   844, -1323,   873,   888,   892,
     1622   -1323,  7561,   631, -1323, -1323, -1323,  9256, -1323, -1323,  9621,
     1623   -1323,   868,   151, 10214,  9436,  1899,  4647, -1323,    88, -1323,
     1624   -1323,  9403,   934,   891,  7708, -1323, -1323,   347, -1323, 10561,
     1625     922,   956, 10347,   945, 10366, 10423, -1323,   954, -1323, -1323,
     1626   -1323, -1323, 10442, 10442,  8571,   952, -1323, -1323, -1323, -1323,
     1627   -1323, -1323, -1323,   988, -1323,   966,  1946,  8910, 10366, -1323,
     1628     756,   338,   485,   411,   635,   955,   947,   957,   984,   237,
     1629   -1323, -1323,   962,   647, -1323,   302, -1323, -1323,  2908, -1323,
     1630   -1323,   235,   985, -1323,   312,   985,   989,   191, -1323, -1323,
     1631     990,  9174, -1323,   999,  1006,  9023, -1323, -1323,  1335,  2030,
     1632    8286,  6523,   580, -1323,   580,   844,   844, -1323, -1323, -1323,
     1633   -1323, -1323, -1323,   844,  9174,   934, -1323, -1323,  9474,  1575,
     1634   -1323,  8017, -1323, -1323, -1323, -1323, -1323, -1323, -1323,  1008,
     1635    5958, 10366, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
     1636   -1323, -1323, -1323, -1323, -1323, -1323,  1899, -1323,   973,   991,
     1637     992,  1012,   978,  1017,  1018,  1020,  4341, -1323, -1323,  1029,
     1638     229,  1031, -1323, -1323,  1033, -1323, -1323, -1323,  9256, -1323,
     1639   -1323, -1323, -1323, -1323,  4647, -1323,  8797,  8797, -1323,   844,
     1640    1899,  6642,   934,  8359, -1323, -1323, -1323, -1323,  9256,   151,
     1641   -1323, -1323,   580,   285, -1323, -1323,  9256, -1323,  5770, -1323,
     1642   -1323,   844,   844,   337,  8204,  1032,  1036,  1023,  1042,   844,
     1643   -1323, -1323, -1323, -1323,  9660, -1323,   367,  6404, -1323,   285,
     1644    1044, -1323,  1899, 10643, 10271, -1323, -1323, -1323, -1323,  1015,
     1645    4647, -1323,  8432,   868,  7445, -1323, -1323, -1323,   843,   436,
     1646     962,   733,  7708,  1341,  9403, -1323,  7708, -1323, -1323, -1323,
     1647   -1323,   508, -1323,  1051,   956,   248,  8571, -1323,  9512, -1323,
     1648   -1323,  8571, -1323,  8684,  8571, -1323, -1323,  1049, -1323,   606,
     1649    1057,   682,  1059, -1323, -1323,  3527,  6492, -1323,   362, -1323,
     1650   -1323, 10214, -1323,   368, 10214, -1323, -1323, -1323, -1323, -1323,
     1651   -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10214, -1323, -1323,
     1652   10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366,
     1653   10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366,  3593, 10214,
     1654   -1323,   647,  1677, -1323, -1323,    85,    85, -1323, -1323,  8797,
     1655   -1323, -1323,  1033,   631, -1323,  1033, 10290, -1323, -1323, -1323,
     1656    5046,  6492,  1060,  1063, -1323,  9436, -1323, -1323,   804, -1323,
     1657    1067,   750,  1068,  2627,   125,   962, -1323,    85,    85,   962,
     1658     132, -1323,    85,    85,  1033, -1323, -1323,    85,    85, -1323,
     1659     985,  9545,   934, 10788,   532,   656,  9545, -1323,  9621, -1323,
     1660     962, -1323,  9174, -1323,   238,  7983,  7983,  7983,   934, -1323,
     1661    5791,  1047,  1008,   493,  1058,  1061, -1323,  1076,  5225,   528,
     1662   -1323,  1165,   934,  7983,   631,  1899,   631,   868,   430,   985,
     1663   -1323, -1323,   536,   985, -1323, -1323, -1323,   956, -1323,   985,
     1664     285,  9660, -1323,   619,  1086,   633,  1088, -1323,  1087,   285,
     1665   -1323, -1323,  9256,   285,  1089,  9512,  1092, -1323,  1065, -1323,
     1666     538,   552,   733, -1323,   733,  1085, 10366, -1323,   733, 10788,
     1667   -1323, -1323,  1096, -1323, -1323, -1323,   631, -1323, 10716,  1006,
     1668   -1323,  7983,   703,  8286, -1323, -1323,   804,  1095,  1098,   843,
     1669    5016, -1323, -1323,  7708, -1323, -1323,  1091, -1323, -1323,  1102,
     1670   -1323,  1091,  1104, 10561, 10214,  1090,  1093,    94,  1109,  1107,
     1671    1111,  1114, -1323,  1118,  1129,  9365,  6611, -1323, 10214, -1323,
     1672     682,  1717, -1323, -1323, -1323,    85,    85, 10157, 10214,  1125,
     1673   -1323, -1323,   653, -1323, 10214, -1323, -1323,   736, -1323, -1323,
     1674   -1323, -1323,   756,   756,   338,   338,   485,   485,   485,   485,
     1675     411,   411,   635,   955,   947,   957,   984, 10366,   260, -1323,
     1676    9660,  1132,  1136,  1137,  1677, -1323, -1323, -1323, -1323, -1323,
     1677    9660,   708,  7983, -1323,  9174, -1323,  6968,  9136, -1323,  8017,
     1678    6849, -1323, -1323,   750,  9660,  1022,  1140,  1141,  1142,  1143,
     1679    1146,  1149,  1154, -1323,  3715,  2627, -1323, -1323, -1323, -1323,
     1680   -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
     1681   -1323, -1323, -1323,  1033, -1323, -1323, -1323,   962, -1323, -1323,
     1682   -1323, -1323, -1323, -1323, -1323, -1323,  1155, -1323,  1157,  1159,
     1683   -1323, -1323,   229,  1125,  5791, -1323, -1323, -1323,  5958,  1158,
     1684   -1323, -1323, -1323, -1323,   733,  6174,  1248, -1323, -1323, -1323,
     1685   -1323,  1151,   229, -1323, -1323,  1033, -1323, -1323,  1033,    84,
     1686    1033, -1323, -1323, -1323, -1323, -1323, -1323,  9327, -1323,   285,
     1687   -1323, -1323,   559,   562,  9474,  7087,  2137, 10366,  3114, -1323,
     1688   -1323,  1156,    51,  1156, -1323,   733, -1323,    85, -1323, -1323,
     1689    8941,  1023, -1323, -1323, -1323,  1036,  1175,  1171, -1323, -1323,
     1690    1178,  1181, -1323,   703,  1901, -1323,   672, -1323,  5016,   962,
     1691   -1323,  1184,  7708,  9583,  8797,  1185, -1323, -1323,  1180,  1187,
     1692    1170, -1323, 10366,  1197,   326,  1194, -1323,  1202,   631,  1202,
     1693   -1323, -1323,  1202,  1199, -1323,  1208,  1210,  1211,  1717, -1323,
     1694   -1323, -1323,  5958, -1323, -1323, -1323, -1323,  1209, 10214,  1212,
     1695     631, -1323, 10214, -1323,   631, -1323, -1323, 10214, -1323,   558,
     1696     985, -1323, -1323, -1323, -1323, -1323, -1323, -1323,  1008,  1006,
     1697    9023, -1323, -1323,  7206,  1218, -1323,   674,   985, -1323,   813,
     1698     861,   985, -1323,   844,  4029, -1323, -1323, -1323,  9660,  9660,
     1699   -1323,  8359,  8359, -1323,  1215,  1216,  1225,  1230, -1323,  1232,
     1700     685,    82,  1125, -1323,   631, -1323,  5225, -1323, 10214,   564,
     1701   -1323,  6373,  1236,  1240, 10100,  1242,  1243,    70,    79,    96,
     1702   10214,  1244,   285, 10214, 10214,  1227,  1249,   522,  1222, -1323,
     1703   -1323, -1323,  1250, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
     1704   -1323, -1323,   733,  1254, 10214, -1323,  9660,  9660,    85,  1257,
     1705   -1323,  9054, -1323, -1323,   752, -1323,  3114, -1323, -1323, -1323,
     1706   -1323,  1065, -1323, -1323,  1255, -1323, -1323, -1323, -1323,  1258,
     1707    1901, -1323, -1323,  1245, -1323,  1091, -1323, -1323,  1899,  1260,
     1708   -1323, -1323, -1323,   713,  1264, -1323,    94,  1269, 10366,  1252,
     1709      94,    94,  1262,  3527,   879,   985, -1323, -1323,  1076, 10214,
     1710    1273,  1209,   358,   204,  1270, -1323, -1323,  1275,  1270, -1323,
     1711   -1323,  1278, -1323, -1323,  1033,  1280,  1284,  6730,  1285,  1290,
     1712    1291, -1323, -1323,  1286, -1323, -1323,  1033, -1323, -1323, -1323,
     1713   -1323,  1033, 10214, 10214,  1006,  1294, -1323, -1323, -1323, -1323,
     1714   -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10366, 10366,
     1715    1300,  1302,  1270, -1323, -1323,   733, -1323, -1323, -1323,  5213,
     1716    9583, 10214, 10214,  1374, 10214, -1323,  1295, -1323,  1296, -1323,
     1717    1297, 10214,  1301, 10214,  1105,  1304,    12,    85,  9289,  1625,
     1718   -1323, -1323,  6174,  1322,   573, -1323, -1323, -1323, -1323, -1323,
     1719   -1323, -1323, -1323, -1323,  9920, -1323,  8432,  1330, -1323, -1323,
     1720    9583,   576,   602, -1323,  1331,  1315,   956,  1337, -1323,   329,
     1721   -1323, -1323, -1323, -1323,  1033,  1339, -1323, -1323,  1320,   486,
     1722     509,   631,  1340, -1323,  1344, -1323,  9660, -1323, -1323, -1323,
     1723   -1323, -1323,  1347, -1323,  9660,  9660,  9660, -1323, -1323,  1348,
     1724   -1323,  1351,  1354,  1355,   716,  8056,  8171, -1323, -1323,   529,
     1725   -1323,  1357,  1362, -1323,  8505,   721,   730,  1358,   761,  3837,
     1726   -1323, -1323, -1323,   605, -1323,   766,  1366,  1367,   285,  1419,
     1727     834, -1323, -1323, 10214, -1323, 10100, 10214, -1323, -1323, -1323,
     1728    1370,  1375, -1323, -1323, -1323,  1372, -1323, -1323, -1323, -1323,
     1729   -1323, -1323,  9583,   956,  1379, -1323,  1352,   956,  9660, -1323,
     1730   -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
     1731   -1323, -1323, -1323,  1378,  1382, -1323, -1323, -1323, -1323, -1323,
     1732   -1323, -1323,  1387, -1323,  1386, -1323, -1323, 10100,   289, 10214,
     1733   10100, -1323,  1389, 10214, -1323,   318,  1405,  1406, -1323, -1323,
     1734    1399,  1400,  1380, -1323,   821, -1323, -1323, -1323,   934,  1899,
     1735    1396, -1323,   402, 10366, -1323,   785, -1323,   631,   631,  1407,
     1736    1408,  1413,  1415, -1323, -1323,  8359,  1414, -1323,  1490, 10366,
     1737    1385, -1323, -1323, 10012, -1323,   800, -1323,  1402, 10100,  1403,
     1738   -1323, -1323,  1426, -1323,  1427, -1323,  1445,  1446, -1323,  1411,
     1739    9583, -1323, -1323, -1323,   956,   631,  1434,  1417,  1435,  1270,
     1740    1270, -1323, -1323, -1323, -1323, -1323, 10100,   107, -1323,   433,
     1741   -1323, -1323,  7793, -1323, -1323,  1418, 10214, -1323, 10214,  7793,
     1742     285,  9512,   285,  9512,  1436, -1323,  1442, -1323, -1323,  1440,
     1743   -1323, -1323,   825, -1323, -1323, -1323,  1444,  1449, -1323, 10366,
     1744   10366, -1323, -1323,   909,   211, -1323, -1323,  1425, -1323,   909,
     1745   -1323, -1323,  2166,   631, -1323, -1323,   285,  9512,   285,  9512,
     1746    1453,  1431,   631, -1323, -1323, -1323, -1323, 10012,  1443,   909,
     1747    6091, 10214,  9924,  1452,   909,  1454,  2166,  3344, -1323, -1323,
     1748   -1323,  1458, -1323, -1323, -1323, -1323,  8797, -1323, -1323, -1323,
     1749    9791, -1323, 10012, -1323, -1323,  1438,  9703, -1323, -1323,  9924,
     1750     285,  3344,   285,  1464,  1466,   853, -1323,  9791, -1323, -1323,
     1751   -1323,  9703, -1323, -1323, -1323,   285,   285, -1323, -1323, -1323,
     1752   -1323, -1323, -1323, -1323, -1323
    17521753};
    17531754
     
    17551756static const yytype_int16 yypgoto[] =
    17561757{
    1757    -1310,  4585,  3220, -1310,  1680, -1310,    79,   965,  -162, -1310,
    1758      542,  -525,  -472,  -928,   -58,  5006,     0, -1310,   115,   571,
    1759      588,   220,   578,  1041,  1045,  1037,  1040,  1043, -1310,   682,
    1760     -568,  4467,  -949, -1310,  -743,   627,  -136,  -680,   399, -1310,
    1761      364, -1310,   400, -1052, -1310, -1310,   143, -1310, -1280, -1058,
    1762      249, -1310, -1310, -1310, -1310,    74, -1199, -1310, -1310, -1310,
    1763    -1310, -1310, -1310,   317, -1213,    36, -1310,  -398, -1310,   501,
    1764      296, -1310,   175, -1310,  -322, -1310, -1310, -1310,   558,  -827,
    1765    -1310, -1310,    14,  -963,    60,  1949, -1310, -1310, -1310,   -66,
    1766    -1310,    19,  1219,  -202,  1852,  4238, -1310, -1310,    54,    75,
    1767      689,  -242,  1416, -1310,  1975, -1310, -1310,   158,  2131, -1310,
    1768     2701,  1038, -1310, -1310, -1310,  -621, -1310,   944,   946,   541,
    1769      713,  -254, -1310, -1310, -1310,   938,   714,  -169, -1310,  -117,
    1770     -134,  1167, -1310, -1310,  -857,  -878,   837,   910,  1055,    25,
    1771    -1310,   900,   597,   -39,  -190,  -145,   668,   773, -1310,   993,
    1772    -1310,  2728,  1561,  -434,   920, -1310, -1310,   708, -1310,  -238,
    1773    -1310,   241, -1310, -1310, -1310, -1226,   414, -1310, -1310, -1310,
    1774     1165, -1310,    35, -1310, -1310,  -830,  -111, -1309,  -151,  3288,
    1775    -1310,  3069, -1310,   921, -1310,  -170,   169,  -182,  -181,  -166,
    1776        7,   -35,   -33,   -32,   813,     2,    29,    44,  -122,  -165,
    1777     -164,  -158,  -153,  -314,  -519,  -491,  -490,  -538,  -301,  -501,
    1778    -1310, -1310,  -512,  1078,  1084,  1085,  2540,  5063,  -571,  -588,
    1779     -558,  -543,  -557, -1310,  -503,  -733,  -723,  -722,  -570,  -311,
    1780     -274, -1310, -1310,   240,   176,   -77, -1310,  3991,   136,  -632,
    1781     -222
     1758   -1323,  4572,  3263, -1323,   197, -1323,   601,   950,  -251,   910,
     1759   -1323,   521,  -520,  -467,  -853,   -64,  3183,     0, -1323,  -150,
     1760     423,   446,   477,   450,  1016,  1025,  1019,  1026,  1028, -1323,
     1761    -622,  -408,  5012,  -745, -1323,  -735,   604,   472,  -656,   413,
     1762   -1323,  1279, -1323,   374, -1058, -1323, -1323,   126, -1323,  -823,
     1763   -1106,   222, -1323, -1323, -1323, -1323,    58, -1209, -1323, -1323,
     1764   -1323, -1323, -1323, -1323,   301, -1149,    35, -1323,  -933, -1323,
     1765     482,   274, -1323,   159, -1323,  -303, -1323, -1323, -1323,   535,
     1766    -827, -1323, -1323,    15, -1007,    71,    28, -1323, -1323, -1323,
     1767     -21, -1323,   357,  1253,  -198,  1636,  4113, -1323, -1323,    80,
     1768      54,   422,  1473, -1323,  1886, -1323, -1323,   192,  2183, -1323,
     1769    2495,   898, -1323, -1323, -1323,  -638, -1323,   924,   925,   524,
     1770     699,    83, -1323, -1323, -1323,   915,   695,  -339, -1323,  -106,
     1771      34,  1281, -1323, -1323,  -847,  -986,  1046,  1127,  1039,     5,
     1772   -1323,  1536,   481,  -165,  -210,  -124,   651,   758, -1323,   979,
     1773   -1323,  2789,  1548,  -413,   904, -1323, -1323,   689, -1323,  -235,
     1774   -1323,   158, -1323, -1323, -1323, -1257,   401, -1323, -1323, -1323,
     1775    1148, -1323,    21, -1323, -1323,  -858,  -105, -1322,  -129,  2267,
     1776   -1323,  2391, -1323,   906, -1323,  -184,    59,  -180,  -173,  -170,
     1777       7,   -40,   -35,   -33,    60,    -6,    25,    93,  -168,  -164,
     1778    -158,  -147,  -144,  -292,  -471,  -462,  -452,  -551,  -302,  -537,
     1779   -1323, -1323,  -511,  1069,  1072,  1074,  2608,  4844,  -578,  -514,
     1780    -502,  -495,  -500, -1323,  -508,  -724,  -717,  -708,  -590,  -305,
     1781    -195, -1323, -1323,   246,    19,    36, -1323,  3865,   104,  -623,
     1782    -397
    17821783};
    17831784
     
    17851786   positive, shift that token.  If negative, reduce the rule which
    17861787   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1787 #define YYTABLE_NINF -521
     1788#define YYTABLE_NINF -522
    17881789static const yytype_int16 yytable[] =
    17891790{
    1790       49,   114,   453,   428,   399,   400,   268,    98,   150,   766,
    1791      151,   152,   819,   973,   868,   115,   964,   407,   752,    63,
    1792      401,   402,   403,   358,   383,   384,   965,   966,   404,   261,
    1793      440,   827,    49,   405,   596,   604,    50,   410,   498,    98,
    1794      357,   740,   820,   148,  1070,   153,   830,  1069,   609,    49,
    1795      844,    63,   837,   948,    69,  1137,   162,   821,   725,   794,
    1796       56,   116,   730,   187,   826,   408,   210,   144,    50,    49,
    1797      194,   919,   154,   217,   409,    70,   227,  1187,    31,   342,
    1798      112,   815,   178,   220,   399,   400,    69,   155,   281,  1439,
    1799      628,   425,    56,  1302,   632,  1379,   669,   407,   123,   818,
    1800      401,   402,   403,  1204,  1205,  1181,   114,    70,   404,   816,
    1801      817,   475,   477,   405,   114,  1195,   678,   267,   272,   476,
    1802      505,  1197,  1443,  1177,   682,    31,   211,   923,    31,   221,
    1803      203,   124,   262,    31,    31,   263,   566,    31,   527,   493,
    1804       31,   213,   494,  1171,   527,   408,   282,   307,   148,  1178,
    1805      411,   150,   145,   151,   152,   162,   114,   345,    77,   519,
    1806     1439,   210,  1303,  1169,  1170,  1117,  -231,  -231,   373,    97,
    1807      567,   714,   964,   143,   720,  1196,   107,   107,  1199,  1245,
    1808      204,  1198,   965,   966,   913,   167,   187,   187,   153,   476,
    1809       77,   471,   949,  1458,   162,   253,   147,   411,   419,   815,
    1810      411,    97,   267,   481,   828,   411,   601,   835,   107,   601,
    1811       49,   568,   149,  1186,   287,   154,  1443,   162,    97,   527,
    1812      667,  1443,   210,  1200,   819,    41,    42,   816,   817,   443,
    1813      155,   150,   190,   151,   152,    97,   664,  -231,    97,  1484,
    1814      307,  1443,  1248,  1139,   439,   107,   156,  1077,  1443,   292,
    1815      167,   514,    49,  1016,   820,   182,   169,   830,   172,    98,
    1816      272,  1398,  1399,   202,   588,   272,   267,   267,   723,   821,
    1817     1249,    63,   114,  1512,   162,  1514,   472,   527,   951,  1080,
    1818      170,   991,   441,   327,   665,   656,  1015,   463,    50,   164,
    1819      672,   674,  1093,   815,   342,   307,  -287,   442,   483,   358,
    1820     1468,   609,  1526,   248,  1382,   500,    69,   307,   251,   596,
    1821      664,  1003,    56,   671,   596,   804,   357,    97,  -119,   676,
    1822     -119,   816,   817,   571,  -119,  1187,  1178,    70,   148,  1541,
    1823       97,  1400,   465,  1398,  1399,   373,  -516,   527,  1084,  -119,
    1824     -119,   114,   734,  1118,   819,   345,   436,  1171,   713,   602,
    1825      620,   579,   471,   411,   164,   398,   190,   853,   665,   898,
    1826      253,   377,   827,  1119,   625,   735,   556,   557,   625,  1201,
    1827      519,   114,   471,   178,   820,   519,   327,   378,   519,    97,
    1828      471,  1070,   831,  1116,  1069,   736,   834,   673,   675,   821,
    1829      629,    97,   358,   111,   633,   847,   267,  1171,   747,   848,
    1830      510,   558,   559,  1409,    41,    42,   187,   851,   436,   357,
    1831       77,   854,   986,   373,  1496,    77,  1325,  1169,  1170,   174,
    1832     1501,    97,   547,   548,   267,   213,   307,   307,   107,   844,
    1833      267,   787,   759,   625,   714,   479,  1326,   472,   849,  1423,
    1834     1521,   577,   850,   167,   870,  1528,   642,   578,   342,  1525,
    1835      435,  1157,  1159,  1424,   114,   729,   358,   472,  1428,  1429,
    1836      547,  1362,   254,   871,  1126,   472,   859,   860,   264,  1536,
    1837      447,   849,   267,   357,   742,  1100,  1540,   387,  1187,   330,
    1838      267,   598,   625,   877,    49,  1187,  1469,   373,   719,   460,
    1839      498,    98,   683,   388,   114,  1244,   547,    97,   578,   390,
    1840     1470,   711,   869,    63,   888,   881,   307,  1104,   114,  1135,
    1841     1014,   307,   435,   307,   307,   391,  1171,   910,   603,   -10,
    1842       50,   750,  -440,   609,   392,   114,   345,  -441,  1016,   996,
    1843      582,  -467,   411,  -467,   804,   523,  1187,  1434,    69,   798,
    1844      393,   931,   277,   879,    56,   394,   112,   164,   213,  1236,
    1845     -467,     2,   207,     4,     5,     6,     7,   914,   417,    70,
    1846      704,   395,   327,   327,   916,   912,   705,   914,   916,  1184,
    1847      571,   571,  1184,   915,   952,   190,    77,   279,   307,  1316,
    1848      917,   437,  1126,  1081,  1082,  1185,   280,   913,  1308,   625,
    1849      345,   445,   549,   714,   620,  1317,    77,  1318,   550,   551,
    1850      602,   747,   602,   882,    77,   411,   331,   760,  1360,  1276,
    1851     1277,   713,   765,  1319,  1474,   471,    35,  1363,    36,   332,
    1852      625,  1474,   804,  1014,  1019,   625,   111,   620,   140,   239,
    1853      327,   625,   994,   333,   625,   625,   625,    41,    42,   111,
    1854      334,   928,    77,  -102,   806,   335,   846,  -102,   371,   327,
    1855       41,    42,   625,    97,   267,   372,  1087,   603,  1087,   520,
    1856      107,   465,   861,   240,   768,   769,   770,   342,   241,  1348,
    1857      376,  1027,  1522,  1349,   111,   358,   876,   385,   111,    -3,
    1858      140,   141,  1408,   389,   114,    41,    42,   907,   596,    41,
    1859       42,  1074,   357,   885,   691,   411,   111,   442,   140,   141,
    1860      472,   528,   529,   530,  1141,  1112,   411,    41,    42,   397,
    1861      625,   933,   620,   764,   327,   726,  1101,  1234,   719,   719,
    1862      727,  1238,  1034,   399,   400,   531,   472,   532,   409,   533,
    1863      534,  1153,   878,   411,   880,   432,   721,   407,   244,   401,
    1864      402,   403,   722,   426,   114,   345,   523,   404,   523,   750,
    1865      750,   523,   405,  1156,   523,   601,   845,   500,  1158,   230,
    1866      601,   598,   427,   231,   711,  1476,   235,  1477,   237,   814,
    1867      713,   603,   964,   213,   450,   246,   775,   776,   777,   778,
    1868     1373,  -288,   965,   966,   927,   408,  -364,   213,     8,     9,
    1869       10,    11,    12,   571,     2,   207,     4,     5,     6,     7,
    1870      731,   625,  1241,   625,   411,   999,   732,   680,   625,   345,
    1871     1161,  -393,   602,   570,  1425,   411,   111,    31,   140,   141,
    1872     1523,    45,    46,   229,   602,   111,   342,    41,    42,   484,
    1873     1436,   461,   746,   706,   462,   714,    41,    42,   747,    77,
    1874        8,     9,    10,    11,    12,    34,    37,   892,   804,   504,
    1875       40,   253,   329,   747,   292,   864,   911,    41,    42,    35,
    1876      894,    36,   163,   806,  1330,    77,   747,   980,   508,    31,
    1877      520,   972,   513,   981,   307,   520,   195,   525,   520,   218,
    1878      213,   527,   228,   812,   562,   601,  1168,   814,   603,   993,
    1879     1182,    45,    46,    63,   563,   705,   625,    34,   554,   555,
    1880     1494,  1436,   230,   114,   345,   907,   111,   907,     2,   207,
    1881        4,     5,     6,     7,   714,   664,  1232,    41,    42,   114,
    1882      910,   564,   578,   711,   691,  1356,   565,   749,    69,   411,
    1883      142,   747,   933,   933,    56,    45,    46,   719,   568,   570,
    1884       37,   411,   114,   307,    40,  1332,   338,    45,    46,    70,
    1885     -437,    41,    42,   952,  1357,   586,  1105,   952,   952,   589,
    1886      747,   163,   932,   665,   601,    48,   113,   750,   912,    -3,
    1887       45,    46,   657,    35,   374,    36,  1359,    43,  1508,   552,
    1888      553,   814,   747,   242,   245,    45,    46,   638,     8,     9,
    1889       10,    11,    12,   603,   113,   113,  1227,    48,  1364,   345,
    1890      163,   658,  1106,   659,   747,   560,   561,    37,    48,   184,
    1891      185,    40,   713,   111,    48,   140,   141,    31,    41,    42,
    1892      625,   625,    48,   163,    41,    42,   661,  1126,    48,   984,
    1893      981,    48,    77,   890,    48,   444,  1121,   253,   329,   411,
    1894      307,   230,   897,   235,   186,    34,   899,   662,   113,   113,
    1895      107,   666,    45,    46,  1284,  1285,    37,  1287,  1132,   472,
    1896       40,   663,  1132,  1426,  1292,  1444,  1294,    41,    42,  1423,
    1897      668,   747,    48,  1323,  1083,    48,   911,   442,  1490,   327,
    1898      114,   258,    48,   692,  1491,   907,  1546,   749,   693,   411,
    1899      907,   695,   578,   718,  1189,    45,    46,   329,   411,   933,
    1900       56,    45,    46,   737,   215,   738,   603,   267,   739,  1369,
    1901     1370,   743,  1132,    48,   547,    70,  1418,   981,   107,  1398,
    1902     1399,    48,   625,   771,   772,    37,    48,   184,   185,    40,
    1903      342,   230,   419,   660,   411,   845,    41,    42,   779,   780,
    1904     1351,   374,   773,   774,   457,   697,   345,  -235,   481,   329,
    1905      411,    48,    48,   733,   744,   510,   215,   748,   756,   691,
    1906     1380,   807,   266,   873,  1380,   711,   808,    48,   811,  -289,
    1907       45,    46,   828,   329,   601,    48,     8,     9,    10,    11,
    1908       12,  1295,  1296,  1297,    48,   822,   867,    48,   272,   114,
    1909     1331,  1333,  1334,   893,   113,   -12,   -13,   866,    77,   215,
    1910      895,   896,   900,   220,   903,    31,   921,   114,  -414,   113,
    1911     -520,   307,   936,   113,   943,   722,   107,    48,   113,   374,
    1912      117,   945,  1404,   956,   130,   625,   131,   132,   133,   114,
    1913       63,    48,    48,    34,   950,    41,    42,   957,    48,   958,
    1914      959,   960,   961,  1105,   711,    48,   988,   989,   211,   221,
    1915      990,   977,  1005,  1006,   911,  1007,  1008,  1009,  1010,   911,
    1916      215,  1459,  1079,   213,  1011,    69,  1022,  1421,   160,  -402,
    1917     -401,    56,  1036,  1058,   625,   625,  1071,  1534,  1094,   906,
    1918      644,  1073,  1096,   272,  1097,  1095,    70,  1103,   307,  1106,
    1919     1113,   747,  1114,    48,  1115,  1120,  1122,   971,   215,  1123,
    1920     1124,   702,  1125,   215,  1128,  1131,  1151,   472,  1174,  1175,
    1921     1172,  1173,  1176,    48,    48,     8,     9,    10,    11,    12,
    1922      691,   114,  1190,   399,   400,   259,  1191,  1132,  1132,  1132,
    1923       48,  1193,  1194,   160,    48,  1105,   407,  1202,  1206,   401,
    1924      402,   403,  1189,   441,    31,   643,  -290,   404,    56,  1207,
    1925     1209,    -3,   405,     8,     9,    10,    11,    12,   442,  1214,
    1926      664,    48,  1219,    70,  1224,   107,   323,   493,  1222,    77,
    1927     1507,    48,    34,  1228,   703,   339,  1233,   922,   267,  1235,
    1928     1237,  1106,    31,  1240,   408,  1250,  1246,   107,   215,    48,
    1929     1252,   724,  1254,   728,   625,    48,  1256,    48,  1257,  1258,
    1930     1262,  1259,  1420,  1260,  1269,   107,  1278,  1279,   665,    37,
    1931       34,   175,   176,    40,   932,  1203,   601,  1286,  1307,   114,
    1932       41,    42,    45,    46,    37,   430,   175,   176,    40,   434,
    1933     1289,  1290,   113,  1105,  1291,    41,    42,    48,  1293,  1301,
    1934     1314,   114,  1192,  1320,  1322,    48,    77,  1328,   114,    48,
    1935      114,  1324,   114,    48,  1329,  1358,   113,  1335,   113,   323,
    1936      472,   372,  1336,  1338,   107,  1132,  1132,   472,   985,   215,
    1937      150,  1344,   151,   152,  1345,  1346,  1347,  1297,  1365,  1106,
    1938     1354,  1506,   214,  1355,  1366,  1383,   114,  1374,   114,  1375,
    1939     1376,   434,   233,   113,   488,  1189,  1392,   107,   113,   114,
    1940     1393,    56,  1189,  1460,  -403,  1506,  1506,   702,    56,  1396,
    1941     1407,   215,  1415,   162,   521,   307,    70,  1411,   472,  1413,
    1942      528,   529,   530,    70,  1416,  1417,   160,  1422,  1430,    37,
    1943     1506,   175,   176,    40,   214,  1431,  1432,   373,  1433,  1435,
    1944       41,    42,   865,  1349,   531,  1029,   532,   113,   533,  1305,
    1945     1440,  1445,  1449,  1189,    48,  1451,  1447,  1453,  1455,    56,
    1946      587,  1509,  1457,  1462,   593,    48,   376,    48,  1463,  1464,
    1947     1517,  1475,  1492,  1485,    70,  1487,  1500,   214,  1493,  1489,
    1948      703,  1515,  1516,   626,  1520,  1527,    48,   630,   922,  1529,
    1949      339,   918,  1531,   920,  1544,   107,  1545,   457,  1208,    77,
    1950     1537,   783,    48,   781,  1130,   784,    77,   113,   782,   785,
    1951     1058,  1306,  1495,  1410,  1547,  1368,    48,   107,   113,    48,
    1952      113,  1239,  1384,  1478,   107,  1088,   702,   216,   901,  1213,
    1953      902,  1221,   215,   922,  1092,   924,   702,   800,   214,  1127,
    1954     1035,   872,   938,  1315,   243,   323,   323,  1102,   790,   716,
    1955      702,   327,    48,   946,   791,   792,   113,    77,   113,     0,
    1956      215,  1367,   113,     0,     0,   215,     0,     0,  1138,     0,
    1957      113,     0,     0,   687,   479,   107,   214,     0,     0,   216,
    1958        0,   214,     0,    48,    48,     0,   117,     0,     0,     0,
    1959     1482,     0,  1482,     0,     0,     0,   499,    48,     0,   703,
    1960        0,     0,     0,  1372,     0,     0,     0,     0,     0,   703,
    1961        0,   488,     0,   323,     0,   488,     0,     0,     0,  1029,
    1962        0,     0,   216,   703,     0,   521,  1482,   521,  1482,     0,
    1963      521,     0,   323,   521,     0,     0,   215,   177,     0,     8,
    1964        9,    10,    11,    12,   339,     0,     0,     0,     0,    37,
    1965      215,   184,   185,    40,     0,  1397,     0,     0,  1405,     0,
    1966       41,    42,     0,     0,     0,     0,   214,   644,    31,     0,
    1967        0,     0,     0,  1039,     0,     0,     0,    48,     0,     0,
    1968        0,     0,     0,   216,     0,     0,   905,   177,   411,    48,
    1969      177,     0,     0,     0,    45,    46,    34,   323,     0,   922,
    1970        0,  1442,     0,     0,     0,     0,  1446,   906,   802,     0,
    1971        0,     0,     0,  1479,  1089,  1483,     0,     0,     0,     0,
    1972        0,   216,     0,     0,     0,     0,   216,     0,     0,     0,
    1973        0,     0,   643,     0,  1467,     0,   177,   891,   113,   843,
    1974        0,     0,     0,   215,   593,     0,     0,   214,     0,  1511,
    1975      852,  1513,    66,   118,   702,   702,     0,     0,     0,   922,
    1976      922,    48,     0,     0,   214,     0,     0,     0,     0,     0,
    1977       48,   644,    48,     0,     0,     0,     0,     0,     0,   113,
    1978        0,     0,     0,     0,    66,     0,     0,     0,     0,   214,
    1979        0,     0,     0,  1542,     0,  1543,     0,     0,     0,   177,
    1980        0,   161,    48,   687,     0,     0,     0,     0,  1550,  1551,
    1981        0,   216,   702,   702,     0,     0,     0,     0,  1535,     0,
    1982        0,   222,   113,     0,  1535,     0,     0,   703,   703,     0,
    1983        0,     0,     0,     0,     0,  1535,   643,     0,     0,  1535,
    1984        0,   488,     0,     0,   113,     0,     0,     0,   113,    57,
    1985       57,     0,     0,   177,     0,     0,   987,     0,   260,     0,
    1986      177,     0,     0,   339,     0,     0,   992,     0,     0,     0,
    1987        0,  1039,     0,     0,     0,    75,     0,     0,     0,     0,
    1988     1004,    57,     0,     0,     0,   703,   703,     0,     0,     0,
    1989        0,     0,   216,     0,     0,     0,     0,     0,   113,     0,
    1990      328,     0,     0,     0,     0,     0,     0,    75,   260,   350,
    1991      214,     0,     0,     0,     0,    57,     0,     0,    57,     0,
    1992        0,     0,   995,     0,     0,     0,     0,   802,   177,     0,
    1993        0,     0,     0,     0,   216,     0,   113,     0,   214,   406,
    1994      215,     0,     0,   214,   223,   177,     0,     0,     0,   177,
    1995       48,     0,     0,     0,   424,    48,     0,   429,   431,     0,
    1996     1312,     0,   161,     0,   922,     0,     0,     0,     0,     0,
    1997        0,     0,    48,     0,     0,     0,     0,     0,     0,     0,
    1998      922,     0,     0,   448,  1282,     0,     0,   451,     0,   452,
    1999        0,     0,   702,     0,     0,     0,     0,     0,   459,     0,
    2000      702,   702,   702,     0,    66,     0,   348,     0,     0,   473,
    2001        0,     0,   177,     0,   214,   802,     0,     0,     0,   480,
    2002        0,     0,   339,     0,     0,     0,     0,   431,   214,     0,
    2003        0,    78,   353,  1313,     0,     0,     0,     0,   687,     0,
    2004        0,    37,     0,   184,   185,    40,     0,     0,   499,   113,
    2005      922,   922,    41,    42,     0,   216,     0,     0,     0,     0,
    2006      488,  1107,   323,    78,   702,   703,     0,     0,     0,     0,
    2007        0,    57,    48,   703,   703,   703,     0,     0,   600,     0,
    2008      601,     0,     0,   216,  1166,  1167,    45,    46,   216,     0,
    2009        0,     0,     0,   260,     0,     0,     0,   594,     0,     0,
    2010      224,    57,     0,   622,     0,     0,   449,     0,     0,     0,
    2011        0,     0,     0,   113,   113,   113,   627,     0,   843,     0,
    2012      627,   214,     0,   260,     0,     0,   215,    75,     0,     0,
    2013        0,     0,    75,     0,     0,     0,     0,   703,     0,     0,
    2014        0,     0,  1216,  1217,     0,     0,     0,     0,     0,     0,
    2015       37,     0,   184,   185,    40,     0,     0,     0,     0,   216,
    2016        0,    41,    42,    37,     0,   184,   185,    40,     0,   177,
    2017      473,     0,     0,   216,    41,    42,     0,     0,     0,     0,
    2018        0,     0,     0,     0,     0,   350,     0,   905,   355,   411,
    2019      473,     0,     0,     0,     0,    45,    46,     0,   473,   687,
    2020     1505,   177,   411,     0,     0,     0,     0,     0,    45,    46,
    2021        0,     0,     0,     0,     0,     0,   698,   177,     0,   431,
    2022        0,   215,     0,     0,     0,     0,   223,     0,     0,     0,
    2023        0,   177,     0,     0,   712,     0,    66,     0,     0,     0,
    2024        0,   802,    48,    48,   431,     0,     0,     0,   431,     0,
    2025        0,   113,   113,   535,   536,   537,   538,   539,   540,   541,
    2026      542,   543,   544,     0,     0,     0,   216,     0,     0,     0,
    2027        0,     0,     0,     0,     0,     0,     0,   260,   350,     0,
    2028        0,     0,   348,    78,     0,     0,     0,   545,    78,   113,
    2029        0,     0,     0,    75,     0,     0,     0,     0,     0,     0,
    2030        0,     0,     0,     0,     0,     0,     0,     0,   353,     0,
    2031        0,     0,   177,    75,     0,     0,     0,     0,   214,     0,
    2032        0,    75,  1337,   793,     0,     0,   339,     0,     0,     0,
    2033     1339,  1340,  1341,    57,     0,     0,     0,     0,     0,   353,
    2034        0,   627,   805,     0,     0,     0,    48,   113,  1107,     0,
    2035        0,     0,     0,     0,   824,     0,   113,   353,     0,    75,
    2036        0,     0,     0,   283,   284,     0,   285,     0,     0,     0,
    2037       48,    48,   594,     0,     0,   348,     0,   594,     0,     0,
    2038        0,     0,   224,   627,     0,     0,   350,   350,   350,     0,
    2039        0,     0,   286,     0,  1385,    48,     0,     0,   287,     0,
    2040        0,   353,   288,     0,   350,   289,   290,   291,   292,    41,
    2041       42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
    2042        0,     0,   698,     0,     0,     8,     9,    10,    11,    12,
    2043        0,     0,     0,   473,     0,   295,     0,   379,     0,   348,
    2044     1107,     0,     0,    45,    46,   297,   298,   299,   300,    78,
    2045        0,     0,     0,     0,    31,     0,   786,     0,     0,   473,
    2046        0,     0,   350,   216,   355,   353,     0,     0,     0,    78,
    2047        0,   937,     0,     0,   431,     0,   177,    78,     0,     0,
    2048        0,     0,    34,   348,   348,   348,     0,    37,     0,   184,
    2049      185,    40,     0,     0,     0,   355,   260,   712,    41,    42,
    2050        0,   348,   967,     0,   214,     0,     0,     0,     0,   353,
    2051      353,   353,     0,   355,     0,    78,     0,     8,     9,    10,
    2052       11,    12,     0,     0,   600,     0,   601,   353,     0,     0,
    2053        0,     0,    45,    46,     0,     0,     0,     0,  1107,     0,
    2054        0,   698,     0,     0,     0,   353,    31,     0,     0,     0,
    2055        0,   698,     0,   350,     0,   627,    75,   355,  1002,   348,
    2056      627,   805,     0,     0,     0,   698,     0,     0,     0,  1481,
    2057        0,  1481,     0,     0,    34,  1013,     0,     0,     0,    37,
    2058        0,     0,    75,    40,     0,   353,     0,     0,     0,     0,
    2059       41,    42,     0,     0,     0,     0,     0,     0,     0,   214,
    2060        0,    80,     0,     0,     0,  1481,     0,  1481,     0,     0,
    2061        0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
    2062      353,   355,     0,     0,    45,    46,    66,     0,    87,     0,
    2063      413,     0,     0,    80,   323,     0,     0,   421,     0,     0,
    2064        0,     0,     0,     0,     0,     0,     0,     0,   627,   216,
    2065      348,     0,     0,     0,     0,   260,   712,     0,   348,  1085,
    2066       87,     0,     0,     0,   353,   355,   355,   355,     0,     0,
    2067      225,     0,     0,     0,   353,     0,   353,     0,     0,     0,
    2068        0,   223,     0,   355,   353,  1099,     0,     0,   353,     0,
    2069        0,     0,     0,   431,   118,     0,     0,   226,     0,     0,
    2070        0,   355,     0,     0,     0,     0,     0,     0,     0,   413,
    2071        0,     0,    78,     0,     0,     0,     0,     0,     0,     0,
    2072        0,     0,     0,    57,     0,     0,     0,     0,     0,     0,
    2073        0,     0,     0,     0,     0,     0,     0,     0,    78,     0,
    2074        0,   355,     0,     0,   216,     0,     0,     0,     0,    75,
    2075        0,   594,     0,     0,     0,     0,     0,     0,   356,     0,
    2076        0,     0,     0,   576,   429,     0,     0,     0,     0,   698,
    2077      698,   580,   350,   350,   583,     0,   355,     0,     0,   353,
    2078        0,     0,     0,     0,     0,   363,     0,   177,     0,     0,
    2079        0,    57,  1188,     0,     0,   206,     2,   207,     4,     5,
     1791      49,   113,   407,   149,   453,   399,   428,    97,   150,   440,
     1792     151,   267,   400,   753,   767,   401,   114,  1071,   408,   106,
     1793     106,   402,   974,   280,   869,   828,   965,   403,    57,    57,
     1794     505,   845,    49,   966,  1188,    50,  1172,   152,   404,    97,
     1795     597,   405,   967,   147,   383,   384,   741,   610,  1070,    49,
     1796     357,   106,   827,   143,    70,   920,   161,   605,   410,    96,
     1797      57,   795,   177,   186,   819,  1380,   209,    50,   153,    49,
     1798     193,    56,   115,   216,   923,  1303,   226,  1440,   949,   726,
     1799      69,   281,   407,   731,   219,   399,    70,   820,   106,    31,
     1800      31,    96,   400,   724,    57,   401,   425,    57,   408,   821,
     1801      31,   402,   148,    56,   831,   113,   822,   403,    96,   162,
     1802     838,   261,    69,   113,   262,   670,   266,   271,   404,   122,
     1803     212,   405,   189,   194,    31,    96,   217,    31,    96,   227,
     1804     816,  1138,   475,   477,   510,   679,   154,   210,   202,   817,
     1805     220,   260,  1196,   683,  1304,   149,   307,   147,  1440,   818,
     1806     150,  1198,   151,   166,   161,   113,   345,   548,   549,   252,
     1807     209,   411,   411,  1459,    31,   986,   527,   373,  1200,   629,
     1808     419,    31,   411,   633,  1170,  1171,   291,   715,  1178,   152,
     1809     914,  1182,   965,  1235,   348,   186,   186,  1239,   203,   966,
     1810     358,   342,    76,   161,  1078,   548,   721,   481,   967,   411,
     1811     668,   266,  1197,  1469,  1179,   952,    96,   162,   832,    49,
     1812     153,  1199,   835,  1201,  1187,   409,   161,   166,   123,    96,
     1813     374,   209,   665,   439,    76,   149,   252,   329,   443,  1179,
     1814     150,   548,   151,   852,   829,   471,   602,   855,   666,   307,
     1815    1172,   836,  1030,   602,   398,   189,   162,  1017,   816,    57,
     1816     327,    49,  1140,   735,   176,  -233,  -233,   817,    97,   271,
     1817     476,   674,   676,  1081,   271,   266,   266,   818,    96,   162,
     1818     106,   113,   463,   161,  1016,   442,  1004,   483,   154,    57,
     1819      96,   444,  1188,   992,   500,   923,    50,   142,   924,  1249,
     1820    1172,   657,   441,  1527,   307,   163,   665,   860,   861,   820,
     1821     146,   610,  1094,   176,  1485,    70,   176,   307,  1205,  1206,
     1822      96,   821,   666,   436,   878,   831,   597,  1250,   822,   672,
     1823    1542,   597,    56,   572,   479,   677,  -233,   357,   147,   730,
     1824     923,    69,   567,  1399,  1400,   373,   168,   155,  1513,   377,
     1825    1515,   113,   816,   327,   580,   345,   411,   476,   743,   603,
     1826     621,   817,   176,   177,  1071,   378,   828,    63,   736,   163,
     1827     169,   818,  1399,  1400,   626,  1139,   568,  1497,   626,   569,
     1828     630,   113,   932,  1502,   634,   436,   748,   589,   737,   899,
     1829     110,   144,   139,   140,  1246,  1070,   447,    96,   374,    63,
     1830     987,    41,    42,  1522,  1202,   805,   266,   471,  1529,   171,
     1831     769,   770,   771,  1401,   212,   460,   186,   342,   604,  1172,
     1832     845,   166,   578,   373,   799,   176,  1030,   471,   579,   820,
     1833     357,   583,   243,   411,   266,   471,   307,   307,  1170,  1171,
     1834     266,   821,  1410,   626,   110,  1188,  1119,   854,   822,  1326,
     1835     110,   715,  1188,    76,  1526,    41,    42,   684,    76,   599,
     1836    1020,    41,    42,   579,   113,   435,  1120,   553,   554,  1327,
     1837    1127,   348,  1363,   995,  1537,   189,   374,   358,  -121,   176,
     1838    -121,  1541,   266,   760,  -121,   493,   176,   705,   494,   765,
     1839     266,   387,   626,   706,    49,   357,   953,   373,   720,  -121,
     1840    -121,    97,   229,  1188,   113,   230,   923,   388,   234,  1085,
     1841     236,   557,   558,   106,   911,  1245,   307,   245,   113,  1158,
     1842    1160,   307,    57,   307,   307,  1136,   714,   435,  1424,    50,
     1843     913,   751,  1017,   610,   870,   113,   345,   212,   882,  1105,
     1844     327,   327,  1425,  1015,  1429,  1430,   559,   560,    70,   883,
     1845     523,   411,  1102,    96,  1117,   176,   722,   604,  1435,  1470,
     1846     880,   181,   723,   163,   348,    56,   923,   923,   110,   390,
     1847     358,   342,   176,  1471,    69,   110,   176,   139,   140,    41,
     1848      42,   572,   572,   555,   556,   391,    41,    42,  1127,   307,
     1849    1444,   110,   201,   914,     2,   206,     4,     5,     6,     7,
     1850     626,   345,    41,    42,   286,   621,   392,  1331,   327,  -289,
     1851     715,   603,   111,   603,   865,    41,    42,   973,    63,   997,
     1852      76,   247,   393,   472,   805,  1475,   250,   327,   732,   348,
     1853    1333,   626,  1475,  -517,   733,   358,   626,   847,   621,   176,
     1854      76,   514,   626,  1361,   229,   626,   626,   626,    76,   871,
     1855    -468,   643,  -468,   862,   848,   886,  1015,   411,   849,    35,
     1856     394,    36,  1028,   626,   915,   266,   252,   877,   872,  -468,
     1857     815,   471,   604,   348,   348,   348,   395,  1142,   917,   411,
     1858     916,   807,  1075,  1523,  1444,   915,    76,   442,   917,  1444,
     1859    1185,   348,   263,   327,   918,   113,    37,   929,   908,  1185,
     1860      40,  1082,  1317,   -10,  1083,   597,  1186,    41,    42,  1444,
     1861     692,   498,   805,   110,   357,  1309,  1444,  1409,  1318,  1113,
     1862    1237,   626,   934,   621,    41,    42,   747,  -441,  1319,   720,
     1863     720,   748,   748,    43,   407,   846,   399,   561,   562,   893,
     1864     599,    45,    46,   400,  1320,   748,   401,  1364,   500,   348,
     1865     408,  -442,   402,   895,  1035,   113,   345,   912,   403,   748,
     1866     751,   751,   523,   212,   523,   276,   571,   523,   411,   404,
     1867     523,   923,   405,   981,    45,    46,   519,   212,   850,   982,
     1868    1277,  1278,   851,   278,   229,   472,   234,   923,   815,   604,
     1869     714,   342,   965,  1154,   850,   411,  1374,   176,  1101,   966,
     1870    1477,   750,  1478,   411,   572,   472,   279,  -103,   967,    45,
     1871      46,  -103,   626,   472,   626,   110,  1000,   139,   140,   626,
     1872     345,   330,   933,   603,   602,  1162,    41,    42,   994,   176,
     1873      45,    46,    37,  1233,   706,   603,    40,   331,  1349,   579,
     1874     348,  1357,  1350,    41,    42,   176,   332,   748,   348,   712,
     1875    1358,    63,   715,   371,   358,  1524,   748,   923,   923,   176,
     1876     548,   985,   982,   465,     8,     9,    10,    11,    12,   813,
     1877     212,   602,   329,   411,   229,   953,   372,    45,    46,   953,
     1878     953,  1360,   815,   550,    76,   307,  1365,   748,  -290,   551,
     1879     552,   333,   748,    31,   604,     8,     9,    10,    11,    12,
     1880     807,   510,  1370,  1371,   106,  1427,   334,   626,   673,   675,
     1881      76,  1424,   665,    57,   113,   345,   908,   911,   908,   335,
     1882    1445,    34,  1183,   376,    31,    37,   748,   385,   666,    40,
     1883     113,   715,  1157,   913,   602,   389,    41,    42,   805,    70,
     1884     176,   692,   409,   934,   934,  1491,  1419,   982,   720,   714,
     1885     342,  1492,    34,   113,   307,   129,    56,   130,   131,   132,
     1886      48,   112,   719,  1399,  1400,    69,    41,    42,  1106,   397,
     1887      45,    46,   106,  1547,   214,  1084,   426,   912,   751,   579,
     1888    1159,    57,   602,   427,  1509,  1426,   772,   773,   519,   112,
     1889     112,   432,    48,   519,   450,  1324,   519,   738,  1242,   739,
     1890     411,  1437,   740,    48,  1088,   744,  1088,   604,  -365,    48,
     1891     345,   774,   775,  1228,  -394,   484,    37,    48,   174,   175,
     1892      40,   780,   781,    48,  1107,   214,    48,    41,    42,    48,
     1893     461,   626,   626,  1127,   462,     2,   206,     4,     5,     6,
     1894       7,   504,   112,   112,   776,   777,   778,   779,   291,   472,
     1895     788,   307,     2,   206,     4,     5,     6,     7,   327,   348,
     1896     348,   528,   529,   530,   508,  1169,    48,   442,   214,    48,
     1897     106,  1495,  1437,   513,   525,   472,    48,    76,   111,    57,
     1898     527,   228,  1381,   563,   564,   531,  1381,   532,   566,   533,
     1899     534,   113,   252,   329,   411,   565,   908,   419,   661,   411,
     1900      35,   908,    36,   569,   176,    70,   338,    48,  -438,   587,
     1901     934,   658,   659,   712,   846,    48,  -291,    35,   266,    36,
     1902      48,   590,    56,     8,     9,    10,    11,    12,    -3,   214,
     1903     639,  1190,   660,   626,   481,   329,   411,   662,   663,   761,
     1904     664,   829,   329,   602,   766,    48,    48,    37,   667,   183,
     1905     184,    40,    31,   669,   257,   912,   693,   345,    41,    42,
     1906     912,    48,   694,    -3,   696,   498,   698,   214,  -237,    48,
     1907     734,   745,   214,  1296,  1297,  1298,   692,   749,    48,   757,
     1908      34,    48,   808,  1460,   906,   809,   411,   -12,   112,   812,
     1909     823,   714,    45,    46,   465,  1332,  1334,  1335,   -13,   271,
     1910     113,   867,   868,   112,   874,   907,   894,   112,   896,   897,
     1911     922,    48,   112,   901,   904,   219,  -415,   723,   113,   106,
     1912    -521,   944,   307,   937,   946,    48,    48,    57,    57,   957,
     1913     950,   959,    48,   958,   960,   951,   626,  -292,   961,    48,
     1914     113,   106,    63,    76,     8,     9,    10,    11,    12,   962,
     1915      57,   978,   989,   212,   342,  1106,   990,   991,   214,   106,
     1916    1006,  1007,  1008,  1009,   116,   879,  1010,   881,    57,  1011,
     1917     210,   220,   712,    31,  1012,  1023,    70,  -403,    37,  -402,
     1918     183,   184,    40,  1037,  1422,   626,   626,  1072,    48,    41,
     1919      42,  1535,  1074,    56,   271,  1095,   907,  1096,  1059,   307,
     1920    1097,    34,    69,  1098,  1104,  1114,   748,  1115,    48,    48,
     1921    1116,  1107,   159,   348,   348,   185,  1118,   928,   106,  1352,
     1922    1121,  1123,    57,    45,    46,    48,   972,    57,  1124,    48,
     1923    1125,  1126,   113,   407,  1132,  1129,   399,   692,  1152,   214,
     1924     644,  1173,  1174,   400,   173,  1175,   401,  1106,   442,   408,
     1925    1176,   106,   402,    70,  1177,  1191,    48,   665,   403,  1192,
     1926      57,  1194,  1195,  1203,  1210,   441,    48,  1207,   258,   404,
     1927      56,  1208,   405,   666,  1215,    -3,   159,  1220,  1225,  1190,
     1928    1223,   214,  1241,   493,    48,  1229,   253,  1508,  1234,   266,
     1929      48,  1236,    48,  1421,  1238,  1247,  1251,  1253,  1255,   110,
     1930    1257,   139,   238,  1107,  1258,   626,  1263,  1259,   472,   323,
     1931      41,    42,  1260,  1261,    76,   176,  1270,    37,   339,   174,
     1932     175,    40,  1279,   110,  1280,   139,   140,   112,    41,    42,
     1933     113,  1287,    48,   348,    41,    42,   239,  1290,  1291,  1292,
     1934      48,   240,  1330,  1294,    48,  1106,  1302,  1308,    48,   106,
     1935    1315,   112,   113,   112,   372,  1323,  1321,  1325,    57,   113,
     1936     727,   113,  1336,   113,  1329,   728,  1337,  1193,   430,  1339,
     1937    1345,   106,   434,  1346,  1347,  1348,   149,  1359,   106,  1355,
     1938      57,   150,   417,   151,  1356,  1366,  1367,    57,   112,  1298,
     1939    1375,    76,  1507,   112,  1384,  1376,  1377,   113,  1383,   113,
     1940    1393,  1107,   323,   214,  1394,   437,    70,  -404,  1397,  1408,
     1941     113,  1412,  1414,    70,   712,   445,  1507,  1507,  1416,  1417,
     1942     703,  1423,  1418,    56,   161,  1441,   307,  1431,  1432,   106,
     1943      56,   214,  1190,  1433,   434,  1434,   214,   488,    57,  1190,
     1944    1350,  1507,  1436,   112,  1446,  1448,  1450,  1452,   373,   213,
     1945      48,  1454,  1456,  1458,  1463,  1465,  1486,   521,   232,  1464,
     1946    1476,    48,  1488,    48,    70,  1490,  1493,  1501,  1521,  1122,
     1947     159,  1494,  1516,  1517,  1530,   479,   141,  1528,  1532,    63,
     1948    1538,    56,    48,   520,  1545,   176,  1546,   889,  1209,   782,
     1949    1190,  1133,  1131,   712,   784,  1133,  1307,  1411,    48,   783,
     1950     213,   704,   785,   112,   588,   786,  1496,   214,   594,  1548,
     1951    1369,  1385,    48,  1240,   112,    48,   112,  1214,  1479,   902,
     1952     903,   214,  1089,   925,   215,  1222,  1093,   627,   241,   244,
     1953     327,   631,   801,  1128,   339,  1059,  1036,   939,   873,  1103,
     1954     242,  1316,   717,   213,    76,  1133,    66,   117,    48,   947,
     1955     791,    76,   112,   792,   112,   793,   472,    37,   112,   174,
     1956     175,    40,     0,     0,     0,     0,   112,     0,    41,    42,
     1957       0,     0,     0,  1285,  1286,   215,  1288,     0,    66,    48,
     1958      48,     0,     0,  1293,     0,  1295,     0,     0,     0,   323,
     1959     323,     0,     0,    48,   376,   160,     0,     8,     9,    10,
     1960      11,    12,    76,     0,   213,     0,     0,  1483,     0,  1483,
     1961       0,     0,     0,     0,   214,   221,     0,   688,   215,     0,
     1962     528,   529,   530,     0,     0,     0,    31,   703,  1373,     0,
     1963     116,     0,   681,     0,     0,     0,     0,     8,     9,    10,
     1964      11,    12,   213,  1483,   531,  1483,   532,   213,   533,  1306,
     1965       0,   259,     0,     0,    34,   488,     0,   323,   707,   488,
     1966       0,     0,   499,     0,     0,     0,    31,     0,     0,   521,
     1967       0,   521,     0,    48,   521,     0,   323,   521,     0,   215,
     1968    1398,     0,     0,  1406,     0,    48,     0,     0,   339,   457,
     1969       0,     0,     0,   328,    34,   520,   571,     0,   411,     0,
     1970     520,   259,   350,   520,    45,    46,     0,     0,   704,   472,
     1971       0,     0,     0,     0,     0,     0,   472,   215,     0,     0,
     1972       0,     0,   215,     0,     0,     0,  1443,     0,   644,     0,
     1973       0,  1447,   406,   213,   112,     0,   750,     0,   411,     0,
     1974       0,  1405,   323,     0,    45,    46,   703,   424,     0,     0,
     1975     429,   431,     0,   803,     0,   160,   703,    48,     0,  1468,
     1976    1133,  1133,  1133,     0,     0,     0,    48,   472,    48,     0,
     1977     703,     0,     0,     0,     0,   112,   448,     0,     0,     0,
     1978     451,     0,   452,     0,   844,     0,     0,     0,     0,   594,
     1979       0,   459,     0,     0,     0,   853,    74,    66,    48,     0,
     1980       0,     0,   473,     0,     0,     0,     0,     0,   215,     0,
     1981       0,   214,   480,     0,   213,     0,     0,     0,   112,     0,
     1982     431,     8,     9,    10,    11,    12,   645,   704,    74,     0,
     1983       0,   213,   644,     0,     0,     0,     0,   704,     0,     0,
     1984     112,     0,     0,  1536,   112,     0,     0,     0,   688,  1536,
     1985      31,   704,     0,     0,     0,     0,   213,     0,     0,   891,
     1986    1536,     0,   892,     0,  1536,   222,     0,     0,   898,     0,
     1987       0,     0,   900,     0,     0,     0,     0,     0,    34,     0,
     1988       0,    37,     0,   183,   184,    40,   488,   259,     0,   215,
     1989       0,   595,    41,    42,   112,     0,     0,   623,  1133,  1133,
     1990       0,     0,     0,     0,     0,     0,     0,     0,   339,     0,
     1991     628,     0,     0,     0,   628,     0,     0,   259,   265,     0,
     1992     933,     0,   602,     0,     0,     0,    45,    46,    45,    46,
     1993       0,   215,   112,     0,     0,     0,  1461,   725,     0,   729,
     1994       0,     0,     0,     0,     0,     0,    48,     0,     0,     0,
     1995       0,    48,   353,   535,   536,   537,   538,   539,   540,   541,
     1996     542,   543,   544,   545,   473,     0,     0,   996,    48,     0,
     1997       0,     0,   803,     0,   703,   703,     0,     0,   213,   350,
     1998       0,   988,     0,     0,   473,     0,     0,   546,     0,     0,
     1999       0,   993,   473,     0,  1510,     0,     0,   214,     0,     0,
     2000       0,     0,     0,  1518,     0,  1005,   213,     0,     0,     0,
     2001     699,   213,    37,   431,   183,   184,    40,     0,     0,     0,
     2002       0,     0,     0,    41,    42,     0,   449,     0,   713,     0,
     2003      66,     0,   703,   703,     0,     0,     0,     0,   431,     0,
     2004       0,     0,   431,     0,     0,   112,     0,    74,     0,   601,
     2005       0,   602,    74,   215,     0,   704,   704,    45,    46,     0,
     2006     803,     0,     0,     0,     0,     0,     0,   339,    48,     0,
     2007       0,   259,   350,     0,     0,     0,     0,     0,     0,     0,
     2008       0,   215,   213,   688,     0,     0,   215,     0,  1080,   866,
     2009       0,     0,   214,    77,     0,     0,   213,     0,     0,     0,
     2010       0,     0,     0,     0,     0,   488,  1108,   323,     0,   112,
     2011     112,   112,     0,   704,   704,     0,   499,     0,   794,    37,
     2012       0,   183,   184,    40,     0,    77,     0,     0,     0,     0,
     2013      41,    42,     0,     0,     0,     0,   628,   806,   919,     0,
     2014     921,     0,     0,     0,   457,     0,     0,   222,    37,   825,
     2015     183,   184,    40,     0,     0,     0,   906,   215,   411,    41,
     2016      42,     0,   223,   844,    45,    46,     0,   595,     0,     0,
     2017       0,   215,   595,     0,     0,     0,     0,     0,   628,     0,
     2018    1313,   350,   350,   350,     0,  1506,     0,   411,     0,   213,
     2019       0,     0,     0,    45,    46,     0,     0,     0,     0,   350,
     2020       0,     0,     0,   124,   127,   128,     0,     0,     0,  1167,
     2021    1168,     0,   703,     0,    74,     0,     0,   699,     0,     0,
     2022     703,   703,   703,     0,     0,     0,     0,     0,   473,   353,
     2023       0,     0,     0,     0,    74,     0,     0,     0,    48,    48,
     2024       0,  1204,    74,     0,   688,     0,     0,   112,   112,   355,
     2025       0,     0,     0,     0,   473,     0,     0,   350,     0,     0,
     2026     353,  1314,     0,     0,   215,     0,   938,  1217,  1218,   431,
     2027       0,     0,     0,     0,     0,   254,     0,   255,   353,     0,
     2028      74,     0,     0,     0,   703,   112,   803,     0,     0,     0,
     2029       0,   259,   713,   704,     0,     0,     0,   968,     0,     0,
     2030       0,   704,   704,   704,     0,     0,     0,     0,     0,     0,
     2031       0,     0,     0,     0,   645,     0,     0,     0,     0,     0,
     2032    1040,     0,   353,     0,     0,     0,     0,   126,   126,   126,
     2033       0,     0,     0,     0,     0,     0,   699,     0,     0,     0,
     2034       0,     0,    48,   112,    77,     0,   699,     0,   350,    77,
     2035     628,     0,   112,  1003,     0,   628,   806,     0,   396,     0,
     2036     699,  1090,     0,     0,     0,   704,    48,    48,   415,   416,
     2037    1014,   339,     0,   420,     0,   422,   423,     0,     0,     0,
     2038       0,     0,     0,     0,     0,     0,   213,   353,     0,     0,
     2039       0,    48,     0,  1108,     0,     0,     0,     0,     0,   126,
     2040       0,   126,     0,     0,     0,    79,     0,     0,     0,     0,
     2041       0,     0,     0,     0,     0,     0,     0,     0,   645,     0,
     2042       0,    66,     0,     0,     0,     0,   275,     0,     0,     0,
     2043       0,   353,   353,   353,     0,     0,     0,    79,     0,     0,
     2044       0,     0,     0,   628,   223,     0,     0,  1338,     0,   353,
     2045     259,   713,     0,     0,  1086,  1340,  1341,  1342,     0,     0,
     2046       0,   215,     0,     0,     0,     0,     0,   353,     0,     0,
     2047       0,     0,     0,     0,   224,     0,     0,     0,    74,     0,
     2048    1100,     0,   126,     0,     0,  1108,     0,  1368,   431,   117,
     2049     126,     0,   126,   126,     0,     0,     0,   126,     0,   126,
     2050     126,     0,     0,     0,    74,     0,     0,   353,     0,     0,
     2051       0,    77,     0,     0,     0,     0,     0,     0,  1040,  1386,
     2052       0,     0,     0,     0,     0,     0,   355,     0,     0,     0,
     2053       0,    77,     0,     0,     0,     0,     0,     0,     0,    77,
     2054       0,     0,   353,     0,     0,     0,   595,     8,     9,    10,
     2055      11,    12,     0,     0,     0,     0,     0,   355,     0,   429,
     2056       0,   356,     0,     0,   699,   699,     0,   350,   350,   126,
     2057       0,     0,   213,     0,     0,   355,    31,    77,     0,     0,
     2058       0,     0,     0,  1108,     0,     0,   353,  1189,     0,     0,
     2059       0,     0,     0,     0,     0,     0,   353,     0,   353,     0,
     2060       0,     0,     0,   222,    34,     0,   353,     0,     0,    37,
     2061     353,   183,   184,    40,  1482,     0,  1482,     0,     0,   355,
     2062      41,    42,   699,   699,     0,     0,     0,     0,     0,     0,
     2063       0,  1283,     0,     0,     0,     0,     0,     0,     0,  1480,
     2064       0,  1484,     0,     0,     0,     0,   601,   215,   602,     0,
     2065    1482,     0,  1482,     0,    45,    46,    79,     0,     0,     0,
     2066       0,    79,     0,     0,     0,     0,     0,   213,     0,   628,
     2067       0,    74,     0,     0,     0,  1512,     0,  1514,     0,   323,
     2068       0,     0,     0,     0,   355,     0,     0,     0,     0,     0,
     2069       0,     0,     0,   713,     0,     0,     0,     0,     0,    86,
     2070       0,   353,     0,     0,     0,     0,     0,   413,     0,     0,
     2071       0,     0,     0,     0,   421,     0,     0,     0,     0,  1543,
     2072       0,  1544,     0,     0,     0,     0,     0,     0,   355,   355,
     2073     355,    86,     0,     0,  1551,  1552,  1284,     0,     0,     0,
     2074       0,     0,   215,     0,     0,     0,   355,     0,     0,     0,
     2075       0,     0,   796,   797,   259,     0,   224,     0,    66,     0,
     2076       0,     0,     0,     0,   355,     0,     0,     0,   225,     0,
     2077     699,     0,   713,     0,     0,    77,   117,     0,     0,     0,
     2078       0,   830,     0,     0,   833,   834,   413,   837,     0,   839,
     2079     840,     0,     0,     0,   841,   842,     0,     0,     0,     0,
     2080       0,    77,   699,     0,   355,     0,     0,     0,     0,     0,
     2081     699,   699,   699,     0,   353,   353,     0,   353,   353,     0,
     2082       0,   350,   350,    79,     0,     0,     0,     0,     8,     9,
     2083      10,    11,    12,     0,     0,  1189,     0,    74,   356,   355,
     2084       0,   577,     0,    79,     0,     0,     0,     0,     0,   581,
     2085       0,    79,   584,     0,     0,   363,     0,    31,     0,     0,
     2086       0,     0,     0,     0,     0,     0,     0,     0,   117,   356,
     2087       0,     0,   353,   353,   699,     0,   126,   126,     0,     0,
     2088       0,     0,     0,   355,     0,    34,     0,   356,     0,    79,
     2089      37,     0,     0,   355,    40,   355,     0,     0,     0,     0,
     2090     223,    41,    42,   355,     0,   126,     0,   355,   126,   126,
     2091       0,   126,     0,   126,   126,     0,   413,     0,   126,   126,
     2092     421,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2093       0,   356,   970,   971,     0,    45,    46,     0,     0,     0,
     2094       0,   350,     0,   353,     0,     0,     0,     0,     0,     0,
     2095      86,     0,     0,     0,     0,    86,     0,     0,     0,     0,
     2096       0,     0,     0,     0,     0,     0,   117,     0,    77,     0,
     2097       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2098       0,     0,     0,     0,     0,     0,   222,     0,  1189,     0,
     2099       0,     0,     0,     0,     0,  1189,   356,   413,   355,     0,
     2100       0,     0,     0,     0,     0,     0,     0,     0,    74,     0,
     2101       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2102     353,     0,   353,     0,     0,     0,     0,     0,     0,     0,
     2103       0,     0,     0,     0,     8,     9,    10,    11,    12,     0,
     2104     356,   356,   356,     0,     0,     0,  1189,     0,     0,     0,
     2105     225,     0,   353,  1531,     0,     0,   126,   126,   356,     0,
     2106     353,   353,   353,    31,     0,     0,     0,     0,     0,     0,
     2107       0,   353,   353,     0,     0,     0,   356,     0,     0,     0,
     2108       0,     0,     0,     0,     0,    74,     0,    79,     0,   577,
     2109     577,    34,     0,     0,  1091,     0,    37,     0,   183,   184,
     2110      40,     0,     0,     0,     0,     0,     0,    41,    42,     0,
     2111       0,   355,   355,    79,   355,   355,   356,    86,     0,     0,
     2112       0,     0,     0,     0,   353,     0,     0,     0,     0,     0,
     2113       0,     0,   363,   906,    77,   411,     0,    86,     0,     0,
     2114       0,    45,    46,     0,     0,    86,     0,     0,     0,     0,
     2115       0,   356,     0,     0,     0,     0,     0,     0,     0,     0,
     2116       0,     0,     0,   363,     0,     0,     0,     0,     0,   355,
     2117     355,     0,     0,     0,     0,     0,   884,     0,     0,     0,
     2118     887,   363,     0,    86,     0,     0,     0,     0,     0,     0,
     2119       0,   353,     0,     0,     0,   356,     0,     0,     0,     0,
     2120       0,     0,     0,     0,     0,   356,     0,   356,     0,     0,
     2121       0,     0,   224,   126,     0,   356,     0,     0,   126,   356,
     2122       0,     0,     0,     0,     0,   363,   167,     0,   172,     0,
     2123       0,   178,   179,   180,     0,   182,     0,     0,    74,     0,
     2124     355,     0,     0,     0,     0,    74,     0,     0,     0,   233,
     2125       0,     0,     0,     0,     0,  1219,     0,     0,     0,     0,
     2126       0,   248,   249,     0,     8,     9,    10,    11,    12,     0,
     2127       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2128      79,     0,     0,   223,     0,     0,     0,     0,     0,     0,
     2129     363,     0,     0,    31,     0,     0,    74,     0,     0,     0,
     2130       0,     0,     0,     0,     0,    77,     0,     0,     0,     0,
     2131     356,     0,   577,     0,     0,     0,     0,   355,     0,   355,
     2132       0,    34,     0,     0,     0,     0,    37,     0,   183,   184,
     2133      40,     0,     0,     0,   363,   363,   363,    41,    42,     0,
     2134       0,     0,     0,     0,     0,     0,     0,     0,     0,   355,
     2135       0,     0,   363,     0,     0,     0,     0,   355,   355,   355,
     2136       0,     0,     0,  1506,     0,   411,     0,     0,   355,   355,
     2137     363,    45,    46,     0,     0,   507,     0,   509,   512,   126,
     2138       0,    86,    77,     0,  1305,   515,   516,     0,     0,     0,
     2139       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2140     509,   509,     0,     0,     0,     0,     0,    86,     0,     0,
     2141     363,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2142       0,   355,     0,   356,   356,     0,   356,   356,     0,     0,
     2143     413,     0,     0,     0,     0,     0,     0,     0,   509,     0,
     2144       0,     0,     0,     0,     0,   363,    79,     8,     9,    10,
     2145      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2146      21,    22,    23,    24,    25,  -293,     0,    26,    27,    28,
     2147       0,     0,     0,     0,   509,     0,    31,     0,     0,     0,
     2148       0,   356,   356,     0,     0,     0,     0,     0,   355,   363,
     2149       0,     0,     0,     0,     0,     0,     0,     0,     0,   363,
     2150       0,   363,     0,     0,    34,     0,   225,  1143,   126,   363,
     2151       0,    38,    39,   363,     0,  -293,     0,   592,     0,   600,
     2152       0,     0,     0,     0,  1155,     0,     0,     0,     0,     0,
     2153     624,   625,     0,     0,     0,    77,     0,     0,     0,     0,
     2154     282,   283,    77,   284,     0,     0,   635,     0,   338,     0,
     2155       0,     0,   356,     0,    45,    46,     0,     0,     0,     0,
     2156       0,     0,     0,     0,     0,     0,     0,     0,     0,   285,
     2157       0,     0,     0,     0,    86,   286,     0,     0,     0,   287,
     2158       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     2159     293,     0,     0,    77,     0,   224,     0,     0,     0,     0,
     2160       0,     0,   413,     0,   363,     0,     0,     0,     0,     0,
     2161       0,     0,   294,     0,   379,     0,     0,    79,     0,     0,
     2162      45,    46,   296,   297,   298,   299,     0,     0,     0,   356,
     2163       0,   356,  1013,   787,     0,     8,     9,    10,    11,    12,
     2164       0,     0,  1243,   509,   509,   509,   509,   509,   509,   509,
     2165     509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
     2166     509,   356,   282,   283,    31,   284,     0,     0,     0,   356,
     2167     356,   356,     0,     0,     0,     0,     0,     0,     0,     0,
     2168     356,   356,     0,     0,     0,     0,     0,     0,     0,     0,
     2169       0,   285,    34,     0,    79,     0,     0,   286,     0,     0,
     2170       0,   287,     0,     0,   288,   289,   290,   291,    41,    42,
     2171       0,   292,   293,     0,     0,     0,     0,   363,   363,     0,
     2172     363,   363,     0,     0,     0,     0,     0,     0,     0,     0,
     2173       0,     0,     0,   356,   294,     0,   379,     0,     0,     0,
     2174      86,     0,   344,    46,   296,   297,   298,   299,     0,     0,
     2175       1,     2,   206,     4,     5,     6,     7,     8,     9,    10,
     2176      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2177      21,    22,    23,    24,    25,   363,   363,    26,    27,    28,
     2178      29,     0,     0,    30,   282,   283,    31,   284,     0,   509,
     2179       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2180     356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2181       0,     0,     0,   285,    34,     0,    35,     0,    36,   286,
     2182       0,    38,    39,   287,   165,     0,   288,   289,   290,   291,
     2183      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
     2184       0,   218,     0,     0,     0,     0,   363,    79,     0,     0,
     2185     509,     0,     0,     0,    79,     0,   294,     0,  1056,     0,
     2186       0,     0,     0,     0,    45,    46,   296,   297,   298,   299,
     2187       0,     0,     0,   926,     0,   927,     0,     0,     0,  -128,
     2188     509,     0,   930,   931,     0,     0,     0,   936,   165,   225,
     2189       0,     0,   272,     0,     0,     0,     0,     0,     0,   941,
     2190       0,     0,     0,     0,   945,    79,     0,     0,     0,     0,
     2191       0,    86,     0,     0,     0,     0,     0,     0,     0,     0,
     2192       0,   165,     0,   363,     0,   363,     0,     0,     0,     0,
     2193       0,   369,   979,     0,     0,   375,     0,     0,     0,     0,
     2194       0,     0,     0,     0,     0,     0,  1163,     0,     0,     8,
     2195       9,    10,    11,    12,     0,   363,     0,     0,     0,     0,
     2196       0,     0,     0,   363,   363,   363,     0,     0,     0,     0,
     2197       0,     0,     0,     0,   363,   363,   282,   283,    31,   284,
     2198       0,     0,     0,     0,   165,     0,     0,     0,    86,     0,
     2199       0,     0,     0,     0,     0,     0,   218,     0,     0,     0,
     2200     509,     0,     0,     0,     0,   285,    34,     0,     0,     0,
     2201       0,   286,     0,     0,   165,   287,     0,     0,   288,   289,
     2202     290,   291,    41,    42,     0,   292,   293,   363,     0,     0,
     2203       0,  1024,  1025,  1026,  1027,     0,  1029,     0,     0,   375,
     2204       0,     0,     0,     0,     0,   509,   165,     0,   294,     0,
     2205     379,  1073,     0,     0,     0,     0,  1164,    46,   296,   297,
     2206     298,   299,     0,     0,     0,  1079,     0,     0,     0,   524,
     2207       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2208     509,     0,   165,     0,     0,     0,     0,     0,     0,   211,
     2209       0,     0,     0,   509,   363,     0,     0,     0,   231,     0,
     2210     235,     0,   237,     0,     0,  1099,     0,     0,     0,   246,
     2211       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2212     598,     0,     0,     0,     0,   622,     0,     0,     0,     0,
     2213       0,     0,     0,     0,   509,     0,     0,     0,     0,     0,
     2214     211,    86,   235,   237,   246,     0,     0,     0,    86,     0,
     2215    1130,     0,     0,     0,     0,     0,  1137,     0,     0,     0,
     2216       0,  1141,     0,     0,     0,     0,  1145,     0,  1146,     0,
     2217       0,     0,  1148,     0,  1149,  1150,     0,     0,  1153,     0,
     2218       0,     0,     0,   211,     0,     0,     0,  1165,     0,     0,
     2219       0,     0,     0,     0,     0,     0,     0,     0,     0,    86,
     2220       0,   165,   165,     0,     0,  1180,  1181,     0,   369,     0,
     2221       0,   509,     0,     0,     0,     0,     0,     0,     0,     0,
     2222       0,     0,     0,     0,     0,     0,     0,     0,     0,   524,
     2223       0,     0,  1211,     0,     0,  1213,     0,     0,     0,     0,
     2224       0,     0,     0,     0,   211,     0,   235,   237,   246,     0,
     2225       0,     0,     0,     0,     0,     0,     0,   716,     0,     0,
     2226       0,     8,     9,    10,    11,    12,     0,     0,     0,   165,
     2227       0,   509,   509,     0,     0,     0,     0,     0,  1227,     0,
     2228       0,   524,   211,   524,  1231,  1232,   524,   211,   165,   524,
     2229      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2230       0,   369,   497,     0,  1248,     0,     0,  1252,     0,     0,
     2231       0,  1254,     0,     0,     0,     0,     0,     0,    34,     0,
     2232       0,     0,     0,    37,  1262,   183,   184,    40,     0,     0,
     2233       0,     0,     0,     0,    41,    42,     0,  1269,     0,  1271,
     2234    1272,  1273,  1274,     0,     0,     0,     0,     0,     0,     0,
     2235       0,   211,     0,     0,   165,  1281,     0,  1282,     0,     0,
     2236     185,   172,     0,     0,     0,     0,   369,     0,    45,    46,
     2237     811,     0,     0,   211,     0,     0,     0,     0,   235,   237,
     2238       0,     0,     0,     0,     0,     0,   246,     0,     0,     0,
     2239    1310,  1311,     0,     0,     0,     0,   598,     0,     0,     0,
     2240       0,   598,     0,     0,     0,     0,     0,     0,     0,     0,
     2241     369,   369,   369,     0,     0,     0,     0,     0,     0,     0,
     2242       0,     0,     0,     0,     0,     0,     0,     0,   369,   211,
     2243       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2244    1343,  1344,     0,     0,     0,     0,     0,   211,     0,     0,
     2245    1354,     0,   211,     0,   211,     0,     0,     0,     0,     0,
     2246     524,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2247       0,   211,     0,     0,   211,   211,   509,     0,     0,     0,
     2248       0,     0,   211,     0,     0,     0,   369,     0,   935,     0,
     2249       0,     0,   509,     0,     0,     0,   211,     0,     0,     0,
     2250       0,     0,     0,   211,     0,     0,     0,     0,     0,     0,
     2251       0,  1389,     0,  1390,  1391,  1392,     0,     0,     0,     0,
     2252       0,   716,     0,     0,     0,  1396,   156,     0,     0,     0,
     2253       0,     0,     0,     0,  1407,     8,     9,    10,    11,    12,
     2254      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2255      23,    24,    25,     0,     0,    26,    27,    28,     0,  1428,
     2256       0,     0,   509,   509,    31,     0,     0,     8,     9,    10,
     2257      11,    12,     0,   251,     0,     0,     0,   369,     0,     0,
     2258       0,   622,     0,   256,     0,   369,     0,     0,     0,     0,
     2259       0,     0,    34,     0,     0,     0,    31,    37,     0,    38,
     2260      39,    40,  1466,  1467,     0,     0,     0,     0,    41,    42,
     2261       0,     0,     0,     0,     0,  1472,     0,     0,   211,     0,
     2262       0,     0,  1472,     0,    34,     0,     0,     0,     0,    37,
     2263       0,   183,   184,    40,    43,     0,   157,     0,     0,   156,
     2264      41,    42,    45,    46,     0,     0,   211,     0,     0,     0,
     2265       0,   211,     0,   386,  1505,     0,     0,     0,  1511,     0,
     2266       0,     0,     0,     0,     0,     0,   265,     0,     0,     0,
     2267       0,     0,     0,     0,    45,    46,   418,     0,     0,     0,
     2268     716,     0,     0,     0,     0,     0,  1533,     0,  1534,     0,
     2269     433,     0,     0,     0,     0,   524,     0,     0,     0,   438,
     2270       0,     0,     0,     0,     0,     0,     0,     0,     0,   446,
     2271       0,     0,     0,     0,     0,     0,  1549,  1550,     0,   165,
     2272       0,     0,   211,     0,  1553,  1554,     0,     0,     0,     0,
     2273       0,     0,     0,     0,   464,     0,   211,     0,     0,   474,
     2274       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2275       0,     0,   482,     0,     0,     0,   497,     0,   492,     0,
     2276     496,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2277       0,     0,     0,     0,     0,   598,     0,   526,     8,     9,
     2278      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2279      20,    21,    22,    23,    24,    25,   369,   369,    26,    27,
     2280      28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
     2281       0,     0,     0,     0,     0,     0,     0,   211,     0,     0,
     2282     586,     0,     0,     0,     0,   591,     0,     0,     0,   211,
     2283       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
     2284      37,     0,    38,    39,    40,     0,     0,     0,   211,     0,
     2285       0,    41,    42,     0,   636,     0,   524,     0,   637,   638,
     2286       0,   640,     0,     0,     0,     0,     0,     0,   651,   652,
     2287       0,   653,   654,     0,   655,     0,   656,    43,     0,    44,
     2288       0,     0,     0,     0,     0,    45,    46,     0,     0,     0,
     2289       0,     0,     0,   586,     0,     0,     0,     0,     0,     0,
     2290       0,   671,     0,     0,     0,     0,     0,     0,     0,   341,
     2291     364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2292       0,     0,   716,     0,     0,     0,   682,     0,     0,     0,
     2293       0,     0,     0,     0,     0,     0,     8,     9,    10,    11,
     2294      12,     0,     0,   414,     0,     0,     0,     0,     0,     0,
     2295     414,     0,   708,     0,     0,     0,     0,     0,   711,     0,
     2296       0,   211,     0,   464,   218,    31,     8,     9,    10,    11,
     2297      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2298      22,    23,    24,    25,  -293,     0,    26,    27,    28,     0,
     2299       0,   211,     0,    34,     0,    31,     0,     0,    37,   746,
     2300       0,   716,    40,     0,     0,     0,     0,     0,     0,    41,
     2301      42,     0,     0,     0,   764,     0,     0,     0,     0,     0,
     2302       0,     0,   414,    34,     0,     0,   211,     0,    37,     0,
     2303     336,   337,    40,     0,  -293,   719,     0,   211,     0,    41,
     2304      42,     0,     0,    45,    46,     0,     0,     0,     0,     0,
     2305     369,   369,     0,   790,     0,     0,     0,     0,     0,   218,
     2306       0,     0,   800,     0,     0,   635,     0,   338,   321,   802,
     2307       0,     0,     0,    45,    46,   810,     0,   414,   346,     0,
     2308       0,     0,     0,     0,   824,   414,   582,     0,   414,   585,
     2309     382,   382,     0,     0,     0,     0,     0,     0,     0,   364,
     2310       0,     0,     0,   614,     0,     0,     0,     0,     0,   211,
     2311       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2312       0,     0,   632,   211,   864,   341,   205,     2,   206,     4,
     2313       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2314      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2315      25,     0,   414,    26,    27,    28,   414,     0,     0,     0,
     2316     810,   321,    31,     0,     0,     0,     0,     0,   905,     0,
     2317     369,     0,   282,   283,     0,   284,     0,     0,     0,     0,
     2318       0,     0,     0,     0,     0,   478,     0,   364,     0,     0,
     2319      34,     0,    35,     0,    36,     0,     0,   207,    39,   251,
     2320       0,   285,     0,     0,     0,     0,     0,   286,     0,   942,
     2321     943,   287,   211,     0,   288,   289,   290,   291,    41,    42,
     2322       0,   292,   293,     0,     0,     0,   524,     0,   524,     0,
     2323       0,     0,     0,   414,   208,     0,   364,     0,     0,     0,
     2324      45,    46,   980,     0,   294,     0,   379,   984,     0,   380,
     2325       0,     0,    45,    46,   296,   297,   298,   299,     0,     0,
     2326       0,     0,   524,     0,   524,     0,     0,     0,     0,     0,
     2327       0,     0,     0,     0,     0,   414,     0,     0,     0,   341,
     2328     364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2329       0,   165,     0,     0,     0,     0,     0,     0,     0,     0,
     2330       0,     0,   382,     0,     0,     0,     0,   211,     0,     0,
     2331       0,  1018,     0,     0,     0,     0,     0,     0,  1019,     0,
     2332       0,     0,     0,     0,     0,   414,   414,     0,     0,     0,
     2333       0,  1021,     0,  1022,     0,     0,     0,     0,     0,     0,
     2334       0,     0,     0,     0,   804,   364,     0,  1034,     0,     0,
     2335       0,     0,     0,  1038,     0,   614,     0,   614,   614,     0,
     2336       0,     0,     0,     0,   614,  1076,     0,     0,  1077,     0,
     2337       0,     0,     0,     0,   843,   364,     0,     0,     0,     0,
     2338     364,     0,     0,     0,     0,     0,     0,     0,     0,   364,
     2339     364,   364,     0,     0,     0,     0,   710,     0,     0,     0,
     2340       0,     0,     0,     0,     0,     0,     0,   364,     0,     0,
     2341       0,     0,   414,   885,     0,     0,   414,   888,     0,     0,
     2342       0,     0,     0,   890,     0,     0,     0,     0,     0,     0,
     2343       0,     0,     0,     0,     0,   742,     0,     0,     0,     0,
     2344       0,     0,   414,     0,     0,   591,     0,     0,   759,     0,
     2345       0,     0,     0,   742,     0,     0,   742,     0,     0,     0,
     2346       0,     0,     0,     0,     0,   364,   614,     0,     0,   768,
     2347       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2348    1147,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2349       0,   789,     0,     0,     0,     0,     0,     0,     0,   341,
     2350     364,   798,     0,     0,   414,   414,     0,     0,   346,     0,
     2351       0,     0,     0,   759,     0,     0,     0,     0,     0,     0,
     2352       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2353      18,    19,    20,    21,    22,    23,    24,    25,   526,     0,
     2354      26,    27,    28,     0,  1212,     0,     0,     0,   414,    31,
     2355       0,     0,     0,     0,   211,     0,   364,     0,     0,     0,
     2356       0,     0,   863,   804,   364,     0,     0,   614,     0,   614,
     2357     382,     0,     0,     0,     0,     0,     0,    34,  1224,   614,
     2358       0,     0,    37,  1226,   207,    39,    40,     0,     0,     0,
     2359       0,  1230,     0,    41,    42,     0,     8,     9,    10,    11,
     2360      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2361      22,    23,    24,    25,  -293,     0,     0,     0,     0,    43,
     2362       0,   270,     0,     0,  1256,    31,     0,    45,    46,     0,
     2363       0,     0,     0,     0,     0,     0,  1264,     0,     0,  1265,
     2364       0,  1266,     0,     0,     0,     0,     0,     0,     0,     0,
     2365       0,   804,     0,    34,     0,  1275,  1276,     0,   341,   364,
     2366     414,     0,   414,     0,  -293,     0,   414,     0,   759,     0,
     2367     964,     0,     0,     0,     0,     0,     0,  1289,     0,     0,
     2368     975,     0,     0,     0,     0,     0,   983,   614,   614,     0,
     2369       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2370      18,    19,    20,    21,    22,    23,    24,    25,  -294,     0,
     2371       0,     0,     0,     0,     0,     0,     0,     0,     0,    31,
     2372       0,     0,   414,     0,  1328,     0,     0,     0,  1001,  1002,
     2373       0,     0,   346,     0,     0,     0,     0,     0,   282,   283,
     2374       0,   284,     0,   414,  1144,     0,   346,    34,     0,     0,
     2375       0,     0,     0,     0,   364,     0,     0,     0,  -294,     0,
     2376     414,  1156,     0,   614,   614,  1161,     0,   285,     0,     0,
     2377       0,     0,     0,   286,     0,   364,   364,   287,     0,     0,
     2378     288,   289,   290,   291,    41,    42,  1032,   292,   293,     0,
     2379     382,     0,     0,     0,     0,     0,     0,     0,     0,  1378,
     2380       0,  1379,     0,     0,     0,     0,     0,     0,     0,     0,
     2381     294,     0,   379,  1387,     0,  1388,     0,   758,    45,    46,
     2382     296,   297,   298,   299,     0,     0,     0,   346,     0,     0,
     2383       0,     0,  1395,     0,     0,     0,     0,     0,   414,     0,
     2384     414,     0,     0,     0,     0,   414,     0,     0,  1413,  1415,
     2385       0,     0,     0,     0,   614,     0,     0,     0,     0,  1420,
     2386       0,     0,  1230,     0,     0,     0,   321,     0,     0,     0,
     2387       0,     0,     0,     0,     0,     0,     0,   804,   414,  1244,
     2388       0,     0,     0,  1442,     0,     0,     0,     0,     0,     0,
     2389       0,     0,  1449,     0,   382,  1451,     0,  1453,  1455,  1457,
     2390     975,   364,     0,     0,   742,   282,   283,     0,   284,     0,
     2391       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2392       0,     0,     0,     0,     0,  1151,     0,     0,     0,     0,
     2393       0,     0,     0,     0,   285,     0,  1166,  1487,     0,  1489,
     2394     641,  1230,   139,   140,   287,     0,     0,   288,   289,   290,
     2395     291,    41,    42,     0,   292,   293,  1500,     0,   382,     0,
     2396    1184,     0,   341,     0,     0,     0,     0,     0,     0,     0,
     2397       0,     0,     0,     0,     0,   975,   975,   294,     0,   642,
     2398     364,   643,   380,     0,     0,    45,    46,   296,   297,   298,
     2399     299,     0,     0,     0,     0,     0,  1216,     0,     0,     0,
     2400       0,     0,     0,     0,     1,     2,   206,     4,     5,     6,
     2401       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2402      17,    18,    19,    20,    21,    22,    23,    24,    25,   364,
     2403     364,    26,    27,    28,    29,     0,     0,    30,     0,     0,
     2404      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2405       0,   975,     0,     0,     0,     0,     0,     0,     0,     0,
     2406       0,     0,     0,     0,     0,     0,     0,     0,    34,   863,
     2407      35,     0,    36,     0,     0,    38,    39,     0,     0,     0,
     2408       0,     0,     0,     0,  1267,  1268,     0,     1,     2,   206,
     2409       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2410      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2411      24,    25,    44,     0,    26,    27,    28,    29,    45,    46,
     2412      30,   282,   283,    31,  1041,  1042,     0,  1043,     0,     0,
     2413    1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,
     2414       0,  1052,     0,     0,     0,  1053,  1054,     0,    33,   364,
     2415     285,    34,     0,    35,     0,    36,  1055,     0,    38,    39,
     2416     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
     2417     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
     2418       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2419       0,     0,     0,   294,     0,  1056,     0,     0,   171,     0,
     2420       0,    45,    46,   296,   297,   298,   299,     0,     0,     0,
     2421       0,  1057,     0,     0,     0,     0,  -128,     0,     0,     0,
     2422       0,     0,     0,     0,     0,  1372,     0,     0,   742,     0,
     2423       0,     0,     0,     0,     0,     0,   414,     0,     0,     0,
     2424       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2425       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2426     414,   414,     0,     0,     0,     0,     0,     0,     0,     0,
     2427       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2428       0,     0,     0,     0,     0,   414,     1,     2,   206,     4,
     2429       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2430      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2431      25,     0,     0,    26,    27,    28,    29,     0,     0,    30,
     2432     282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
     2433      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2434      24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
     2435      34,     0,    35,    31,    36,   286,     0,    38,    39,   287,
     2436       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     2437     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2438       0,    34,     0,     0,     0,     0,   110,     0,    38,    39,
     2439       0,     0,   294,     0,    44,     0,     0,    41,    42,     0,
     2440      45,    46,   296,   297,   298,   299,     2,   206,     4,     5,
    20802441       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    20812442      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2082      355,     0,    26,    27,    28,     0,     0,   698,   698,     0,
    2083      355,    31,   355,     0,     0,     0,     0,   224,   413,     0,
    2084      355,     0,   421,     0,   355,     0,     0,     0,     0,     0,
    2085        0,     0,     0,    80,     0,     0,     0,     0,    80,    34,
    2086        0,    35,     0,    36,    37,     0,   208,    39,    40,   348,
    2087      348,     0,     0,     0,   627,    41,    42,     0,     0,     0,
    2088       87,     0,     0,     0,     0,    87,     0,     0,     0,    57,
    2089        0,     0,   353,   353,     0,   353,   353,     0,   712,     0,
    2090        0,    43,     0,   209,     0,    78,     0,     0,     0,    45,
    2091       46,     0,     0,     0,     0,    75,     0,     0,     0,   413,
    2092        0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
    2093        0,     0,     0,     0,     0,   355,     0,     0,     0,     0,
    2094        0,  1283,     0,     0,     0,     0,     0,     0,     0,     0,
    2095      353,   353,   225,     0,    31,     0,     0,   177,     0,   260,
    2096        0,     0,     0,    66,     0,     0,     0,     0,     0,     0,
    2097        0,     0,     0,     0,     0,   698,     0,   712,     0,   226,
    2098        0,   118,    34,     0,     0,     0,     0,    37,     0,   184,
    2099      185,    40,     0,     0,     0,   127,   127,   127,    41,    42,
    2100        0,     0,     0,     0,     0,     0,     0,   698,     0,     0,
    2101      576,   576,     0,     0,     0,   698,   698,   698,     0,    80,
    2102        0,   353,     0,     0,   186,     0,   350,   350,     0,     0,
    2103        0,     0,    45,    46,   356,     0,     0,    57,    57,    80,
    2104     1188,     0,     0,     0,     0,     0,    87,    80,   355,   355,
    2105        0,   355,   355,     0,     0,     0,     0,     0,     0,     0,
    2106       57,   363,     0,     0,   223,   356,    87,     0,   127,     0,
    2107      127,    78,     0,   118,    87,     0,     0,     0,    57,   698,
    2108        0,     0,     0,   356,     0,    80,    75,     0,     0,     0,
    2109        0,     0,   363,     0,     0,   276,     0,   883,   353,     0,
    2110      353,   886,     0,     0,     0,     0,   355,   355,     0,     0,
    2111      363,     0,    87,     0,     0,     0,     0,     0,     0,     0,
    2112        0,     0,     0,   348,   348,     0,     0,   356,     0,     0,
    2113      353,     0,    57,     0,     0,     0,     0,    57,   353,   353,
    2114      353,     0,     0,     0,     0,     0,   350,     0,     0,   353,
    2115      353,   127,     0,     0,   363,     0,     0,     0,     0,   127,
    2116        0,   127,   127,    75,     0,     0,   127,     0,   127,   127,
    2117       57,   118,     0,   168,     0,   173,     0,   355,   179,   180,
    2118      181,     0,   183,     0,     0,     0,     0,     0,     0,     0,
    2119        0,   356,     0,  1188,     0,     0,     0,   234,     0,     0,
    2120     1188,     0,   353,     0,     0,     0,     0,     0,     0,   249,
    2121      250,     0,     0,     0,   125,   128,   129,     0,   363,     0,
    2122      224,     0,     0,     0,     0,     0,     8,     9,    10,    11,
    2123       12,     0,     0,   576,     0,   356,   356,   356,   127,     0,
    2124        0,     0,    78,   348,     0,     0,     0,     0,     0,     0,
    2125        0,  1188,     0,   356,   355,    31,   355,     0,  1530,     0,
    2126        0,     0,   363,   363,   363,     0,     0,     0,    57,   353,
    2127        0,   356,     0,     0,     0,     0,     0,     0,     0,     0,
    2128      363,     0,    80,    34,     0,     0,   355,   255,    37,   256,
    2129       57,     0,    40,     0,   355,   355,   355,    57,   363,    41,
    2130       42,     0,     0,     0,     0,   355,   355,     0,    80,    87,
    2131        0,   356,     0,     0,     0,     0,    75,     0,     0,    78,
    2132        0,     0,     0,    75,     0,   718,     0,     0,     0,     0,
    2133        0,     0,     0,    45,    46,    87,     0,     0,   363,     8,
    2134        9,    10,    11,    12,     0,     0,   356,     0,    57,     0,
    2135        0,   413,     0,     0,     0,     0,     0,     0,   355,     0,
    2136        0,     0,     0,     0,     0,     0,     0,     0,    31,     0,
    2137      396,     0,     0,   363,    75,     0,     0,     0,     0,     0,
    2138      415,   416,     0,     0,     0,   420,     0,   422,   423,     0,
    2139      356,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2140      356,    37,   356,   184,   185,    40,     0,   225,     0,     0,
    2141      356,     0,    41,    42,   356,     0,     0,   363,     0,     8,
    2142        9,    10,    11,    12,     0,   355,     0,   363,  1142,   363,
    2143        0,     0,     0,     0,   226,     0,     0,   363,   905,     0,
    2144      411,   363,     0,     0,     0,  1154,    45,    46,    31,     0,
    2145        0,     8,     9,    10,    11,    12,     0,     0,     0,     0,
    2146        0,     0,     0,     0,   591,     0,   599,     0,     0,     0,
    2147        0,     0,    78,     0,     0,    80,    34,   623,   624,    78,
    2148       31,    37,     0,   184,   185,    40,     0,     0,     0,     0,
     2443       0,     0,    26,    27,    28,     0,     0,     0,   321,   282,
     2444     283,    31,   284,     8,     9,    10,    11,    12,    13,    14,
     2445      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2446      25,     0,     0,    26,    27,    28,     0,     0,   285,    34,
     2447       0,    35,    31,    36,   286,     0,    38,    39,   287,     0,
     2448       0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
     2449       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2450      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
     2451       0,   294,     0,   343,     0,     0,     0,     0,   758,   344,
     2452      46,   296,   297,   298,   299,     2,   206,     4,     5,     6,
     2453       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2454      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2455       0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
     2456      31,   284,     8,     9,    10,    11,    12,    13,    14,    15,
     2457      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2458       0,     0,    26,    27,    28,     0,     0,   285,    34,     0,
     2459      35,    31,    36,   286,     0,    38,    39,   287,     0,     0,
     2460     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
     2461       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2462       0,     0,     0,     0,     0,     0,   207,    39,     0,     0,
     2463     294,     0,   963,     0,     0,     0,     0,   758,   344,    46,
     2464     296,   297,   298,   299,     2,   206,     4,     5,     6,     7,
     2465       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2466      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2467      26,    27,    28,     0,     0,     0,     0,   282,   283,    31,
     2468     284,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2469      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2470       0,     0,     0,     0,     0,     0,   285,    34,     0,    35,
     2471      31,    36,   286,     0,    38,    39,   287,     0,     0,   288,
     2472     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
     2473       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2474       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
     2475       0,   963,     0,     0,     0,     0,   758,    45,    46,   296,
     2476     297,   298,   299,     2,   206,     4,     5,     6,     7,     8,
     2477       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2478      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2479      27,    28,     0,     0,     0,     0,   282,   283,    31,   284,
     2480       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2481       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2482       0,     0,     0,     0,     0,   285,    34,     0,    35,     0,
     2483      36,   286,     0,    38,    39,   287,     0,     0,   288,   289,
     2484     290,   291,    41,    42,     0,   292,   293,     0,     0,     0,
     2485       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2486       0,     0,     0,     0,     0,     0,     0,     0,   294,     0,
     2487     343,     0,     0,     0,     0,     0,   344,    46,   296,   297,
     2488     298,   299,     2,   206,     4,     5,     6,     7,     8,     9,
     2489      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2490      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2491      28,     0,     0,     0,     0,   282,   283,    31,   284,     0,
     2492       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2493       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2494       0,     0,     0,     0,   285,    34,     0,    35,     0,    36,
     2495     286,     0,   207,    39,   287,     0,     0,   288,   289,   290,
     2496     291,    41,    42,     0,   292,   293,     0,     0,     0,     0,
     2497       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2498       0,     0,     0,     0,     0,     0,     0,   294,     0,   998,
     2499       0,     0,     0,     0,     0,   999,    46,   296,   297,   298,
     2500     299,     2,   206,     4,     5,     6,     7,     8,     9,    10,
     2501      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2502      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2503       0,     0,     0,     0,   282,   283,    31,   284,     0,     0,
     2504       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2505       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2506       0,     0,     0,   285,    34,     0,    35,     0,    36,   286,
     2507       0,    38,    39,   287,     0,     0,   288,   289,   290,   291,
     2508      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
     2509       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2510       0,     0,     0,     0,     0,     0,   294,     0,   963,     0,
     2511       0,     0,     0,     0,   344,    46,   296,   297,   298,   299,
     2512       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
     2513      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2514      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2515       0,     0,     0,   282,   283,    31,   284,     0,     0,     0,
     2516       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2517       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2518       0,     0,   285,    34,     0,    35,     0,    36,   286,     0,
     2519     207,    39,   287,     0,     0,   288,   289,   290,   291,    41,
     2520      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
     2521       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2522       0,     0,     0,     0,     0,   294,     0,   379,     0,     0,
     2523       0,     0,     0,    45,    46,   296,   297,   298,   299,  -516,
     2524       0,     0,     1,     2,     3,     4,     5,     6,     7,     8,
     2525       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2526      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2527      27,    28,    29,     0,     0,    30,     0,     0,    31,    32,
     2528       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2529       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2530       0,     0,     0,    33,     0,     0,    34,     0,    35,     0,
     2531      36,    37,     0,    38,    39,    40,     0,     0,     0,     0,
    21492532       0,     0,    41,    42,     0,     0,     0,     0,     0,     0,
    2150        0,     0,    87,     0,     0,   356,     0,     0,    34,     0,
    2151        0,     0,     0,    37,     0,   184,   185,    40,  1505,     0,
    2152      411,     0,     0,   413,    41,    42,    45,    46,     0,     0,
    2153       78,     0,   363,     0,     0,     0,     0,     0,     0,     0,
    2154        0,     0,     0,   127,   127,     0,     0,     0,     0,     0,
    2155      266,     0,     0,     0,     0,     0,     0,     0,    45,    46,
    2156        0,     0,     0,  1242,     0,     0,     0,     0,     0,     0,
    2157        0,     0,   127,     0,     0,   127,   127,     0,   127,     0,
    2158      127,   127,     0,     0,     0,   127,   127,     1,     2,   207,
    2159        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2160       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2161       24,    25,  -291,     0,    26,    27,    28,    29,   356,   356,
    2162       30,   356,   356,    31,     0,     0,     0,     0,     0,     0,
    21632533       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2164        0,    80,     0,     0,     0,   363,   363,     0,   363,   363,
    2165        0,    34,     0,    35,     0,    36,     0,     0,    38,    39,
    2166        0,     0,  -291,     0,     0,     0,  1012,     0,    87,     8,
    2167        9,    10,    11,    12,     0,     0,   356,   356,     0,     0,
     2534       0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
     2535      44,     0,     0,     0,     0,     0,    45,    46,     1,     2,
     2536       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2537      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2538      23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
     2539       0,    30,     0,     0,    31,    32,     0,     0,     0,     0,
    21682540       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2169        0,     0,     0,     0,     0,    44,   283,   284,    31,   285,
    2170        0,    45,    46,   363,   363,     0,     0,     0,     0,     0,
     2541       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2542       0,     0,    34,     0,    35,     0,    36,    37,     0,    38,
     2543      39,    40,     0,     0,     0,     0,     0,     0,    41,    42,
    21712544       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2172        0,     0,     0,   127,   127,   286,    34,     0,     0,     0,
    2173        0,   287,     0,     0,     0,   288,     0,     0,   289,   290,
    2174      291,   292,    41,    42,     0,   293,   294,   356,     0,     0,
    21752545       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2176        0,     0,   795,   796,     0,     0,     0,     0,   295,     0,
    2177      379,     0,     0,     0,   363,     0,   344,    46,   297,   298,
    2178      299,   300,     0,     0,     0,     0,     0,     0,     0,     0,
    2179      225,   829,     0,     0,   832,   833,     0,   836,     0,   838,
    2180      839,     0,     0,     0,   840,   841,     0,     0,     0,     0,
    2181        0,     0,    80,     0,     0,     0,     0,   226,     0,   925,
    2182        0,   926,     0,     0,   356,     0,   356,     0,   929,   930,
    2183        0,     0,     0,   935,     0,     0,     0,     0,     0,    87,
    2184        0,     0,     0,     0,     0,   940,     0,     0,     0,     0,
    2185      944,   363,     0,   363,     0,     0,   356,     0,     0,     0,
    2186        0,     0,     0,     0,   356,   356,   356,     0,     0,     0,
    2187        0,     0,     0,     0,     0,   356,   356,     0,   978,     0,
    2188      127,     0,     0,   363,     0,   127,     0,     0,     0,    80,
    2189        0,   363,   363,   363,     0,     0,     0,     0,     0,     0,
    2190        0,     0,   363,   363,     0,     0,     0,     0,     0,     0,
    2191        0,     0,     0,     0,     0,     0,    87,     0,     0,     0,
    2192        0,     0,     0,     0,     0,     0,     0,     0,   356,     0,
     2546       0,     0,     0,     0,    43,     0,    44,     0,     0,     0,
     2547    -520,     0,    45,    46,     1,     2,     3,     4,     5,     6,
     2548       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2549      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2550       0,    26,    27,    28,    29,     0,     0,    30,     0,     0,
     2551      31,    32,     0,     0,     0,     0,     0,     0,     0,     0,
    21932552       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2194      166,     0,   969,   970,     0,     0,     0,     0,     0,     0,
    2195        0,     0,     0,     0,     0,   363,     0,   219,     0,     0,
    2196     1162,     0,     0,     8,     9,    10,    11,    12,     0,     0,
    2197        0,     0,     0,     0,     0,     0,     0,  1023,  1024,  1025,
    2198     1026,     0,  1028,     0,     0,     0,     0,     0,     0,     0,
    2199      283,   284,    31,   285,     0,   356,     0,  1072,     0,     0,
    2200        0,     0,     0,     0,     0,   166,     0,     0,     0,   273,
    2201        0,  1078,     0,     0,     0,     0,     0,     0,     0,   286,
    2202       34,     0,   363,     0,     0,   287,     0,     0,     0,   288,
    2203        0,     0,   289,   290,   291,   292,    41,    42,   166,   293,
    2204      294,     0,    80,     0,     0,     0,   127,     0,   369,    80,
    2205        0,  1098,   375,     0,     0,     0,     0,     0,     0,     0,
    2206        0,     0,   295,     0,   379,     0,     0,     0,     0,    87,
    2207     1163,    46,   297,   298,   299,   300,    87,     8,     9,    10,
     2553       0,     0,     0,     0,     0,    33,     0,     0,    34,     0,
     2554      35,     0,    36,    37,     0,    38,    39,    40,     0,     0,
     2555       0,     0,     0,     0,    41,    42,     0,     0,     0,     0,
     2556       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2557       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2558      43,     0,    44,     0,     0,     0,     0,     0,    45,    46,
     2559     205,     2,   206,     4,     5,     6,     7,     8,     9,    10,
    22082560      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2209       21,    22,    23,    24,    25,     0,  1129,    26,    27,    28,
    2210       80,   166,  1136,     0,  1090,     0,    31,  1140,     0,     0,
    2211        0,     0,  1144,   219,  1145,     0,     0,     0,  1147,     0,
    2212     1148,  1149,     0,     0,  1152,     0,     0,    87,     0,     0,
    2213        0,   166,     0,  1164,    34,     0,     0,     0,     0,     0,
    2214        0,   208,    39,     0,     0,     0,     0,     0,     0,     0,
    2215        0,  1179,  1180,     0,     0,     0,   375,     0,     0,     0,
    2216        0,     0,     0,   166,     0,     0,     0,     0,     0,     0,
    2217        0,     0,     0,     0,     0,   127,     0,     0,  1210,     0,
    2218        0,  1212,     0,     0,    45,    46,   524,     0,     0,     0,
    2219        0,     0,     0,     0,     0,     0,     0,     0,   166,     0,
    2220        0,     0,     0,     0,   212,     0,     0,     0,     0,     0,
    2221        0,     0,     0,     0,   232,     0,   236,     0,   238,     0,
    2222        0,     0,     0,     0,  1226,   247,     0,     0,     0,     0,
    2223     1230,  1231,     0,     0,     0,     0,   597,     0,     0,     0,
    2224        0,   621,     0,     0,     0,     0,     0,     0,     0,     0,
    2225     1247,     0,     0,  1251,     0,     0,   212,  1253,   236,   238,
    2226      247,     0,     0,     0,     0,  1218,     0,     0,     0,     0,
    2227     1261,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2228        0,     0,     0,  1268,     0,  1270,  1271,  1272,  1273,     0,
    2229        0,     0,     0,     0,     0,     0,     0,     0,     0,   212,
    2230        0,  1280,     0,  1281,     0,     0,     0,   173,     0,     0,
    2231        0,     0,     0,     0,     0,     0,     0,   166,   166,     0,
    2232        0,     0,     0,     0,   369,     0,     0,     0,     0,     0,
    2233        0,     0,     0,     0,     0,     0,  1309,  1310,     0,     0,
    2234        0,     0,     0,     0,     0,   524,     0,     0,     0,     0,
    2235        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2236      212,     0,   236,   238,   247,     0,     0,     0,     0,     0,
    2237        0,     0,     0,   715,     0,     0,     0,     0,     0,     0,
    2238        0,     0,     0,     0,     0,   166,  1342,  1343,     0,     0,
    2239        0,     0,     0,     0,  1304,     0,  1353,   524,   212,   524,
    2240        0,     0,   524,   212,   166,   524,     0,     0,     0,     0,
    2241        0,     0,     0,     0,     0,     0,     0,   369,   497,     0,
    2242        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2243        0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
    2244       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2245       24,    25,  -291,     0,    26,    27,    28,  1388,     0,  1389,
    2246     1390,  1391,     0,    31,     0,     0,   212,     0,     0,   166,
    2247        0,  1395,     0,     0,     0,     0,     0,     0,     0,     0,
    2248     1406,   369,     0,     0,     0,   810,     0,     0,   212,     0,
    2249        0,    34,     0,   236,   238,     0,    37,     0,   336,   337,
    2250       40,   247,  -291,     0,     0,  1427,     0,    41,    42,     0,
    2251        0,   597,     0,     0,   321,     0,   597,     0,     0,     0,
    2252        0,     0,     0,     0,   346,   369,   369,   369,     0,   157,
    2253        0,     0,     0,   634,     0,   338,   382,   382,     0,     0,
    2254        0,    45,    46,   369,   212,     0,     0,     0,  1465,  1466,
    2255        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2256        0,  1471,   212,     0,     0,     0,     0,   212,  1471,   212,
    2257      283,   284,     0,   285,     0,   524,     0,   252,     0,     0,
    2258        0,     0,     0,     0,     0,     0,   212,   257,     0,   212,
    2259      212,     0,     0,     0,     0,     0,     0,   212,     0,   286,
    2260     1504,   369,     0,   934,  1510,   287,     0,   321,     0,   288,
    2261        0,   212,   289,   290,   291,   292,    41,    42,   212,   293,
    2262      294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2263        0,   478,  1532,     0,  1533,     0,   715,     0,     0,     0,
    2264        0,     0,   295,   157,   379,     0,     0,   380,     0,     0,
    2265       45,    46,   297,   298,   299,   300,     0,   386,     0,     0,
    2266        0,     0,  1548,  1549,     0,     0,     0,     0,     0,     0,
    2267     1552,  1553,     0,     0,     0,     0,     0,     0,     0,     0,
    2268      418,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2269        0,     0,   369,     0,   433,     0,   621,     0,     0,     0,
    2270      369,     0,     0,   438,     0,     0,     0,     0,     0,     0,
    2271        0,     0,     0,   446,     0,     0,     0,     0,     0,     0,
    2272        0,     0,     0,     0,   283,   284,     0,   285,     0,     0,
    2273        0,     0,   212,     0,     0,     0,     0,     0,   464,     0,
    2274        0,     0,     0,   474,     0,     0,     0,   382,     0,     0,
    2275        0,     0,     0,   286,     0,     0,   482,     0,     0,   287,
    2276      212,     0,   492,   288,   496,   212,   289,   290,   291,   292,
    2277       41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
    2278        0,   526,     0,     0,     0,     0,     0,     0,     0,     0,
    2279        0,     0,     0,     0,     0,   715,   295,     0,   379,     0,
    2280        0,     0,     0,   757,    45,    46,   297,   298,   299,   300,
    2281      524,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2282        0,     0,     0,   585,     0,     0,     0,     0,   590,     0,
    2283        0,     0,     0,     0,   166,     0,   212,     0,     0,     0,
    2284        0,   709,     0,     0,     0,     0,     0,     0,     0,     0,
    2285      212,     0,     0,     0,     0,     0,     0,   635,     0,     0,
    2286        0,   636,   637,     0,   639,     0,     0,     0,     0,     0,
    2287      497,   650,   651,     0,   652,   653,     0,   654,     0,   655,
    2288      741,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2289      597,     0,     0,   758,     0,     0,   585,     0,   741,     0,
    2290        0,   741,     0,     0,   670,     0,     0,     0,     0,     0,
    2291        0,   369,   369,   767,     0,     0,     0,     0,     0,     0,
    2292        0,     0,     0,     0,     0,     0,     0,     0,     0,   681,
    2293        0,   212,     0,     0,     0,   788,     0,     0,     0,     0,
    2294        0,     0,     0,   212,     0,   797,     0,     0,     0,     0,
    2295        0,     0,   346,     0,     0,   707,     0,   758,     0,     0,
    2296        0,   710,   212,     0,     0,     0,   464,     0,     0,     0,
    2297        0,   524,     0,     0,     0,     0,   206,     2,   207,     4,
     2561      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2562       0,     0,     0,     0,     0,     0,    31,     0,     8,     9,
     2563      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2564      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2565      28,   485,   486,   487,    34,     0,    35,    31,    36,    37,
     2566       0,   207,    39,    40,     0,     0,     0,     0,     0,     0,
     2567      41,    42,     0,     0,     0,     0,     0,     0,     0,     0,
     2568       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
     2569       0,     0,    38,    39,     0,     0,    43,     0,   208,     0,
     2570       0,     0,     0,     0,    45,    46,     1,     2,   206,     4,
    22982571       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    22992572      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2300       25,     0,   745,    26,    27,    28,   862,     0,     0,     0,
    2301        0,     0,    31,     0,   382,     0,     0,   763,     0,     0,
     2573      25,  -293,     0,    26,    27,    28,    29,     0,     0,    30,
     2574       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
    23022575       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2303        0,     0,     0,     0,     0,     0,     0,   715,     0,     0,
    2304       34,     0,    35,     0,    36,     0,     0,   208,    39,     0,
    2305        0,     0,     0,   283,   284,   789,   285,     0,     0,     0,
    2306        0,     0,     0,     0,   799,     0,     0,     0,     0,     0,
    2307        0,   801,     0,     0,     0,   212,     0,   809,     0,   219,
    2308        0,     0,   286,     0,   209,     0,   823,     0,   287,     0,
    2309       45,    46,   288,     0,     0,   289,   290,   291,   292,    41,
    2310       42,     0,   293,   294,     0,   212,     0,     0,     0,     0,
    2311        0,     0,   758,     0,   963,     0,   715,     0,     0,   341,
    2312      364,     0,     0,     0,   974,   295,   863,   379,     0,     0,
    2313      982,     0,     0,    45,    46,   297,   298,   299,   300,     0,
    2314      212,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2315        0,   212,     0,   414,     0,     0,     0,     0,     0,     0,
    2316      414,     0,   809,     0,     0,   369,   369,     0,     0,     0,
    2317      904,     0,  1000,  1001,   219,     0,   346,     0,     0,     0,
    2318        0,     0,     0,     0,     0,     0,     0,     0,     0,   507,
    2319      346,   509,   512,     0,     0,     0,     0,     0,     0,   515,
    2320      516,   252,     0,     0,     0,     0,     0,     0,     0,     0,
    2321        0,   941,   942,   509,   509,     0,     0,     0,     0,     0,
    2322        0,     0,     0,   212,     0,     0,     0,     0,     0,     0,
    2323     1031,     0,   414,     0,   382,     0,     0,   212,     0,     0,
    2324        0,     0,     0,     0,   979,     0,     0,     0,     0,   983,
    2325        0,   509,     8,     9,    10,    11,    12,    13,    14,    15,
    2326       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2327        0,   346,    26,    27,    28,     0,     0,     0,     0,     0,
    2328        0,    31,   684,     0,     0,   369,   414,   509,     0,     0,
    2329        0,     0,     0,     0,   414,   581,     0,   414,   584,     0,
    2330        0,     0,     0,     0,     0,     0,     0,     0,   364,    34,
    2331      321,     0,   613,  1017,     0,     0,    38,    39,     0,     0,
    2332     1018,     0,     0,     0,     0,     0,   212,     0,     0,     0,
    2333        0,   631,     0,  1020,   341,  1021,     0,     0,   382,     0,
    2334        0,   524,     0,   524,   974,     0,     0,     0,   741,  1033,
    2335        0,     0,     0,   685,     0,  1037,     0,   686,     0,    45,
    2336       46,   414,     0,     0,     0,   414,     0,  1075,     0,  1150,
    2337     1076,     0,     0,     0,     0,     0,     0,   524,     0,   524,
    2338     1165,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2339        0,     0,     0,     0,     0,     0,   364,     0,     0,     0,
    2340        0,     0,   382,     0,  1183,     0,   166,     0,     0,     0,
    2341        0,     0,     0,     0,     0,     0,     0,     0,     0,   974,
    2342      974,   212,     8,     9,    10,    11,    12,    13,    14,    15,
    2343       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2344     1215,     0,   414,     0,     0,   364,     0,   590,     0,     0,
    2345        0,    31,     0,     0,     0,   509,   509,   509,   509,   509,
    2346      509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
    2347      509,   509,   509,     0,     0,     0,     0,   283,   284,    34,
    2348      285,     0,  1146,     0,   414,     0,     0,     0,   341,   364,
    2349        0,     0,     0,     0,     0,   974,     0,     0,     0,     0,
    2350        0,     0,     0,     0,     0,     0,   286,     0,     0,     0,
    2351        0,     0,   287,   862,     0,     0,   288,     0,     0,   289,
    2352      290,   291,   292,    41,    42,     0,   293,   294,  1266,  1267,
    2353        0,     0,     0,   414,   414,     0,     0,     0,     0,     0,
    2354      526,     0,     0,     0,     0,     0,  1211,     0,     0,   295,
    2355        0,   379,   803,   364,   971,     0,     0,    45,    46,   297,
    2356      298,   299,   300,   613,     0,   613,   613,     0,     0,     0,
    2357        0,     0,   613,     0,     0,     0,     0,     0,     0,     0,
    2358     1223,     0,   842,   364,     0,  1225,     0,     0,   364,     0,
    2359        0,     0,     0,  1229,     0,     0,     0,   364,   364,   364,
    2360        0,   509,     0,     0,     0,     0,     0,     0,     0,     0,
    2361        0,     0,     0,     0,     0,   364,     0,     0,     0,     0,
    2362      414,   884,     0,     0,   414,   887,  1255,     0,     0,     0,
    2363        0,   889,     0,     0,     0,     0,     0,     0,  1263,     0,
    2364        0,  1264,     0,  1265,     0,     0,     0,     0,     0,     0,
    2365      414,     0,     0,     0,     0,     0,     0,  1274,  1275,     0,
    2366        0,     0,   509,     0,     0,     0,     0,     0,   212,  1371,
    2367        0,     0,   741,   364,   613,     0,     0,     0,     0,  1288,
    23682576       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2369        0,     0,   509,     0,     0,     0,     0,     0,     0,     0,
    2370        0,     0,     0,     0,     0,     0,     0,   341,   364,     0,
    2371        0,     0,   414,   414,     0,     0,     0,     0,     0,     0,
    2372        0,     0,     0,     0,     0,     0,  1327,     0,     0,     0,
    2373        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2374       17,    18,    19,    20,    21,    22,    23,    24,    25,  -291,
    2375        0,    26,    27,    28,     0,     0,   414,     0,     0,     0,
    2376       31,     0,     0,     0,   364,     0,     0,     0,     0,     0,
    2377        0,   803,   364,     0,     0,   613,     0,   613,     0,     0,
    2378        0,     0,     0,     0,     0,     0,     0,   613,    34,     0,
    2379        0,     0,     0,    37,     0,   336,   337,    40,     0,  -291,
    2380        0,  1377,     0,  1378,    41,    42,     0,     0,     0,     0,
    2381        0,     0,   509,     0,     0,  1386,     0,  1387,     0,     0,
    2382        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2383        0,     0,   338,     0,  1394,     0,     0,     0,    45,    46,
    2384        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2385     1412,  1414,     0,     0,     0,     0,     0,   509,     0,   803,
    2386        0,  1419,     0,     0,  1229,     0,   341,   364,   414,     0,
    2387      414,     0,     0,     0,   414,     0,     0,     0,     0,     0,
    2388        0,     0,   321,     0,     0,  1441,     0,     0,     0,     0,
    2389        0,     0,   509,     0,  1448,   613,   613,  1450,     0,  1452,
    2390     1454,  1456,     0,     0,     0,   509,     8,     9,    10,    11,
    2391       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2392       22,    23,    24,    25,  -291,     0,     0,     0,     0,     0,
    2393      414,     0,     0,     0,     0,    31,     0,     0,     0,  1486,
    2394        0,  1488,     0,  1229,     0,     0,   509,     0,     0,     0,
    2395        0,   414,  1143,     0,     0,     0,     0,     0,  1499,     0,
    2396        0,     0,   364,    34,     0,     0,     0,     0,   414,  1155,
    2397        0,   613,   613,  1160,  -291,     0,     0,     0,     0,     0,
    2398        0,     0,     0,   364,   364,     0,     0,     0,     0,     0,
    2399        0,     0,     0,     0,     0,     0,     0,     1,     2,   207,
    2400        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2401       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2402       24,    25,     0,   509,    26,    27,    28,    29,     0,     0,
    2403       30,   283,   284,    31,   285,     0,     0,     0,     0,     0,
    2404        0,     0,     0,     0,     0,     0,   414,     0,   414,     0,
    2405        0,     0,     0,   414,     0,     0,     0,     0,     0,     0,
    2406      286,    34,   613,    35,     0,    36,   287,     0,    38,    39,
    2407      288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
    2408      293,   294,     0,   509,   509,   803,   414,  1243,     0,     0,
    2409        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2410        0,     0,     0,   295,     0,  1055,     0,     0,     0,   364,
    2411        0,    45,    46,   297,   298,   299,   300,     0,     0,     0,
    2412        0,     0,     0,     0,     0,     0,  -126,     0,     1,     2,
    2413      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2414       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2415       23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
    2416        0,    30,   283,   284,    31,  1040,  1041,     0,  1042,     0,
    2417      341,  1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,
    2418        0,     0,  1051,     0,     0,     0,  1052,  1053,   364,    33,
    2419        0,   286,    34,     0,    35,     0,    36,  1054,     0,    38,
    2420       39,   288,     0,     0,   289,   290,   291,   292,    41,    42,
    2421        0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
    2422        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2423        0,     0,     0,     0,   295,     0,  1055,   364,   364,   172,
    2424        0,     0,    45,    46,   297,   298,   299,   300,     0,     0,
    2425        0,     0,  1056,     0,     0,     0,     0,  -126,     0,     0,
    2426        0,     0,     1,     2,   207,     4,     5,     6,     7,     8,
    2427        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2428       19,    20,    21,    22,    23,    24,    25,     0,   509,    26,
    2429       27,    28,    29,     0,     0,    30,   283,   284,    31,   285,
    2430        0,     0,     0,     0,   509,     0,     0,     0,     0,     0,
    2431        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2432        0,     0,     0,     0,     0,   286,    34,     0,    35,     0,
    2433       36,   287,     0,    38,    39,   288,     0,     0,   289,   290,
    2434      291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    2435        0,     0,     0,     0,     0,     0,     0,   364,     0,     0,
    2436        0,     0,     0,     0,     0,     0,     0,     0,   295,     0,
    2437       44,     0,     0,     0,   509,   509,    45,    46,   297,   298,
    2438      299,   300,     0,     2,   207,     4,     5,     6,     7,     8,
    2439        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2440       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2441       27,    28,     0,     0,     0,     0,   283,   284,    31,   285,
    2442        0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
    2443       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2444       25,  -292,     0,     0,   414,   286,    34,     0,    35,     0,
    2445       36,   287,    31,    38,    39,   288,     0,     0,   289,   290,
    2446      291,   292,    41,    42,     0,   293,   294,     0,   414,   414,
    2447        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2448       34,     0,     0,     0,     0,     0,     0,     0,   295,     0,
    2449      343,  -292,     0,   414,     0,   757,   344,    46,   297,   298,
    2450      299,   300,     2,   207,     4,     5,     6,     7,     8,     9,
     2577      34,     0,    35,     0,    36,     0,     0,    38,    39,     0,
     2578       0,  -293,     2,   206,     4,     5,     6,     7,     8,     9,
    24512579      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    24522580      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2453       28,     0,     0,     0,     0,   283,   284,    31,   285,     8,
    2454        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2455       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2456       27,    28,     0,     0,   286,    34,     0,    35,    31,    36,
    2457      287,     0,    38,    39,   288,     0,     0,   289,   290,   291,
    2458      292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
    2459        0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2460        0,   111,     0,    38,    39,     0,     0,   295,     0,   962,
    2461        0,     0,    41,    42,   757,   344,    46,   297,   298,   299,
    2462      300,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2463       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2464       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2465        0,     0,     0,     0,   283,   284,    31,   285,     8,     9,
    2466       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2467       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2468       28,     0,     0,   286,    34,     0,    35,    31,    36,   287,
    2469        0,    38,    39,   288,     0,     0,   289,   290,   291,   292,
    2470       41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
    2471        0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
    2472        0,     0,    38,    39,     0,     0,   295,     0,   962,     0,
    2473        0,     0,     0,   757,    45,    46,   297,   298,   299,   300,
    2474        2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
    2475       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2476       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2477        0,     0,     0,   283,   284,    31,   285,     8,     9,    10,
    2478       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2479       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2480        0,     0,   286,    34,     0,    35,    31,    36,   287,     0,
    2481       38,    39,   288,     0,     0,   289,   290,   291,   292,    41,
    2482       42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
    2483        0,     0,     0,     0,    34,     0,     0,     0,     0,     0,
    2484        0,   208,    39,     0,     0,   295,     0,   343,     0,     0,
    2485        0,     0,     0,   344,    46,   297,   298,   299,   300,     2,
    2486      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2487       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2488       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2489        0,     0,   283,   284,    31,   285,     0,     0,     0,     0,
     2581      28,     0,     0,     0,    44,     0,     0,    31,     0,     0,
     2582      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
    24902583       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2584       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
     2585      37,     0,   207,    39,    40,     0,     0,     0,     0,     0,
     2586       0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
    24912587       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2492        0,   286,    34,     0,    35,     0,    36,   287,     0,   208,
    2493       39,   288,     0,     0,   289,   290,   291,   292,    41,    42,
    2494        0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
    2495        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2496        0,     0,     0,     0,   295,     0,   997,     0,     0,     0,
    2497        0,     0,   998,    46,   297,   298,   299,   300,     2,   207,
    2498        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2499       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2500       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2501        0,   283,   284,    31,   285,     0,     0,     0,     0,     0,
    2502        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2503        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2504      286,    34,     0,    35,     0,    36,   287,     0,    38,    39,
    2505      288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
    2506      293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
    2507        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2508        0,     0,     0,   295,     0,   962,     0,     0,     0,     0,
    2509        0,   344,    46,   297,   298,   299,   300,     2,   207,     4,
     2588       0,     0,     0,     0,     0,     0,     0,    43,     0,   208,
     2589       0,     0,     0,     0,     0,    45,    46,     2,   206,     4,
    25102590       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    25112591      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    25122592      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2513      283,   284,    31,   285,     0,     0,     0,     0,     0,     0,
     2593       0,     0,    31,     0,     0,     0,     0,     8,     9,    10,
     2594      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2595      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2596      34,     0,    35,     0,    36,     0,    31,    38,    39,     0,
     2597       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
     2598      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2599      22,    23,    24,    25,    34,     0,    26,    27,    28,     0,
     2600       0,    38,    39,  -400,   678,    31,     0,     0,     0,     0,
     2601      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
    25142602       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2515        0,     0,     0,     0,     0,     0,     0,     0,     0,   286,
    2516       34,     0,    35,     0,    36,   287,     0,   208,    39,   288,
    2517        0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
    2518      294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2603       0,     0,     0,    34,     0,    35,   635,    36,   338,     0,
     2604      38,    39,     0,     0,    45,    46,     0,     0,     0,     0,
    25192605       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2520        0,     0,   295,     0,   379,     0,     0,     0,     0,     0,
    2521       45,    46,   297,   298,   299,   300,  -515,     0,     0,     1,
    2522        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     2606       0,     0,  1351,     0,     0,     0,     0,     0,     0,     0,
     2607       0,     0,     0,     0,     0,     0,     0,   678,     0,     0,
     2608       0,     0,     0,    45,    46,     2,   206,     4,     5,     6,
     2609       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2610      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2611       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
     2612      31,     0,     0,     0,     8,     9,    10,    11,    12,    13,
     2613      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2614      24,    25,     0,     0,    26,    27,    28,     0,    34,     0,
     2615      35,     0,    36,    31,   685,    38,    39,     0,     0,     0,
     2616       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2617       0,     0,     0,     0,     0,     0,     0,  1353,     0,     0,
     2618       0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
     2619       0,     0,   678,     0,     0,     0,     0,     0,    45,    46,
     2620       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
    25232621      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2524       22,    23,    24,    25,     0,     0,    26,    27,    28,    29,
    2525        0,     0,    30,     0,     0,    31,    32,     0,     0,     0,
     2622      22,    23,    24,    25,     0,   686,    26,    27,    28,   687,
     2623       0,    45,    46,     0,     0,    31,     0,     0,     0,     0,
    25262624       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25272625       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2528       33,     0,     0,    34,     0,    35,     0,    36,    37,     0,
    2529       38,    39,    40,     0,     0,     0,     0,     0,     0,    41,
    2530       42,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2626       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
     2627     207,    39,     0,     2,   206,     4,     5,     6,     7,     8,
     2628       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2629      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2630      27,    28,     0,     0,     0,     0,     0,   270,    31,     0,
     2631       0,     0,     0,    45,    46,     0,     0,     0,     0,     0,
    25312632       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2532        0,     0,     0,     0,     0,    43,     0,    44,     0,     0,
    2533        0,     0,     0,    45,    46,     1,     2,     3,     4,     5,
    2534        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2535       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2536        0,     0,    26,    27,    28,    29,     0,     0,    30,     0,
    2537        0,    31,    32,     0,     0,     0,     0,     0,     0,     0,
    2538        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2539        0,     0,     0,     0,     0,     0,    33,     0,     0,    34,
    2540        0,    35,     0,    36,    37,     0,    38,    39,    40,     0,
    2541        0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
    2542        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2543        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2544        0,    43,     0,    44,     0,     0,     0,  -519,     0,    45,
    2545       46,     1,     2,     3,     4,     5,     6,     7,     8,     9,
    2546       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2547       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2548       28,    29,     0,     0,    30,     0,     0,    31,    32,     0,
    2549        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2550        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2551        0,     0,    33,     0,     0,    34,     0,    35,     0,    36,
    2552       37,     0,    38,    39,    40,     0,     0,     0,     0,     0,
    2553        0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
    2554        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2555        0,     0,     0,     0,     0,     0,     0,    43,     0,    44,
    2556        0,     0,     0,     0,     0,    45,    46,     1,     2,   207,
    2557        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2558       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2559       24,    25,     0,     0,    26,    27,    28,    29,     0,     0,
    2560       30,     0,     0,    31,     0,     0,     0,     0,     0,     0,
    2561        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2562        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2563        0,    34,     0,    35,     0,    36,     0,     0,    38,    39,
    2564        0,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2565       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2566       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2567        0,     0,     0,     0,     0,    44,    31,     0,     0,     0,
    2568        0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
    2569        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2570        0,     0,     0,     0,    34,     0,    35,     0,    36,    37,
    2571        0,   208,    39,    40,     0,     0,     0,     0,     0,     0,
    2572       41,    42,     0,     0,     0,     0,     0,     0,     0,     0,
    2573        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2574        0,     0,     0,     0,     0,     0,    43,     0,   209,     0,
    2575        0,     0,     0,     0,    45,    46,     2,   207,     4,     5,
     2633       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
     2634      36,     0,     0,    38,    39,     0,     2,   206,     4,     5,
    25762635       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    25772636      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    25782637       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
    2579        0,    31,     0,     0,     0,     0,     8,     9,    10,    11,
    2580       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2581       22,    23,    24,    25,     0,     0,    26,    27,    28,    34,
    2582        0,    35,     0,    36,     0,    31,    38,    39,     0,     2,
    2583      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2638     678,    31,     0,     0,     0,     0,    45,    46,     0,     0,
     2639       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2640       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2641       0,    35,     0,    36,     0,     0,    38,    39,     0,     2,
     2642     206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    25842643      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2585       23,    24,    25,    34,     0,    26,    27,    28,     0,     0,
    2586       38,    39,  -399,   677,    31,     0,     0,     0,     0,    45,
     2644      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2645       0,     0,     0,   593,    31,     0,     0,     0,     0,    45,
    25872646      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25882647       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2589        0,     0,    34,     0,    35,   634,    36,   338,     0,    38,
    2590       39,     0,     0,    45,    46,     0,     0,     0,     0,     0,
     2648       0,     0,    34,     0,    35,     0,    36,     0,     0,   207,
     2649      39,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2650      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2651       0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
     2652      31,   284,     0,     0,     0,     0,   208,     0,     0,     0,
     2653       0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
     2654       0,     0,     0,     0,     0,     0,     0,   285,    34,     0,
     2655       0,     0,     0,   286,     0,    38,    39,   287,     0,     0,
     2656     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
    25912657       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2592        0,  1350,     0,     0,     0,     0,     0,     0,     0,     0,
    2593        0,     0,     0,     0,     0,     0,   677,     0,     0,     0,
    2594        0,     0,    45,    46,     2,   207,     4,     5,     6,     7,
     2658       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2659     294,     0,   517,     0,     0,   171,     0,     0,    45,    46,
     2660     296,   297,   298,   299,     8,     9,    10,    11,    12,    13,
     2661      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2662      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2663       0,   282,   283,    31,   284,     8,     9,    10,    11,    12,
     2664      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2665      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2666     285,    34,     0,     0,    31,     0,   286,     0,    38,    39,
     2667     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
     2668     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
     2669       0,     0,    34,     0,     0,     0,     0,    37,     0,   336,
     2670     337,    40,     0,   294,   -36,   295,     0,     0,    41,    42,
     2671       0,    45,    46,   296,   297,   298,   299,     8,     9,    10,
     2672      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2673      21,    22,    23,    24,    25,     0,   338,    26,    27,    28,
     2674       0,     0,    45,    46,   282,   283,    31,   284,     8,     9,
     2675      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2676      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2677      28,     0,     0,   285,    34,     0,     0,    31,     0,   286,
     2678       0,    38,    39,   287,     0,     0,   288,   289,   290,   291,
     2679      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
     2680       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
     2681     110,     0,    38,    39,     0,     0,   294,     0,   295,     0,
     2682       0,    41,    42,     0,    45,    46,   296,   297,   298,   299,
     2683       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2684      18,    19,    20,    21,    22,    23,    24,    25,     0,    44,
     2685      26,    27,    28,     0,     0,    45,    46,   282,   283,    31,
     2686     284,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2687      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2688       0,    26,    27,    28,     0,     0,   285,    34,     0,     0,
     2689      31,   685,   286,     0,    38,    39,   287,     0,     0,   288,
     2690     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
     2691       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2692       0,     0,     0,     0,     0,    38,    39,     0,     0,   294,
     2693       0,   157,     0,     0,     0,     0,     0,    45,    46,   296,
     2694     297,   298,   299,     8,     9,    10,    11,    12,    13,    14,
     2695      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2696      25,     0,   686,    26,    27,    28,  1092,     0,    45,    46,
     2697     282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
     2698      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2699      24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
     2700      34,     0,     0,    31,   685,   286,     0,    38,    39,   287,
     2701       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     2702     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2703       0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
     2704       0,     0,   294,     0,   593,     0,     0,     0,     0,     0,
     2705      45,    46,   296,   297,   298,   299,     8,     9,    10,    11,
     2706      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2707      22,    23,    24,    25,     0,   686,    26,    27,    28,  1221,
     2708       0,    45,    46,   282,   283,    31,   284,     0,     0,     0,
     2709       0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
     2710      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2711      24,    25,   285,    34,    26,    27,    28,     0,   286,     0,
     2712      38,    39,   287,    31,     0,   288,   289,   290,   291,    41,
     2713      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
     2714       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2715       0,    34,     0,     0,     0,   294,     0,   379,    38,    39,
     2716       0,     0,     0,    45,    46,   296,   297,   298,   299,   467,
     2717       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
     2718      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2719      22,    23,    24,    25,     0,   257,    26,    27,    28,     0,
     2720       0,    45,    46,     0,     0,    31,     0,     0,     0,     8,
     2721       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2722      19,    20,    21,    22,    23,    24,    25,  -293,     0,    26,
     2723      27,    28,     0,    34,     0,    35,     0,    36,    31,     0,
     2724      38,    39,     0,     0,     0,     0,     0,     8,     9,    10,
     2725      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2726      21,    22,    23,    24,    25,     0,    34,    26,    27,    28,
     2727       0,    37,     0,   336,   337,    40,    31,  -293,     0,     0,
     2728      -3,     0,    41,    42,     0,     8,     9,    10,    11,    12,
     2729      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2730      23,    24,    25,  -293,    34,    26,    27,    28,     0,    37,
     2731     338,   336,   337,    40,    31,     0,    45,    46,     0,     0,
     2732      41,    42,     0,     8,     9,    10,    11,    12,    13,    14,
     2733      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2734      25,     0,    34,    26,    27,    28,   635,     0,   338,    38,
     2735      39,     0,    31,  -293,    45,    46,     8,     9,    10,    11,
     2736      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2737      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2738      34,     0,     0,     0,     0,    31,   338,    38,    39,     0,
     2739       0,     0,    45,    46,     8,     9,    10,    11,    12,    13,
     2740      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2741      24,    25,     0,    34,    26,    27,    28,     0,     0,     0,
     2742     207,    39,     0,    31,   157,     0,     0,     0,     0,     0,
     2743      45,    46,     8,     9,    10,    11,    12,    13,    14,    15,
     2744      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2745       0,    34,    26,    27,    28,     0,     0,   270,    38,    39,
     2746       0,    31,     0,    45,    46,     8,     9,    10,    11,    12,
     2747      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2748      23,    24,    25,     0,     0,    26,    27,    28,     0,    34,
     2749       0,     0,     0,     0,    31,   338,    38,    39,     0,     0,
     2750       0,    45,    46,     8,     9,    10,    11,    12,    13,    14,
     2751      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2752      25,     0,    34,    26,    27,    28,     0,     0,     0,    38,
     2753      39,     0,    31,   686,     0,     0,     0,     0,     0,    45,
     2754      46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2755      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2756      34,    26,    27,    28,     0,     0,   593,    38,    39,     0,
     2757      31,     0,    45,    46,     2,   206,     4,     5,     6,     7,
     2758       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2759      18,    19,    20,    21,    22,    23,    24,    25,    34,     0,
     2760      26,    27,    28,     0,    44,   207,    39,     0,     0,    31,
     2761      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
     2762       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2763       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
     2764       0,    36,     0,     0,    38,    39,     0,     0,    45,    46,
     2765     282,   283,     0,   284,  1042,     0,  1043,     0,     0,  1044,
     2766    1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,  1525,
     2767    1052,     0,     0,     0,  1053,  1054,     0,    33,     0,   285,
     2768    -413,     0,     0,     0,     0,  1055,     0,     0,     0,   287,
     2769       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     2770     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2771       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2772       0,     0,   294,     0,   379,     0,     0,   171,     0,     0,
     2773      45,    46,   296,   297,   298,   299,     0,     0,   282,   283,
     2774    1057,   284,  1042,     0,  1043,  -128,     0,  1044,  1045,  1046,
     2775    1047,  1048,  1049,  1050,  1051,     0,     0,     0,  1052,     0,
     2776       0,     0,  1053,  1054,     0,    33,     0,   285,     0,     0,
     2777       0,     0,     0,  1055,     0,     0,     0,   287,     0,     0,
     2778     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
     2779       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2780       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2781     294,     0,   379,     0,     0,   171,     0,     0,    45,    46,
     2782     296,   297,   298,   299,     0,     0,     0,     0,  1057,     0,
     2783       0,     0,     0,  -128,     2,   206,     4,     5,     6,     7,
    25952784       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    25962785      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    25972786      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
    2598        0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
    2599       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2600       25,     0,     0,    26,    27,    28,     0,    34,     0,    35,
    2601        0,    36,    31,   684,    38,    39,     0,     0,     0,     0,
     2787       0,   282,   283,     0,   284,  1042,     0,  1043,  1399,  1400,
     2788    1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,
     2789    1525,  1052,     0,     0,     0,  1053,  1054,    34,    33,    35,
     2790     285,    36,     0,     0,    38,    39,  1055,     0,     0,     0,
     2791     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
     2792     292,   293,     0,     0,     0,     0,  1312,     0,     0,     0,
    26022793       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2603        0,     0,     0,     0,     0,     0,  1352,     0,     0,     0,
    2604       34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
    2605        0,   677,     0,     0,     0,     0,     0,    45,    46,     2,
    2606      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2607       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2608       23,    24,    25,     0,   685,    26,    27,    28,  1091,     0,
    2609       45,    46,     0,     0,    31,     0,     0,     0,     0,     0,
     2794       0,     0,     0,   294,     0,   379,     0,     0,   171,     0,
     2795       0,    45,    46,   296,   297,   298,   299,     0,     0,   282,
     2796     283,  1057,   284,  1042,     0,  1043,  1399,  1400,  1044,  1045,
     2797    1046,  1047,  1048,  1049,  1050,  1051,     0,     0,     0,  1052,
     2798       0,     0,     0,  1053,  1054,     0,    33,     0,   285,     0,
     2799       0,     0,     0,     0,  1055,     0,     0,     0,   287,     0,
     2800       0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
    26102801       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26112802       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2612        0,     0,    34,     0,    35,     0,    36,     0,     0,   208,
    2613       39,     0,     2,   207,     4,     5,     6,     7,     8,     9,
    2614       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2615       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2616       28,     0,     0,     0,     0,     0,   271,    31,     0,     0,
    2617        0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
    2618        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2619        0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
    2620        0,     0,    38,    39,     0,     2,   207,     4,     5,     6,
     2803       0,   294,     0,   379,     0,     0,   171,     0,     0,    45,
     2804      46,   296,   297,   298,   299,     0,     0,   282,   283,  1057,
     2805     284,  1042,     0,  1043,     0,     0,  1044,  1045,  1046,  1047,
     2806    1048,  1049,  1050,  1051,     0,     0,     0,  1052,     0,     0,
     2807       0,  1053,  1054,     0,    33,     0,   285,     0,     0,     0,
     2808       0,     0,  1055,     0,     0,     0,   287,     0,     0,   288,
     2809     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
     2810       0,     0,     0,     0,   282,   283,     0,   284,     0,     0,
     2811       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
     2812       0,   379,     0,     0,   171,     0,     0,    45,    46,   296,
     2813     297,   298,   299,   285,     0,     0,     0,  1057,     0,   286,
     2814       0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
     2815      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
     2816       0,   282,   283,     0,   284,     0,     0,     0,     0,     0,
     2817       0,     0,     0,     0,     0,     0,   294,     0,   379,     0,
     2818       0,   972,     0,     0,    45,    46,   296,   297,   298,   299,
     2819     285,     0,     0,     0,     0,     0,   286,     0,     0,     0,
     2820     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
     2821     292,   293,     0,     0,     0,     0,     0,     0,   282,   283,
     2822       0,   284,     0,     0,     0,     0,     0,     0,     0,     0,
     2823       0,     0,     0,   294,     0,   379,     0,   282,   283,     0,
     2824     284,    45,    46,   296,   297,   298,   299,   285,     0,     0,
     2825       0,     0,     0,   286,     0,     0,     0,   287,     0,     0,
     2826     288,   289,   290,   291,    41,    42,   285,   292,   293,     0,
     2827       0,     0,   286,     0,     0,     0,   287,     0,     0,   288,
     2828     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
     2829     294,     0,   379,     0,   282,   283,     0,   284,   709,    46,
     2830     296,   297,   298,   299,     0,     0,     0,     0,     0,   294,
     2831       0,   379,     0,   282,   283,     0,   284,   344,    46,   296,
     2832     297,   298,   299,   285,     0,     0,     0,     0,     0,   286,
     2833       0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
     2834      41,    42,   285,   292,   293,     0,     0,     0,   286,     0,
     2835       0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
     2836      42,     0,   292,   293,     0,     0,   506,     0,     0,     0,
     2837     282,   283,     0,   284,    45,    46,   296,   297,   298,   299,
     2838       0,     0,     0,     0,     0,   294,     0,     0,     0,   282,
     2839     283,     0,   284,    45,    46,   296,   297,   298,   299,   285,
     2840       0,     0,     0,     0,     0,   286,     0,     0,     0,   287,
     2841       0,     0,   288,   289,   290,   291,    41,    42,   285,   292,
     2842     293,     0,     0,     0,   286,     0,     0,     0,   287,     0,
     2843       0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
     2844       0,     0,   511,     0,     0,     0,     0,     0,     0,     0,
     2845      45,    46,   296,   297,   298,   299,     0,     0,     0,     0,
     2846       0,   514,     0,     0,     0,     0,     0,     0,     0,    45,
     2847      46,   296,   297,   298,   299,     2,   206,     4,     5,     6,
    26212848       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    26222849      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2623        0,    26,    27,    28,     0,     0,     0,     0,     0,   677,
    2624       31,     0,     0,     0,     0,    45,    46,     0,     0,     0,
     2850       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2851      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26252852       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26262853       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2627       35,     0,    36,     0,     0,    38,    39,     0,     2,   207,
    2628        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2629       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2630       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2631        0,     0,   592,    31,     0,     0,     0,     0,    45,    46,
    2632        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2633        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2634        0,    34,     0,    35,     0,    36,     0,     0,   208,    39,
    2635        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2636       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2637       26,    27,    28,     0,     0,     0,     0,   283,   284,    31,
    2638      285,     0,     0,     0,     0,   209,     0,     0,     0,     0,
    2639        0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
    2640        0,     0,     0,     0,     0,     0,   286,    34,     0,     0,
    2641        0,     0,   287,     0,    38,    39,   288,     0,     0,   289,
    2642      290,   291,   292,    41,    42,     0,   293,   294,     0,     0,
    2643        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2644        0,     0,     0,     0,     0,     0,     0,     0,     0,   295,
    2645        0,   517,     0,     0,   172,     0,     0,    45,    46,   297,
    2646      298,   299,   300,     8,     9,    10,    11,    12,    13,    14,
     2854      35,     0,    36,    37,     0,   174,   175,    40,     0,     0,
     2855       0,     0,     0,     0,    41,    42,   205,     2,   206,     4,
     2856       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    26472857      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    26482858      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2649      283,   284,    31,   285,     8,     9,    10,    11,    12,    13,
    2650       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2651       24,    25,     0,     0,    26,    27,    28,     0,     0,   286,
    2652       34,     0,     0,    31,     0,   287,     0,    38,    39,   288,
    2653        0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
    2654      294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2655        0,    34,     0,     0,     0,     0,    37,     0,   336,   337,
    2656       40,     0,   295,   -35,   296,     0,     0,    41,    42,     0,
    2657       45,    46,   297,   298,   299,   300,     8,     9,    10,    11,
    2658       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2659       22,    23,    24,    25,     0,   338,    26,    27,    28,     0,
    2660        0,    45,    46,   283,   284,    31,   285,     8,     9,    10,
    2661       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2662       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2663        0,     0,   286,    34,     0,     0,    31,     0,   287,     0,
    2664       38,    39,   288,     0,     0,   289,   290,   291,   292,    41,
    2665       42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
    2666        0,     0,     0,     0,    34,     0,     0,     0,     0,   111,
    2667        0,    38,    39,     0,     0,   295,     0,   296,     0,     0,
    2668       41,    42,     0,    45,    46,   297,   298,   299,   300,     8,
    2669        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2670       19,    20,    21,    22,    23,    24,    25,     0,    44,    26,
    2671       27,    28,     0,     0,    45,    46,   283,   284,    31,   285,
    2672        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2673       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2674       26,    27,    28,     0,     0,   286,    34,     0,     0,    31,
    2675      684,   287,     0,    38,    39,   288,     0,     0,   289,   290,
    2676      291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    2677        0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
    2678        0,     0,     0,     0,    38,    39,     0,     0,   295,     0,
    2679      158,     0,     0,     0,     0,     0,    45,    46,   297,   298,
    2680      299,   300,     8,     9,    10,    11,    12,    13,    14,    15,
    2681       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2682        0,   685,    26,    27,    28,  1220,     0,    45,    46,   283,
    2683      284,    31,   285,     8,     9,    10,    11,    12,    13,    14,
    2684       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2685       25,     0,     0,    26,    27,    28,     0,     0,   286,    34,
    2686        0,     0,    31,     0,   287,     0,    38,    39,   288,     0,
    2687        0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
    2688        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2689       34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
    2690        0,   295,     0,   592,     0,     0,     0,     0,     0,    45,
    2691       46,   297,   298,   299,   300,     8,     9,    10,    11,    12,
    2692       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2693       23,    24,    25,     0,   258,    26,    27,    28,     0,     0,
    2694       45,    46,   283,   284,    31,   285,     0,     0,     0,     0,
    2695        0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
    2696       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2697       25,   286,    34,    26,    27,    28,     0,   287,     0,    38,
    2698       39,   288,    31,     0,   289,   290,   291,   292,    41,    42,
    2699        0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
    2700        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2701       34,     0,     0,     0,   295,     0,   379,    38,    39,     0,
    2702        0,     0,    45,    46,   297,   298,   299,   300,   467,     2,
    2703      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2704       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2705       23,    24,    25,     0,   158,    26,    27,    28,     0,     0,
    2706       45,    46,     0,     0,    31,     0,     0,     0,     8,     9,
    2707       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2708       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2709       28,     0,    34,     0,    35,     0,    36,    31,     0,    38,
    2710       39,     0,     0,     0,     0,     0,     8,     9,    10,    11,
    2711       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2712       22,    23,    24,    25,     0,    34,    26,    27,    28,     0,
    2713       37,     0,    38,    39,    40,    31,     0,     0,     0,    -3,
    2714        0,    41,    42,     0,     8,     9,    10,    11,    12,    13,
    2715       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2716       24,    25,     0,    34,    26,    27,    28,    43,    37,   158,
    2717       38,    39,    40,    31,     0,    45,    46,     0,     0,    41,
    2718       42,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2719       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2720        0,    34,    26,    27,    28,    43,    37,    44,   208,    39,
    2721       40,    31,     0,    45,    46,     0,     0,    41,    42,     0,
    2722        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2723       18,    19,    20,    21,    22,    23,    24,    25,  -291,    34,
    2724       26,    27,    28,    43,    37,   271,   336,   337,    40,    31,
    2725        0,    45,    46,     0,     0,    41,    42,     0,     8,     9,
    2726       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2727       20,    21,    22,    23,    24,    25,  -291,    34,    26,    27,
    2728       28,   634,     0,   338,    38,    39,     0,    31,  -291,    45,
    2729       46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2730       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2731        0,    26,    27,    28,     0,    34,     0,     0,     0,   634,
    2732       31,   338,    38,    39,     0,     0,  -291,    45,    46,     8,
    2733        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2734       19,    20,    21,    22,    23,    24,    25,     0,    34,    26,
    2735       27,    28,     0,     0,     0,   208,    39,     0,    31,   338,
    2736        0,     0,     0,     0,     0,    45,    46,     8,     9,    10,
    2737       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2738       21,    22,    23,    24,    25,     0,    34,    26,    27,    28,
    2739        0,     0,   271,    38,    39,     0,    31,     0,    45,    46,
    2740        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2741       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2742       26,    27,    28,     0,    34,     0,     0,     0,     0,    31,
    2743      338,    38,    39,     0,     0,     0,    45,    46,     8,     9,
    2744       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2745       20,    21,    22,    23,    24,    25,     0,    34,    26,    27,
    2746       28,     0,     0,     0,    38,    39,     0,    31,   685,     0,
    2747        0,     0,     0,     0,    45,    46,     0,     0,     0,     0,
    2748        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2749        0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
    2750        0,   592,    38,    39,     0,     0,     0,    45,    46,     2,
    2751      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2752       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2753       23,    24,    25,     0,     0,    26,    27,    28,     0,    44,
    2754        0,     0,     0,     0,    31,    45,    46,     0,     0,     0,
    2755        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2756        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2757        0,     0,    34,     0,    35,     0,    36,     0,     0,    38,
    2758       39,   283,   284,     0,   285,  1041,     0,  1042,     0,     0,
    2759     1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,     0,
    2760     1524,  1051,     0,     0,     0,  1052,  1053,     0,    33,     0,
    2761      286,     0,     0,     0,     0,  -412,  1054,     0,     0,     0,
    2762      288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
    2763      293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
    2764        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2765        0,     0,     0,   295,     0,   379,     0,     0,   172,     0,
    2766        0,    45,    46,   297,   298,   299,   300,     0,     0,   283,
    2767      284,  1056,   285,  1041,     0,  1042,  -126,     0,  1043,  1044,
    2768     1045,  1046,  1047,  1048,  1049,  1050,     0,     0,     0,  1051,
    2769        0,     0,     0,  1052,  1053,     0,    33,     0,   286,     0,
    2770        0,     0,     0,     0,  1054,     0,     0,     0,   288,     0,
    2771        0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
    2772        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2773        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2774        0,   295,     0,   379,     0,     0,   172,     0,     0,    45,
    2775       46,   297,   298,   299,   300,     0,     0,     0,     0,  1056,
    2776        0,     0,     0,     0,  -126,     2,   207,     4,     5,     6,
    2777        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2778       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2779        0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
    2780       31,     0,   283,   284,     0,   285,  1041,     0,  1042,  1398,
    2781     1399,  1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,
    2782        0,  1524,  1051,     0,     0,     0,  1052,  1053,    34,    33,
    2783       35,   286,    36,     0,     0,    38,    39,  1054,     0,     0,
    2784        0,   288,     0,     0,   289,   290,   291,   292,    41,    42,
    2785        0,   293,   294,     0,     0,     0,     0,  1311,     0,     0,
    2786        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2787        0,     0,     0,     0,   295,     0,   379,     0,     0,   172,
    2788        0,     0,    45,    46,   297,   298,   299,   300,     0,     0,
    2789      283,   284,  1056,   285,  1041,     0,  1042,  1398,  1399,  1043,
    2790     1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,     0,     0,
    2791     1051,     0,     0,     0,  1052,  1053,     0,    33,     0,   286,
    2792        0,     0,     0,     0,     0,  1054,     0,     0,     0,   288,
    2793        0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
    2794      294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2795        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2796        0,     0,   295,     0,   379,     0,     0,   172,     0,     0,
    2797       45,    46,   297,   298,   299,   300,     0,     0,   283,   284,
    2798     1056,   285,  1041,     0,  1042,     0,     0,  1043,  1044,  1045,
    2799     1046,  1047,  1048,  1049,  1050,     0,     0,     0,  1051,     0,
    2800        0,     0,  1052,  1053,     0,    33,     0,   286,     0,     0,
    2801        0,     0,     0,  1054,     0,     0,     0,   288,     0,     0,
    2802      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    2803        0,     0,     0,     0,     0,   283,   284,     0,   285,     0,
    2804        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2805      295,     0,   379,     0,     0,   172,     0,     0,    45,    46,
    2806      297,   298,   299,   300,   286,     0,     0,     0,  1056,     0,
    2807      640,     0,   140,   141,   288,     0,     0,   289,   290,   291,
    2808      292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
    2809        0,     0,   283,   284,     0,   285,     0,     0,     0,     0,
    2810        0,     0,     0,     0,     0,     0,     0,   295,     0,   641,
    2811        0,   642,   380,     0,     0,    45,    46,   297,   298,   299,
    2812      300,   286,     0,     0,     0,     0,     0,   287,     0,     0,
    2813        0,   288,     0,     0,   289,   290,   291,   292,    41,    42,
    2814        0,   293,   294,     0,     0,     0,     0,     0,     0,   283,
    2815      284,     0,   285,     0,     0,     0,     0,     0,     0,     0,
    2816        0,     0,     0,     0,   295,     0,   379,     0,   283,   284,
    2817        0,   285,   708,    46,   297,   298,   299,   300,   286,     0,
    2818        0,     0,     0,     0,   287,     0,     0,     0,   288,     0,
    2819        0,   289,   290,   291,   292,    41,    42,   286,   293,   294,
    2820        0,     0,     0,   287,     0,     0,     0,   288,     0,     0,
    2821      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    2822        0,   295,     0,   379,     0,   283,   284,     0,   285,   344,
    2823       46,   297,   298,   299,   300,     0,     0,     0,     0,     0,
    2824      506,     0,     0,     0,   283,   284,     0,   285,    45,    46,
    2825      297,   298,   299,   300,   286,     0,     0,     0,     0,     0,
    2826      287,     0,     0,     0,   288,     0,     0,   289,   290,   291,
    2827      292,    41,    42,   286,   293,   294,     0,     0,     0,   287,
    2828        0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
    2829       41,    42,     0,   293,   294,     0,     0,   295,     0,     0,
    2830        0,   283,   284,     0,   285,    45,    46,   297,   298,   299,
    2831      300,     0,     0,     0,     0,     0,   511,     0,     0,     0,
    2832        0,     0,     0,     0,    45,    46,   297,   298,   299,   300,
    2833      286,     0,     0,     0,     0,     0,   287,     0,     0,     0,
    2834      288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
    2835      293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
    2836        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2837        0,     0,     0,   514,     0,     0,     0,     0,     0,     0,
    2838        0,    45,    46,   297,   298,   299,   300,     2,   207,     4,
    2839        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2840       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2841       25,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28422859       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
    28432860       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28442861       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2845       34,     0,    35,     0,    36,    37,     0,   175,   176,    40,
    2846        0,     0,     0,     0,     0,     0,    41,    42,   206,     2,
    2847      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2848       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2849       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2850        0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
     2862      34,     0,    35,     0,    36,     0,     0,   207,    39,   467,
     2863       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
     2864      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2865      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2866       0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
    28512867       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28522868       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2853        0,     0,    34,     0,    35,     0,    36,     0,     0,   208,
    2854       39,   467,     2,   207,     4,     5,     6,     7,     8,     9,
     2869       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
     2870      38,    39,     2,   206,     4,     5,     6,     7,     8,     9,
    28552871      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    28562872      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     
    28592875       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28602876       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
    2861        0,     0,    38,    39,     2,   207,     4,     5,     6,     7,
    2862        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2863       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2864       26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
    2865        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2866       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2867        0,    26,    27,    28,   485,   486,   487,    34,     0,    35,
    2868       31,    36,     0,     0,   208,    39,     0,     0,     0,     0,
    2869        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2870        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2871        0,     0,     0,     0,     0,    38,    39
     2877       0,     0,   207,    39
    28722878};
    28732879
    28742880#define yypact_value_is_default(yystate) \
    2875   ((yystate) == (-1310))
     2881  ((yystate) == (-1323))
    28762882
    28772883#define yytable_value_is_error(yytable_value) \
     
    28802886static const yytype_int16 yycheck[] =
    28812887{
    2882        0,     1,   240,   205,   186,   186,   117,     0,    43,   534,
    2883       43,    43,   600,   756,   646,     1,   749,   187,   521,     0,
    2884      186,   186,   186,   157,   169,   170,   749,   749,   186,   106,
    2885      220,   602,    32,   186,   345,   349,     0,   188,   280,    32,
    2886      157,   513,   600,    43,   874,    43,   603,   874,   349,    49,
    2887      620,    32,   609,   733,     0,   983,    49,   600,   492,   571,
    2888        0,     1,   496,    63,   602,   187,    66,    32,    32,    69,
    2889       63,   692,    43,    66,    64,     0,    69,  1040,    39,   156,
    2890        1,   600,    57,    69,   266,   266,    32,    43,    51,  1398,
    2891      364,   202,    32,    63,   368,  1321,   418,   267,    82,   600,
    2892      266,   266,   266,  1052,  1053,  1033,   106,    32,   266,   600,
    2893      600,   262,   263,   266,   114,    72,   438,   117,   118,   109,
    2894      282,    72,  1402,    96,   446,    39,    66,   695,    39,    69,
    2895       28,   109,   107,    39,    39,   110,    95,    39,    82,   128,
    2896       39,    66,   131,  1021,    82,   267,   109,   147,   148,   122,
    2897      111,   186,    11,   186,   186,   148,   156,   157,     0,   295,
    2898     1469,   161,   132,  1020,  1021,   109,    44,    45,   161,     0,
    2899      129,   482,   905,   109,   488,   132,     0,     1,    72,  1128,
    2900       78,   132,   905,   905,   687,    49,   186,   187,   186,   109,
    2901       32,   257,   130,  1419,   187,   109,   109,   111,   109,   718,
    2902      111,    32,   202,   109,   109,   111,   111,   109,    32,   111,
    2903      210,   131,    43,  1040,    72,   186,  1496,   210,    49,    82,
    2904      410,  1501,   222,   117,   812,    83,    84,   718,   718,   222,
    2905      186,   266,    63,   266,   266,    66,   406,   115,    69,  1452,
    2906      240,  1521,    85,   986,   219,    69,   112,   110,  1528,    82,
    2907      114,   109,   252,   824,   812,   116,   107,   814,   114,   252,
    2908      260,    44,    45,     3,   341,   265,   266,   267,   490,   812,
    2909      113,   252,   272,  1486,   267,  1488,   257,    82,   111,   900,
    2910      131,   793,   222,   147,   406,   396,   824,   252,   252,    49,
    2911      426,   427,   924,   812,   371,   295,     3,   222,   273,   433,
    2912       96,   602,  1501,   116,   109,   280,   252,   307,     0,   620,
    2913      480,   812,   252,   424,   625,   589,   433,   148,   110,   430,
    2914      112,   812,   812,   323,   116,  1288,   122,   252,   328,  1528,
    2915      161,   114,   253,    44,    45,   328,     0,    82,   906,   131,
    2916      132,   341,   504,   110,   932,   345,   210,  1225,   482,   349,
    2917      350,   109,   418,   111,   114,   186,   187,   631,   480,   681,
    2918      109,   116,   933,   130,   364,   110,    90,    91,   368,  1049,
    2919      506,   371,   438,   348,   932,   511,   240,   132,   514,   210,
    2920      446,  1211,   604,   951,  1211,   130,   608,   426,   427,   932,
    2921      365,   222,   526,    72,   369,   112,   396,  1275,   116,   116,
    2922      285,   125,   126,   114,    83,    84,   406,   629,   272,   526,
    2923      252,   633,   130,   406,  1472,   257,   110,  1274,  1275,    55,
    2924     1478,   252,   307,   308,   424,   350,   426,   427,   252,   999,
    2925      430,   567,   111,   433,   745,   266,   130,   418,   112,   116,
    2926     1498,   110,   116,   307,   111,  1503,   113,   116,   525,  1501,
    2927      210,  1008,  1009,   130,   454,   494,   590,   438,  1386,  1387,
    2928      345,  1288,    98,   130,   967,   446,   635,   636,   131,  1521,
    2929      229,   112,   472,   590,   513,   116,  1528,   116,  1441,   110,
    2930      480,   345,   482,   652,   484,  1448,   116,   480,   488,   248,
    2931      732,   484,   110,   132,   494,  1127,   381,   328,   116,   116,
    2932      130,   482,   647,   484,   666,   656,   506,   941,   508,   981,
    2933      824,   511,   272,   513,   514,   132,  1394,   687,   349,   109,
    2934      484,   521,   109,   824,   116,   525,   526,   109,  1099,   803,
    2935      109,   111,   111,   113,   808,   295,  1499,  1394,   484,   578,
    2936      132,   710,   109,   654,   484,   116,   467,   307,   473,  1117,
    2937      130,     4,     5,     6,     7,     8,     9,   116,   194,   484,
    2938      110,   132,   426,   427,   116,   687,   116,   116,   116,   116,
    2939      570,   571,   116,   132,   736,   406,   418,   109,   578,   116,
    2940      132,   217,  1085,   132,   132,   132,   109,  1090,   132,   589,
    2941      590,   227,   117,   904,   594,   132,   438,   116,   123,   124,
    2942      600,   116,   602,   109,   446,   111,   110,   528,  1288,  1177,
    2943     1178,   745,   533,   132,  1441,   681,    69,   132,    71,   110,
    2944      620,  1448,   896,   937,   846,   625,    72,   627,    74,    75,
    2945      494,   631,   801,   110,   634,   635,   636,    83,    84,    72,
    2946      110,   707,   484,   112,   590,   110,   621,   116,   112,   513,
    2947       83,    84,   652,   484,   654,   109,   910,   488,   912,   295,
    2948      484,   582,   637,   109,   549,   550,   551,   744,   114,   112,
    2949      109,   861,  1499,   116,    72,   809,   651,   115,    72,   132,
    2950       74,    75,  1362,   109,   684,    83,    84,   687,   999,    83,
    2951       84,   881,   809,   109,   454,   111,    72,   622,    74,    75,
    2952      681,    85,    86,    87,   109,   943,   111,    83,    84,   132,
    2953      710,   711,   712,   111,   578,   109,   938,  1115,   718,   719,
    2954      114,  1119,   867,   905,   905,   109,   707,   111,    64,   113,
    2955      114,   109,   653,   111,   655,   112,   110,   907,   114,   905,
    2956      905,   905,   116,   109,   744,   745,   506,   905,   508,   749,
    2957      750,   511,   905,   109,   514,   111,   620,   732,   109,    70,
    2958      111,   625,   109,    74,   745,  1445,    77,  1447,    79,   600,
    2959      904,   602,  1505,   698,   132,    86,   556,   557,   558,   559,
    2960     1305,     3,  1505,  1505,   705,   907,   114,   712,    10,    11,
    2961       12,    13,    14,   793,     4,     5,     6,     7,     8,     9,
    2962      110,   801,   109,   803,   111,   805,   116,   443,   808,   809,
    2963     1012,   114,   812,   109,  1382,   111,    72,    39,    74,    75,
    2964     1500,   117,   118,    33,   824,    72,   903,    83,    84,   114,
    2965     1398,   132,   110,   469,   132,  1146,    83,    84,   116,   681,
    2966       10,    11,    12,    13,    14,    67,    72,   110,  1122,   109,
    2967       76,   109,   110,   116,    82,   111,   687,    83,    84,    69,
    2968      110,    71,    49,   809,   111,   707,   116,   110,   109,    39,
    2969      506,   756,   109,   116,   874,   511,    63,   112,   514,    66,
    2970      805,    82,    69,   109,   118,   111,  1020,   718,   719,   110,
    2971     1035,   117,   118,   874,   127,   116,   896,    67,    88,    89,
    2972     1468,  1469,   213,   903,   904,   905,    72,   907,     4,     5,
    2973        6,     7,     8,     9,  1225,  1085,   110,    83,    84,   919,
    2974     1090,   128,   116,   904,   684,   110,    94,   109,   874,   111,
    2975       30,   116,   932,   933,   874,   117,   118,   937,   131,   109,
    2976       72,   111,   942,   943,    76,   111,   111,   117,   118,   874,
    2977      109,    83,    84,  1115,   110,   109,   942,  1119,  1120,   112,
    2978      116,   148,   109,  1085,   111,     0,     1,   967,  1090,   112,
    2979      117,   118,   110,    69,   161,    71,   110,   109,  1481,   119,
    2980      120,   812,   116,    83,    84,   117,   118,   112,    10,    11,
    2981       12,    13,    14,   824,    29,    30,  1107,    32,   110,   999,
    2982      187,   110,   942,   110,   116,    92,    93,    72,    43,    74,
    2983       75,    76,  1146,    72,    49,    74,    75,    39,    83,    84,
    2984     1020,  1021,    57,   210,    83,    84,   110,  1530,    63,   115,
    2985      116,    66,   874,   669,    69,   222,   957,   109,   110,   111,
    2986     1040,   352,   678,   354,   109,    67,   682,   110,    83,    84,
    2987      874,   109,   117,   118,  1190,  1191,    72,  1193,   979,  1040,
    2988       76,   110,   983,   110,  1200,   110,  1202,    83,    84,   116,
    2989      112,   116,   107,  1235,   905,   110,   907,  1002,   110,   943,
    2990     1080,   111,   117,   114,   116,  1085,   110,   109,   116,   111,
    2991     1090,   131,   116,   109,  1040,   117,   118,   110,   111,  1099,
    2992     1040,   117,   118,   506,    66,   508,   937,  1107,   511,    58,
    2993       59,   514,  1033,   148,   999,  1040,   115,   116,   942,    44,
    2994       45,   156,  1122,   552,   553,    72,   161,    74,    75,    76,
    2995     1207,   442,   109,   110,   111,   999,    83,    84,   560,   561,
    2996     1274,   328,   554,   555,   244,   114,  1146,   114,   109,   110,
    2997      111,   186,   187,   109,   112,  1040,   118,   110,   110,   919,
    2998     1322,   112,   109,    29,  1326,  1146,   112,   202,   112,     3,
    2999      117,   118,   109,   110,   111,   210,    10,    11,    12,    13,
    3000       14,    58,    59,    60,   219,   112,   116,   222,  1188,  1189,
    3001     1248,  1249,  1250,   110,   229,   130,   130,   130,  1040,   161,
    3002      110,   112,   114,  1189,   112,    39,   115,  1207,   110,   244,
    3003      115,  1211,   115,   248,   109,   116,  1040,   252,   253,   406,
    3004        1,   110,  1358,   110,    72,  1225,    74,    75,    76,  1229,
    3005     1211,   266,   267,    67,   132,    83,    84,   116,   273,   110,
    3006      110,   110,   110,  1229,  1225,   280,   110,   110,  1188,  1189,
    3007      110,   116,   110,   110,  1085,   110,   110,   110,   110,  1090,
    3008      222,  1423,   898,  1188,   110,  1211,   110,  1378,    49,   110,
    3009      110,  1211,   115,   874,  1274,  1275,    29,  1515,   110,   130,
    3010      380,   131,   112,  1283,   112,   116,  1211,   110,  1288,  1229,
    3011      110,   116,   110,   328,   130,   116,   112,   114,   260,   110,
    3012      110,   464,   110,   265,   116,   112,   110,  1288,   110,   110,
    3013      116,   116,   112,   348,   349,    10,    11,    12,    13,    14,
    3014     1080,  1321,   109,  1505,  1505,   106,   109,  1248,  1249,  1250,
    3015      365,   109,   109,   114,   369,  1321,  1506,   109,   130,  1505,
    3016     1505,  1505,  1288,  1283,    39,   380,     3,  1505,  1288,   112,
    3017      132,   115,  1505,    10,    11,    12,    13,    14,  1283,   110,
    3018     1530,   396,   110,  1288,   110,  1189,   147,   128,   115,  1211,
    3019     1481,   406,    67,   115,   464,   156,   114,   695,  1378,   112,
    3020      132,  1321,    39,   110,  1506,   116,   112,  1211,   350,   424,
    3021      112,   491,   110,   493,  1394,   430,   110,   432,   110,   112,
    3022      110,   112,  1377,   112,   112,  1229,   112,   112,  1530,    72,
    3023       67,    74,    75,    76,   109,  1051,   111,    47,   115,  1419,
    3024       83,    84,   117,   118,    72,   206,    74,    75,    76,   210,
    3025      132,   132,   467,  1419,   132,    83,    84,   472,   132,   132,
    3026      110,  1441,  1043,   115,   130,   480,  1288,   115,  1448,   484,
    3027     1450,   110,  1452,   488,   112,   109,   491,   112,   493,   240,
    3028     1441,   109,   112,   112,  1288,  1386,  1387,  1448,   786,   431,
    3029     1505,   112,  1505,  1505,   112,   110,   110,    60,   109,  1419,
    3030      112,  1481,    66,   112,   109,   132,  1486,   110,  1488,   110,
    3031      114,   272,    76,   528,   275,  1441,   112,  1321,   533,  1499,
    3032      112,  1441,  1448,  1424,   110,  1505,  1506,   670,  1448,   112,
    3033      110,   473,   109,  1506,   295,  1515,  1441,    96,  1499,    96,
    3034       85,    86,    87,  1448,   109,   132,   307,   115,   110,    72,
    3035     1530,    74,    75,    76,   118,   110,   110,  1530,   110,    42,
    3036       83,    84,   642,   116,   109,   863,   111,   582,   113,   114,
    3037      130,   132,   110,  1499,   589,   110,   132,    96,    96,  1499,
    3038      341,  1482,   132,   110,   345,   600,   109,   602,   132,   110,
    3039     1491,   132,   112,   110,  1499,   110,   132,   161,   112,   115,
    3040      670,   109,   132,   364,   115,   115,   621,   368,   906,   110,
    3041      371,   691,   110,   693,   110,  1419,   110,   697,  1056,  1441,
    3042      132,   564,   637,   562,   977,   565,  1448,   642,   563,   566,
    3043     1211,  1211,  1469,  1364,  1540,  1298,   651,  1441,   653,   654,
    3044      655,  1120,  1326,  1448,  1448,   912,   789,    66,   684,  1071,
    3045      684,  1090,   594,   951,   920,   697,   799,   582,   222,   971,
    3046      867,   648,   722,  1229,    83,   426,   427,   939,   570,   484,
    3047      813,  1515,   687,   732,   570,   570,   691,  1499,   693,    -1,
    3048      622,  1297,   697,    -1,    -1,   627,    -1,    -1,   986,    -1,
    3049      705,    -1,    -1,   454,  1505,  1499,   260,    -1,    -1,   118,
    3050       -1,   265,    -1,   718,   719,    -1,   467,    -1,    -1,    -1,
    3051     1450,    -1,  1452,    -1,    -1,    -1,   280,   732,    -1,   789,
    3052       -1,    -1,    -1,  1304,    -1,    -1,    -1,    -1,    -1,   799,
    3053       -1,   492,    -1,   494,    -1,   496,    -1,    -1,    -1,  1037,
    3054       -1,    -1,   161,   813,    -1,   506,  1486,   508,  1488,    -1,
    3055      511,    -1,   513,   514,    -1,    -1,   698,    57,    -1,    10,
    3056       11,    12,    13,    14,   525,    -1,    -1,    -1,    -1,    72,
    3057      712,    74,    75,    76,    -1,  1356,    -1,    -1,  1359,    -1,
    3058       83,    84,    -1,    -1,    -1,    -1,   350,   867,    39,    -1,
    3059       -1,    -1,    -1,   873,    -1,    -1,    -1,   812,    -1,    -1,
    3060       -1,    -1,    -1,   222,    -1,    -1,   109,   107,   111,   824,
    3061      110,    -1,    -1,    -1,   117,   118,    67,   578,    -1,  1117,
    3062       -1,  1402,    -1,    -1,    -1,    -1,  1407,   130,   589,    -1,
    3063       -1,    -1,    -1,  1449,   914,  1451,    -1,    -1,    -1,    -1,
    3064       -1,   260,    -1,    -1,    -1,    -1,   265,    -1,    -1,    -1,
    3065       -1,    -1,   867,    -1,  1435,    -1,   156,   670,   873,   620,
    3066       -1,    -1,    -1,   805,   625,    -1,    -1,   431,    -1,  1485,
    3067      631,  1487,     0,     1,  1017,  1018,    -1,    -1,    -1,  1177,
    3068     1178,   896,    -1,    -1,   448,    -1,    -1,    -1,    -1,    -1,
    3069      905,   971,   907,    -1,    -1,    -1,    -1,    -1,    -1,   914,
    3070       -1,    -1,    -1,    -1,    32,    -1,    -1,    -1,    -1,   473,
    3071       -1,    -1,    -1,  1529,    -1,  1531,    -1,    -1,    -1,   219,
    3072       -1,    49,   937,   684,    -1,    -1,    -1,    -1,  1544,  1545,
    3073       -1,   350,  1075,  1076,    -1,    -1,    -1,    -1,  1519,    -1,
    3074       -1,    69,   957,    -1,  1525,    -1,    -1,  1017,  1018,    -1,
    3075       -1,    -1,    -1,    -1,    -1,  1536,   971,    -1,    -1,  1540,
    3076       -1,   722,    -1,    -1,   979,    -1,    -1,    -1,   983,     0,
    3077        1,    -1,    -1,   273,    -1,    -1,   789,    -1,   106,    -1,
    3078      280,    -1,    -1,   744,    -1,    -1,   799,    -1,    -1,    -1,
    3079       -1,  1071,    -1,    -1,    -1,     0,    -1,    -1,    -1,    -1,
    3080      813,    32,    -1,    -1,    -1,  1075,  1076,    -1,    -1,    -1,
    3081       -1,    -1,   431,    -1,    -1,    -1,    -1,    -1,  1033,    -1,
    3082      148,    -1,    -1,    -1,    -1,    -1,    -1,    32,   156,   157,
    3083      594,    -1,    -1,    -1,    -1,    66,    -1,    -1,    69,    -1,
    3084       -1,    -1,   803,    -1,    -1,    -1,    -1,   808,   348,    -1,
    3085       -1,    -1,    -1,    -1,   473,    -1,  1071,    -1,   622,   187,
    3086     1002,    -1,    -1,   627,    69,   365,    -1,    -1,    -1,   369,
    3087     1085,    -1,    -1,    -1,   202,  1090,    -1,   205,   206,    -1,
    3088     1223,    -1,   210,    -1,  1382,    -1,    -1,    -1,    -1,    -1,
    3089       -1,    -1,  1107,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3090     1398,    -1,    -1,   231,  1184,    -1,    -1,   235,    -1,   237,
    3091       -1,    -1,  1255,    -1,    -1,    -1,    -1,    -1,   246,    -1,
    3092     1263,  1264,  1265,    -1,   252,    -1,   157,    -1,    -1,   257,
    3093       -1,    -1,   432,    -1,   698,   896,    -1,    -1,    -1,   267,
    3094       -1,    -1,   903,    -1,    -1,    -1,    -1,   275,   712,    -1,
    3095       -1,     0,   157,  1223,    -1,    -1,    -1,    -1,   919,    -1,
    3096       -1,    72,    -1,    74,    75,    76,    -1,    -1,   732,  1184,
    3097     1468,  1469,    83,    84,    -1,   594,    -1,    -1,    -1,    -1,
    3098      941,   942,   943,    32,  1327,  1255,    -1,    -1,    -1,    -1,
    3099       -1,   222,  1207,  1263,  1264,  1265,    -1,    -1,   109,    -1,
    3100      111,    -1,    -1,   622,  1017,  1018,   117,   118,   627,    -1,
    3101       -1,    -1,    -1,   341,    -1,    -1,    -1,   345,    -1,    -1,
    3102       69,   252,    -1,   351,    -1,    -1,   231,    -1,    -1,    -1,
    3103       -1,    -1,    -1,  1248,  1249,  1250,   364,    -1,   999,    -1,
    3104      368,   805,    -1,   371,    -1,    -1,  1188,   252,    -1,    -1,
    3105       -1,    -1,   257,    -1,    -1,    -1,    -1,  1327,    -1,    -1,
    3106       -1,    -1,  1075,  1076,    -1,    -1,    -1,    -1,    -1,    -1,
    3107       72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,   698,
    3108       -1,    83,    84,    72,    -1,    74,    75,    76,    -1,   589,
    3109      418,    -1,    -1,   712,    83,    84,    -1,    -1,    -1,    -1,
    3110       -1,    -1,    -1,    -1,    -1,   433,    -1,   109,   157,   111,
    3111      438,    -1,    -1,    -1,    -1,   117,   118,    -1,   446,  1080,
    3112      109,   621,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
    3113       -1,    -1,    -1,    -1,    -1,    -1,   464,   637,    -1,   467,
    3114       -1,  1283,    -1,    -1,    -1,    -1,   351,    -1,    -1,    -1,
    3115       -1,   651,    -1,    -1,   482,    -1,   484,    -1,    -1,    -1,
    3116       -1,  1122,  1377,  1378,   492,    -1,    -1,    -1,   496,    -1,
    3117       -1,  1386,  1387,    97,    98,    99,   100,   101,   102,   103,
    3118      104,   105,   106,    -1,    -1,    -1,   805,    -1,    -1,    -1,
    3119       -1,    -1,    -1,    -1,    -1,    -1,    -1,   525,   526,    -1,
    3120       -1,    -1,   433,   252,    -1,    -1,    -1,   131,   257,  1424,
    3121       -1,    -1,    -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,
    3122       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   433,    -1,
    3123       -1,    -1,   732,   438,    -1,    -1,    -1,    -1,  1002,    -1,
    3124       -1,   446,  1255,   571,    -1,    -1,  1207,    -1,    -1,    -1,
    3125     1263,  1264,  1265,   484,    -1,    -1,    -1,    -1,    -1,   464,
    3126       -1,   589,   590,    -1,    -1,    -1,  1481,  1482,  1229,    -1,
    3127       -1,    -1,    -1,    -1,   602,    -1,  1491,   482,    -1,   484,
    3128       -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,
    3129     1505,  1506,   620,    -1,    -1,   526,    -1,   625,    -1,    -1,
    3130       -1,    -1,   351,   631,    -1,    -1,   634,   635,   636,    -1,
    3131       -1,    -1,    66,    -1,  1327,  1530,    -1,    -1,    72,    -1,
    3132       -1,   526,    76,    -1,   652,    79,    80,    81,    82,    83,
    3133       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3134       -1,    -1,   670,    -1,    -1,    10,    11,    12,    13,    14,
    3135       -1,    -1,    -1,   681,    -1,   109,    -1,   111,    -1,   590,
    3136     1321,    -1,    -1,   117,   118,   119,   120,   121,   122,   418,
    3137       -1,    -1,    -1,    -1,    39,    -1,   130,    -1,    -1,   707,
    3138       -1,    -1,   710,  1002,   433,   590,    -1,    -1,    -1,   438,
    3139       -1,   719,    -1,    -1,   722,    -1,   896,   446,    -1,    -1,
    3140       -1,    -1,    67,   634,   635,   636,    -1,    72,    -1,    74,
    3141       75,    76,    -1,    -1,    -1,   464,   744,   745,    83,    84,
    3142       -1,   652,   750,    -1,  1188,    -1,    -1,    -1,    -1,   634,
    3143      635,   636,    -1,   482,    -1,   484,    -1,    10,    11,    12,
    3144       13,    14,    -1,    -1,   109,    -1,   111,   652,    -1,    -1,
    3145       -1,    -1,   117,   118,    -1,    -1,    -1,    -1,  1419,    -1,
    3146       -1,   789,    -1,    -1,    -1,   670,    39,    -1,    -1,    -1,
    3147       -1,   799,    -1,   801,    -1,   803,   681,   526,   806,   710,
    3148      808,   809,    -1,    -1,    -1,   813,    -1,    -1,    -1,  1450,
    3149       -1,  1452,    -1,    -1,    67,   823,    -1,    -1,    -1,    72,
    3150       -1,    -1,   707,    76,    -1,   710,    -1,    -1,    -1,    -1,
    3151       83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1283,
    3152       -1,     0,    -1,    -1,    -1,  1486,    -1,  1488,    -1,    -1,
     2888       0,     1,   186,    43,   239,   185,   204,     0,    43,   219,
     2889      43,   116,   185,   521,   534,   185,     1,   875,   186,     0,
     2890       1,   185,   757,    51,   647,   603,   750,   185,     0,     1,
     2891     281,   621,    32,   750,  1041,     0,  1022,    43,   185,    32,
     2892     345,   185,   750,    43,   168,   169,   513,   349,   875,    49,
     2893     156,    32,   603,    32,     0,   693,    49,   349,   187,     0,
     2894      32,   572,    57,    63,   601,  1322,    66,    32,    43,    69,
     2895      63,     0,     1,    66,   696,    63,    69,  1399,   734,   492,
     2896       0,   109,   266,   496,    69,   265,    32,   601,    69,    39,
     2897      39,    32,   265,   490,    66,   265,   201,    69,   266,   601,
     2898      39,   265,    43,    32,   604,   105,   601,   265,    49,    49,
     2899     610,   106,    32,   113,   109,   418,   116,   117,   265,    82,
     2900      66,   265,    63,    63,    39,    66,    66,    39,    69,    69,
     2901     601,   984,   261,   262,   284,   438,    43,    66,    28,   601,
     2902      69,   105,    72,   446,   132,   185,   146,   147,  1470,   601,
     2903     185,    72,   185,    49,   147,   155,   156,   307,   308,   109,
     2904     160,   111,   111,  1420,    39,   787,    82,   160,    72,   364,
     2905     109,    39,   111,   368,  1021,  1022,    82,   482,    96,   185,
     2906     688,  1034,   906,  1116,   156,   185,   186,  1120,    78,   906,
     2907     156,   155,     0,   186,   110,   345,   488,   109,   906,   111,
     2908     410,   201,   132,    96,   122,   111,   147,   147,   605,   209,
     2909     185,   132,   609,   117,  1041,    64,   209,   113,   109,   160,
     2910     160,   221,   406,   218,    32,   265,   109,   110,   221,   122,
     2911     265,   381,   265,   630,   109,   256,   111,   634,   406,   239,
     2912    1226,   109,   864,   111,   185,   186,   186,   825,   719,   221,
     2913     146,   251,   987,   504,    57,    44,    45,   719,   251,   259,
     2914     109,   426,   427,   901,   264,   265,   266,   719,   209,   209,
     2915     251,   271,   251,   266,   825,   221,   813,   272,   185,   251,
     2916     221,   221,  1289,   794,   279,   907,   251,   109,   696,    85,
     2917    1276,   396,   221,  1502,   294,    49,   480,   636,   637,   813,
     2918     109,   603,   925,   106,  1453,   251,   109,   307,  1053,  1054,
     2919     251,   813,   480,   209,   653,   815,   621,   113,   813,   424,
     2920    1529,   626,   251,   323,   265,   430,   115,   433,   328,   494,
     2921     952,   251,    95,    44,    45,   328,   107,   112,  1487,   116,
     2922    1489,   341,   813,   239,   109,   345,   111,   109,   513,   349,
     2923     350,   813,   155,   348,  1212,   132,   934,     0,   110,   113,
     2924     131,   813,    44,    45,   364,   987,   129,  1473,   368,   131,
     2925     365,   371,   711,  1479,   369,   271,   116,   341,   130,   682,
     2926      72,    11,    74,    75,  1129,  1212,   228,   328,   328,    32,
     2927     130,    83,    84,  1499,  1050,   590,   396,   418,  1504,   114,
     2928     550,   551,   552,   114,   350,   247,   406,   371,   349,  1395,
     2929    1000,   307,   110,   406,   579,   218,  1038,   438,   116,   933,
     2930     526,   109,   114,   111,   424,   446,   426,   427,  1275,  1276,
     2931     430,   933,   114,   433,    72,  1442,   110,   632,   933,   110,
     2932      72,   746,  1449,   251,  1502,    83,    84,   110,   256,   345,
     2933     847,    83,    84,   116,   454,   209,   130,   119,   120,   130,
     2934     968,   433,  1289,   802,  1522,   406,   406,   433,   110,   272,
     2935     112,  1529,   472,   111,   116,   128,   279,   110,   131,   111,
     2936     480,   116,   482,   116,   484,   591,   737,   480,   488,   131,
     2937     132,   484,    70,  1500,   494,    73,  1118,   132,    76,   907,
     2938      78,    90,    91,   484,   688,  1128,   506,    85,   508,  1009,
     2939    1010,   511,   484,   513,   514,   982,   482,   271,   116,   484,
     2940     688,   521,  1100,   825,   648,   525,   526,   473,   657,   942,
     2941     426,   427,   130,   825,  1387,  1388,   125,   126,   484,   109,
     2942     294,   111,   939,   484,   952,   348,   110,   488,  1395,   116,
     2943     655,   116,   116,   307,   526,   484,  1178,  1179,    72,   116,
     2944     526,   525,   365,   130,   484,    72,   369,    74,    75,    83,
     2945      84,   571,   572,    88,    89,   132,    83,    84,  1086,   579,
     2946    1403,    72,     3,  1091,     4,     5,     6,     7,     8,     9,
     2947     590,   591,    83,    84,    72,   595,   116,   111,   494,     3,
     2948     905,   601,     1,   603,   111,    83,    84,   757,   251,   804,
     2949     418,   116,   132,   256,   809,  1442,     0,   513,   110,   591,
     2950     111,   621,  1449,     0,   116,   591,   626,   622,   628,   432,
     2951     438,   109,   632,  1289,   212,   635,   636,   637,   446,   111,
     2952     111,   113,   113,   638,   112,   109,   938,   111,   116,    69,
     2953     116,    71,   862,   653,   116,   655,   109,   652,   130,   130,
     2954     601,   682,   603,   635,   636,   637,   132,   109,   116,   111,
     2955     132,   591,   882,  1500,  1497,   116,   484,   623,   116,  1502,
     2956     116,   653,   131,   579,   132,   685,    72,   708,   688,   116,
     2957      76,   132,   116,   109,   132,  1000,   132,    83,    84,  1522,
     2958     454,   279,   897,    72,   810,   132,  1529,  1363,   132,   944,
     2959    1118,   711,   712,   713,    83,    84,   110,   109,   116,   719,
     2960     720,   116,   116,   109,   908,   621,   906,    92,    93,   110,
     2961     626,   117,   118,   906,   132,   116,   906,   132,   733,   711,
     2962     908,   109,   906,   110,   868,   745,   746,   688,   906,   116,
     2963     750,   751,   506,   699,   508,   109,   109,   511,   111,   906,
     2964     514,  1383,   906,   110,   117,   118,   294,   713,   112,   116,
     2965    1178,  1179,   116,   109,   352,   418,   354,  1399,   719,   720,
     2966     746,   745,  1506,   109,   112,   111,  1306,   590,   116,  1506,
     2967    1446,   109,  1448,   111,   794,   438,   109,   112,  1506,   117,
     2968     118,   116,   802,   446,   804,    72,   806,    74,    75,   809,
     2969     810,   110,   109,   813,   111,  1013,    83,    84,   110,   622,
     2970     117,   118,    72,   110,   116,   825,    76,   110,   112,   116,
     2971     802,   110,   116,    83,    84,   638,   110,   116,   810,   482,
     2972     110,   484,  1147,   112,   810,  1501,   116,  1469,  1470,   652,
     2973    1000,   115,   116,   252,    10,    11,    12,    13,    14,   109,
     2974     806,   111,   110,   111,   442,  1116,   109,   117,   118,  1120,
     2975    1121,   110,   813,   117,   682,   875,   110,   116,     3,   123,
     2976     124,   110,   116,    39,   825,    10,    11,    12,    13,    14,
     2977     810,  1041,    58,    59,   875,   110,   110,   897,   426,   427,
     2978     708,   116,  1086,   875,   904,   905,   906,  1091,   908,   110,
     2979     110,    67,  1036,   109,    39,    72,   116,   115,  1086,    76,
     2980     920,  1226,   109,  1091,   111,   109,    83,    84,  1123,   875,
     2981     733,   685,    64,   933,   934,   110,   115,   116,   938,   905,
     2982     904,   116,    67,   943,   944,    72,   875,    74,    75,    76,
     2983       0,     1,   109,    44,    45,   875,    83,    84,   943,   132,
     2984     117,   118,   943,   110,    66,   906,   109,   908,   968,   116,
     2985     109,   943,   111,   109,  1482,  1383,   553,   554,   506,    29,
     2986      30,   112,    32,   511,   132,  1236,   514,   506,   109,   508,
     2987     111,  1399,   511,    43,   911,   514,   913,   938,   114,    49,
     2988    1000,   555,   556,  1108,   114,   114,    72,    57,    74,    75,
     2989      76,   561,   562,    63,   943,   117,    66,    83,    84,    69,
     2990     132,  1021,  1022,  1531,   132,     4,     5,     6,     7,     8,
     2991       9,   109,    82,    83,   557,   558,   559,   560,    82,   682,
     2992     568,  1041,     4,     5,     6,     7,     8,     9,   944,  1021,
     2993    1022,    85,    86,    87,   109,  1021,   106,  1003,   160,   109,
     2994    1041,  1469,  1470,   109,   112,   708,   116,   875,   467,  1041,
     2995      82,    33,  1323,   118,   127,   109,  1327,   111,    94,   113,
     2996     114,  1081,   109,   110,   111,   128,  1086,   109,   110,   111,
     2997      69,  1091,    71,   131,   897,  1041,   111,   147,   109,   109,
     2998    1100,   110,   110,   746,  1000,   155,     3,    69,  1108,    71,
     2999     160,   112,  1041,    10,    11,    12,    13,    14,   112,   221,
     3000     112,  1041,   110,  1123,   109,   110,   111,   110,   110,   528,
     3001     110,   109,   110,   111,   533,   185,   186,    72,   109,    74,
     3002      75,    76,    39,   112,   111,  1086,   114,  1147,    83,    84,
     3003    1091,   201,   116,   132,   131,   733,   114,   259,   114,   209,
     3004     109,   112,   264,    58,    59,    60,   920,   110,   218,   110,
     3005      67,   221,   112,  1424,   109,   112,   111,   130,   228,   112,
     3006     112,  1147,   117,   118,   583,  1249,  1250,  1251,   130,  1189,
     3007    1190,   130,   116,   243,    29,   130,   110,   247,   110,   112,
     3008     115,   251,   252,   114,   112,  1190,   110,   116,  1208,  1190,
     3009     115,   109,  1212,   115,   110,   265,   266,  1189,  1190,   110,
     3010     130,   110,   272,   116,   110,   132,  1226,     3,   110,   279,
     3011    1230,  1212,   875,  1041,    10,    11,    12,    13,    14,   110,
     3012    1212,   116,   110,  1189,  1208,  1230,   110,   110,   350,  1230,
     3013     110,   110,   110,   110,     1,   654,   110,   656,  1230,   110,
     3014    1189,  1190,   905,    39,   110,   110,  1212,   110,    72,   110,
     3015      74,    75,    76,   115,  1379,  1275,  1276,    29,   328,    83,
     3016      84,  1516,   131,  1212,  1284,   110,   130,   116,   875,  1289,
     3017     112,    67,  1212,   112,   110,   110,   116,   110,   348,   349,
     3018     130,  1230,    49,  1275,  1276,   109,   109,   706,  1289,  1275,
     3019     116,   112,  1284,   117,   118,   365,   114,  1289,   110,   369,
     3020     110,   110,  1322,  1507,   112,   116,  1506,  1081,   110,   431,
     3021     380,   116,   116,  1506,    55,   110,  1506,  1322,  1284,  1507,
     3022     110,  1322,  1506,  1289,   112,   109,   396,  1531,  1506,   109,
     3023    1322,   109,   109,   109,   132,  1284,   406,   130,   105,  1506,
     3024    1289,   112,  1506,  1531,   110,   115,   113,   110,   110,  1289,
     3025     115,   473,   110,   128,   424,   115,    97,  1482,   114,  1379,
     3026     430,   112,   432,  1378,   132,   112,   116,   112,   110,    72,
     3027     110,    74,    75,  1322,   110,  1395,   110,   112,  1041,   146,
     3028      83,    84,   112,   112,  1212,  1208,   112,    72,   155,    74,
     3029      75,    76,   112,    72,   112,    74,    75,   467,    83,    84,
     3030    1420,    47,   472,  1395,    83,    84,   109,   132,   132,   132,
     3031     480,   114,   112,   132,   484,  1420,   132,   115,   488,  1420,
     3032     110,   491,  1442,   493,   109,   130,   115,   110,  1420,  1449,
     3033     109,  1451,   112,  1453,   115,   114,   112,  1044,   205,   112,
     3034     112,  1442,   209,   112,   110,   110,  1506,   109,  1449,   112,
     3035    1442,  1506,   193,  1506,   112,   109,   109,  1449,   528,    60,
     3036     110,  1289,  1482,   533,   132,   110,   114,  1487,   109,  1489,
     3037     112,  1420,   239,   595,   112,   216,  1442,   110,   112,   110,
     3038    1500,    96,    96,  1449,  1147,   226,  1506,  1507,   109,   109,
     3039     464,   115,   132,  1442,  1507,   130,  1516,   110,   110,  1500,
     3040    1449,   623,  1442,   110,   271,   110,   628,   274,  1500,  1449,
     3041     116,  1531,    42,   583,   132,   132,   110,   110,  1531,    66,
     3042     590,    96,    96,   132,   110,   110,   110,   294,    75,   132,
     3043     132,   601,   110,   603,  1500,   115,   112,   132,   115,   958,
     3044     307,   112,   109,   132,   110,  1506,    30,   115,   110,  1212,
     3045     132,  1500,   622,   294,   110,  1378,   110,   667,  1057,   563,
     3046    1500,   980,   978,  1226,   565,   984,  1212,  1365,   638,   564,
     3047     117,   464,   566,   643,   341,   567,  1470,   699,   345,  1541,
     3048    1299,  1327,   652,  1121,   654,   655,   656,  1072,  1449,   685,
     3049     685,   713,   913,   698,    66,  1091,   921,   364,    82,    83,
     3050    1516,   368,   583,   972,   371,  1212,   868,   723,   649,   940,
     3051      82,  1230,   484,   160,  1442,  1034,     0,     1,   688,   733,
     3052     571,  1449,   692,   571,   694,   571,  1289,    72,   698,    74,
     3053      75,    76,    -1,    -1,    -1,    -1,   706,    -1,    83,    84,
     3054      -1,    -1,    -1,  1191,  1192,   117,  1194,    -1,    32,   719,
     3055     720,    -1,    -1,  1201,    -1,  1203,    -1,    -1,    -1,   426,
     3056     427,    -1,    -1,   733,   109,    49,    -1,    10,    11,    12,
     3057      13,    14,  1500,    -1,   221,    -1,    -1,  1451,    -1,  1453,
     3058      -1,    -1,    -1,    -1,   806,    69,    -1,   454,   160,    -1,
     3059      85,    86,    87,    -1,    -1,    -1,    39,   671,  1305,    -1,
     3060     467,    -1,   443,    -1,    -1,    -1,    -1,    10,    11,    12,
     3061      13,    14,   259,  1487,   109,  1489,   111,   264,   113,   114,
     3062      -1,   105,    -1,    -1,    67,   492,    -1,   494,   469,   496,
     3063      -1,    -1,   279,    -1,    -1,    -1,    39,    -1,    -1,   506,
     3064      -1,   508,    -1,   813,   511,    -1,   513,   514,    -1,   221,
     3065    1357,    -1,    -1,  1360,    -1,   825,    -1,    -1,   525,   243,
     3066      -1,    -1,    -1,   147,    67,   506,   109,    -1,   111,    -1,
     3067     511,   155,   156,   514,   117,   118,    -1,    -1,   671,  1442,
     3068      -1,    -1,    -1,    -1,    -1,    -1,  1449,   259,    -1,    -1,
     3069      -1,    -1,   264,    -1,    -1,    -1,  1403,    -1,   868,    -1,
     3070      -1,  1408,   186,   350,   874,    -1,   109,    -1,   111,    -1,
     3071      -1,  1359,   579,    -1,   117,   118,   790,   201,    -1,    -1,
     3072     204,   205,    -1,   590,    -1,   209,   800,   897,    -1,  1436,
     3073    1249,  1250,  1251,    -1,    -1,    -1,   906,  1500,   908,    -1,
     3074     814,    -1,    -1,    -1,    -1,   915,   230,    -1,    -1,    -1,
     3075     234,    -1,   236,    -1,   621,    -1,    -1,    -1,    -1,   626,
     3076      -1,   245,    -1,    -1,    -1,   632,     0,   251,   938,    -1,
     3077      -1,    -1,   256,    -1,    -1,    -1,    -1,    -1,   350,    -1,
     3078      -1,  1003,   266,    -1,   431,    -1,    -1,    -1,   958,    -1,
     3079     274,    10,    11,    12,    13,    14,   380,   790,    32,    -1,
     3080      -1,   448,   972,    -1,    -1,    -1,    -1,   800,    -1,    -1,
     3081     980,    -1,    -1,  1520,   984,    -1,    -1,    -1,   685,  1526,
     3082      39,   814,    -1,    -1,    -1,    -1,   473,    -1,    -1,   670,
     3083    1537,    -1,   671,    -1,  1541,    69,    -1,    -1,   679,    -1,
     3084      -1,    -1,   683,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3085      -1,    72,    -1,    74,    75,    76,   723,   341,    -1,   431,
     3086      -1,   345,    83,    84,  1034,    -1,    -1,   351,  1387,  1388,
     3087      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,    -1,
     3088     364,    -1,    -1,    -1,   368,    -1,    -1,   371,   109,    -1,
     3089     109,    -1,   111,    -1,    -1,    -1,   117,   118,   117,   118,
     3090      -1,   473,  1072,    -1,    -1,    -1,  1425,   491,    -1,   493,
     3091      -1,    -1,    -1,    -1,    -1,    -1,  1086,    -1,    -1,    -1,
     3092      -1,  1091,   156,    97,    98,    99,   100,   101,   102,   103,
     3093     104,   105,   106,   107,   418,    -1,    -1,   804,  1108,    -1,
     3094      -1,    -1,   809,    -1,  1018,  1019,    -1,    -1,   595,   433,
     3095      -1,   790,    -1,    -1,   438,    -1,    -1,   131,    -1,    -1,
     3096      -1,   800,   446,    -1,  1483,    -1,    -1,  1189,    -1,    -1,
     3097      -1,    -1,    -1,  1492,    -1,   814,   623,    -1,    -1,    -1,
     3098     464,   628,    72,   467,    74,    75,    76,    -1,    -1,    -1,
     3099      -1,    -1,    -1,    83,    84,    -1,   230,    -1,   482,    -1,
     3100     484,    -1,  1076,  1077,    -1,    -1,    -1,    -1,   492,    -1,
     3101      -1,    -1,   496,    -1,    -1,  1185,    -1,   251,    -1,   109,
     3102      -1,   111,   256,   595,    -1,  1018,  1019,   117,   118,    -1,
     3103     897,    -1,    -1,    -1,    -1,    -1,    -1,   904,  1208,    -1,
     3104      -1,   525,   526,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3105      -1,   623,   699,   920,    -1,    -1,   628,    -1,   899,   643,
     3106      -1,    -1,  1284,     0,    -1,    -1,   713,    -1,    -1,    -1,
     3107      -1,    -1,    -1,    -1,    -1,   942,   943,   944,    -1,  1249,
     3108    1250,  1251,    -1,  1076,  1077,    -1,   733,    -1,   572,    72,
     3109      -1,    74,    75,    76,    -1,    32,    -1,    -1,    -1,    -1,
     3110      83,    84,    -1,    -1,    -1,    -1,   590,   591,   692,    -1,
     3111     694,    -1,    -1,    -1,   698,    -1,    -1,   351,    72,   603,
     3112      74,    75,    76,    -1,    -1,    -1,   109,   699,   111,    83,
     3113      84,    -1,    69,  1000,   117,   118,    -1,   621,    -1,    -1,
     3114      -1,   713,   626,    -1,    -1,    -1,    -1,    -1,   632,    -1,
     3115    1224,   635,   636,   637,    -1,   109,    -1,   111,    -1,   806,
     3116      -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,   653,
     3117      -1,    -1,    -1,    26,    27,    28,    -1,    -1,    -1,  1018,
     3118    1019,    -1,  1256,    -1,   418,    -1,    -1,   671,    -1,    -1,
     3119    1264,  1265,  1266,    -1,    -1,    -1,    -1,    -1,   682,   433,
     3120      -1,    -1,    -1,    -1,   438,    -1,    -1,    -1,  1378,  1379,
     3121      -1,  1052,   446,    -1,  1081,    -1,    -1,  1387,  1388,   156,
     3122      -1,    -1,    -1,    -1,   708,    -1,    -1,   711,    -1,    -1,
     3123     464,  1224,    -1,    -1,   806,    -1,   720,  1076,  1077,   723,
     3124      -1,    -1,    -1,    -1,    -1,    98,    -1,   100,   482,    -1,
     3125     484,    -1,    -1,    -1,  1328,  1425,  1123,    -1,    -1,    -1,
     3126      -1,   745,   746,  1256,    -1,    -1,    -1,   751,    -1,    -1,
     3127      -1,  1264,  1265,  1266,    -1,    -1,    -1,    -1,    -1,    -1,
     3128      -1,    -1,    -1,    -1,   868,    -1,    -1,    -1,    -1,    -1,
     3129     874,    -1,   526,    -1,    -1,    -1,    -1,    26,    27,    28,
     3130      -1,    -1,    -1,    -1,    -1,    -1,   790,    -1,    -1,    -1,
     3131      -1,    -1,  1482,  1483,   251,    -1,   800,    -1,   802,   256,
     3132     804,    -1,  1492,   807,    -1,   809,   810,    -1,   181,    -1,
     3133     814,   915,    -1,    -1,    -1,  1328,  1506,  1507,   191,   192,
     3134     824,  1208,    -1,   196,    -1,   198,   199,    -1,    -1,    -1,
     3135      -1,    -1,    -1,    -1,    -1,    -1,  1003,   591,    -1,    -1,
     3136      -1,  1531,    -1,  1230,    -1,    -1,    -1,    -1,    -1,    98,
     3137      -1,   100,    -1,    -1,    -1,     0,    -1,    -1,    -1,    -1,
     3138      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   972,    -1,
     3139      -1,   875,    -1,    -1,    -1,    -1,   125,    -1,    -1,    -1,
     3140      -1,   635,   636,   637,    -1,    -1,    -1,    32,    -1,    -1,
     3141      -1,    -1,    -1,   897,   351,    -1,    -1,  1256,    -1,   653,
     3142     904,   905,    -1,    -1,   908,  1264,  1265,  1266,    -1,    -1,
     3143      -1,  1003,    -1,    -1,    -1,    -1,    -1,   671,    -1,    -1,
     3144      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,   682,    -1,
     3145     934,    -1,   181,    -1,    -1,  1322,    -1,  1298,   942,   943,
     3146     189,    -1,   191,   192,    -1,    -1,    -1,   196,    -1,   198,
     3147     199,    -1,    -1,    -1,   708,    -1,    -1,   711,    -1,    -1,
     3148      -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,  1072,  1328,
     3149      -1,    -1,    -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,
     3150      -1,   438,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   446,
     3151      -1,    -1,   746,    -1,    -1,    -1,  1000,    10,    11,    12,
     3152      13,    14,    -1,    -1,    -1,    -1,    -1,   464,    -1,  1013,
     3153      -1,   156,    -1,    -1,  1018,  1019,    -1,  1021,  1022,   268,
     3154      -1,    -1,  1189,    -1,    -1,   482,    39,   484,    -1,    -1,
     3155      -1,    -1,    -1,  1420,    -1,    -1,   790,  1041,    -1,    -1,
     3156      -1,    -1,    -1,    -1,    -1,    -1,   800,    -1,   802,    -1,
     3157      -1,    -1,    -1,   807,    67,    -1,   810,    -1,    -1,    72,
     3158     814,    74,    75,    76,  1451,    -1,  1453,    -1,    -1,   526,
     3159      83,    84,  1076,  1077,    -1,    -1,    -1,    -1,    -1,    -1,
     3160      -1,  1185,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1450,
     3161      -1,  1452,    -1,    -1,    -1,    -1,   109,  1189,   111,    -1,
     3162    1487,    -1,  1489,    -1,   117,   118,   251,    -1,    -1,    -1,
     3163      -1,   256,    -1,    -1,    -1,    -1,    -1,  1284,    -1,  1123,
     3164      -1,   875,    -1,    -1,    -1,  1486,    -1,  1488,    -1,  1516,
     3165      -1,    -1,    -1,    -1,   591,    -1,    -1,    -1,    -1,    -1,
     3166      -1,    -1,    -1,  1147,    -1,    -1,    -1,    -1,    -1,     0,
     3167      -1,   905,    -1,    -1,    -1,    -1,    -1,   189,    -1,    -1,
     3168      -1,    -1,    -1,    -1,   196,    -1,    -1,    -1,    -1,  1530,
     3169      -1,  1532,    -1,    -1,    -1,    -1,    -1,    -1,   635,   636,
     3170     637,    32,    -1,    -1,  1545,  1546,  1190,    -1,    -1,    -1,
     3171      -1,    -1,  1284,    -1,    -1,    -1,   653,    -1,    -1,    -1,
     3172      -1,    -1,   575,   576,  1208,    -1,   351,    -1,  1212,    -1,
     3173      -1,    -1,    -1,    -1,   671,    -1,    -1,    -1,    69,    -1,
     3174    1224,    -1,  1226,    -1,    -1,   682,  1230,    -1,    -1,    -1,
     3175      -1,   604,    -1,    -1,   607,   608,   268,   610,    -1,   612,
     3176     613,    -1,    -1,    -1,   617,   618,    -1,    -1,    -1,    -1,
     3177      -1,   708,  1256,    -1,   711,    -1,    -1,    -1,    -1,    -1,
     3178    1264,  1265,  1266,    -1,  1018,  1019,    -1,  1021,  1022,    -1,
     3179      -1,  1275,  1276,   418,    -1,    -1,    -1,    -1,    10,    11,
     3180      12,    13,    14,    -1,    -1,  1289,    -1,  1041,   433,   746,
     3181      -1,   323,    -1,   438,    -1,    -1,    -1,    -1,    -1,   331,
     3182      -1,   446,   334,    -1,    -1,   156,    -1,    39,    -1,    -1,
     3183      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1322,   464,
     3184      -1,    -1,  1076,  1077,  1328,    -1,   575,   576,    -1,    -1,
     3185      -1,    -1,    -1,   790,    -1,    67,    -1,   482,    -1,   484,
     3186      72,    -1,    -1,   800,    76,   802,    -1,    -1,    -1,    -1,
     3187     807,    83,    84,   810,    -1,   604,    -1,   814,   607,   608,
     3188      -1,   610,    -1,   612,   613,    -1,   398,    -1,   617,   618,
     3189     402,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,
     3190      -1,   526,   755,   756,    -1,   117,   118,    -1,    -1,    -1,
     3191      -1,  1395,    -1,  1147,    -1,    -1,    -1,    -1,    -1,    -1,
     3192     251,    -1,    -1,    -1,    -1,   256,    -1,    -1,    -1,    -1,
     3193      -1,    -1,    -1,    -1,    -1,    -1,  1420,    -1,   875,    -1,
     3194      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3195      -1,    -1,    -1,    -1,    -1,    -1,  1190,    -1,  1442,    -1,
     3196      -1,    -1,    -1,    -1,    -1,  1449,   591,   479,   905,    -1,
     3197      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1212,    -1,
     3198      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3199    1224,    -1,  1226,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3200      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    -1,
     3201     635,   636,   637,    -1,    -1,    -1,  1500,    -1,    -1,    -1,
     3202     351,    -1,  1256,  1507,    -1,    -1,   755,   756,   653,    -1,
     3203    1264,  1265,  1266,    39,    -1,    -1,    -1,    -1,    -1,    -1,
     3204      -1,  1275,  1276,    -1,    -1,    -1,   671,    -1,    -1,    -1,
     3205      -1,    -1,    -1,    -1,    -1,  1289,    -1,   682,    -1,   571,
     3206     572,    67,    -1,    -1,   917,    -1,    72,    -1,    74,    75,
     3207      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,
     3208      -1,  1018,  1019,   708,  1021,  1022,   711,   418,    -1,    -1,
     3209      -1,    -1,    -1,    -1,  1328,    -1,    -1,    -1,    -1,    -1,
     3210      -1,    -1,   433,   109,  1041,   111,    -1,   438,    -1,    -1,
     3211      -1,   117,   118,    -1,    -1,   446,    -1,    -1,    -1,    -1,
     3212      -1,   746,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3213      -1,    -1,    -1,   464,    -1,    -1,    -1,    -1,    -1,  1076,
     3214    1077,    -1,    -1,    -1,    -1,    -1,   658,    -1,    -1,    -1,
     3215     662,   482,    -1,   484,    -1,    -1,    -1,    -1,    -1,    -1,
     3216      -1,  1395,    -1,    -1,    -1,   790,    -1,    -1,    -1,    -1,
     3217      -1,    -1,    -1,    -1,    -1,   800,    -1,   802,    -1,    -1,
     3218      -1,    -1,   807,   912,    -1,   810,    -1,    -1,   917,   814,
     3219      -1,    -1,    -1,    -1,    -1,   526,    53,    -1,    55,    -1,
     3220      -1,    58,    59,    60,    -1,    62,    -1,    -1,  1442,    -1,
     3221    1147,    -1,    -1,    -1,    -1,  1449,    -1,    -1,    -1,    76,
     3222      -1,    -1,    -1,    -1,    -1,  1078,    -1,    -1,    -1,    -1,
     3223      -1,    88,    89,    -1,    10,    11,    12,    13,    14,    -1,
     3224      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3225     875,    -1,    -1,  1190,    -1,    -1,    -1,    -1,    -1,    -1,
     3226     591,    -1,    -1,    39,    -1,    -1,  1500,    -1,    -1,    -1,
     3227      -1,    -1,    -1,    -1,    -1,  1212,    -1,    -1,    -1,    -1,
     3228     905,    -1,   794,    -1,    -1,    -1,    -1,  1224,    -1,  1226,
     3229      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
     3230      76,    -1,    -1,    -1,   635,   636,   637,    83,    84,    -1,
     3231      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1256,
     3232      -1,    -1,   653,    -1,    -1,    -1,    -1,  1264,  1265,  1266,
     3233      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,  1275,  1276,
     3234     671,   117,   118,    -1,    -1,   282,    -1,   284,   285,  1078,
     3235      -1,   682,  1289,    -1,  1207,   292,   293,    -1,    -1,    -1,
     3236      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3237     307,   308,    -1,    -1,    -1,    -1,    -1,   708,    -1,    -1,
     3238     711,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3239      -1,  1328,    -1,  1018,  1019,    -1,  1021,  1022,    -1,    -1,
     3240     912,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,    -1,
     3241      -1,    -1,    -1,    -1,    -1,   746,  1041,    10,    11,    12,
     3242      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3243      23,    24,    25,    26,    27,    28,    -1,    30,    31,    32,
     3244      -1,    -1,    -1,    -1,   381,    -1,    39,    -1,    -1,    -1,
     3245      -1,  1076,  1077,    -1,    -1,    -1,    -1,    -1,  1395,   790,
     3246      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   800,
     3247      -1,   802,    -1,    -1,    67,    -1,   807,   989,  1207,   810,
     3248      -1,    74,    75,   814,    -1,    78,    -1,   344,    -1,   346,
     3249      -1,    -1,    -1,    -1,  1006,    -1,    -1,    -1,    -1,    -1,
     3250     357,   358,    -1,    -1,    -1,  1442,    -1,    -1,    -1,    -1,
     3251      37,    38,  1449,    40,    -1,    -1,   109,    -1,   111,    -1,
     3252      -1,    -1,  1147,    -1,   117,   118,    -1,    -1,    -1,    -1,
     3253      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
     3254      -1,    -1,    -1,    -1,   875,    72,    -1,    -1,    -1,    76,
     3255      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3256      87,    -1,    -1,  1500,    -1,  1190,    -1,    -1,    -1,    -1,
     3257      -1,    -1,  1084,    -1,   905,    -1,    -1,    -1,    -1,    -1,
     3258      -1,    -1,   109,    -1,   111,    -1,    -1,  1212,    -1,    -1,
     3259     117,   118,   119,   120,   121,   122,    -1,    -1,    -1,  1224,
     3260      -1,  1226,     7,   130,    -1,    10,    11,    12,    13,    14,
     3261      -1,    -1,  1124,   550,   551,   552,   553,   554,   555,   556,
     3262     557,   558,   559,   560,   561,   562,   563,   564,   565,   566,
     3263     567,  1256,    37,    38,    39,    40,    -1,    -1,    -1,  1264,
     3264    1265,  1266,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3265    1275,  1276,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3266      -1,    66,    67,    -1,  1289,    -1,    -1,    72,    -1,    -1,
     3267      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3268      -1,    86,    87,    -1,    -1,    -1,    -1,  1018,  1019,    -1,
     3269    1021,  1022,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3270      -1,    -1,    -1,  1328,   109,    -1,   111,    -1,    -1,    -1,
     3271    1041,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
     3272       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3273      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3274      23,    24,    25,    26,    27,  1076,  1077,    30,    31,    32,
     3275      33,    -1,    -1,    36,    37,    38,    39,    40,    -1,   696,
     3276      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3277    1395,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3278      -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,
     3279      -1,    74,    75,    76,    49,    -1,    79,    80,    81,    82,
     3280      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3281      -1,    66,    -1,    -1,    -1,    -1,  1147,  1442,    -1,    -1,
     3282     757,    -1,    -1,    -1,  1449,    -1,   109,    -1,   111,    -1,
     3283      -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
     3284      -1,    -1,    -1,   700,    -1,   702,    -1,    -1,    -1,   132,
     3285     787,    -1,   709,   710,    -1,    -1,    -1,   714,   113,  1190,
     3286      -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,   726,
     3287      -1,    -1,    -1,    -1,   731,  1500,    -1,    -1,    -1,    -1,
     3288      -1,  1212,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3289      -1,   146,    -1,  1224,    -1,  1226,    -1,    -1,    -1,    -1,
     3290      -1,   156,   759,    -1,    -1,   160,    -1,    -1,    -1,    -1,
     3291      -1,    -1,    -1,    -1,    -1,    -1,     7,    -1,    -1,    10,
     3292      11,    12,    13,    14,    -1,  1256,    -1,    -1,    -1,    -1,
     3293      -1,    -1,    -1,  1264,  1265,  1266,    -1,    -1,    -1,    -1,
     3294      -1,    -1,    -1,    -1,  1275,  1276,    37,    38,    39,    40,
     3295      -1,    -1,    -1,    -1,   209,    -1,    -1,    -1,  1289,    -1,
     3296      -1,    -1,    -1,    -1,    -1,    -1,   221,    -1,    -1,    -1,
     3297     907,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,
     3298      -1,    72,    -1,    -1,   239,    76,    -1,    -1,    79,    80,
     3299      81,    82,    83,    84,    -1,    86,    87,  1328,    -1,    -1,
     3300      -1,   858,   859,   860,   861,    -1,   863,    -1,    -1,   264,
     3301      -1,    -1,    -1,    -1,    -1,   952,   271,    -1,   109,    -1,
     3302     111,   878,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
     3303     121,   122,    -1,    -1,    -1,   892,    -1,    -1,    -1,   294,
     3304      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3305     987,    -1,   307,    -1,    -1,    -1,    -1,    -1,    -1,    66,
     3306      -1,    -1,    -1,  1000,  1395,    -1,    -1,    -1,    75,    -1,
     3307      77,    -1,    79,    -1,    -1,   932,    -1,    -1,    -1,    86,
     3308      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3309     345,    -1,    -1,    -1,    -1,   350,    -1,    -1,    -1,    -1,
     3310      -1,    -1,    -1,    -1,  1041,    -1,    -1,    -1,    -1,    -1,
     3311     117,  1442,   119,   120,   121,    -1,    -1,    -1,  1449,    -1,
     3312     977,    -1,    -1,    -1,    -1,    -1,   983,    -1,    -1,    -1,
     3313      -1,   988,    -1,    -1,    -1,    -1,   993,    -1,   995,    -1,
     3314      -1,    -1,   999,    -1,  1001,  1002,    -1,    -1,  1005,    -1,
     3315      -1,    -1,    -1,   160,    -1,    -1,    -1,  1014,    -1,    -1,
     3316      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1500,
     3317      -1,   426,   427,    -1,    -1,  1032,  1033,    -1,   433,    -1,
     3318      -1,  1118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3319      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   454,
     3320      -1,    -1,  1059,    -1,    -1,  1062,    -1,    -1,    -1,    -1,
     3321      -1,    -1,    -1,    -1,   221,    -1,   223,   224,   225,    -1,
     3322      -1,    -1,    -1,    -1,    -1,    -1,    -1,   482,    -1,    -1,
     3323      -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,   494,
     3324      -1,  1178,  1179,    -1,    -1,    -1,    -1,    -1,  1105,    -1,
     3325      -1,   506,   259,   508,  1111,  1112,   511,   264,   513,   514,
     3326      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3327      -1,   526,   279,    -1,  1131,    -1,    -1,  1134,    -1,    -1,
     3328      -1,  1138,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3329      -1,    -1,    -1,    72,  1151,    74,    75,    76,    -1,    -1,
     3330      -1,    -1,    -1,    -1,    83,    84,    -1,  1164,    -1,  1166,
     3331    1167,  1168,  1169,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3332      -1,   328,    -1,    -1,   579,  1182,    -1,  1184,    -1,    -1,
     3333     109,  1188,    -1,    -1,    -1,    -1,   591,    -1,   117,   118,
     3334     595,    -1,    -1,   350,    -1,    -1,    -1,    -1,   355,   356,
     3335      -1,    -1,    -1,    -1,    -1,    -1,   363,    -1,    -1,    -1,
     3336    1217,  1218,    -1,    -1,    -1,    -1,   621,    -1,    -1,    -1,
     3337      -1,   626,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3338     635,   636,   637,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3339      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   653,   406,
     3340      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3341    1267,  1268,    -1,    -1,    -1,    -1,    -1,   424,    -1,    -1,
     3342    1277,    -1,   429,    -1,   431,    -1,    -1,    -1,    -1,    -1,
     3343     685,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3344      -1,   448,    -1,    -1,   451,   452,  1383,    -1,    -1,    -1,
     3345      -1,    -1,   459,    -1,    -1,    -1,   711,    -1,   713,    -1,
     3346      -1,    -1,  1399,    -1,    -1,    -1,   473,    -1,    -1,    -1,
     3347      -1,    -1,    -1,   480,    -1,    -1,    -1,    -1,    -1,    -1,
     3348      -1,  1338,    -1,  1340,  1341,  1342,    -1,    -1,    -1,    -1,
     3349      -1,   746,    -1,    -1,    -1,  1352,    44,    -1,    -1,    -1,
     3350      -1,    -1,    -1,    -1,  1361,    10,    11,    12,    13,    14,
     3351      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3352      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,  1386,
     3353      -1,    -1,  1469,  1470,    39,    -1,    -1,    10,    11,    12,
     3354      13,    14,    -1,    91,    -1,    -1,    -1,   802,    -1,    -1,
     3355      -1,   806,    -1,   101,    -1,   810,    -1,    -1,    -1,    -1,
     3356      -1,    -1,    67,    -1,    -1,    -1,    39,    72,    -1,    74,
     3357      75,    76,  1429,  1430,    -1,    -1,    -1,    -1,    83,    84,
     3358      -1,    -1,    -1,    -1,    -1,  1442,    -1,    -1,   595,    -1,
     3359      -1,    -1,  1449,    -1,    67,    -1,    -1,    -1,    -1,    72,
     3360      -1,    74,    75,    76,   109,    -1,   111,    -1,    -1,   157,
     3361      83,    84,   117,   118,    -1,    -1,   623,    -1,    -1,    -1,
     3362      -1,   628,    -1,   171,  1481,    -1,    -1,    -1,  1485,    -1,
    31533363      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
    3154      745,   590,    -1,    -1,   117,   118,   874,    -1,     0,    -1,
    3155      190,    -1,    -1,    32,  1515,    -1,    -1,   197,    -1,    -1,
    3156       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   896,  1188,
    3157      801,    -1,    -1,    -1,    -1,   903,   904,    -1,   809,   907,
    3158       32,    -1,    -1,    -1,   789,   634,   635,   636,    -1,    -1,
    3159       69,    -1,    -1,    -1,   799,    -1,   801,    -1,    -1,    -1,
    3160       -1,   806,    -1,   652,   809,   933,    -1,    -1,   813,    -1,
    3161       -1,    -1,    -1,   941,   942,    -1,    -1,    69,    -1,    -1,
    3162       -1,   670,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   269,
    3163       -1,    -1,   681,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3164       -1,    -1,    -1,   874,    -1,    -1,    -1,    -1,    -1,    -1,
    3165       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   707,    -1,
    3166       -1,   710,    -1,    -1,  1283,    -1,    -1,    -1,    -1,   874,
    3167       -1,   999,    -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,
    3168       -1,    -1,    -1,   323,  1012,    -1,    -1,    -1,    -1,  1017,
    3169     1018,   331,  1020,  1021,   334,    -1,   745,    -1,    -1,   904,
    3170       -1,    -1,    -1,    -1,    -1,   157,    -1,  1207,    -1,    -1,
    3171       -1,   942,  1040,    -1,    -1,     3,     4,     5,     6,     7,
     3364      -1,    -1,    -1,    -1,   117,   118,   194,    -1,    -1,    -1,
     3365     905,    -1,    -1,    -1,    -1,    -1,  1513,    -1,  1515,    -1,
     3366     208,    -1,    -1,    -1,    -1,   920,    -1,    -1,    -1,   217,
     3367      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   227,
     3368      -1,    -1,    -1,    -1,    -1,    -1,  1543,  1544,    -1,   944,
     3369      -1,    -1,   699,    -1,  1551,  1552,    -1,    -1,    -1,    -1,
     3370      -1,    -1,    -1,    -1,   252,    -1,   713,    -1,    -1,   257,
     3371      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3372      -1,    -1,   270,    -1,    -1,    -1,   733,    -1,   276,    -1,
     3373     278,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3374      -1,    -1,    -1,    -1,    -1,  1000,    -1,   295,    10,    11,
     3375      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3376      22,    23,    24,    25,    26,    27,  1021,  1022,    30,    31,
     3377      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
     3378      -1,    -1,    -1,    -1,    -1,    -1,    -1,   794,    -1,    -1,
     3379     338,    -1,    -1,    -1,    -1,   343,    -1,    -1,    -1,   806,
     3380      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
     3381      72,    -1,    74,    75,    76,    -1,    -1,    -1,   825,    -1,
     3382      -1,    83,    84,    -1,   372,    -1,  1081,    -1,   376,   377,
     3383      -1,   379,    -1,    -1,    -1,    -1,    -1,    -1,   386,   387,
     3384      -1,   389,   390,    -1,   392,    -1,   394,   109,    -1,   111,
     3385      -1,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,
     3386      -1,    -1,    -1,   411,    -1,    -1,    -1,    -1,    -1,    -1,
     3387      -1,   419,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,
     3388     156,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3389      -1,    -1,  1147,    -1,    -1,    -1,   444,    -1,    -1,    -1,
     3390      -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
     3391      14,    -1,    -1,   189,    -1,    -1,    -1,    -1,    -1,    -1,
     3392     196,    -1,   470,    -1,    -1,    -1,    -1,    -1,   476,    -1,
     3393      -1,   938,    -1,   481,  1189,    39,    10,    11,    12,    13,
     3394      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3395      24,    25,    26,    27,    28,    -1,    30,    31,    32,    -1,
     3396      -1,   968,    -1,    67,    -1,    39,    -1,    -1,    72,   517,
     3397      -1,  1226,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
     3398      84,    -1,    -1,    -1,   532,    -1,    -1,    -1,    -1,    -1,
     3399      -1,    -1,   268,    67,    -1,    -1,  1003,    -1,    72,    -1,
     3400      74,    75,    76,    -1,    78,   109,    -1,  1014,    -1,    83,
     3401      84,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
     3402    1275,  1276,    -1,   571,    -1,    -1,    -1,    -1,    -1,  1284,
     3403      -1,    -1,   580,    -1,    -1,   109,    -1,   111,   146,   587,
     3404      -1,    -1,    -1,   117,   118,   593,    -1,   323,   156,    -1,
     3405      -1,    -1,    -1,    -1,   602,   331,   332,    -1,   334,   335,
     3406     168,   169,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,
     3407      -1,    -1,    -1,   349,    -1,    -1,    -1,    -1,    -1,  1086,
     3408      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3409      -1,    -1,   368,  1100,   642,   371,     3,     4,     5,     6,
     3410       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3411      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3412      27,    -1,   398,    30,    31,    32,   402,    -1,    -1,    -1,
     3413     678,   239,    39,    -1,    -1,    -1,    -1,    -1,   686,    -1,
     3414    1395,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
     3415      -1,    -1,    -1,    -1,    -1,   263,    -1,   433,    -1,    -1,
     3416      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,   717,
     3417      -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,   727,
     3418     728,    76,  1189,    -1,    79,    80,    81,    82,    83,    84,
     3419      -1,    86,    87,    -1,    -1,    -1,  1451,    -1,  1453,    -1,
     3420      -1,    -1,    -1,   479,   111,    -1,   482,    -1,    -1,    -1,
     3421     117,   118,   760,    -1,   109,    -1,   111,   765,    -1,   114,
     3422      -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
     3423      -1,    -1,  1487,    -1,  1489,    -1,    -1,    -1,    -1,    -1,
     3424      -1,    -1,    -1,    -1,    -1,   521,    -1,    -1,    -1,   525,
     3425     526,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3426      -1,  1516,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3427      -1,    -1,   380,    -1,    -1,    -1,    -1,  1284,    -1,    -1,
     3428      -1,   829,    -1,    -1,    -1,    -1,    -1,    -1,   836,    -1,
     3429      -1,    -1,    -1,    -1,    -1,   571,   572,    -1,    -1,    -1,
     3430      -1,   849,    -1,   851,    -1,    -1,    -1,    -1,    -1,    -1,
     3431      -1,    -1,    -1,    -1,   590,   591,    -1,   865,    -1,    -1,
     3432      -1,    -1,    -1,   871,    -1,   601,    -1,   603,   604,    -1,
     3433      -1,    -1,    -1,    -1,   610,   883,    -1,    -1,   886,    -1,
     3434      -1,    -1,    -1,    -1,   620,   621,    -1,    -1,    -1,    -1,
     3435     626,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   635,
     3436     636,   637,    -1,    -1,    -1,    -1,   474,    -1,    -1,    -1,
     3437      -1,    -1,    -1,    -1,    -1,    -1,    -1,   653,    -1,    -1,
     3438      -1,    -1,   658,   659,    -1,    -1,   662,   663,    -1,    -1,
     3439      -1,    -1,    -1,   669,    -1,    -1,    -1,    -1,    -1,    -1,
     3440      -1,    -1,    -1,    -1,    -1,   513,    -1,    -1,    -1,    -1,
     3441      -1,    -1,   688,    -1,    -1,   963,    -1,    -1,   526,    -1,
     3442      -1,    -1,    -1,   531,    -1,    -1,   534,    -1,    -1,    -1,
     3443      -1,    -1,    -1,    -1,    -1,   711,   712,    -1,    -1,   547,
     3444      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3445     998,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3446      -1,   569,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,
     3447     746,   579,    -1,    -1,   750,   751,    -1,    -1,   586,    -1,
     3448      -1,    -1,    -1,   591,    -1,    -1,    -1,    -1,    -1,    -1,
     3449      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3450      20,    21,    22,    23,    24,    25,    26,    27,  1056,    -1,
     3451      30,    31,    32,    -1,  1062,    -1,    -1,    -1,   794,    39,
     3452      -1,    -1,    -1,    -1,  1531,    -1,   802,    -1,    -1,    -1,
     3453      -1,    -1,   640,   809,   810,    -1,    -1,   813,    -1,   815,
     3454     648,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1096,   825,
     3455      -1,    -1,    72,  1101,    74,    75,    76,    -1,    -1,    -1,
     3456      -1,  1109,    -1,    83,    84,    -1,    10,    11,    12,    13,
     3457      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3458      24,    25,    26,    27,    28,    -1,    -1,    -1,    -1,   109,
     3459      -1,   111,    -1,    -1,  1142,    39,    -1,   117,   118,    -1,
     3460      -1,    -1,    -1,    -1,    -1,    -1,  1154,    -1,    -1,  1157,
     3461      -1,  1159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3462      -1,   897,    -1,    67,    -1,  1173,  1174,    -1,   904,   905,
     3463     906,    -1,   908,    -1,    78,    -1,   912,    -1,   746,    -1,
     3464     748,    -1,    -1,    -1,    -1,    -1,    -1,  1195,    -1,    -1,
     3465     758,    -1,    -1,    -1,    -1,    -1,   764,   933,   934,    -1,
     3466      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3467      20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
     3468      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3469      -1,    -1,   968,    -1,  1242,    -1,    -1,    -1,   806,   807,
     3470      -1,    -1,   810,    -1,    -1,    -1,    -1,    -1,    37,    38,
     3471      -1,    40,    -1,   989,   990,    -1,   824,    67,    -1,    -1,
     3472      -1,    -1,    -1,    -1,  1000,    -1,    -1,    -1,    78,    -1,
     3473    1006,  1007,    -1,  1009,  1010,  1011,    -1,    66,    -1,    -1,
     3474      -1,    -1,    -1,    72,    -1,  1021,  1022,    76,    -1,    -1,
     3475      79,    80,    81,    82,    83,    84,   864,    86,    87,    -1,
     3476     868,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1317,
     3477      -1,  1319,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3478     109,    -1,   111,  1331,    -1,  1333,    -1,   116,   117,   118,
     3479     119,   120,   121,   122,    -1,    -1,    -1,   905,    -1,    -1,
     3480      -1,    -1,  1350,    -1,    -1,    -1,    -1,    -1,  1084,    -1,
     3481    1086,    -1,    -1,    -1,    -1,  1091,    -1,    -1,  1366,  1367,
     3482      -1,    -1,    -1,    -1,  1100,    -1,    -1,    -1,    -1,  1377,
     3483      -1,    -1,  1380,    -1,    -1,    -1,   944,    -1,    -1,    -1,
     3484      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1123,  1124,  1125,
     3485      -1,    -1,    -1,  1401,    -1,    -1,    -1,    -1,    -1,    -1,
     3486      -1,    -1,  1410,    -1,   972,  1413,    -1,  1415,  1416,  1417,
     3487     978,  1147,    -1,    -1,   982,    37,    38,    -1,    40,    -1,
     3488      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3489      -1,    -1,    -1,    -1,    -1,  1003,    -1,    -1,    -1,    -1,
     3490      -1,    -1,    -1,    -1,    66,    -1,  1014,  1455,    -1,  1457,
     3491      72,  1459,    74,    75,    76,    -1,    -1,    79,    80,    81,
     3492      82,    83,    84,    -1,    86,    87,  1474,    -1,  1036,    -1,
     3493    1038,    -1,  1208,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3494      -1,    -1,    -1,    -1,    -1,  1053,  1054,   109,    -1,   111,
     3495    1226,   113,   114,    -1,    -1,   117,   118,   119,   120,   121,
     3496     122,    -1,    -1,    -1,    -1,    -1,  1074,    -1,    -1,    -1,
     3497      -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
     3498       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3499      19,    20,    21,    22,    23,    24,    25,    26,    27,  1275,
     3500    1276,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
     3501      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3502      -1,  1129,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3503      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1147,
     3504      69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,
     3505      -1,    -1,    -1,    -1,  1162,  1163,    -1,     3,     4,     5,
     3506       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3507      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3508      26,    27,   111,    -1,    30,    31,    32,    33,   117,   118,
     3509      36,    37,    38,    39,    40,    41,    -1,    43,    -1,    -1,
     3510      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
     3511      -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,  1395,
     3512      66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
     3513      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3514      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3515      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3516      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
     3517      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
     3518      -1,   127,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,
     3519      -1,    -1,    -1,    -1,    -1,  1303,    -1,    -1,  1306,    -1,
     3520      -1,    -1,    -1,    -1,    -1,    -1,  1482,    -1,    -1,    -1,
     3521      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3522      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3523    1506,  1507,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3524      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3525      -1,    -1,    -1,    -1,    -1,  1531,     3,     4,     5,     6,
     3526       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3527      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3528      27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,
     3529      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
     3530      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3531      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
     3532      67,    -1,    69,    39,    71,    72,    -1,    74,    75,    76,
     3533      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3534      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3535      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
     3536      -1,    -1,   109,    -1,   111,    -1,    -1,    83,    84,    -1,
     3537     117,   118,   119,   120,   121,   122,     4,     5,     6,     7,
    31723538       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    31733539      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3174      789,    -1,    30,    31,    32,    -1,    -1,  1075,  1076,    -1,
    3175      799,    39,   801,    -1,    -1,    -1,    -1,   806,   398,    -1,
    3176      809,    -1,   402,    -1,   813,    -1,    -1,    -1,    -1,    -1,
    3177       -1,    -1,    -1,   252,    -1,    -1,    -1,    -1,   257,    67,
    3178       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,  1020,
    3179     1021,    -1,    -1,    -1,  1122,    83,    84,    -1,    -1,    -1,
    3180      252,    -1,    -1,    -1,    -1,   257,    -1,    -1,    -1,  1040,
    3181       -1,    -1,  1017,  1018,    -1,  1020,  1021,    -1,  1146,    -1,
    3182       -1,   109,    -1,   111,    -1,   874,    -1,    -1,    -1,   117,
    3183      118,    -1,    -1,    -1,    -1,  1040,    -1,    -1,    -1,   479,
    3184       -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3185       -1,    -1,    -1,    -1,    -1,   904,    -1,    -1,    -1,    -1,
    3186       -1,  1189,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3187     1075,  1076,   351,    -1,    39,    -1,    -1,  1377,    -1,  1207,
    3188       -1,    -1,    -1,  1211,    -1,    -1,    -1,    -1,    -1,    -1,
    3189       -1,    -1,    -1,    -1,    -1,  1223,    -1,  1225,    -1,   351,
    3190       -1,  1229,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
    3191       75,    76,    -1,    -1,    -1,    26,    27,    28,    83,    84,
    3192       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1255,    -1,    -1,
    3193      570,   571,    -1,    -1,    -1,  1263,  1264,  1265,    -1,   418,
    3194       -1,  1146,    -1,    -1,   109,    -1,  1274,  1275,    -1,    -1,
    3195       -1,    -1,   117,   118,   433,    -1,    -1,  1188,  1189,   438,
    3196     1288,    -1,    -1,    -1,    -1,    -1,   418,   446,  1017,  1018,
    3197       -1,  1020,  1021,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3198     1211,   433,    -1,    -1,  1189,   464,   438,    -1,    99,    -1,
    3199      101,  1040,    -1,  1321,   446,    -1,    -1,    -1,  1229,  1327,
    3200       -1,    -1,    -1,   482,    -1,   484,  1211,    -1,    -1,    -1,
    3201       -1,    -1,   464,    -1,    -1,   126,    -1,   657,  1223,    -1,
    3202     1225,   661,    -1,    -1,    -1,    -1,  1075,  1076,    -1,    -1,
    3203      482,    -1,   484,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3204       -1,    -1,    -1,  1274,  1275,    -1,    -1,   526,    -1,    -1,
    3205     1255,    -1,  1283,    -1,    -1,    -1,    -1,  1288,  1263,  1264,
    3206     1265,    -1,    -1,    -1,    -1,    -1,  1394,    -1,    -1,  1274,
    3207     1275,   182,    -1,    -1,   526,    -1,    -1,    -1,    -1,   190,
    3208       -1,   192,   193,  1288,    -1,    -1,   197,    -1,   199,   200,
    3209     1321,  1419,    -1,    53,    -1,    55,    -1,  1146,    58,    59,
    3210       60,    -1,    62,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3211       -1,   590,    -1,  1441,    -1,    -1,    -1,    77,    -1,    -1,
    3212     1448,    -1,  1327,    -1,    -1,    -1,    -1,    -1,    -1,    89,
    3213       90,    -1,    -1,    -1,    26,    27,    28,    -1,   590,    -1,
    3214     1189,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    3215       14,    -1,    -1,   793,    -1,   634,   635,   636,   269,    -1,
    3216       -1,    -1,  1211,  1394,    -1,    -1,    -1,    -1,    -1,    -1,
    3217       -1,  1499,    -1,   652,  1223,    39,  1225,    -1,  1506,    -1,
    3218       -1,    -1,   634,   635,   636,    -1,    -1,    -1,  1419,  1394,
    3219       -1,   670,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3220      652,    -1,   681,    67,    -1,    -1,  1255,    99,    72,   101,
    3221     1441,    -1,    76,    -1,  1263,  1264,  1265,  1448,   670,    83,
    3222       84,    -1,    -1,    -1,    -1,  1274,  1275,    -1,   707,   681,
    3223       -1,   710,    -1,    -1,    -1,    -1,  1441,    -1,    -1,  1288,
    3224       -1,    -1,    -1,  1448,    -1,   109,    -1,    -1,    -1,    -1,
    3225       -1,    -1,    -1,   117,   118,   707,    -1,    -1,   710,    10,
    3226       11,    12,    13,    14,    -1,    -1,   745,    -1,  1499,    -1,
    3227       -1,   911,    -1,    -1,    -1,    -1,    -1,    -1,  1327,    -1,
    3228       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
    3229      182,    -1,    -1,   745,  1499,    -1,    -1,    -1,    -1,    -1,
    3230      192,   193,    -1,    -1,    -1,   197,    -1,   199,   200,    -1,
    3231      789,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3232      799,    72,   801,    74,    75,    76,    -1,   806,    -1,    -1,
    3233      809,    -1,    83,    84,   813,    -1,    -1,   789,    -1,    10,
    3234       11,    12,    13,    14,    -1,  1394,    -1,   799,   988,   801,
    3235       -1,    -1,    -1,    -1,   806,    -1,    -1,   809,   109,    -1,
    3236      111,   813,    -1,    -1,    -1,  1005,   117,   118,    39,    -1,
    3237       -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
    3238       -1,    -1,    -1,    -1,   344,    -1,   346,    -1,    -1,    -1,
    3239       -1,    -1,  1441,    -1,    -1,   874,    67,   357,   358,  1448,
    3240       39,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
    3241       -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,
    3242       -1,    -1,   874,    -1,    -1,   904,    -1,    -1,    67,    -1,
    3243       -1,    -1,    -1,    72,    -1,    74,    75,    76,   109,    -1,
    3244      111,    -1,    -1,  1083,    83,    84,   117,   118,    -1,    -1,
    3245     1499,    -1,   904,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3246       -1,    -1,    -1,   574,   575,    -1,    -1,    -1,    -1,    -1,
    3247      109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,   118,
    3248       -1,    -1,    -1,  1123,    -1,    -1,    -1,    -1,    -1,    -1,
    3249       -1,    -1,   603,    -1,    -1,   606,   607,    -1,   609,    -1,
    3250      611,   612,    -1,    -1,    -1,   616,   617,     3,     4,     5,
    3251        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3252       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3253       26,    27,    28,    -1,    30,    31,    32,    33,  1017,  1018,
    3254       36,  1020,  1021,    39,    -1,    -1,    -1,    -1,    -1,    -1,
     3540      -1,    -1,    30,    31,    32,    -1,    -1,    -1,  1516,    37,
     3541      38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
     3542      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3543      27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,
     3544      -1,    69,    39,    71,    72,    -1,    74,    75,    76,    -1,
     3545      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    32553546      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3256       -1,  1040,    -1,    -1,    -1,  1017,  1018,    -1,  1020,  1021,
    3257       -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
    3258       -1,    -1,    78,    -1,    -1,    -1,     7,    -1,  1040,    10,
    3259       11,    12,    13,    14,    -1,    -1,  1075,  1076,    -1,    -1,
     3547      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     3548      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,   116,   117,
     3549     118,   119,   120,   121,   122,     4,     5,     6,     7,     8,
     3550       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3551      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3552      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
     3553      39,    40,    10,    11,    12,    13,    14,    15,    16,    17,
     3554      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3555      -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,
     3556      69,    39,    71,    72,    -1,    74,    75,    76,    -1,    -1,
     3557      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3558      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3559      -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,
     3560     109,    -1,   111,    -1,    -1,    -1,    -1,   116,   117,   118,
     3561     119,   120,   121,   122,     4,     5,     6,     7,     8,     9,
     3562      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3563      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3564      30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,
     3565      40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3566      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3567      -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,
     3568      39,    71,    72,    -1,    74,    75,    76,    -1,    -1,    79,
     3569      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3570      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3571      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3572      -1,   111,    -1,    -1,    -1,    -1,   116,   117,   118,   119,
     3573     120,   121,   122,     4,     5,     6,     7,     8,     9,    10,
     3574      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3575      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3576      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
    32603577      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3261       -1,    -1,    -1,    -1,    -1,   111,    37,    38,    39,    40,
    3262       -1,   117,   118,  1075,  1076,    -1,    -1,    -1,    -1,    -1,
    3263       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3264       -1,    -1,    -1,   754,   755,    66,    67,    -1,    -1,    -1,
    3265       -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
    3266       81,    82,    83,    84,    -1,    86,    87,  1146,    -1,    -1,
    3267       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3268       -1,    -1,   574,   575,    -1,    -1,    -1,    -1,   109,    -1,
    3269      111,    -1,    -1,    -1,  1146,    -1,   117,   118,   119,   120,
    3270      121,   122,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3271     1189,   603,    -1,    -1,   606,   607,    -1,   609,    -1,   611,
    3272      612,    -1,    -1,    -1,   616,   617,    -1,    -1,    -1,    -1,
    3273       -1,    -1,  1211,    -1,    -1,    -1,    -1,  1189,    -1,   699,
    3274       -1,   701,    -1,    -1,  1223,    -1,  1225,    -1,   708,   709,
    3275       -1,    -1,    -1,   713,    -1,    -1,    -1,    -1,    -1,  1211,
    3276       -1,    -1,    -1,    -1,    -1,   725,    -1,    -1,    -1,    -1,
    3277      730,  1223,    -1,  1225,    -1,    -1,  1255,    -1,    -1,    -1,
    3278       -1,    -1,    -1,    -1,  1263,  1264,  1265,    -1,    -1,    -1,
    3279       -1,    -1,    -1,    -1,    -1,  1274,  1275,    -1,   758,    -1,
    3280      911,    -1,    -1,  1255,    -1,   916,    -1,    -1,    -1,  1288,
    3281       -1,  1263,  1264,  1265,    -1,    -1,    -1,    -1,    -1,    -1,
    3282       -1,    -1,  1274,  1275,    -1,    -1,    -1,    -1,    -1,    -1,
    3283       -1,    -1,    -1,    -1,    -1,    -1,  1288,    -1,    -1,    -1,
    3284       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1327,    -1,
    3285       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3286       49,    -1,   754,   755,    -1,    -1,    -1,    -1,    -1,    -1,
    3287       -1,    -1,    -1,    -1,    -1,  1327,    -1,    66,    -1,    -1,
    3288        7,    -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,
    3289       -1,    -1,    -1,    -1,    -1,    -1,    -1,   857,   858,   859,
    3290      860,    -1,   862,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3291       37,    38,    39,    40,    -1,  1394,    -1,   877,    -1,    -1,
    3292       -1,    -1,    -1,    -1,    -1,   114,    -1,    -1,    -1,   118,
    3293       -1,   891,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
    3294       67,    -1,  1394,    -1,    -1,    72,    -1,    -1,    -1,    76,
    3295       -1,    -1,    79,    80,    81,    82,    83,    84,   147,    86,
    3296       87,    -1,  1441,    -1,    -1,    -1,  1077,    -1,   157,  1448,
    3297       -1,   931,   161,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3298       -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,  1441,
    3299      117,   118,   119,   120,   121,   122,  1448,    10,    11,    12,
    3300       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3301       23,    24,    25,    26,    27,    -1,   976,    30,    31,    32,
    3302     1499,   210,   982,    -1,   916,    -1,    39,   987,    -1,    -1,
    3303       -1,    -1,   992,   222,   994,    -1,    -1,    -1,   998,    -1,
    3304     1000,  1001,    -1,    -1,  1004,    -1,    -1,  1499,    -1,    -1,
    3305       -1,   240,    -1,  1013,    67,    -1,    -1,    -1,    -1,    -1,
    3306       -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3307       -1,  1031,  1032,    -1,    -1,    -1,   265,    -1,    -1,    -1,
    3308       -1,    -1,    -1,   272,    -1,    -1,    -1,    -1,    -1,    -1,
    3309       -1,    -1,    -1,    -1,    -1,  1206,    -1,    -1,  1058,    -1,
    3310       -1,  1061,    -1,    -1,   117,   118,   295,    -1,    -1,    -1,
    3311       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   307,    -1,
    3312       -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
    3313       -1,    -1,    -1,    -1,    76,    -1,    78,    -1,    80,    -1,
    3314       -1,    -1,    -1,    -1,  1104,    87,    -1,    -1,    -1,    -1,
    3315     1110,  1111,    -1,    -1,    -1,    -1,   345,    -1,    -1,    -1,
    3316       -1,   350,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3317     1130,    -1,    -1,  1133,    -1,    -1,   118,  1137,   120,   121,
    3318      122,    -1,    -1,    -1,    -1,  1077,    -1,    -1,    -1,    -1,
    3319     1150,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3320       -1,    -1,    -1,  1163,    -1,  1165,  1166,  1167,  1168,    -1,
    3321       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   161,
    3322       -1,  1181,    -1,  1183,    -1,    -1,    -1,  1187,    -1,    -1,
    3323       -1,    -1,    -1,    -1,    -1,    -1,    -1,   426,   427,    -1,
    3324       -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,    -1,    -1,
    3325       -1,    -1,    -1,    -1,    -1,    -1,  1216,  1217,    -1,    -1,
    3326       -1,    -1,    -1,    -1,    -1,   454,    -1,    -1,    -1,    -1,
    3327       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3328      222,    -1,   224,   225,   226,    -1,    -1,    -1,    -1,    -1,
    3329       -1,    -1,    -1,   482,    -1,    -1,    -1,    -1,    -1,    -1,
    3330       -1,    -1,    -1,    -1,    -1,   494,  1266,  1267,    -1,    -1,
    3331       -1,    -1,    -1,    -1,  1206,    -1,  1276,   506,   260,   508,
    3332       -1,    -1,   511,   265,   513,   514,    -1,    -1,    -1,    -1,
    3333       -1,    -1,    -1,    -1,    -1,    -1,    -1,   526,   280,    -1,
    3334       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3335       -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
    3336       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3337       26,    27,    28,    -1,    30,    31,    32,  1337,    -1,  1339,
    3338     1340,  1341,    -1,    39,    -1,    -1,   328,    -1,    -1,   578,
    3339       -1,  1351,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3340     1360,   590,    -1,    -1,    -1,   594,    -1,    -1,   350,    -1,
    3341       -1,    67,    -1,   355,   356,    -1,    72,    -1,    74,    75,
    3342       76,   363,    78,    -1,    -1,  1385,    -1,    83,    84,    -1,
    3343       -1,   620,    -1,    -1,   147,    -1,   625,    -1,    -1,    -1,
    3344       -1,    -1,    -1,    -1,   157,   634,   635,   636,    -1,    44,
    3345       -1,    -1,    -1,   109,    -1,   111,   169,   170,    -1,    -1,
    3346       -1,   117,   118,   652,   406,    -1,    -1,    -1,  1428,  1429,
    3347       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3348       -1,  1441,   424,    -1,    -1,    -1,    -1,   429,  1448,   431,
    3349       37,    38,    -1,    40,    -1,   684,    -1,    92,    -1,    -1,
    3350       -1,    -1,    -1,    -1,    -1,    -1,   448,   102,    -1,   451,
    3351      452,    -1,    -1,    -1,    -1,    -1,    -1,   459,    -1,    66,
    3352     1480,   710,    -1,   712,  1484,    72,    -1,   240,    -1,    76,
    3353       -1,   473,    79,    80,    81,    82,    83,    84,   480,    86,
    3354       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3355       -1,   264,  1512,    -1,  1514,    -1,   745,    -1,    -1,    -1,
    3356       -1,    -1,   109,   158,   111,    -1,    -1,   114,    -1,    -1,
    3357      117,   118,   119,   120,   121,   122,    -1,   172,    -1,    -1,
    3358       -1,    -1,  1542,  1543,    -1,    -1,    -1,    -1,    -1,    -1,
    3359     1550,  1551,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3360      195,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3361       -1,    -1,   801,    -1,   209,    -1,   805,    -1,    -1,    -1,
    3362      809,    -1,    -1,   218,    -1,    -1,    -1,    -1,    -1,    -1,
    3363       -1,    -1,    -1,   228,    -1,    -1,    -1,    -1,    -1,    -1,
    3364       -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
    3365       -1,    -1,   594,    -1,    -1,    -1,    -1,    -1,   253,    -1,
    3366       -1,    -1,    -1,   258,    -1,    -1,    -1,   380,    -1,    -1,
    3367       -1,    -1,    -1,    66,    -1,    -1,   271,    -1,    -1,    72,
    3368      622,    -1,   277,    76,   279,   627,    79,    80,    81,    82,
    3369       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    3370       -1,   296,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3371       -1,    -1,    -1,    -1,    -1,   904,   109,    -1,   111,    -1,
    3372       -1,    -1,    -1,   116,   117,   118,   119,   120,   121,   122,
    3373      919,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3374       -1,    -1,    -1,   338,    -1,    -1,    -1,    -1,   343,    -1,
    3375       -1,    -1,    -1,    -1,   943,    -1,   698,    -1,    -1,    -1,
    3376       -1,   474,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3377      712,    -1,    -1,    -1,    -1,    -1,    -1,   372,    -1,    -1,
    3378       -1,   376,   377,    -1,   379,    -1,    -1,    -1,    -1,    -1,
    3379      732,   386,   387,    -1,   389,   390,    -1,   392,    -1,   394,
    3380      513,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3381      999,    -1,    -1,   526,    -1,    -1,   411,    -1,   531,    -1,
    3382       -1,   534,    -1,    -1,   419,    -1,    -1,    -1,    -1,    -1,
    3383       -1,  1020,  1021,   546,    -1,    -1,    -1,    -1,    -1,    -1,
    3384       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   444,
    3385       -1,   793,    -1,    -1,    -1,   568,    -1,    -1,    -1,    -1,
    3386       -1,    -1,    -1,   805,    -1,   578,    -1,    -1,    -1,    -1,
    3387       -1,    -1,   585,    -1,    -1,   470,    -1,   590,    -1,    -1,
    3388       -1,   476,   824,    -1,    -1,    -1,   481,    -1,    -1,    -1,
    3389       -1,  1080,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
    3390        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3391       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3392       27,    -1,   517,    30,    31,    32,   639,    -1,    -1,    -1,
    3393       -1,    -1,    39,    -1,   647,    -1,    -1,   532,    -1,    -1,
    3394       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3395       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1146,    -1,    -1,
    3396       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
    3397       -1,    -1,    -1,    37,    38,   570,    40,    -1,    -1,    -1,
    3398       -1,    -1,    -1,    -1,   579,    -1,    -1,    -1,    -1,    -1,
    3399       -1,   586,    -1,    -1,    -1,   937,    -1,   592,    -1,  1188,
    3400       -1,    -1,    66,    -1,   111,    -1,   601,    -1,    72,    -1,
    3401      117,   118,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3402       84,    -1,    86,    87,    -1,   967,    -1,    -1,    -1,    -1,
    3403       -1,    -1,   745,    -1,   747,    -1,  1225,    -1,    -1,   156,
    3404      157,    -1,    -1,    -1,   757,   109,   641,   111,    -1,    -1,
    3405      763,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
    3406     1002,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3407       -1,  1013,    -1,   190,    -1,    -1,    -1,    -1,    -1,    -1,
    3408      197,    -1,   677,    -1,    -1,  1274,  1275,    -1,    -1,    -1,
    3409      685,    -1,   805,   806,  1283,    -1,   809,    -1,    -1,    -1,
    3410       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   283,
    3411      823,   285,   286,    -1,    -1,    -1,    -1,    -1,    -1,   293,
    3412      294,   716,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3413       -1,   726,   727,   307,   308,    -1,    -1,    -1,    -1,    -1,
    3414       -1,    -1,    -1,  1085,    -1,    -1,    -1,    -1,    -1,    -1,
    3415      863,    -1,   269,    -1,   867,    -1,    -1,  1099,    -1,    -1,
    3416       -1,    -1,    -1,    -1,   759,    -1,    -1,    -1,    -1,   764,
    3417       -1,   345,    10,    11,    12,    13,    14,    15,    16,    17,
    3418       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3419       -1,   904,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
    3420       -1,    39,    40,    -1,    -1,  1394,   323,   381,    -1,    -1,
    3421       -1,    -1,    -1,    -1,   331,   332,    -1,   334,   335,    -1,
    3422       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,    67,
    3423      943,    -1,   349,   828,    -1,    -1,    74,    75,    -1,    -1,
    3424      835,    -1,    -1,    -1,    -1,    -1,  1188,    -1,    -1,    -1,
    3425       -1,   368,    -1,   848,   371,   850,    -1,    -1,   971,    -1,
    3426       -1,  1450,    -1,  1452,   977,    -1,    -1,    -1,   981,   864,
    3427       -1,    -1,    -1,   111,    -1,   870,    -1,   115,    -1,   117,
    3428      118,   398,    -1,    -1,    -1,   402,    -1,   882,    -1,  1002,
    3429      885,    -1,    -1,    -1,    -1,    -1,    -1,  1486,    -1,  1488,
    3430     1013,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3431       -1,    -1,    -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,
    3432       -1,    -1,  1035,    -1,  1037,    -1,  1515,    -1,    -1,    -1,
    3433       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1052,
    3434     1053,  1283,    10,    11,    12,    13,    14,    15,    16,    17,
    3435       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3436     1073,    -1,   479,    -1,    -1,   482,    -1,   962,    -1,    -1,
    3437       -1,    39,    -1,    -1,    -1,   549,   550,   551,   552,   553,
    3438      554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
    3439      564,   565,   566,    -1,    -1,    -1,    -1,    37,    38,    67,
    3440       40,    -1,   997,    -1,   521,    -1,    -1,    -1,   525,   526,
    3441       -1,    -1,    -1,    -1,    -1,  1128,    -1,    -1,    -1,    -1,
    3442       -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,
    3443       -1,    -1,    72,  1146,    -1,    -1,    76,    -1,    -1,    79,
    3444       80,    81,    82,    83,    84,    -1,    86,    87,  1161,  1162,
    3445       -1,    -1,    -1,   570,   571,    -1,    -1,    -1,    -1,    -1,
    3446     1055,    -1,    -1,    -1,    -1,    -1,  1061,    -1,    -1,   109,
    3447       -1,   111,   589,   590,   114,    -1,    -1,   117,   118,   119,
    3448      120,   121,   122,   600,    -1,   602,   603,    -1,    -1,    -1,
    3449       -1,    -1,   609,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3450     1095,    -1,   619,   620,    -1,  1100,    -1,    -1,   625,    -1,
    3451       -1,    -1,    -1,  1108,    -1,    -1,    -1,   634,   635,   636,
    3452       -1,   695,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3453       -1,    -1,    -1,    -1,    -1,   652,    -1,    -1,    -1,    -1,
    3454      657,   658,    -1,    -1,   661,   662,  1141,    -1,    -1,    -1,
    3455       -1,   668,    -1,    -1,    -1,    -1,    -1,    -1,  1153,    -1,
    3456       -1,  1156,    -1,  1158,    -1,    -1,    -1,    -1,    -1,    -1,
    3457      687,    -1,    -1,    -1,    -1,    -1,    -1,  1172,  1173,    -1,
    3458       -1,    -1,   756,    -1,    -1,    -1,    -1,    -1,  1530,  1302,
    3459       -1,    -1,  1305,   710,   711,    -1,    -1,    -1,    -1,  1194,
    3460       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3461       -1,    -1,   786,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3462       -1,    -1,    -1,    -1,    -1,    -1,    -1,   744,   745,    -1,
    3463       -1,    -1,   749,   750,    -1,    -1,    -1,    -1,    -1,    -1,
    3464       -1,    -1,    -1,    -1,    -1,    -1,  1241,    -1,    -1,    -1,
    3465       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3466       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3467       -1,    30,    31,    32,    -1,    -1,   793,    -1,    -1,    -1,
    3468       39,    -1,    -1,    -1,   801,    -1,    -1,    -1,    -1,    -1,
    3469       -1,   808,   809,    -1,    -1,   812,    -1,   814,    -1,    -1,
    3470       -1,    -1,    -1,    -1,    -1,    -1,    -1,   824,    67,    -1,
    3471       -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    78,
    3472       -1,  1316,    -1,  1318,    83,    84,    -1,    -1,    -1,    -1,
    3473       -1,    -1,   906,    -1,    -1,  1330,    -1,  1332,    -1,    -1,
    3474       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3475       -1,    -1,   111,    -1,  1349,    -1,    -1,    -1,   117,   118,
    3476       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3477     1365,  1366,    -1,    -1,    -1,    -1,    -1,   951,    -1,   896,
    3478       -1,  1376,    -1,    -1,  1379,    -1,   903,   904,   905,    -1,
    3479      907,    -1,    -1,    -1,   911,    -1,    -1,    -1,    -1,    -1,
    3480       -1,    -1,  1515,    -1,    -1,  1400,    -1,    -1,    -1,    -1,
    3481       -1,    -1,   986,    -1,  1409,   932,   933,  1412,    -1,  1414,
    3482     1415,  1416,    -1,    -1,    -1,   999,    10,    11,    12,    13,
    3483       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3484       24,    25,    26,    27,    28,    -1,    -1,    -1,    -1,    -1,
    3485      967,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,  1454,
    3486       -1,  1456,    -1,  1458,    -1,    -1,  1040,    -1,    -1,    -1,
    3487       -1,   988,   989,    -1,    -1,    -1,    -1,    -1,  1473,    -1,
    3488       -1,    -1,   999,    67,    -1,    -1,    -1,    -1,  1005,  1006,
    3489       -1,  1008,  1009,  1010,    78,    -1,    -1,    -1,    -1,    -1,
    3490       -1,    -1,    -1,  1020,  1021,    -1,    -1,    -1,    -1,    -1,
    3491       -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
    3492        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3493       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3494       26,    27,    -1,  1117,    30,    31,    32,    33,    -1,    -1,
    3495       36,    37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,
    3496       -1,    -1,    -1,    -1,    -1,    -1,  1083,    -1,  1085,    -1,
    3497       -1,    -1,    -1,  1090,    -1,    -1,    -1,    -1,    -1,    -1,
    3498       66,    67,  1099,    69,    -1,    71,    72,    -1,    74,    75,
    3499       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3500       86,    87,    -1,  1177,  1178,  1122,  1123,  1124,    -1,    -1,
    3501       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3502       -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,  1146,
    3503       -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
    3504       -1,    -1,    -1,    -1,    -1,    -1,   132,    -1,     3,     4,
    3505        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3506       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3507       25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
    3508       -1,    36,    37,    38,    39,    40,    41,    -1,    43,    -1,
    3509     1207,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
    3510       -1,    -1,    57,    -1,    -1,    -1,    61,    62,  1225,    64,
    3511       -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
    3512       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3513       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3514       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3515       -1,    -1,    -1,    -1,   109,    -1,   111,  1274,  1275,   114,
    3516       -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
    3517       -1,    -1,   127,    -1,    -1,    -1,    -1,   132,    -1,    -1,
    3518       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3519       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3520       21,    22,    23,    24,    25,    26,    27,    -1,  1382,    30,
    3521       31,    32,    33,    -1,    -1,    36,    37,    38,    39,    40,
    3522       -1,    -1,    -1,    -1,  1398,    -1,    -1,    -1,    -1,    -1,
    35233578      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35243579      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
    35253580      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    35263581      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3527       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1394,    -1,    -1,
     3582      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35283583      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    3529      111,    -1,    -1,    -1,  1468,  1469,   117,   118,   119,   120,
    3530      121,   122,    -1,     4,     5,     6,     7,     8,     9,    10,
    3531       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3532       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3533       31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
    3534       -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    3535       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3536       27,    28,    -1,    -1,  1481,    66,    67,    -1,    69,    -1,
    3537       71,    72,    39,    74,    75,    76,    -1,    -1,    79,    80,
    3538       81,    82,    83,    84,    -1,    86,    87,    -1,  1505,  1506,
    3539       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3540       67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    3541      111,    78,    -1,  1530,    -1,   116,   117,   118,   119,   120,
     3584     111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
    35423585     121,   122,     4,     5,     6,     7,     8,     9,    10,    11,
    35433586      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    35443587      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3545       32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    10,
    3546       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3547       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3548       31,    32,    -1,    -1,    66,    67,    -1,    69,    39,    71,
     3588      32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,
     3589      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3590      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3591      -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,
    35493592      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
    35503593      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
    3551       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3552       -1,    72,    -1,    74,    75,    -1,    -1,   109,    -1,   111,
    3553       -1,    -1,    83,    84,   116,   117,   118,   119,   120,   121,
     3594      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3595      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
     3596      -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,
    35543597     122,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    35553598      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    35563599      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3557       -1,    -1,    -1,    -1,    37,    38,    39,    40,    10,    11,
    3558       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3559       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3560       32,    -1,    -1,    66,    67,    -1,    69,    39,    71,    72,
     3600      -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,
     3601      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3602      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3603      -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,
    35613604      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
    35623605      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    3563       -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
    3564       -1,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
    3565       -1,    -1,    -1,   116,   117,   118,   119,   120,   121,   122,
     3606      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3607      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
     3608      -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
    35663609       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    35673610      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    35683611      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3569       -1,    -1,    -1,    37,    38,    39,    40,    10,    11,    12,
     3612      -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,    -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,    -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,
     3616      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3617      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3618      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3619      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3620      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     0,
     3621      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
     3622      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3623      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3624      31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,    40,
     3625      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3626      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3627      -1,    -1,    -1,    64,    -1,    -1,    67,    -1,    69,    -1,
     3628      71,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
     3629      -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,
     3630      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3631      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3632     111,    -1,    -1,    -1,    -1,    -1,   117,   118,     3,     4,
     3633       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3634      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3635      25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
     3636      -1,    36,    -1,    -1,    39,    40,    -1,    -1,    -1,    -1,
     3637      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3638      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,
     3639      -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,
     3640      75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,
     3641      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3642      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3643      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3644     115,    -1,   117,   118,     3,     4,     5,     6,     7,     8,
     3645       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3646      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3647      -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
     3648      39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3649      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3650      -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,
     3651      69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
     3652      -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,
     3653      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3654      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3655     109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
     3656       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    35703657      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    35713658      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3572       -1,    -1,    66,    67,    -1,    69,    39,    71,    72,    -1,
    3573       74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3574       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3575       -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
    3576       -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3577       -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     4,
    3578        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3579       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3580       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3581       -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     3659      -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    10,    11,
     3660      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3661      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3662      32,    33,    34,    35,    67,    -1,    69,    39,    71,    72,
     3663      -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
     3664      83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3665      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
     3666      -1,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
     3667      -1,    -1,    -1,    -1,   117,   118,     3,     4,     5,     6,
     3668       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3669      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3670      27,    28,    -1,    30,    31,    32,    33,    -1,    -1,    36,
     3671      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35823672      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35833673      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3584       -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
    3585       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3586       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3587       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3588       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3589       -1,    -1,   117,   118,   119,   120,   121,   122,     4,     5,
    3590        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3591       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3592       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    3593       -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,
    3594       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3595       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3596       66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
    3597       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3598       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3599       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3600       -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
    3601       -1,   117,   118,   119,   120,   121,   122,     4,     5,     6,
    3602        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3603       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3604       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3605       37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,
    3606       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3607       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
    3608       67,    -1,    69,    -1,    71,    72,    -1,    74,    75,    76,
    3609       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3610       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3611       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3612       -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3613      117,   118,   119,   120,   121,   122,     0,    -1,    -1,     3,
    3614        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3615       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3616       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    33,
    3617       -1,    -1,    36,    -1,    -1,    39,    40,    -1,    -1,    -1,
    3618       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3619       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3620       64,    -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
    3621       74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
    3622       84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3623       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3624       -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3625       -1,    -1,    -1,   117,   118,     3,     4,     5,     6,     7,
    3626        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3627       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3628       -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
    3629       -1,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3630       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3631       -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,
    3632       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    3633       -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
    3634       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3635       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3636       -1,   109,    -1,   111,    -1,    -1,    -1,   115,    -1,   117,
    3637      118,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3674      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
     3675      -1,    78,     4,     5,     6,     7,     8,     9,    10,    11,
    36383676      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    36393677      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3640       32,    33,    -1,    -1,    36,    -1,    -1,    39,    40,    -1,
     3678      32,    -1,    -1,    -1,   111,    -1,    -1,    39,    -1,    -1,
     3679     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36413680      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3642       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3643       -1,    -1,    64,    -1,    -1,    67,    -1,    69,    -1,    71,
     3681      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
    36443682      72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
    36453683      -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36463684      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36473685      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
    3648       -1,    -1,    -1,    -1,    -1,   117,   118,     3,     4,     5,
    3649        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3686      -1,    -1,    -1,    -1,    -1,   117,   118,     4,     5,     6,
     3687       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3688      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3689      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3690      -1,    -1,    39,    -1,    -1,    -1,    -1,    10,    11,    12,
     3691      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3692      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3693      67,    -1,    69,    -1,    71,    -1,    39,    74,    75,    -1,
     3694       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3695      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3696      24,    25,    26,    27,    67,    -1,    30,    31,    32,    -1,
     3697      -1,    74,    75,   110,   111,    39,    -1,    -1,    -1,    -1,
     3698     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3699      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3700      -1,    -1,    -1,    67,    -1,    69,   109,    71,   111,    -1,
     3701      74,    75,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,
     3702      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3703      -1,    -1,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3704      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
     3705      -1,    -1,    -1,   117,   118,     4,     5,     6,     7,     8,
     3706       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3707      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3708      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
     3709      39,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
    36503710      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3651       26,    27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,
    3652       36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
     3711      26,    27,    -1,    -1,    30,    31,    32,    -1,    67,    -1,
     3712      69,    -1,    71,    39,    40,    74,    75,    -1,    -1,    -1,
     3713      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3714      -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,
     3715      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
     3716      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
     3717       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3718      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3719      24,    25,    26,    27,    -1,   111,    30,    31,    32,   115,
     3720      -1,   117,   118,    -1,    -1,    39,    -1,    -1,    -1,    -1,
    36533721      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36543722      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3655       -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
    3656       -1,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3657       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3658       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3659       -1,    -1,    -1,    -1,    -1,   111,    39,    -1,    -1,    -1,
    3660       -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3723      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
     3724      74,    75,    -1,     4,     5,     6,     7,     8,     9,    10,
     3725      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3726      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3727      31,    32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,
     3728      -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
    36613729      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3662       -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    72,
    3663       -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
    3664       83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3665       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3666       -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
    3667       -1,    -1,    -1,    -1,   117,   118,     4,     5,     6,     7,
     3730      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
     3731      71,    -1,    -1,    74,    75,    -1,     4,     5,     6,     7,
    36683732       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    36693733      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    36703734      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
    3671       -1,    39,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    3672       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3673       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    67,
    3674       -1,    69,    -1,    71,    -1,    39,    74,    75,    -1,     4,
     3735     111,    39,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,
     3736      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3737      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3738      -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,     4,
    36753739       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    36763740      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3677       25,    26,    27,    67,    -1,    30,    31,    32,    -1,    -1,
    3678       74,    75,   110,   111,    39,    -1,    -1,    -1,    -1,   117,
     3741      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3742      -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,   117,
    36793743     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36803744      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3681       -1,    -1,    67,    -1,    69,   109,    71,   111,    -1,    74,
    3682       75,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
     3745      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
     3746      75,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3747      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3748      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
     3749      39,    40,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3750      -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
     3751      -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,
     3752      -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
     3753      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    36833754      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3684       -1,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3685       -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3686       -1,    -1,   117,   118,     4,     5,     6,     7,     8,     9,
     3755      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3756     109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
     3757     119,   120,   121,   122,    10,    11,    12,    13,    14,    15,
     3758      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3759      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3760      -1,    37,    38,    39,    40,    10,    11,    12,    13,    14,
     3761      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3762      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3763      66,    67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,
     3764      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3765      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3766      -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
     3767      75,    76,    -1,   109,   110,   111,    -1,    -1,    83,    84,
     3768      -1,   117,   118,   119,   120,   121,   122,    10,    11,    12,
     3769      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3770      23,    24,    25,    26,    27,    -1,   111,    30,    31,    32,
     3771      -1,    -1,   117,   118,    37,    38,    39,    40,    10,    11,
     3772      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3773      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3774      32,    -1,    -1,    66,    67,    -1,    -1,    39,    -1,    72,
     3775      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
     3776      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3777      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
     3778      72,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
     3779      -1,    83,    84,    -1,   117,   118,   119,   120,   121,   122,
     3780      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3781      20,    21,    22,    23,    24,    25,    26,    27,    -1,   111,
     3782      30,    31,    32,    -1,    -1,   117,   118,    37,    38,    39,
     3783      40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3784      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3785      -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,
     3786      39,    40,    72,    -1,    74,    75,    76,    -1,    -1,    79,
     3787      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3788      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3789      -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,
     3790      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,
     3791     120,   121,   122,    10,    11,    12,    13,    14,    15,    16,
     3792      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3793      27,    -1,   111,    30,    31,    32,   115,    -1,   117,   118,
     3794      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
     3795      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3796      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
     3797      67,    -1,    -1,    39,    40,    72,    -1,    74,    75,    76,
     3798      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3799      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3800      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
     3801      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3802     117,   118,   119,   120,   121,   122,    10,    11,    12,    13,
     3803      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3804      24,    25,    26,    27,    -1,   111,    30,    31,    32,   115,
     3805      -1,   117,   118,    37,    38,    39,    40,    -1,    -1,    -1,
     3806      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
     3807      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3808      26,    27,    66,    67,    30,    31,    32,    -1,    72,    -1,
     3809      74,    75,    76,    39,    -1,    79,    80,    81,    82,    83,
     3810      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3811      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3812      -1,    67,    -1,    -1,    -1,   109,    -1,   111,    74,    75,
     3813      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     3,
     3814       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3815      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3816      24,    25,    26,    27,    -1,   111,    30,    31,    32,    -1,
     3817      -1,   117,   118,    -1,    -1,    39,    -1,    -1,    -1,    10,
     3818      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3819      21,    22,    23,    24,    25,    26,    27,    28,    -1,    30,
     3820      31,    32,    -1,    67,    -1,    69,    -1,    71,    39,    -1,
     3821      74,    75,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
     3822      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3823      23,    24,    25,    26,    27,    -1,    67,    30,    31,    32,
     3824      -1,    72,    -1,    74,    75,    76,    39,    78,    -1,    -1,
     3825     114,    -1,    83,    84,    -1,    10,    11,    12,    13,    14,
     3826      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3827      25,    26,    27,    28,    67,    30,    31,    32,    -1,    72,
     3828     111,    74,    75,    76,    39,    -1,   117,   118,    -1,    -1,
     3829      83,    84,    -1,    10,    11,    12,    13,    14,    15,    16,
     3830      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3831      27,    -1,    67,    30,    31,    32,   109,    -1,   111,    74,
     3832      75,    -1,    39,    78,   117,   118,    10,    11,    12,    13,
     3833      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3834      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3835      67,    -1,    -1,    -1,    -1,    39,   111,    74,    75,    -1,
     3836      -1,    -1,   117,   118,    10,    11,    12,    13,    14,    15,
     3837      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3838      26,    27,    -1,    67,    30,    31,    32,    -1,    -1,    -1,
     3839      74,    75,    -1,    39,   111,    -1,    -1,    -1,    -1,    -1,
     3840     117,   118,    10,    11,    12,    13,    14,    15,    16,    17,
     3841      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3842      -1,    67,    30,    31,    32,    -1,    -1,   111,    74,    75,
     3843      -1,    39,    -1,   117,   118,    10,    11,    12,    13,    14,
     3844      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3845      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    67,
     3846      -1,    -1,    -1,    -1,    39,   111,    74,    75,    -1,    -1,
     3847      -1,   117,   118,    10,    11,    12,    13,    14,    15,    16,
     3848      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3849      27,    -1,    67,    30,    31,    32,    -1,    -1,    -1,    74,
     3850      75,    -1,    39,   111,    -1,    -1,    -1,    -1,    -1,   117,
     3851     118,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3852      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3853      67,    30,    31,    32,    -1,    -1,   111,    74,    75,    -1,
     3854      39,    -1,   117,   118,     4,     5,     6,     7,     8,     9,
     3855      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3856      20,    21,    22,    23,    24,    25,    26,    27,    67,    -1,
     3857      30,    31,    32,    -1,   111,    74,    75,    -1,    -1,    39,
     3858     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3859      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3860      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
     3861      -1,    71,    -1,    -1,    74,    75,    -1,    -1,   117,   118,
     3862      37,    38,    -1,    40,    41,    -1,    43,    -1,    -1,    46,
     3863      47,    48,    49,    50,    51,    52,    53,    -1,    -1,    56,
     3864      57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,
     3865     110,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
     3866      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3867      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3868      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3869      -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,
     3870     117,   118,   119,   120,   121,   122,    -1,    -1,    37,    38,
     3871     127,    40,    41,    -1,    43,   132,    -1,    46,    47,    48,
     3872      49,    50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,
     3873      -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
     3874      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
     3875      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3876      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3877      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3878     109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
     3879     119,   120,   121,   122,    -1,    -1,    -1,    -1,   127,    -1,
     3880      -1,    -1,    -1,   132,     4,     5,     6,     7,     8,     9,
    36873881      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    36883882      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    36893883      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
    3690       -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    3691       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3692       27,    -1,    -1,    30,    31,    32,    -1,    67,    -1,    69,
    3693       -1,    71,    39,    40,    74,    75,    -1,    -1,    -1,    -1,
    3694       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3695       -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,
    3696       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
    3697       -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,     4,
    3698        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3699       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3700       25,    26,    27,    -1,   111,    30,    31,    32,   115,    -1,
    3701      117,   118,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
    3702       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3703       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3704       -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
    3705       75,    -1,     4,     5,     6,     7,     8,     9,    10,    11,
    3706       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3707       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3708       32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,    -1,
    3709       -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
    3710       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3711       -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
    3712       -1,    -1,    74,    75,    -1,     4,     5,     6,     7,     8,
    3713        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3714       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3715       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,   111,
    3716       39,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,
    3717       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3718       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3719       69,    -1,    71,    -1,    -1,    74,    75,    -1,     4,     5,
    3720        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3721       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3722       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    3723       -1,    -1,   111,    39,    -1,    -1,    -1,    -1,   117,   118,
    3724       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3725       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3726       -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
    3727       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3728       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3729       30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,
    3730       40,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3731       -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3732       -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,
    3733       -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,
    3734       80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
    3735       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3736       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
    3737       -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,   119,
    3738      120,   121,   122,    10,    11,    12,    13,    14,    15,    16,
    3739       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3740       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3741       37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
    3742       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3743       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
    3744       67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,    76,
    3745       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3746       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3747       -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
    3748       76,    -1,   109,   110,   111,    -1,    -1,    83,    84,    -1,
    3749      117,   118,   119,   120,   121,   122,    10,    11,    12,    13,
    3750       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3751       24,    25,    26,    27,    -1,   111,    30,    31,    32,    -1,
    3752       -1,   117,   118,    37,    38,    39,    40,    10,    11,    12,
    3753       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3754       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3755       -1,    -1,    66,    67,    -1,    -1,    39,    -1,    72,    -1,
    3756       74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3757       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3758       -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,
    3759       -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3760       83,    84,    -1,   117,   118,   119,   120,   121,   122,    10,
    3761       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3762       21,    22,    23,    24,    25,    26,    27,    -1,   111,    30,
    3763       31,    32,    -1,    -1,   117,   118,    37,    38,    39,    40,
    3764       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3765       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3766       30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,
    3767       40,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3768       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3769       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    3770       -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,    -1,
    3771      111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
    3772      121,   122,    10,    11,    12,    13,    14,    15,    16,    17,
    3773       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3774       -1,   111,    30,    31,    32,   115,    -1,   117,   118,    37,
    3775       38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
    3776       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3777       27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,
    3778       -1,    -1,    39,    -1,    72,    -1,    74,    75,    76,    -1,
    3779       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3780       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3781       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
    3782       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
    3783      118,   119,   120,   121,   122,    10,    11,    12,    13,    14,
    3784       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3785       25,    26,    27,    -1,   111,    30,    31,    32,    -1,    -1,
    3786      117,   118,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
    3787       -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    3788       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3789       27,    66,    67,    30,    31,    32,    -1,    72,    -1,    74,
    3790       75,    76,    39,    -1,    79,    80,    81,    82,    83,    84,
    3791       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3792       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3793       67,    -1,    -1,    -1,   109,    -1,   111,    74,    75,    -1,
    3794       -1,    -1,   117,   118,   119,   120,   121,   122,     3,     4,
    3795        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3796       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3797       25,    26,    27,    -1,   111,    30,    31,    32,    -1,    -1,
    3798      117,   118,    -1,    -1,    39,    -1,    -1,    -1,    10,    11,
    3799       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3800       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3801       32,    -1,    67,    -1,    69,    -1,    71,    39,    -1,    74,
    3802       75,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    3803       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3804       24,    25,    26,    27,    -1,    67,    30,    31,    32,    -1,
    3805       72,    -1,    74,    75,    76,    39,    -1,    -1,    -1,   114,
    3806       -1,    83,    84,    -1,    10,    11,    12,    13,    14,    15,
    3807       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3808       26,    27,    -1,    67,    30,    31,    32,   109,    72,   111,
    3809       74,    75,    76,    39,    -1,   117,   118,    -1,    -1,    83,
    3810       84,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    3811       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3812       -1,    67,    30,    31,    32,   109,    72,   111,    74,    75,
    3813       76,    39,    -1,   117,   118,    -1,    -1,    83,    84,    -1,
    3814       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3815       20,    21,    22,    23,    24,    25,    26,    27,    28,    67,
    3816       30,    31,    32,   109,    72,   111,    74,    75,    76,    39,
    3817       -1,   117,   118,    -1,    -1,    83,    84,    -1,    10,    11,
    3818       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3819       22,    23,    24,    25,    26,    27,    28,    67,    30,    31,
    3820       32,   109,    -1,   111,    74,    75,    -1,    39,    78,   117,
    3821      118,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3822       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3823       -1,    30,    31,    32,    -1,    67,    -1,    -1,    -1,   109,
    3824       39,   111,    74,    75,    -1,    -1,    78,   117,   118,    10,
    3825       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3826       21,    22,    23,    24,    25,    26,    27,    -1,    67,    30,
    3827       31,    32,    -1,    -1,    -1,    74,    75,    -1,    39,   111,
    3828       -1,    -1,    -1,    -1,    -1,   117,   118,    10,    11,    12,
    3829       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3830       23,    24,    25,    26,    27,    -1,    67,    30,    31,    32,
    3831       -1,    -1,   111,    74,    75,    -1,    39,    -1,   117,   118,
    3832       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3833       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3834       30,    31,    32,    -1,    67,    -1,    -1,    -1,    -1,    39,
    3835      111,    74,    75,    -1,    -1,    -1,   117,   118,    10,    11,
    3836       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3837       22,    23,    24,    25,    26,    27,    -1,    67,    30,    31,
    3838       32,    -1,    -1,    -1,    74,    75,    -1,    39,   111,    -1,
    3839       -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,
    3840       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3841       -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
    3842       -1,   111,    74,    75,    -1,    -1,    -1,   117,   118,     4,
    3843        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3844       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3845       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,   111,
    3846       -1,    -1,    -1,    -1,    39,   117,   118,    -1,    -1,    -1,
    3847       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3848       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3849       -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
    3850       75,    37,    38,    -1,    40,    41,    -1,    43,    -1,    -1,
     3884      -1,    37,    38,    -1,    40,    41,    -1,    43,    44,    45,
    38513885      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
    3852       56,    57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
    3853       66,    -1,    -1,    -1,    -1,   110,    72,    -1,    -1,    -1,
     3886      56,    57,    -1,    -1,    -1,    61,    62,    67,    64,    69,
     3887      66,    71,    -1,    -1,    74,    75,    72,    -1,    -1,    -1,
    38543888      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3855       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3889      86,    87,    -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,
    38563890      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38573891      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
    38583892      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    37,
    3859       38,   127,    40,    41,    -1,    43,   132,    -1,    46,    47,
     3893      38,   127,    40,    41,    -1,    43,    44,    45,    46,    47,
    38603894      48,    49,    50,    51,    52,    53,    -1,    -1,    -1,    57,
    38613895      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,
     
    38653899      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38663900      -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,
    3867      118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,   127,
    3868       -1,    -1,    -1,    -1,   132,     4,     5,     6,     7,     8,
     3901     118,   119,   120,   121,   122,    -1,    -1,    37,    38,   127,
     3902      40,    41,    -1,    43,    -1,    -1,    46,    47,    48,    49,
     3903      50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,
     3904      -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
     3905      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     3906      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3907      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
     3908      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3909      -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,   119,
     3910     120,   121,   122,    66,    -1,    -1,    -1,   127,    -1,    72,
     3911      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
     3912      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3913      -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
     3914      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
     3915      -1,   114,    -1,    -1,   117,   118,   119,   120,   121,   122,
     3916      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
     3917      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3918      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
     3919      -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3920      -1,    -1,    -1,   109,    -1,   111,    -1,    37,    38,    -1,
     3921      40,   117,   118,   119,   120,   121,   122,    66,    -1,    -1,
     3922      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
     3923      79,    80,    81,    82,    83,    84,    66,    86,    87,    -1,
     3924      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     3925      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3926     109,    -1,   111,    -1,    37,    38,    -1,    40,   117,   118,
     3927     119,   120,   121,   122,    -1,    -1,    -1,    -1,    -1,   109,
     3928      -1,   111,    -1,    37,    38,    -1,    40,   117,   118,   119,
     3929     120,   121,   122,    66,    -1,    -1,    -1,    -1,    -1,    72,
     3930      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
     3931      83,    84,    66,    86,    87,    -1,    -1,    -1,    72,    -1,
     3932      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3933      84,    -1,    86,    87,    -1,    -1,   109,    -1,    -1,    -1,
     3934      37,    38,    -1,    40,   117,   118,   119,   120,   121,   122,
     3935      -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    37,
     3936      38,    -1,    40,   117,   118,   119,   120,   121,   122,    66,
     3937      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
     3938      -1,    -1,    79,    80,    81,    82,    83,    84,    66,    86,
     3939      87,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
     3940      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3941      -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3942     117,   118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,
     3943      -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,
     3944     118,   119,   120,   121,   122,     4,     5,     6,     7,     8,
    38693945       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    38703946      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3871       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
    3872       39,    -1,    37,    38,    -1,    40,    41,    -1,    43,    44,
    3873       45,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
    3874       -1,    56,    57,    -1,    -1,    -1,    61,    62,    67,    64,
    3875       69,    66,    71,    -1,    -1,    74,    75,    72,    -1,    -1,
    3876       -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3877       -1,    86,    87,    -1,    -1,    -1,    -1,    96,    -1,    -1,
    38783947      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3879       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
    3880       -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
    3881       37,    38,   127,    40,    41,    -1,    43,    44,    45,    46,
    3882       47,    48,    49,    50,    51,    52,    53,    -1,    -1,    -1,
    3883       57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,
    3884       -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
    3885       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3886       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3948      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38873949      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3888       -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,
    3889      117,   118,   119,   120,   121,   122,    -1,    -1,    37,    38,
    3890      127,    40,    41,    -1,    43,    -1,    -1,    46,    47,    48,
    3891       49,    50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,
    3892       -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
    3893       -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3894       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3895       -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,
    3896       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3897      109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
    3898      119,   120,   121,   122,    66,    -1,    -1,    -1,   127,    -1,
    3899       72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
    3900       82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
    3901       -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
    3902       -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
    3903       -1,   113,   114,    -1,    -1,   117,   118,   119,   120,   121,
    3904      122,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
    3905       -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3906       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    37,
    3907       38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3908       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    37,    38,
    3909       -1,    40,   117,   118,   119,   120,   121,   122,    66,    -1,
    3910       -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
    3911       -1,    79,    80,    81,    82,    83,    84,    66,    86,    87,
    3912       -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3913       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3914       -1,   109,    -1,   111,    -1,    37,    38,    -1,    40,   117,
    3915      118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,    -1,
    3916      109,    -1,    -1,    -1,    37,    38,    -1,    40,   117,   118,
    3917      119,   120,   121,   122,    66,    -1,    -1,    -1,    -1,    -1,
    3918       72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
    3919       82,    83,    84,    66,    86,    87,    -1,    -1,    -1,    72,
    3920       -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
    3921       83,    84,    -1,    86,    87,    -1,    -1,   109,    -1,    -1,
    3922       -1,    37,    38,    -1,    40,   117,   118,   119,   120,   121,
    3923      122,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
    3924       -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
    3925       66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
    3926       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3927       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3928       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3929       -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
    3930       -1,   117,   118,   119,   120,   121,   122,     4,     5,     6,
     3950      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3951      69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
     3952      -1,    -1,    -1,    -1,    83,    84,     3,     4,     5,     6,
    39313953       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    39323954      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3933       27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3955      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    39343956      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39353957      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39363958      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3937       67,    -1,    69,    -1,    71,    72,    -1,    74,    75,    76,
    3938       -1,    -1,    -1,    -1,    -1,    -1,    83,    84,     3,     4,
    3939        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3940       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3941       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3942       -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
     3959      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,     3,
     3960       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3961      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3962      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3963      -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,
    39433964      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39443965      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3945       -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
    3946       75,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3966      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
     3967      74,    75,     4,     5,     6,     7,     8,     9,    10,    11,
    39473968      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    39483969      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     
    39513972      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39523973      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
    3953       -1,    -1,    74,    75,     4,     5,     6,     7,     8,     9,
    3954       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3955       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3956       30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
    3957       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3958       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3959       -1,    30,    31,    32,    33,    34,    35,    67,    -1,    69,
    3960       39,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
    3961       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3962       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3963       -1,    -1,    -1,    -1,    -1,    74,    75
     3974      -1,    -1,    74,    75
    39643975};
    39653976
     
    39723983      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
    39733984      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
    3974       76,    83,    84,   109,   111,   117,   118,   137,   140,   149,
    3975      198,   212,   213,   214,   215,   216,   217,   218,   219,   220,
    3976      221,   222,   223,   224,   225,   226,   227,   228,   229,   231,
    3977      232,   233,   234,   235,   236,   237,   238,   240,   241,   242,
    3978      243,   244,   245,   247,   255,   256,   283,   284,   285,   293,
    3979      296,   302,   303,   305,   307,   308,   314,   319,   323,   324,
    3980      325,   326,   327,   328,   329,   330,   350,   367,   368,   369,
    3981      370,    72,   139,   140,   149,   215,   217,   225,   227,   237,
    3982      241,   243,   284,    82,   109,   312,   313,   314,   312,   312,
    3983       72,    74,    75,    76,   138,   139,   273,   274,   294,   295,
    3984       74,    75,   274,   109,   305,    11,   199,   109,   149,   319,
    3985      324,   325,   326,   328,   329,   330,   112,   134,   111,   218,
    3986      225,   227,   323,   327,   366,   367,   370,   371,   135,   107,
    3987      131,   277,   114,   135,   173,    74,    75,   137,   272,   135,
    3988      135,   135,   116,   135,    74,    75,   109,   149,   309,   318,
    3989      319,   320,   321,   322,   323,   327,   331,   332,   333,   334,
    3990      335,   341,     3,    28,    78,   239,     3,     5,    74,   111,
    3991      149,   217,   228,   232,   235,   244,   285,   323,   327,   370,
    3992      215,   217,   227,   237,   241,   243,   284,   323,   327,    33,
    3993      233,   233,   228,   235,   135,   233,   228,   233,   228,    75,
    3994      109,   114,   274,   285,   114,   274,   233,   228,   116,   135,
    3995      135,     0,   134,   109,   173,   312,   312,   134,   111,   225,
    3996      227,   368,   272,   272,   131,   227,   109,   149,   309,   319,
    3997      323,   111,   149,   370,   306,   230,   314,   109,   290,   109,
    3998      109,    51,   109,    37,    38,    40,    66,    72,    76,    79,
    3999       80,    81,    82,    86,    87,   109,   111,   119,   120,   121,
    4000      122,   136,   140,   141,   142,   143,   148,   149,   150,   151,
    4001      152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
    4002      162,   164,   167,   225,   276,   292,   366,   371,   227,   110,
    4003      110,   110,   110,   110,   110,   110,    74,    75,   111,   225,
    4004      272,   350,   368,   111,   117,   149,   164,   217,   218,   224,
    4005      227,   231,   232,   237,   240,   241,   243,   262,   263,   267,
     3985      76,    83,    84,   109,   111,   117,   118,   137,   140,   150,
     3986     199,   213,   214,   215,   216,   217,   218,   219,   220,   221,
     3987     222,   223,   224,   225,   226,   227,   228,   229,   230,   232,
     3988     233,   234,   235,   236,   237,   238,   240,   241,   242,   243,
     3989     244,   245,   247,   255,   256,   283,   284,   285,   293,   296,
     3990     302,   303,   305,   307,   308,   314,   319,   323,   324,   325,
     3991     326,   327,   328,   329,   330,   350,   367,   368,   369,   370,
     3992      72,   139,   140,   150,   216,   218,   226,   228,   237,   241,
     3993     243,   284,    82,   109,   312,   313,   314,   312,   312,    72,
     3994      74,    75,    76,   138,   139,   273,   274,   294,   295,    74,
     3995      75,   274,   109,   305,    11,   200,   109,   150,   319,   324,
     3996     325,   326,   328,   329,   330,   112,   134,   111,   219,   226,
     3997     228,   323,   327,   366,   367,   370,   371,   135,   107,   131,
     3998     277,   114,   135,   174,    74,    75,   137,   272,   135,   135,
     3999     135,   116,   135,    74,    75,   109,   150,   309,   318,   319,
     4000     320,   321,   322,   323,   327,   331,   332,   333,   334,   335,
     4001     341,     3,    28,    78,   239,     3,     5,    74,   111,   150,
     4002     218,   229,   233,   235,   244,   285,   323,   327,   370,   216,
     4003     218,   228,   237,   241,   243,   284,   323,   327,    33,   234,
     4004     234,   229,   235,   135,   234,   229,   234,   229,    75,   109,
     4005     114,   274,   285,   114,   274,   234,   229,   116,   135,   135,
     4006       0,   134,   109,   174,   312,   312,   134,   111,   226,   228,
     4007     368,   272,   272,   131,   228,   109,   150,   309,   319,   323,
     4008     111,   150,   370,   306,   231,   314,   109,   290,   109,   109,
     4009      51,   109,    37,    38,    40,    66,    72,    76,    79,    80,
     4010      81,    82,    86,    87,   109,   111,   119,   120,   121,   122,
     4011     136,   140,   141,   142,   143,   144,   149,   150,   151,   152,
     4012     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
     4013     163,   165,   168,   226,   276,   292,   366,   371,   228,   110,
     4014     110,   110,   110,   110,   110,   110,    74,    75,   111,   226,
     4015     272,   350,   368,   111,   117,   150,   165,   218,   219,   225,
     4016     228,   232,   233,   237,   240,   241,   243,   262,   263,   267,
    40064017     268,   269,   270,   284,   350,   362,   363,   364,   365,   370,
    40074018     371,   112,   109,   323,   327,   370,   109,   116,   132,   111,
    4008      114,   149,   164,   278,   278,   115,   134,   116,   132,   109,
     4019     114,   150,   165,   278,   278,   115,   134,   116,   132,   109,
    40094020     116,   132,   116,   132,   116,   132,   312,   132,   319,   320,
    4010      321,   322,   332,   333,   334,   335,   227,   318,   331,    64,
    4011      311,   111,   312,   349,   350,   312,   312,   173,   134,   109,
    4012      312,   349,   312,   312,   227,   309,   109,   109,   226,   227,
    4013      225,   227,   112,   134,   225,   366,   371,   173,   134,   272,
    4014      277,   217,   232,   323,   327,   173,   134,   294,   227,   237,
    4015      132,   227,   227,   292,   248,   246,   258,   274,   257,   227,
    4016      294,   132,   132,   305,   134,   139,   271,     3,   135,   207,
    4017      208,   222,   224,   227,   134,   311,   109,   311,   164,   319,
    4018      227,   109,   134,   272,   114,    33,    34,    35,   225,   286,
    4019      287,   289,   134,   128,   131,   291,   134,   228,   234,   235,
    4020      272,   315,   316,   317,   109,   141,   109,   148,   109,   148,
    4021      151,   109,   148,   109,   109,   148,   148,   111,   164,   169,
    4022      173,   225,   275,   366,   370,   112,   134,    82,    85,    86,
     4021     321,   322,   332,   333,   334,   335,   228,   318,   331,    64,
     4022     311,   111,   312,   349,   350,   312,   312,   174,   134,   109,
     4023     312,   349,   312,   312,   228,   309,   109,   109,   227,   228,
     4024     226,   228,   112,   134,   226,   366,   371,   174,   134,   272,
     4025     277,   218,   233,   323,   327,   174,   134,   294,   228,   237,
     4026     132,   228,   228,   292,   248,   246,   258,   274,   257,   228,
     4027     294,   132,   132,   305,   134,   139,   271,     3,   135,   208,
     4028     209,   223,   225,   228,   134,   311,   109,   311,   165,   319,
     4029     228,   109,   134,   272,   114,    33,    34,    35,   226,   286,
     4030     287,   289,   134,   128,   131,   291,   134,   229,   234,   235,
     4031     272,   315,   316,   317,   109,   141,   109,   149,   109,   149,
     4032     152,   109,   149,   109,   109,   149,   149,   111,   165,   170,
     4033     174,   226,   275,   366,   370,   112,   134,    82,    85,    86,
    40234034      87,   109,   111,   113,   114,    97,    98,    99,   100,   101,
    4024      102,   103,   104,   105,   106,   131,   166,   151,   151,   117,
    4025      123,   124,   119,   120,    88,    89,    90,    91,   125,   126,
    4026       92,    93,   118,   127,   128,    94,    95,   129,   131,   373,
    4027      109,   149,   345,   346,   347,   348,   349,   110,   116,   109,
    4028      349,   350,   109,   349,   350,   134,   109,   225,   368,   112,
    4029      134,   135,   111,   225,   227,   361,   362,   370,   371,   135,
    4030      109,   111,   149,   319,   336,   337,   338,   339,   340,   341,
    4031      342,   343,   344,   350,   351,   352,   353,   354,   355,   356,
    4032      149,   370,   227,   135,   135,   149,   225,   227,   363,   272,
    4033      225,   350,   363,   272,   109,   134,   134,   134,   112,   134,
    4034       72,   111,   113,   140,   274,   278,   279,   280,   281,   282,
    4035      134,   134,   134,   134,   134,   134,   309,   110,   110,   110,
    4036      110,   110,   110,   110,   318,   331,   109,   277,   112,   207,
    4037      134,   309,   169,   276,   169,   276,   309,   111,   207,   311,
    4038      173,   134,   207,   110,    40,   111,   115,   225,   249,   250,
    4039      251,   366,   114,   116,   372,   131,   259,   114,   227,   264,
    4040      265,   266,   269,   270,   110,   116,   173,   134,   117,   164,
    4041      134,   224,   227,   263,   362,   370,   303,   304,   109,   149,
    4042      336,   110,   116,   373,   274,   286,   109,   114,   274,   276,
    4043      286,   110,   116,   109,   141,   110,   130,   275,   275,   275,
    4044      145,   164,   276,   275,   112,   134,   110,   116,   110,   109,
    4045      149,   349,   357,   358,   359,   360,   110,   116,   164,   111,
    4046      139,   144,   145,   134,   111,   139,   144,   164,   151,   151,
    4047      151,   152,   152,   153,   153,   154,   154,   154,   154,   155,
    4048      155,   156,   157,   158,   159,   160,   130,   169,   164,   134,
    4049      346,   347,   348,   227,   345,   312,   312,   164,   276,   134,
    4050      271,   134,   225,   350,   363,   227,   231,   112,   112,   134,
    4051      370,   112,   109,   134,   319,   337,   338,   339,   342,   352,
    4052      353,   354,   112,   134,   227,   336,   340,   351,   109,   312,
    4053      355,   373,   312,   312,   373,   109,   312,   355,   312,   312,
    4054      312,   312,   350,   225,   361,   371,   272,   112,   116,   112,
    4055      116,   373,   225,   363,   373,   260,   261,   262,   263,   260,
    4056      260,   272,   164,   134,   111,   274,   130,   116,   372,   278,
    4057      111,   130,   282,    29,   209,   210,   272,   260,   139,   309,
    4058      139,   311,   109,   349,   350,   109,   349,   350,   141,   350,
    4059      173,   264,   110,   110,   110,   110,   112,   173,   207,   173,
    4060      114,   250,   251,   112,   134,   109,   130,   149,   252,   254,
    4061      318,   319,   331,   357,   116,   132,   116,   132,   274,   248,
    4062      274,   115,   162,   163,   258,   135,   135,   139,   222,   135,
    4063      135,   260,   109,   149,   370,   135,   115,   227,   287,   288,
    4064      135,   134,   134,   109,   135,   110,   316,   169,   170,   130,
    4065      132,   111,   141,   200,   201,   202,   110,   116,   110,   110,
    4066      110,   110,   111,   164,   358,   359,   360,   227,   357,   312,
    4067      312,   114,   151,   167,   164,   165,   168,   116,   135,   134,
    4068      110,   116,   164,   134,   115,   162,   130,   264,   110,   110,
    4069      110,   345,   264,   110,   260,   225,   363,   111,   117,   149,
    4070      164,   164,   227,   342,   264,   110,   110,   110,   110,   110,
    4071      110,   110,     7,   227,   336,   340,   351,   134,   134,   373,
    4072      134,   134,   110,   135,   135,   135,   135,   277,   135,   162,
    4073      163,   164,   310,   134,   278,   280,   115,   134,   211,   274,
    4074       40,    41,    43,    46,    47,    48,    49,    50,    51,    52,
    4075       53,    57,    61,    62,    72,   111,   127,   170,   171,   172,
    4076      173,   174,   175,   177,   178,   190,   192,   193,   198,   212,
    4077      308,    29,   135,   131,   277,   134,   134,   110,   135,   173,
    4078      248,   132,   132,   319,   163,   227,   253,   254,   253,   274,
    4079      312,   115,   259,   372,   110,   116,   112,   112,   135,   227,
    4080      116,   373,   290,   110,   286,   215,   217,   225,   298,   299,
    4081      300,   301,   292,   110,   110,   130,   163,   109,   110,   130,
    4082      116,   139,   112,   110,   110,   110,   357,   279,   116,   135,
    4083      168,   112,   139,   146,   147,   145,   135,   146,   162,   167,
    4084      135,   109,   349,   350,   135,   135,   134,   135,   135,   135,
    4085      164,   110,   135,   109,   349,   350,   109,   355,   109,   355,
    4086      350,   226,     7,   117,   135,   164,   264,   264,   263,   267,
    4087      267,   268,   116,   116,   110,   110,   112,    96,   122,   135,
    4088      135,   146,   278,   164,   116,   132,   212,   216,   227,   231,
    4089      109,   109,   171,   109,   109,    72,   132,    72,   132,    72,
    4090      117,   170,   109,   173,   165,   165,   130,   112,   143,   132,
    4091      135,   134,   135,   211,   110,   164,   264,   264,   312,   110,
    4092      115,   252,   115,   134,   110,   134,   135,   309,   115,   134,
    4093      135,   135,   110,   114,   200,   112,   163,   132,   200,   202,
    4094      110,   109,   349,   350,   372,   165,   112,   135,    85,   113,
    4095      116,   135,   112,   135,   110,   134,   110,   110,   112,   112,
    4096      112,   135,   110,   134,   134,   134,   164,   164,   135,   112,
    4097      135,   135,   135,   135,   134,   134,   163,   163,   112,   112,
    4098      135,   135,   274,   227,   169,   169,    47,   169,   134,   132,
    4099      132,   132,   169,   132,   169,    58,    59,    60,   194,   195,
    4100      196,   132,    63,   132,   312,   114,   175,   115,   132,   135,
    4101      135,    96,   269,   270,   110,   299,   116,   132,   116,   132,
    4102      115,   297,   130,   141,   110,   110,   130,   134,   115,   112,
    4103      111,   147,   111,   147,   147,   112,   112,   264,   112,   264,
    4104      264,   264,   135,   135,   112,   112,   110,   110,   112,   116,
    4105       96,   263,    96,   135,   112,   112,   110,   110,   109,   110,
    4106      170,   191,   212,   132,   110,   109,   109,   173,   196,    58,
    4107       59,   164,   171,   144,   110,   110,   114,   134,   134,   298,
    4108      141,   203,   109,   132,   203,   264,   134,   134,   135,   135,
    4109      135,   135,   112,   112,   134,   135,   112,   171,    44,    45,
    4110      114,   181,   182,   183,   169,   171,   135,   110,   170,   114,
    4111      183,    96,   134,    96,   134,   109,   109,   132,   115,   134,
    4112      272,   309,   115,   116,   130,   163,   110,   135,   146,   146,
    4113      110,   110,   110,   110,   267,    42,   163,   179,   180,   310,
    4114      130,   134,   171,   181,   110,   132,   171,   132,   134,   110,
    4115      134,   110,   134,    96,   134,    96,   134,   132,   298,   141,
    4116      139,   204,   110,   132,   110,   135,   135,   171,    96,   116,
    4117      130,   135,   205,   206,   212,   132,   170,   170,   205,   173,
    4118      197,   225,   366,   173,   197,   110,   134,   110,   134,   115,
    4119      110,   116,   112,   112,   163,   179,   182,   184,   185,   134,
    4120      132,   182,   186,   187,   135,   109,   149,   309,   357,   139,
    4121      135,   173,   197,   173,   197,   109,   132,   139,   171,   176,
    4122      115,   182,   212,   170,    56,   176,   189,   115,   182,   110,
    4123      227,   110,   135,   135,   292,   171,   176,   132,   188,   189,
    4124      176,   189,   173,   173,   110,   110,   110,   188,   135,   135,
    4125      173,   173,   135,   135
     4035     102,   103,   104,   105,   106,   107,   131,   167,   152,   152,
     4036     117,   123,   124,   119,   120,    88,    89,    90,    91,   125,
     4037     126,    92,    93,   118,   127,   128,    94,    95,   129,   131,
     4038     373,   109,   150,   345,   346,   347,   348,   349,   110,   116,
     4039     109,   349,   350,   109,   349,   350,   134,   109,   226,   368,
     4040     112,   134,   135,   111,   226,   228,   361,   362,   370,   371,
     4041     135,   109,   111,   150,   319,   336,   337,   338,   339,   340,
     4042     341,   342,   343,   344,   350,   351,   352,   353,   354,   355,
     4043     356,   150,   370,   228,   135,   135,   150,   226,   228,   363,
     4044     272,   226,   350,   363,   272,   109,   134,   134,   134,   112,
     4045     134,    72,   111,   113,   140,   274,   278,   279,   280,   281,
     4046     282,   134,   134,   134,   134,   134,   134,   309,   110,   110,
     4047     110,   110,   110,   110,   110,   318,   331,   109,   277,   112,
     4048     208,   134,   309,   170,   276,   170,   276,   309,   111,   208,
     4049     311,   174,   134,   208,   110,    40,   111,   115,   226,   249,
     4050     250,   251,   366,   114,   116,   372,   131,   259,   114,   228,
     4051     264,   265,   266,   269,   270,   110,   116,   174,   134,   117,
     4052     165,   134,   225,   228,   263,   362,   370,   303,   304,   109,
     4053     150,   336,   110,   116,   373,   274,   286,   109,   114,   274,
     4054     276,   286,   110,   116,   109,   141,   110,   130,   275,   275,
     4055     275,   146,   165,   276,   275,   112,   134,   110,   116,   110,
     4056     109,   150,   349,   357,   358,   359,   360,   110,   116,   165,
     4057     111,   139,   145,   146,   134,   111,   139,   145,   165,   152,
     4058     152,   152,   153,   153,   154,   154,   155,   155,   155,   155,
     4059     156,   156,   157,   158,   159,   160,   161,   130,   170,   165,
     4060     134,   346,   347,   348,   228,   345,   312,   312,   165,   276,
     4061     134,   271,   134,   226,   350,   363,   228,   232,   112,   112,
     4062     134,   370,   112,   109,   134,   319,   337,   338,   339,   342,
     4063     352,   353,   354,   112,   134,   228,   336,   340,   351,   109,
     4064     312,   355,   373,   312,   312,   373,   109,   312,   355,   312,
     4065     312,   312,   312,   350,   226,   361,   371,   272,   112,   116,
     4066     112,   116,   373,   226,   363,   373,   260,   261,   262,   263,
     4067     260,   260,   272,   165,   134,   111,   274,   130,   116,   372,
     4068     278,   111,   130,   282,    29,   210,   211,   272,   260,   139,
     4069     309,   139,   311,   109,   349,   350,   109,   349,   350,   142,
     4070     350,   174,   264,   110,   110,   110,   110,   112,   174,   208,
     4071     174,   114,   250,   251,   112,   134,   109,   130,   150,   252,
     4072     254,   318,   319,   331,   357,   116,   132,   116,   132,   274,
     4073     248,   274,   115,   163,   164,   258,   135,   135,   139,   223,
     4074     135,   135,   260,   109,   150,   370,   135,   115,   228,   287,
     4075     288,   135,   134,   134,   109,   135,   110,   316,   170,   171,
     4076     130,   132,   111,   141,   201,   202,   203,   110,   116,   110,
     4077     110,   110,   110,   111,   165,   358,   359,   360,   228,   357,
     4078     312,   312,   114,   152,   168,   165,   166,   169,   116,   135,
     4079     134,   110,   116,   165,   134,   115,   163,   130,   264,   110,
     4080     110,   110,   345,   264,   110,   260,   226,   363,   111,   117,
     4081     150,   165,   165,   228,   342,   264,   110,   110,   110,   110,
     4082     110,   110,   110,     7,   228,   336,   340,   351,   134,   134,
     4083     373,   134,   134,   110,   135,   135,   135,   135,   277,   135,
     4084     163,   164,   165,   310,   134,   278,   280,   115,   134,   212,
     4085     274,    40,    41,    43,    46,    47,    48,    49,    50,    51,
     4086      52,    53,    57,    61,    62,    72,   111,   127,   171,   172,
     4087     173,   174,   175,   176,   178,   179,   191,   193,   194,   199,
     4088     213,   308,    29,   135,   131,   277,   134,   134,   110,   135,
     4089     174,   248,   132,   132,   319,   164,   228,   253,   254,   253,
     4090     274,   312,   115,   259,   372,   110,   116,   112,   112,   135,
     4091     228,   116,   373,   290,   110,   286,   216,   218,   226,   298,
     4092     299,   300,   301,   292,   110,   110,   130,   164,   109,   110,
     4093     130,   116,   139,   112,   110,   110,   110,   357,   279,   116,
     4094     135,   169,   112,   139,   147,   148,   146,   135,   147,   163,
     4095     168,   135,   109,   349,   350,   135,   135,   134,   135,   135,
     4096     135,   165,   110,   135,   109,   349,   350,   109,   355,   109,
     4097     355,   350,   227,     7,   117,   135,   165,   264,   264,   263,
     4098     267,   267,   268,   116,   116,   110,   110,   112,    96,   122,
     4099     135,   135,   147,   278,   165,   116,   132,   213,   217,   228,
     4100     232,   109,   109,   172,   109,   109,    72,   132,    72,   132,
     4101      72,   117,   171,   109,   174,   166,   166,   130,   112,   144,
     4102     132,   135,   134,   135,   212,   110,   165,   264,   264,   312,
     4103     110,   115,   252,   115,   134,   110,   134,   135,   309,   115,
     4104     134,   135,   135,   110,   114,   201,   112,   164,   132,   201,
     4105     203,   110,   109,   349,   350,   372,   166,   112,   135,    85,
     4106     113,   116,   135,   112,   135,   110,   134,   110,   110,   112,
     4107     112,   112,   135,   110,   134,   134,   134,   165,   165,   135,
     4108     112,   135,   135,   135,   135,   134,   134,   164,   164,   112,
     4109     112,   135,   135,   274,   228,   170,   170,    47,   170,   134,
     4110     132,   132,   132,   170,   132,   170,    58,    59,    60,   195,
     4111     196,   197,   132,    63,   132,   312,   114,   176,   115,   132,
     4112     135,   135,    96,   269,   270,   110,   299,   116,   132,   116,
     4113     132,   115,   297,   130,   141,   110,   110,   130,   134,   115,
     4114     112,   111,   148,   111,   148,   148,   112,   112,   264,   112,
     4115     264,   264,   264,   135,   135,   112,   112,   110,   110,   112,
     4116     116,    96,   263,    96,   135,   112,   112,   110,   110,   109,
     4117     110,   171,   192,   213,   132,   110,   109,   109,   174,   197,
     4118      58,    59,   165,   172,   145,   110,   110,   114,   134,   134,
     4119     298,   141,   204,   109,   132,   204,   264,   134,   134,   135,
     4120     135,   135,   135,   112,   112,   134,   135,   112,   172,    44,
     4121      45,   114,   182,   183,   184,   170,   172,   135,   110,   171,
     4122     114,   184,    96,   134,    96,   134,   109,   109,   132,   115,
     4123     134,   272,   309,   115,   116,   130,   164,   110,   135,   147,
     4124     147,   110,   110,   110,   110,   267,    42,   164,   180,   181,
     4125     310,   130,   134,   172,   182,   110,   132,   172,   132,   134,
     4126     110,   134,   110,   134,    96,   134,    96,   134,   132,   298,
     4127     141,   139,   205,   110,   132,   110,   135,   135,   172,    96,
     4128     116,   130,   135,   206,   207,   213,   132,   171,   171,   206,
     4129     174,   198,   226,   366,   174,   198,   110,   134,   110,   134,
     4130     115,   110,   116,   112,   112,   164,   180,   183,   185,   186,
     4131     134,   132,   183,   187,   188,   135,   109,   150,   309,   357,
     4132     139,   135,   174,   198,   174,   198,   109,   132,   139,   172,
     4133     177,   115,   183,   213,   171,    56,   177,   190,   115,   183,
     4134     110,   228,   110,   135,   135,   292,   172,   177,   132,   189,
     4135     190,   177,   190,   174,   174,   110,   110,   110,   189,   135,
     4136     135,   174,   174,   135,   135
    41264137};
    41274138
     
    49604971
    49614972/* Line 1806 of yacc.c  */
    4962 #line 299 "parser.yy"
     4973#line 300 "parser.yy"
     4974    { typedefTable.enterScope(); }
     4975    break;
     4976
     4977  case 3:
     4978
     4979/* Line 1806 of yacc.c  */
     4980#line 304 "parser.yy"
     4981    { typedefTable.leaveScope(); }
     4982    break;
     4983
     4984  case 4:
     4985
     4986/* Line 1806 of yacc.c  */
     4987#line 311 "parser.yy"
     4988    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
     4989    break;
     4990
     4991  case 5:
     4992
     4993/* Line 1806 of yacc.c  */
     4994#line 312 "parser.yy"
     4995    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
     4996    break;
     4997
     4998  case 6:
     4999
     5000/* Line 1806 of yacc.c  */
     5001#line 313 "parser.yy"
     5002    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
     5003    break;
     5004
     5005  case 16:
     5006
     5007/* Line 1806 of yacc.c  */
     5008#line 338 "parser.yy"
     5009    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
     5010    break;
     5011
     5012  case 17:
     5013
     5014/* Line 1806 of yacc.c  */
     5015#line 342 "parser.yy"
     5016    { (yyval.str) = (yyvsp[(1) - (1)].tok); }
     5017    break;
     5018
     5019  case 18:
     5020
     5021/* Line 1806 of yacc.c  */
     5022#line 344 "parser.yy"
    49635023    {
    4964                         typedefTable.enterScope();
     5024                        appendStr( (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].tok) );                                            // append 2nd juxtaposed string to 1st
     5025                        delete (yyvsp[(2) - (2)].tok);                                                                  // allocated by lexer
     5026                        (yyval.str) = (yyvsp[(1) - (2)].str);                                                                   // conversion from tok to str
    49655027                }
    49665028    break;
    49675029
    4968   case 3:
    4969 
    4970 /* Line 1806 of yacc.c  */
    4971 #line 305 "parser.yy"
    4972     {
    4973                         typedefTable.leaveScope();
    4974                 }
    4975     break;
    4976 
    4977   case 4:
    4978 
    4979 /* Line 1806 of yacc.c  */
    4980 #line 314 "parser.yy"
    4981     { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
    4982     break;
    4983 
    4984   case 5:
    4985 
    4986 /* Line 1806 of yacc.c  */
    4987 #line 315 "parser.yy"
    4988     { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    4989     break;
    4990 
    4991   case 6:
    4992 
    4993 /* Line 1806 of yacc.c  */
    4994 #line 316 "parser.yy"
    4995     { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
    4996     break;
    4997 
    4998   case 16:
    4999 
    5000 /* Line 1806 of yacc.c  */
    5001 #line 341 "parser.yy"
    5002     { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].tok) ); }
    5003     break;
    5004 
    5005   case 17:
    5006 
    5007 /* Line 1806 of yacc.c  */
    5008 #line 343 "parser.yy"
    5009     {
    5010                         appendStr( (yyvsp[(1) - (2)].constant)->get_constant()->get_value(), (yyvsp[(2) - (2)].tok) );
    5011                         delete (yyvsp[(2) - (2)].tok);                                                                  // allocated by lexer
    5012                         (yyval.constant) = (yyvsp[(1) - (2)].constant);
    5013                 }
    5014     break;
    5015 
    5016   case 18:
    5017 
    5018 /* Line 1806 of yacc.c  */
    5019 #line 354 "parser.yy"
     5030  case 19:
     5031
     5032/* Line 1806 of yacc.c  */
     5033#line 355 "parser.yy"
    50205034    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    50215035    break;
    50225036
    5023   case 19:
    5024 
    5025 /* Line 1806 of yacc.c  */
    5026 #line 356 "parser.yy"
     5037  case 20:
     5038
     5039/* Line 1806 of yacc.c  */
     5040#line 357 "parser.yy"
    50275041    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    50285042    break;
    50295043
    5030   case 20:
    5031 
    5032 /* Line 1806 of yacc.c  */
    5033 #line 358 "parser.yy"
     5044  case 21:
     5045
     5046/* Line 1806 of yacc.c  */
     5047#line 359 "parser.yy"
    50345048    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    50355049    break;
    50365050
    5037   case 21:
    5038 
    5039 /* Line 1806 of yacc.c  */
    5040 #line 360 "parser.yy"
     5051  case 22:
     5052
     5053/* Line 1806 of yacc.c  */
     5054#line 361 "parser.yy"
    50415055    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
    50425056    break;
    50435057
    5044   case 23:
    5045 
    5046 /* Line 1806 of yacc.c  */
    5047 #line 370 "parser.yy"
     5058  case 24:
     5059
     5060/* Line 1806 of yacc.c  */
     5061#line 371 "parser.yy"
    50485062    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
    50495063    break;
    50505064
    5051   case 24:
    5052 
    5053 /* Line 1806 of yacc.c  */
    5054 #line 372 "parser.yy"
     5065  case 25:
     5066
     5067/* Line 1806 of yacc.c  */
     5068#line 373 "parser.yy"
    50555069    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
    50565070    break;
    50575071
    5058   case 25:
    5059 
    5060 /* Line 1806 of yacc.c  */
    5061 #line 376 "parser.yy"
     5072  case 26:
     5073
     5074/* Line 1806 of yacc.c  */
     5075#line 377 "parser.yy"
    50625076    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    50635077    break;
    50645078
    5065   case 27:
    5066 
    5067 /* Line 1806 of yacc.c  */
    5068 #line 379 "parser.yy"
     5079  case 28:
     5080
     5081/* Line 1806 of yacc.c  */
     5082#line 380 "parser.yy"
    50695083    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    50705084    break;
    50715085
    5072   case 29:
    5073 
    5074 /* Line 1806 of yacc.c  */
    5075 #line 382 "parser.yy"
     5086  case 30:
     5087
     5088/* Line 1806 of yacc.c  */
     5089#line 383 "parser.yy"
    50765090    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
    50775091    break;
    50785092
    5079   case 30:
    5080 
    5081 /* Line 1806 of yacc.c  */
    5082 #line 384 "parser.yy"
     5093  case 31:
     5094
     5095/* Line 1806 of yacc.c  */
     5096#line 385 "parser.yy"
    50835097    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
    50845098    break;
    50855099
    5086   case 31:
    5087 
    5088 /* Line 1806 of yacc.c  */
    5089 #line 386 "parser.yy"
     5100  case 32:
     5101
     5102/* Line 1806 of yacc.c  */
     5103#line 387 "parser.yy"
    50905104    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
    50915105    break;
    50925106
    5093   case 32:
    5094 
    5095 /* Line 1806 of yacc.c  */
    5096 #line 388 "parser.yy"
     5107  case 33:
     5108
     5109/* Line 1806 of yacc.c  */
     5110#line 389 "parser.yy"
    50975111    {
    50985112                        Token fn;
    50995113                        fn.str = new std::string( "?{}" ); // location undefined
    5100                         (yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_link( (yyvsp[(3) - (4)].en) ) ) );
     5114                        (yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_last( (yyvsp[(3) - (4)].en) ) ) );
    51015115                }
    51025116    break;
    51035117
    5104   case 34:
    5105 
    5106 /* Line 1806 of yacc.c  */
    5107 #line 398 "parser.yy"
    5108     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    5109     break;
    5110 
    51115118  case 35:
    51125119
    51135120/* Line 1806 of yacc.c  */
    5114 #line 403 "parser.yy"
     5121#line 399 "parser.yy"
     5122    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     5123    break;
     5124
     5125  case 36:
     5126
     5127/* Line 1806 of yacc.c  */
     5128#line 404 "parser.yy"
    51155129    { (yyval.en) = 0; }
    51165130    break;
    51175131
    5118   case 38:
    5119 
    5120 /* Line 1806 of yacc.c  */
    5121 #line 409 "parser.yy"
    5122     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    5123     break;
    5124 
    51255132  case 39:
    51265133
    51275134/* Line 1806 of yacc.c  */
    5128 #line 414 "parser.yy"
     5135#line 410 "parser.yy"
     5136    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     5137    break;
     5138
     5139  case 40:
     5140
     5141/* Line 1806 of yacc.c  */
     5142#line 415 "parser.yy"
    51295143    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    51305144    break;
    51315145
    5132   case 40:
    5133 
    5134 /* Line 1806 of yacc.c  */
    5135 #line 418 "parser.yy"
     5146  case 41:
     5147
     5148/* Line 1806 of yacc.c  */
     5149#line 419 "parser.yy"
    51365150    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
    51375151    break;
    51385152
    5139   case 41:
    5140 
    5141 /* Line 1806 of yacc.c  */
    5142 #line 420 "parser.yy"
     5153  case 42:
     5154
     5155/* Line 1806 of yacc.c  */
     5156#line 421 "parser.yy"
    51435157    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
    51445158    break;
    51455159
    5146   case 42:
    5147 
    5148 /* Line 1806 of yacc.c  */
    5149 #line 422 "parser.yy"
     5160  case 43:
     5161
     5162/* Line 1806 of yacc.c  */
     5163#line 423 "parser.yy"
    51505164    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
    51515165    break;
    51525166
    5153   case 43:
    5154 
    5155 /* Line 1806 of yacc.c  */
    5156 #line 424 "parser.yy"
     5167  case 44:
     5168
     5169/* Line 1806 of yacc.c  */
     5170#line 425 "parser.yy"
    51575171    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
    51585172    break;
    51595173
    5160   case 45:
    5161 
    5162 /* Line 1806 of yacc.c  */
    5163 #line 432 "parser.yy"
     5174  case 46:
     5175
     5176/* Line 1806 of yacc.c  */
     5177#line 433 "parser.yy"
    51645178    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    51655179    break;
    51665180
    5167   case 46:
    5168 
    5169 /* Line 1806 of yacc.c  */
    5170 #line 434 "parser.yy"
     5181  case 47:
     5182
     5183/* Line 1806 of yacc.c  */
     5184#line 435 "parser.yy"
    51715185    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    51725186    break;
    51735187
    5174   case 47:
    5175 
    5176 /* Line 1806 of yacc.c  */
    5177 #line 436 "parser.yy"
     5188  case 48:
     5189
     5190/* Line 1806 of yacc.c  */
     5191#line 437 "parser.yy"
    51785192    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    51795193    break;
    51805194
    5181   case 48:
    5182 
    5183 /* Line 1806 of yacc.c  */
    5184 #line 441 "parser.yy"
     5195  case 49:
     5196
     5197/* Line 1806 of yacc.c  */
     5198#line 442 "parser.yy"
    51855199    {
    51865200                        switch ( (yyvsp[(1) - (2)].op) ) {
     
    51975211    break;
    51985212
    5199   case 49:
    5200 
    5201 /* Line 1806 of yacc.c  */
    5202 #line 454 "parser.yy"
     5213  case 50:
     5214
     5215/* Line 1806 of yacc.c  */
     5216#line 455 "parser.yy"
    52035217    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
    52045218    break;
    52055219
    5206   case 50:
    5207 
    5208 /* Line 1806 of yacc.c  */
    5209 #line 456 "parser.yy"
     5220  case 51:
     5221
     5222/* Line 1806 of yacc.c  */
     5223#line 457 "parser.yy"
    52105224    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
    52115225    break;
    52125226
    5213   case 51:
    5214 
    5215 /* Line 1806 of yacc.c  */
    5216 #line 458 "parser.yy"
     5227  case 52:
     5228
     5229/* Line 1806 of yacc.c  */
     5230#line 459 "parser.yy"
    52175231    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
    52185232    break;
    52195233
    5220   case 52:
    5221 
    5222 /* Line 1806 of yacc.c  */
    5223 #line 460 "parser.yy"
     5234  case 53:
     5235
     5236/* Line 1806 of yacc.c  */
     5237#line 461 "parser.yy"
    52245238    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52255239    break;
    52265240
    5227   case 53:
    5228 
    5229 /* Line 1806 of yacc.c  */
    5230 #line 462 "parser.yy"
     5241  case 54:
     5242
     5243/* Line 1806 of yacc.c  */
     5244#line 463 "parser.yy"
    52315245    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52325246    break;
    52335247
    5234   case 54:
    5235 
    5236 /* Line 1806 of yacc.c  */
    5237 #line 464 "parser.yy"
     5248  case 55:
     5249
     5250/* Line 1806 of yacc.c  */
     5251#line 465 "parser.yy"
    52385252    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52395253    break;
    52405254
    5241   case 55:
    5242 
    5243 /* Line 1806 of yacc.c  */
    5244 #line 466 "parser.yy"
     5255  case 56:
     5256
     5257/* Line 1806 of yacc.c  */
     5258#line 467 "parser.yy"
    52455259    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52465260    break;
    52475261
    5248   case 56:
    5249 
    5250 /* Line 1806 of yacc.c  */
    5251 #line 468 "parser.yy"
     5262  case 57:
     5263
     5264/* Line 1806 of yacc.c  */
     5265#line 469 "parser.yy"
    52525266    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
    52535267    break;
    52545268
    5255   case 57:
    5256 
    5257 /* Line 1806 of yacc.c  */
    5258 #line 470 "parser.yy"
     5269  case 58:
     5270
     5271/* Line 1806 of yacc.c  */
     5272#line 471 "parser.yy"
    52595273    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
    52605274    break;
    52615275
    5262   case 58:
    5263 
    5264 /* Line 1806 of yacc.c  */
    5265 #line 472 "parser.yy"
     5276  case 59:
     5277
     5278/* Line 1806 of yacc.c  */
     5279#line 473 "parser.yy"
    52665280    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
    52675281    break;
    52685282
    5269   case 59:
    5270 
    5271 /* Line 1806 of yacc.c  */
    5272 #line 474 "parser.yy"
     5283  case 60:
     5284
     5285/* Line 1806 of yacc.c  */
     5286#line 475 "parser.yy"
    52735287    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
    52745288    break;
    52755289
    5276   case 60:
    5277 
    5278 /* Line 1806 of yacc.c  */
    5279 #line 480 "parser.yy"
     5290  case 61:
     5291
     5292/* Line 1806 of yacc.c  */
     5293#line 481 "parser.yy"
    52805294    { (yyval.op) = OperKinds::PointTo; }
    52815295    break;
    52825296
    5283   case 61:
    5284 
    5285 /* Line 1806 of yacc.c  */
    5286 #line 481 "parser.yy"
     5297  case 62:
     5298
     5299/* Line 1806 of yacc.c  */
     5300#line 482 "parser.yy"
    52875301    { (yyval.op) = OperKinds::AddressOf; }
    52885302    break;
    52895303
    5290   case 62:
    5291 
    5292 /* Line 1806 of yacc.c  */
    5293 #line 487 "parser.yy"
     5304  case 63:
     5305
     5306/* Line 1806 of yacc.c  */
     5307#line 488 "parser.yy"
    52945308    { (yyval.op) = OperKinds::UnPlus; }
    52955309    break;
    52965310
    5297   case 63:
    5298 
    5299 /* Line 1806 of yacc.c  */
    5300 #line 488 "parser.yy"
     5311  case 64:
     5312
     5313/* Line 1806 of yacc.c  */
     5314#line 489 "parser.yy"
    53015315    { (yyval.op) = OperKinds::UnMinus; }
    53025316    break;
    53035317
    5304   case 64:
    5305 
    5306 /* Line 1806 of yacc.c  */
    5307 #line 489 "parser.yy"
     5318  case 65:
     5319
     5320/* Line 1806 of yacc.c  */
     5321#line 490 "parser.yy"
    53085322    { (yyval.op) = OperKinds::Neg; }
    53095323    break;
    53105324
    5311   case 65:
    5312 
    5313 /* Line 1806 of yacc.c  */
    5314 #line 490 "parser.yy"
     5325  case 66:
     5326
     5327/* Line 1806 of yacc.c  */
     5328#line 491 "parser.yy"
    53155329    { (yyval.op) = OperKinds::BitNeg; }
    53165330    break;
    53175331
    5318   case 67:
    5319 
    5320 /* Line 1806 of yacc.c  */
    5321 #line 496 "parser.yy"
     5332  case 68:
     5333
     5334/* Line 1806 of yacc.c  */
     5335#line 497 "parser.yy"
    53225336    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    53235337    break;
    53245338
    5325   case 68:
    5326 
    5327 /* Line 1806 of yacc.c  */
    5328 #line 498 "parser.yy"
     5339  case 69:
     5340
     5341/* Line 1806 of yacc.c  */
     5342#line 499 "parser.yy"
    53295343    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    53305344    break;
    53315345
    5332   case 70:
    5333 
    5334 /* Line 1806 of yacc.c  */
    5335 #line 504 "parser.yy"
     5346  case 71:
     5347
     5348/* Line 1806 of yacc.c  */
     5349#line 505 "parser.yy"
    53365350    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53375351    break;
    53385352
    5339   case 71:
    5340 
    5341 /* Line 1806 of yacc.c  */
    5342 #line 506 "parser.yy"
     5353  case 72:
     5354
     5355/* Line 1806 of yacc.c  */
     5356#line 507 "parser.yy"
    53435357    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53445358    break;
    53455359
    5346   case 72:
    5347 
    5348 /* Line 1806 of yacc.c  */
    5349 #line 508 "parser.yy"
     5360  case 73:
     5361
     5362/* Line 1806 of yacc.c  */
     5363#line 509 "parser.yy"
    53505364    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53515365    break;
    53525366
    5353   case 74:
    5354 
    5355 /* Line 1806 of yacc.c  */
    5356 #line 514 "parser.yy"
     5367  case 75:
     5368
     5369/* Line 1806 of yacc.c  */
     5370#line 515 "parser.yy"
    53575371    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53585372    break;
    53595373
    5360   case 75:
    5361 
    5362 /* Line 1806 of yacc.c  */
    5363 #line 516 "parser.yy"
     5374  case 76:
     5375
     5376/* Line 1806 of yacc.c  */
     5377#line 517 "parser.yy"
    53645378    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53655379    break;
    53665380
    5367   case 77:
    5368 
    5369 /* Line 1806 of yacc.c  */
    5370 #line 522 "parser.yy"
     5381  case 78:
     5382
     5383/* Line 1806 of yacc.c  */
     5384#line 523 "parser.yy"
    53715385    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53725386    break;
    53735387
    5374   case 78:
    5375 
    5376 /* Line 1806 of yacc.c  */
    5377 #line 524 "parser.yy"
     5388  case 79:
     5389
     5390/* Line 1806 of yacc.c  */
     5391#line 525 "parser.yy"
    53785392    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53795393    break;
    53805394
    5381   case 80:
    5382 
    5383 /* Line 1806 of yacc.c  */
    5384 #line 530 "parser.yy"
     5395  case 81:
     5396
     5397/* Line 1806 of yacc.c  */
     5398#line 531 "parser.yy"
    53855399    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53865400    break;
    53875401
    5388   case 81:
    5389 
    5390 /* Line 1806 of yacc.c  */
    5391 #line 532 "parser.yy"
     5402  case 82:
     5403
     5404/* Line 1806 of yacc.c  */
     5405#line 533 "parser.yy"
    53925406    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53935407    break;
    53945408
    5395   case 82:
    5396 
    5397 /* Line 1806 of yacc.c  */
    5398 #line 534 "parser.yy"
     5409  case 83:
     5410
     5411/* Line 1806 of yacc.c  */
     5412#line 535 "parser.yy"
    53995413    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54005414    break;
    54015415
    5402   case 83:
    5403 
    5404 /* Line 1806 of yacc.c  */
    5405 #line 536 "parser.yy"
     5416  case 84:
     5417
     5418/* Line 1806 of yacc.c  */
     5419#line 537 "parser.yy"
    54065420    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54075421    break;
    54085422
    5409   case 85:
    5410 
    5411 /* Line 1806 of yacc.c  */
    5412 #line 542 "parser.yy"
     5423  case 86:
     5424
     5425/* Line 1806 of yacc.c  */
     5426#line 543 "parser.yy"
    54135427    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54145428    break;
    54155429
    5416   case 86:
    5417 
    5418 /* Line 1806 of yacc.c  */
    5419 #line 544 "parser.yy"
     5430  case 87:
     5431
     5432/* Line 1806 of yacc.c  */
     5433#line 545 "parser.yy"
    54205434    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54215435    break;
    54225436
    5423   case 88:
    5424 
    5425 /* Line 1806 of yacc.c  */
    5426 #line 550 "parser.yy"
     5437  case 89:
     5438
     5439/* Line 1806 of yacc.c  */
     5440#line 551 "parser.yy"
    54275441    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54285442    break;
    54295443
    5430   case 90:
    5431 
    5432 /* Line 1806 of yacc.c  */
    5433 #line 556 "parser.yy"
     5444  case 91:
     5445
     5446/* Line 1806 of yacc.c  */
     5447#line 557 "parser.yy"
    54345448    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54355449    break;
    54365450
    5437   case 92:
    5438 
    5439 /* Line 1806 of yacc.c  */
    5440 #line 562 "parser.yy"
     5451  case 93:
     5452
     5453/* Line 1806 of yacc.c  */
     5454#line 563 "parser.yy"
    54415455    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54425456    break;
    54435457
    5444   case 94:
    5445 
    5446 /* Line 1806 of yacc.c  */
    5447 #line 568 "parser.yy"
     5458  case 95:
     5459
     5460/* Line 1806 of yacc.c  */
     5461#line 569 "parser.yy"
    54485462    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
    54495463    break;
    54505464
    5451   case 96:
    5452 
    5453 /* Line 1806 of yacc.c  */
    5454 #line 574 "parser.yy"
     5465  case 97:
     5466
     5467/* Line 1806 of yacc.c  */
     5468#line 575 "parser.yy"
    54555469    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
    54565470    break;
    54575471
    5458   case 98:
    5459 
    5460 /* Line 1806 of yacc.c  */
    5461 #line 580 "parser.yy"
     5472  case 99:
     5473
     5474/* Line 1806 of yacc.c  */
     5475#line 581 "parser.yy"
    54625476    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    54635477    break;
    54645478
    5465   case 99:
    5466 
    5467 /* Line 1806 of yacc.c  */
    5468 #line 583 "parser.yy"
     5479  case 100:
     5480
     5481/* Line 1806 of yacc.c  */
     5482#line 584 "parser.yy"
    54695483    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
    54705484    break;
    54715485
    5472   case 100:
    5473 
    5474 /* Line 1806 of yacc.c  */
    5475 #line 585 "parser.yy"
     5486  case 101:
     5487
     5488/* Line 1806 of yacc.c  */
     5489#line 586 "parser.yy"
    54765490    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    54775491    break;
    54785492
    5479   case 103:
    5480 
    5481 /* Line 1806 of yacc.c  */
    5482 #line 596 "parser.yy"
     5493  case 104:
     5494
     5495/* Line 1806 of yacc.c  */
     5496#line 597 "parser.yy"
    54835497    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54845498    break;
    54855499
    5486   case 104:
    5487 
    5488 /* Line 1806 of yacc.c  */
    5489 #line 598 "parser.yy"
     5500  case 105:
     5501
     5502/* Line 1806 of yacc.c  */
     5503#line 599 "parser.yy"
    54905504    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); }
    54915505    break;
    54925506
    5493   case 105:
    5494 
    5495 /* Line 1806 of yacc.c  */
    5496 #line 603 "parser.yy"
     5507  case 106:
     5508
     5509/* Line 1806 of yacc.c  */
     5510#line 604 "parser.yy"
    54975511    { (yyval.en) = nullptr; }
    54985512    break;
    54995513
    5500   case 107:
    5501 
    5502 /* Line 1806 of yacc.c  */
    5503 #line 608 "parser.yy"
     5514  case 108:
     5515
     5516/* Line 1806 of yacc.c  */
     5517#line 609 "parser.yy"
    55045518    { (yyval.op) = OperKinds::Assign; }
    55055519    break;
    55065520
    5507   case 108:
    5508 
    5509 /* Line 1806 of yacc.c  */
    5510 #line 609 "parser.yy"
     5521  case 109:
     5522
     5523/* Line 1806 of yacc.c  */
     5524#line 610 "parser.yy"
     5525    { (yyval.op) = OperKinds::AtAssn; }
     5526    break;
     5527
     5528  case 110:
     5529
     5530/* Line 1806 of yacc.c  */
     5531#line 611 "parser.yy"
    55115532    { (yyval.op) = OperKinds::MulAssn; }
    55125533    break;
    55135534
    5514   case 109:
    5515 
    5516 /* Line 1806 of yacc.c  */
    5517 #line 610 "parser.yy"
     5535  case 111:
     5536
     5537/* Line 1806 of yacc.c  */
     5538#line 612 "parser.yy"
    55185539    { (yyval.op) = OperKinds::DivAssn; }
    55195540    break;
    55205541
    5521   case 110:
    5522 
    5523 /* Line 1806 of yacc.c  */
    5524 #line 611 "parser.yy"
     5542  case 112:
     5543
     5544/* Line 1806 of yacc.c  */
     5545#line 613 "parser.yy"
    55255546    { (yyval.op) = OperKinds::ModAssn; }
    55265547    break;
    55275548
    5528   case 111:
    5529 
    5530 /* Line 1806 of yacc.c  */
    5531 #line 612 "parser.yy"
     5549  case 113:
     5550
     5551/* Line 1806 of yacc.c  */
     5552#line 614 "parser.yy"
    55325553    { (yyval.op) = OperKinds::PlusAssn; }
    55335554    break;
    55345555
    5535   case 112:
    5536 
    5537 /* Line 1806 of yacc.c  */
    5538 #line 613 "parser.yy"
     5556  case 114:
     5557
     5558/* Line 1806 of yacc.c  */
     5559#line 615 "parser.yy"
    55395560    { (yyval.op) = OperKinds::MinusAssn; }
    55405561    break;
    55415562
    5542   case 113:
    5543 
    5544 /* Line 1806 of yacc.c  */
    5545 #line 614 "parser.yy"
     5563  case 115:
     5564
     5565/* Line 1806 of yacc.c  */
     5566#line 616 "parser.yy"
    55465567    { (yyval.op) = OperKinds::LSAssn; }
    55475568    break;
    55485569
    5549   case 114:
    5550 
    5551 /* Line 1806 of yacc.c  */
    5552 #line 615 "parser.yy"
     5570  case 116:
     5571
     5572/* Line 1806 of yacc.c  */
     5573#line 617 "parser.yy"
    55535574    { (yyval.op) = OperKinds::RSAssn; }
    55545575    break;
    55555576
    5556   case 115:
    5557 
    5558 /* Line 1806 of yacc.c  */
    5559 #line 616 "parser.yy"
     5577  case 117:
     5578
     5579/* Line 1806 of yacc.c  */
     5580#line 618 "parser.yy"
    55605581    { (yyval.op) = OperKinds::AndAssn; }
    55615582    break;
    55625583
    5563   case 116:
    5564 
    5565 /* Line 1806 of yacc.c  */
    5566 #line 617 "parser.yy"
     5584  case 118:
     5585
     5586/* Line 1806 of yacc.c  */
     5587#line 619 "parser.yy"
    55675588    { (yyval.op) = OperKinds::ERAssn; }
    55685589    break;
    55695590
    5570   case 117:
    5571 
    5572 /* Line 1806 of yacc.c  */
    5573 #line 618 "parser.yy"
     5591  case 119:
     5592
     5593/* Line 1806 of yacc.c  */
     5594#line 620 "parser.yy"
    55745595    { (yyval.op) = OperKinds::OrAssn; }
    55755596    break;
    55765597
    5577   case 118:
    5578 
    5579 /* Line 1806 of yacc.c  */
    5580 #line 625 "parser.yy"
     5598  case 120:
     5599
     5600/* Line 1806 of yacc.c  */
     5601#line 627 "parser.yy"
    55815602    { (yyval.en) = new ExpressionNode( build_tuple() ); }
    55825603    break;
    55835604
    5584   case 119:
    5585 
    5586 /* Line 1806 of yacc.c  */
    5587 #line 627 "parser.yy"
     5605  case 121:
     5606
     5607/* Line 1806 of yacc.c  */
     5608#line 629 "parser.yy"
    55885609    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
    55895610    break;
    55905611
    5591   case 120:
    5592 
    5593 /* Line 1806 of yacc.c  */
    5594 #line 629 "parser.yy"
    5595     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_link( (yyvsp[(4) - (6)].en) ) ) ); }
    5596     break;
    5597 
    5598   case 121:
     5612  case 122:
    55995613
    56005614/* Line 1806 of yacc.c  */
    56015615#line 631 "parser.yy"
    5602     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( (yyvsp[(5) - (7)].en) ) ) ); }
     5616    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
    56035617    break;
    56045618
     
    56065620
    56075621/* Line 1806 of yacc.c  */
    5608 #line 637 "parser.yy"
    5609     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     5622#line 633 "parser.yy"
     5623    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
    56105624    break;
    56115625
     
    56135627
    56145628/* Line 1806 of yacc.c  */
    5615 #line 643 "parser.yy"
     5629#line 639 "parser.yy"
     5630    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     5631    break;
     5632
     5633  case 127:
     5634
     5635/* Line 1806 of yacc.c  */
     5636#line 645 "parser.yy"
    56165637    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    56175638    break;
    56185639
    5619   case 126:
    5620 
    5621 /* Line 1806 of yacc.c  */
    5622 #line 648 "parser.yy"
     5640  case 128:
     5641
     5642/* Line 1806 of yacc.c  */
     5643#line 650 "parser.yy"
    56235644    { (yyval.en) = 0; }
    56245645    break;
    56255646
    5626   case 130:
    5627 
    5628 /* Line 1806 of yacc.c  */
    5629 #line 657 "parser.yy"
     5647  case 132:
     5648
     5649/* Line 1806 of yacc.c  */
     5650#line 659 "parser.yy"
    56305651    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56315652    break;
    56325653
    5633   case 136:
    5634 
    5635 /* Line 1806 of yacc.c  */
    5636 #line 664 "parser.yy"
     5654  case 138:
     5655
     5656/* Line 1806 of yacc.c  */
     5657#line 666 "parser.yy"
    56375658    {
    56385659                        Token fn;
    56395660                        fn.str = new std::string( "^?{}" ); // location undefined
    5640                         (yyval.sn) = new StatementNode2( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_link( (yyvsp[(4) - (6)].en) ) ) ) ) );
     5661                        (yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_last( (yyvsp[(4) - (6)].en) ) ) ) ) );
    56415662                }
    56425663    break;
    56435664
    5644   case 137:
    5645 
    5646 /* Line 1806 of yacc.c  */
    5647 #line 674 "parser.yy"
     5665  case 139:
     5666
     5667/* Line 1806 of yacc.c  */
     5668#line 676 "parser.yy"
    56485669    {
    56495670                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    56515672    break;
    56525673
    5653   case 138:
    5654 
    5655 /* Line 1806 of yacc.c  */
    5656 #line 681 "parser.yy"
    5657     { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
    5658     break;
    5659 
    5660   case 139:
    5661 
    5662 /* Line 1806 of yacc.c  */
    5663 #line 688 "parser.yy"
    5664     { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
     5674  case 140:
     5675
     5676/* Line 1806 of yacc.c  */
     5677#line 683 "parser.yy"
     5678    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
    56655679    break;
    56665680
     
    56685682
    56695683/* Line 1806 of yacc.c  */
    5670 #line 694 "parser.yy"
    5671     { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    5672     break;
    5673 
    5674   case 142:
    5675 
    5676 /* Line 1806 of yacc.c  */
    5677 #line 699 "parser.yy"
     5684#line 690 "parser.yy"
     5685    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
     5686    break;
     5687
     5688  case 143:
     5689
     5690/* Line 1806 of yacc.c  */
     5691#line 696 "parser.yy"
     5692    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
     5693    break;
     5694
     5695  case 144:
     5696
     5697/* Line 1806 of yacc.c  */
     5698#line 701 "parser.yy"
    56785699    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    56795700    break;
    56805701
    5681   case 143:
    5682 
    5683 /* Line 1806 of yacc.c  */
    5684 #line 701 "parser.yy"
     5702  case 145:
     5703
     5704/* Line 1806 of yacc.c  */
     5705#line 703 "parser.yy"
    56855706    {   // mark all fields in list
    5686                         for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     5707                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    56875708                                iter->set_extension( true );
    56885709                        (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) );
     
    56905711    break;
    56915712
    5692   case 144:
    5693 
    5694 /* Line 1806 of yacc.c  */
    5695 #line 707 "parser.yy"
     5713  case 146:
     5714
     5715/* Line 1806 of yacc.c  */
     5716#line 709 "parser.yy"
    56965717    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    56975718    break;
    56985719
    5699   case 147:
    5700 
    5701 /* Line 1806 of yacc.c  */
    5702 #line 714 "parser.yy"
    5703     { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    5704     break;
    5705 
    5706   case 148:
    5707 
    5708 /* Line 1806 of yacc.c  */
    5709 #line 719 "parser.yy"
    5710     { (yyval.sn) = new StatementNode2( build_expr( (yyvsp[(1) - (2)].en) ) ); }
    5711     break;
    5712 
    57135720  case 149:
    57145721
    57155722/* Line 1806 of yacc.c  */
    5716 #line 725 "parser.yy"
    5717     { (yyval.sn) = new StatementNode2( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
     5723#line 716 "parser.yy"
     5724    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    57185725    break;
    57195726
     
    57215728
    57225729/* Line 1806 of yacc.c  */
     5730#line 721 "parser.yy"
     5731    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
     5732    break;
     5733
     5734  case 151:
     5735
     5736/* Line 1806 of yacc.c  */
    57235737#line 727 "parser.yy"
    5724     { (yyval.sn) = new StatementNode2( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
    5725     break;
    5726 
    5727   case 151:
     5738    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
     5739    break;
     5740
     5741  case 152:
    57285742
    57295743/* Line 1806 of yacc.c  */
    57305744#line 729 "parser.yy"
    5731     { (yyval.sn) = new StatementNode2( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    5732     break;
    5733 
    5734   case 152:
     5745    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
     5746    break;
     5747
     5748  case 153:
    57355749
    57365750/* Line 1806 of yacc.c  */
    57375751#line 731 "parser.yy"
     5752    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     5753    break;
     5754
     5755  case 154:
     5756
     5757/* Line 1806 of yacc.c  */
     5758#line 733 "parser.yy"
    57385759    {
    5739                         StatementNode *sw = new StatementNode2( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     5760                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
    57405761                        // The semantics of the declaration list is changed to include associated initialization, which is performed
    57415762                        // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
     
    57435764                        // therefore, are removed from the grammar even though C allows it. The change also applies to choose
    57445765                        // statement.
    5745                         (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_link( sw )) ) : sw;
     5766                        (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
    57465767                }
    57475768    break;
    57485769
    5749   case 153:
    5750 
    5751 /* Line 1806 of yacc.c  */
    5752 #line 741 "parser.yy"
    5753     { (yyval.sn) = new StatementNode2( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    5754     break;
    5755 
    5756   case 154:
     5770  case 155:
    57575771
    57585772/* Line 1806 of yacc.c  */
    57595773#line 743 "parser.yy"
     5774    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     5775    break;
     5776
     5777  case 156:
     5778
     5779/* Line 1806 of yacc.c  */
     5780#line 745 "parser.yy"
    57605781    {
    5761                         StatementNode *sw = new StatementNode2( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
    5762                         (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_link( sw )) ) : sw;
     5782                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     5783                        (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
    57635784                }
    57645785    break;
    57655786
    5766   case 155:
    5767 
    5768 /* Line 1806 of yacc.c  */
    5769 #line 753 "parser.yy"
     5787  case 157:
     5788
     5789/* Line 1806 of yacc.c  */
     5790#line 755 "parser.yy"
    57705791    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    57715792    break;
    57725793
    5773   case 156:
    5774 
    5775 /* Line 1806 of yacc.c  */
    5776 #line 755 "parser.yy"
     5794  case 158:
     5795
     5796/* Line 1806 of yacc.c  */
     5797#line 757 "parser.yy"
    57775798    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57785799    break;
    57795800
    5780   case 158:
    5781 
    5782 /* Line 1806 of yacc.c  */
    5783 #line 761 "parser.yy"
    5784     { (yyval.sn) = new StatementNode2( build_case( (yyvsp[(1) - (1)].en) ) ); }
    5785     break;
    5786 
    5787   case 159:
    5788 
    5789 /* Line 1806 of yacc.c  */
    5790 #line 763 "parser.yy"
    5791     { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_link( new StatementNode2( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
    5792     break;
    5793 
    57945801  case 160:
    57955802
    57965803/* Line 1806 of yacc.c  */
    5797 #line 767 "parser.yy"
     5804#line 762 "parser.yy"
     5805    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
     5806    break;
     5807
     5808  case 161:
     5809
     5810/* Line 1806 of yacc.c  */
     5811#line 764 "parser.yy"
     5812    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
     5813    break;
     5814
     5815  case 162:
     5816
     5817/* Line 1806 of yacc.c  */
     5818#line 768 "parser.yy"
    57985819    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    57995820    break;
    58005821
    5801   case 161:
    5802 
    5803 /* Line 1806 of yacc.c  */
    5804 #line 768 "parser.yy"
    5805     { (yyval.sn) = new StatementNode2( build_default() ); }
    5806     break;
    5807 
    58085822  case 163:
    58095823
    58105824/* Line 1806 of yacc.c  */
    5811 #line 774 "parser.yy"
    5812     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
    5813     break;
    5814 
    5815   case 164:
    5816 
    5817 /* Line 1806 of yacc.c  */
    5818 #line 778 "parser.yy"
    5819     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
     5825#line 769 "parser.yy"
     5826    { (yyval.sn) = new StatementNode( build_default() ); }
    58205827    break;
    58215828
     
    58235830
    58245831/* Line 1806 of yacc.c  */
    5825 #line 783 "parser.yy"
     5832#line 775 "parser.yy"
     5833    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
     5834    break;
     5835
     5836  case 166:
     5837
     5838/* Line 1806 of yacc.c  */
     5839#line 779 "parser.yy"
     5840    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     5841    break;
     5842
     5843  case 167:
     5844
     5845/* Line 1806 of yacc.c  */
     5846#line 784 "parser.yy"
    58265847    { (yyval.sn) = 0; }
    58275848    break;
    58285849
    5829   case 167:
    5830 
    5831 /* Line 1806 of yacc.c  */
    5832 #line 789 "parser.yy"
    5833     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
    5834     break;
    5835 
    5836   case 168:
    5837 
    5838 /* Line 1806 of yacc.c  */
    5839 #line 791 "parser.yy"
    5840     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    5841     break;
    5842 
    58435850  case 169:
    58445851
    58455852/* Line 1806 of yacc.c  */
    5846 #line 796 "parser.yy"
     5853#line 790 "parser.yy"
     5854    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     5855    break;
     5856
     5857  case 170:
     5858
     5859/* Line 1806 of yacc.c  */
     5860#line 792 "parser.yy"
     5861    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
     5862    break;
     5863
     5864  case 171:
     5865
     5866/* Line 1806 of yacc.c  */
     5867#line 797 "parser.yy"
    58475868    { (yyval.sn) = 0; }
    58485869    break;
    58495870
    5850   case 171:
    5851 
    5852 /* Line 1806 of yacc.c  */
    5853 #line 802 "parser.yy"
     5871  case 173:
     5872
     5873/* Line 1806 of yacc.c  */
     5874#line 803 "parser.yy"
    58545875    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58555876    break;
    58565877
    5857   case 172:
    5858 
    5859 /* Line 1806 of yacc.c  */
    5860 #line 804 "parser.yy"
    5861     { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(2) - (3)].sn), *(yyvsp[(3) - (3)].sn) ) ) ) ); }
    5862     break;
    5863 
    5864   case 173:
    5865 
    5866 /* Line 1806 of yacc.c  */
    5867 #line 806 "parser.yy"
    5868     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    5869     break;
    5870 
    58715878  case 174:
    58725879
    58735880/* Line 1806 of yacc.c  */
    5874 #line 808 "parser.yy"
    5875     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(3) - (4)].sn), *(yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
     5881#line 805 "parser.yy"
     5882    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    58765883    break;
    58775884
     
    58795886
    58805887/* Line 1806 of yacc.c  */
    5881 #line 813 "parser.yy"
    5882     { (yyval.sn) = new StatementNode2( build_branch( "", BranchStmt::Break ) ); }
     5888#line 807 "parser.yy"
     5889    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     5890    break;
     5891
     5892  case 176:
     5893
     5894/* Line 1806 of yacc.c  */
     5895#line 809 "parser.yy"
     5896    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
    58835897    break;
    58845898
     
    58865900
    58875901/* Line 1806 of yacc.c  */
    5888 #line 819 "parser.yy"
     5902#line 814 "parser.yy"
     5903    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
     5904    break;
     5905
     5906  case 179:
     5907
     5908/* Line 1806 of yacc.c  */
     5909#line 820 "parser.yy"
    58895910    { (yyval.sn) = 0; }
    58905911    break;
    58915912
    5892   case 178:
    5893 
    5894 /* Line 1806 of yacc.c  */
    5895 #line 821 "parser.yy"
     5913  case 180:
     5914
     5915/* Line 1806 of yacc.c  */
     5916#line 822 "parser.yy"
    58965917    { (yyval.sn) = 0; }
    58975918    break;
    58985919
    5899   case 179:
    5900 
    5901 /* Line 1806 of yacc.c  */
    5902 #line 826 "parser.yy"
    5903     { (yyval.sn) = new StatementNode2( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    5904     break;
    5905 
    5906   case 180:
    5907 
    5908 /* Line 1806 of yacc.c  */
    5909 #line 828 "parser.yy"
    5910     { (yyval.sn) = new StatementNode2( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ) ); }
    5911     break;
    5912 
    59135920  case 181:
    59145921
    59155922/* Line 1806 of yacc.c  */
    5916 #line 830 "parser.yy"
    5917     { (yyval.sn) = new StatementNode2( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
     5923#line 827 "parser.yy"
     5924    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    59185925    break;
    59195926
     
    59215928
    59225929/* Line 1806 of yacc.c  */
    5923 #line 835 "parser.yy"
     5930#line 829 "parser.yy"
     5931    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ) ); }
     5932    break;
     5933
     5934  case 183:
     5935
     5936/* Line 1806 of yacc.c  */
     5937#line 831 "parser.yy"
     5938    { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
     5939    break;
     5940
     5941  case 184:
     5942
     5943/* Line 1806 of yacc.c  */
     5944#line 836 "parser.yy"
    59245945    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    59255946    break;
    59265947
    5927   case 183:
    5928 
    5929 /* Line 1806 of yacc.c  */
    5930 #line 837 "parser.yy"
     5948  case 185:
     5949
     5950/* Line 1806 of yacc.c  */
     5951#line 838 "parser.yy"
    59315952    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    59325953    break;
    59335954
    5934   case 184:
    5935 
    5936 /* Line 1806 of yacc.c  */
    5937 #line 842 "parser.yy"
    5938     { (yyval.sn) = new StatementNode2( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
    5939     break;
    5940 
    5941   case 185:
    5942 
    5943 /* Line 1806 of yacc.c  */
    5944 #line 846 "parser.yy"
    5945     { (yyval.sn) = new StatementNode2( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    5946     break;
    5947 
    59485955  case 186:
    59495956
    59505957/* Line 1806 of yacc.c  */
    5951 #line 849 "parser.yy"
    5952     { (yyval.sn) = new StatementNode2( build_branch( "", BranchStmt::Continue ) ); }
     5958#line 843 "parser.yy"
     5959    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
    59535960    break;
    59545961
     
    59565963
    59575964/* Line 1806 of yacc.c  */
    5958 #line 853 "parser.yy"
    5959     { (yyval.sn) = new StatementNode2( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); delete (yyvsp[(2) - (3)].tok); }
     5965#line 847 "parser.yy"
     5966    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    59605967    break;
    59615968
     
    59635970
    59645971/* Line 1806 of yacc.c  */
    5965 #line 856 "parser.yy"
    5966     { (yyval.sn) = new StatementNode2( build_branch( "", BranchStmt::Break ) ); }
     5972#line 850 "parser.yy"
     5973    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
    59675974    break;
    59685975
     
    59705977
    59715978/* Line 1806 of yacc.c  */
    5972 #line 860 "parser.yy"
    5973     { (yyval.sn) = new StatementNode2( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); delete (yyvsp[(2) - (3)].tok); }
     5979#line 854 "parser.yy"
     5980    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
    59745981    break;
    59755982
     
    59775984
    59785985/* Line 1806 of yacc.c  */
    5979 #line 862 "parser.yy"
    5980     { (yyval.sn) = new StatementNode2( build_return( (yyvsp[(2) - (3)].en) ) ); }
     5986#line 857 "parser.yy"
     5987    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    59815988    break;
    59825989
     
    59845991
    59855992/* Line 1806 of yacc.c  */
    5986 #line 864 "parser.yy"
    5987     { (yyval.sn) = new StatementNode2( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     5993#line 861 "parser.yy"
     5994    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
    59885995    break;
    59895996
     
    59915998
    59925999/* Line 1806 of yacc.c  */
    5993 #line 866 "parser.yy"
    5994     { (yyval.sn) = new StatementNode2( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     6000#line 863 "parser.yy"
     6001    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
    59956002    break;
    59966003
     
    59986005
    59996006/* Line 1806 of yacc.c  */
    6000 #line 868 "parser.yy"
    6001     { (yyval.sn) = new StatementNode2( build_throw( (yyvsp[(2) - (5)].en) ) ); }
     6007#line 865 "parser.yy"
     6008    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    60026009    break;
    60036010
     
    60056012
    60066013/* Line 1806 of yacc.c  */
    6007 #line 873 "parser.yy"
    6008     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
     6014#line 867 "parser.yy"
     6015    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    60096016    break;
    60106017
     
    60126019
    60136020/* Line 1806 of yacc.c  */
    6014 #line 875 "parser.yy"
    6015     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
     6021#line 869 "parser.yy"
     6022    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    60166023    break;
    60176024
     
    60196026
    60206027/* Line 1806 of yacc.c  */
    6021 #line 877 "parser.yy"
     6028#line 874 "parser.yy"
     6029    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
     6030    break;
     6031
     6032  case 197:
     6033
     6034/* Line 1806 of yacc.c  */
     6035#line 876 "parser.yy"
     6036    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
     6037    break;
     6038
     6039  case 198:
     6040
     6041/* Line 1806 of yacc.c  */
     6042#line 878 "parser.yy"
     6043    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
     6044    break;
     6045
     6046  case 200:
     6047
     6048/* Line 1806 of yacc.c  */
     6049#line 885 "parser.yy"
     6050    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     6051    break;
     6052
     6053  case 201:
     6054
     6055/* Line 1806 of yacc.c  */
     6056#line 887 "parser.yy"
     6057    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     6058    break;
     6059
     6060  case 202:
     6061
     6062/* Line 1806 of yacc.c  */
     6063#line 889 "parser.yy"
     6064    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     6065    break;
     6066
     6067  case 203:
     6068
     6069/* Line 1806 of yacc.c  */
     6070#line 891 "parser.yy"
     6071    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     6072    break;
     6073
     6074  case 204:
     6075
     6076/* Line 1806 of yacc.c  */
     6077#line 896 "parser.yy"
     6078    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     6079    break;
     6080
     6081  case 205:
     6082
     6083/* Line 1806 of yacc.c  */
     6084#line 898 "parser.yy"
     6085    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     6086    break;
     6087
     6088  case 206:
     6089
     6090/* Line 1806 of yacc.c  */
     6091#line 900 "parser.yy"
     6092    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     6093    break;
     6094
     6095  case 207:
     6096
     6097/* Line 1806 of yacc.c  */
     6098#line 902 "parser.yy"
     6099    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     6100    break;
     6101
     6102  case 208:
     6103
     6104/* Line 1806 of yacc.c  */
     6105#line 907 "parser.yy"
    60226106    {
    6023                         (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
    6024                         (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (4)].sn),*(yyvsp[(3) - (4)].pn) ))));
     6107                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
    60256108                }
    60266109    break;
    60276110
    6028   case 198:
    6029 
    6030 /* Line 1806 of yacc.c  */
    6031 #line 888 "parser.yy"
    6032     { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    6033     break;
    6034 
    6035   case 199:
    6036 
    6037 /* Line 1806 of yacc.c  */
    6038 #line 890 "parser.yy"
    6039     { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    6040     break;
    6041 
    6042   case 200:
    6043 
    6044 /* Line 1806 of yacc.c  */
    6045 #line 892 "parser.yy"
    6046     { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    6047     break;
    6048 
    6049   case 201:
    6050 
    6051 /* Line 1806 of yacc.c  */
    6052 #line 894 "parser.yy"
    6053     { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    6054     break;
    6055 
    6056   case 202:
    6057 
    6058 /* Line 1806 of yacc.c  */
    6059 #line 899 "parser.yy"
    6060     { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    6061     break;
    6062 
    6063   case 203:
    6064 
    6065 /* Line 1806 of yacc.c  */
    6066 #line 901 "parser.yy"
    6067     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    6068     break;
    6069 
    6070   case 204:
    6071 
    6072 /* Line 1806 of yacc.c  */
    6073 #line 903 "parser.yy"
    6074     { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    6075     break;
    6076 
    6077   case 205:
    6078 
    6079 /* Line 1806 of yacc.c  */
    6080 #line 905 "parser.yy"
    6081     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    6082     break;
    6083 
    6084   case 206:
    6085 
    6086 /* Line 1806 of yacc.c  */
    6087 #line 910 "parser.yy"
    6088     {
    6089                         (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
    6090                         std::cout << "Just created a finally node" << std::endl;
    6091                 }
    6092     break;
    6093 
    6094   case 208:
    6095 
    6096 /* Line 1806 of yacc.c  */
    6097 #line 924 "parser.yy"
     6111  case 210:
     6112
     6113/* Line 1806 of yacc.c  */
     6114#line 920 "parser.yy"
    60986115    {
    60996116                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61026119    break;
    61036120
    6104   case 209:
    6105 
    6106 /* Line 1806 of yacc.c  */
    6107 #line 929 "parser.yy"
     6121  case 211:
     6122
     6123/* Line 1806 of yacc.c  */
     6124#line 925 "parser.yy"
    61086125    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    61096126    break;
    61106127
    6111   case 210:
    6112 
    6113 /* Line 1806 of yacc.c  */
    6114 #line 931 "parser.yy"
     6128  case 212:
     6129
     6130/* Line 1806 of yacc.c  */
     6131#line 927 "parser.yy"
    61156132    {
    61166133                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61196136    break;
    61206137
    6121   case 212:
     6138  case 214:
     6139
     6140/* Line 1806 of yacc.c  */
     6141#line 936 "parser.yy"
     6142    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
     6143    break;
     6144
     6145  case 215:
     6146
     6147/* Line 1806 of yacc.c  */
     6148#line 938 "parser.yy"
     6149    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
     6150    break;
     6151
     6152  case 216:
    61226153
    61236154/* Line 1806 of yacc.c  */
    61246155#line 940 "parser.yy"
    6125     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
    6126     break;
    6127 
    6128   case 213:
     6156    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
     6157    break;
     6158
     6159  case 217:
    61296160
    61306161/* Line 1806 of yacc.c  */
    61316162#line 942 "parser.yy"
    6132     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
    6133     break;
    6134 
    6135   case 214:
     6163    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
     6164    break;
     6165
     6166  case 218:
    61366167
    61376168/* Line 1806 of yacc.c  */
    61386169#line 944 "parser.yy"
    6139     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
    6140     break;
    6141 
    6142   case 215:
    6143 
    6144 /* Line 1806 of yacc.c  */
    6145 #line 946 "parser.yy"
    6146     { (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)].en) ); }
    6147     break;
    6148 
    6149   case 216:
    6150 
    6151 /* Line 1806 of yacc.c  */
    6152 #line 948 "parser.yy"
    6153     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ); }
    6154     break;
    6155 
    6156   case 217:
    6157 
    6158 /* Line 1806 of yacc.c  */
    6159 #line 953 "parser.yy"
     6170    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
     6171    break;
     6172
     6173  case 219:
     6174
     6175/* Line 1806 of yacc.c  */
     6176#line 949 "parser.yy"
    61606177    { (yyval.flag) = false; }
    61616178    break;
    61626179
    6163   case 218:
    6164 
    6165 /* Line 1806 of yacc.c  */
    6166 #line 955 "parser.yy"
     6180  case 220:
     6181
     6182/* Line 1806 of yacc.c  */
     6183#line 951 "parser.yy"
    61676184    { (yyval.flag) = true; }
    61686185    break;
    61696186
    6170   case 219:
    6171 
    6172 /* Line 1806 of yacc.c  */
    6173 #line 960 "parser.yy"
     6187  case 221:
     6188
     6189/* Line 1806 of yacc.c  */
     6190#line 956 "parser.yy"
    61746191    { (yyval.en) = 0; }
    61756192    break;
    61766193
    6177   case 222:
    6178 
    6179 /* Line 1806 of yacc.c  */
    6180 #line 967 "parser.yy"
    6181     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    6182     break;
    6183 
    6184   case 223:
    6185 
    6186 /* Line 1806 of yacc.c  */
    6187 #line 972 "parser.yy"
    6188     { (yyval.en) = new ExpressionNode( build_asm( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
    6189     break;
    6190 
    61916194  case 224:
    61926195
    61936196/* Line 1806 of yacc.c  */
    6194 #line 974 "parser.yy"
    6195     { (yyval.en) = new ExpressionNode( build_asm( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
     6197#line 963 "parser.yy"
     6198    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    61966199    break;
    61976200
     
    61996202
    62006203/* Line 1806 of yacc.c  */
     6204#line 968 "parser.yy"
     6205    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
     6206    break;
     6207
     6208  case 226:
     6209
     6210/* Line 1806 of yacc.c  */
     6211#line 970 "parser.yy"
     6212    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
     6213    break;
     6214
     6215  case 227:
     6216
     6217/* Line 1806 of yacc.c  */
     6218#line 975 "parser.yy"
     6219    { (yyval.en) = 0; }
     6220    break;
     6221
     6222  case 228:
     6223
     6224/* Line 1806 of yacc.c  */
     6225#line 977 "parser.yy"
     6226    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     6227    break;
     6228
     6229  case 229:
     6230
     6231/* Line 1806 of yacc.c  */
    62016232#line 979 "parser.yy"
    6202     { (yyval.en) = 0; }
    6203     break;
    6204 
    6205   case 226:
    6206 
    6207 /* Line 1806 of yacc.c  */
    6208 #line 981 "parser.yy"
    6209     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    6210     break;
    6211 
    6212   case 227:
    6213 
    6214 /* Line 1806 of yacc.c  */
    6215 #line 983 "parser.yy"
    6216     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    6217     break;
    6218 
    6219   case 228:
    6220 
    6221 /* Line 1806 of yacc.c  */
    6222 #line 988 "parser.yy"
    6223     { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
    6224     break;
    6225 
    6226   case 229:
    6227 
    6228 /* Line 1806 of yacc.c  */
    6229 #line 990 "parser.yy"
    6230     { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
     6233    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    62316234    break;
    62326235
     
    62346237
    62356238/* Line 1806 of yacc.c  */
    6236 #line 997 "parser.yy"
     6239#line 984 "parser.yy"
     6240    {
     6241                        (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
     6242                        delete (yyvsp[(1) - (1)].tok);                                                                  // allocated by lexer
     6243                }
     6244    break;
     6245
     6246  case 231:
     6247
     6248/* Line 1806 of yacc.c  */
     6249#line 989 "parser.yy"
     6250    {
     6251                        (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
     6252                        delete (yyvsp[(3) - (3)].tok);                                                                  // allocated by lexer
     6253                }
     6254    break;
     6255
     6256  case 232:
     6257
     6258/* Line 1806 of yacc.c  */
     6259#line 999 "parser.yy"
    62376260    { (yyval.decl) = 0; }
    62386261    break;
    62396262
    6240   case 233:
    6241 
    6242 /* Line 1806 of yacc.c  */
    6243 #line 1004 "parser.yy"
     6263  case 235:
     6264
     6265/* Line 1806 of yacc.c  */
     6266#line 1006 "parser.yy"
    62446267    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62456268    break;
    62466269
    6247   case 234:
    6248 
    6249 /* Line 1806 of yacc.c  */
    6250 #line 1009 "parser.yy"
     6270  case 236:
     6271
     6272/* Line 1806 of yacc.c  */
     6273#line 1011 "parser.yy"
    62516274    { (yyval.decl) = 0; }
    62526275    break;
    62536276
    6254   case 237:
    6255 
    6256 /* Line 1806 of yacc.c  */
    6257 #line 1016 "parser.yy"
     6277  case 239:
     6278
     6279/* Line 1806 of yacc.c  */
     6280#line 1018 "parser.yy"
    62586281    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62596282    break;
    62606283
    6261   case 242:
    6262 
    6263 /* Line 1806 of yacc.c  */
    6264 #line 1030 "parser.yy"
     6284  case 244:
     6285
     6286/* Line 1806 of yacc.c  */
     6287#line 1032 "parser.yy"
    62656288    {}
    62666289    break;
    62676290
    6268   case 243:
    6269 
    6270 /* Line 1806 of yacc.c  */
    6271 #line 1031 "parser.yy"
     6291  case 245:
     6292
     6293/* Line 1806 of yacc.c  */
     6294#line 1033 "parser.yy"
    62726295    {}
    62736296    break;
    62746297
    6275   case 251:
    6276 
    6277 /* Line 1806 of yacc.c  */
    6278 #line 1060 "parser.yy"
     6298  case 253:
     6299
     6300/* Line 1806 of yacc.c  */
     6301#line 1062 "parser.yy"
    62796302    {
    62806303                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62836306    break;
    62846307
    6285   case 252:
    6286 
    6287 /* Line 1806 of yacc.c  */
    6288 #line 1067 "parser.yy"
     6308  case 254:
     6309
     6310/* Line 1806 of yacc.c  */
     6311#line 1069 "parser.yy"
    62896312    {
    62906313                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62936316    break;
    62946317
    6295   case 253:
    6296 
    6297 /* Line 1806 of yacc.c  */
    6298 #line 1072 "parser.yy"
     6318  case 255:
     6319
     6320/* Line 1806 of yacc.c  */
     6321#line 1074 "parser.yy"
    62996322    {
    63006323                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    63036326    break;
    63046327
    6305   case 254:
    6306 
    6307 /* Line 1806 of yacc.c  */
    6308 #line 1082 "parser.yy"
     6328  case 256:
     6329
     6330/* Line 1806 of yacc.c  */
     6331#line 1084 "parser.yy"
    63096332    {
    63106333                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63136336    break;
    63146337
    6315   case 255:
    6316 
    6317 /* Line 1806 of yacc.c  */
    6318 #line 1087 "parser.yy"
     6338  case 257:
     6339
     6340/* Line 1806 of yacc.c  */
     6341#line 1089 "parser.yy"
    63196342    {
    63206343                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63236346    break;
    63246347
    6325   case 256:
    6326 
    6327 /* Line 1806 of yacc.c  */
    6328 #line 1092 "parser.yy"
     6348  case 258:
     6349
     6350/* Line 1806 of yacc.c  */
     6351#line 1094 "parser.yy"
    63296352    {
    63306353                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    63336356    break;
    63346357
    6335   case 257:
    6336 
    6337 /* Line 1806 of yacc.c  */
    6338 #line 1100 "parser.yy"
     6358  case 259:
     6359
     6360/* Line 1806 of yacc.c  */
     6361#line 1102 "parser.yy"
    63396362    {
    63406363                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63436366    break;
    63446367
    6345   case 258:
    6346 
    6347 /* Line 1806 of yacc.c  */
    6348 #line 1105 "parser.yy"
     6368  case 260:
     6369
     6370/* Line 1806 of yacc.c  */
     6371#line 1107 "parser.yy"
    63496372    {
    63506373                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63536376    break;
    63546377
    6355   case 259:
    6356 
    6357 /* Line 1806 of yacc.c  */
    6358 #line 1110 "parser.yy"
     6378  case 261:
     6379
     6380/* Line 1806 of yacc.c  */
     6381#line 1112 "parser.yy"
    63596382    {
    63606383                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63636386    break;
    63646387
    6365   case 260:
    6366 
    6367 /* Line 1806 of yacc.c  */
    6368 #line 1115 "parser.yy"
     6388  case 262:
     6389
     6390/* Line 1806 of yacc.c  */
     6391#line 1117 "parser.yy"
    63696392    {
    63706393                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63736396    break;
    63746397
    6375   case 261:
    6376 
    6377 /* Line 1806 of yacc.c  */
    6378 #line 1120 "parser.yy"
     6398  case 263:
     6399
     6400/* Line 1806 of yacc.c  */
     6401#line 1122 "parser.yy"
    63796402    {
    63806403                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    63836406    break;
    63846407
    6385   case 262:
    6386 
    6387 /* Line 1806 of yacc.c  */
    6388 #line 1128 "parser.yy"
     6408  case 264:
     6409
     6410/* Line 1806 of yacc.c  */
     6411#line 1130 "parser.yy"
    63896412    {
    63906413                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    63926415    break;
    63936416
    6394   case 263:
    6395 
    6396 /* Line 1806 of yacc.c  */
    6397 #line 1151 "parser.yy"
     6417  case 265:
     6418
     6419/* Line 1806 of yacc.c  */
     6420#line 1153 "parser.yy"
    63986421    {
    63996422                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64016424    break;
    64026425
    6403   case 264:
    6404 
    6405 /* Line 1806 of yacc.c  */
    6406 #line 1155 "parser.yy"
     6426  case 266:
     6427
     6428/* Line 1806 of yacc.c  */
     6429#line 1157 "parser.yy"
    64076430    {
    64086431                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64106433    break;
    64116434
    6412   case 265:
    6413 
    6414 /* Line 1806 of yacc.c  */
    6415 #line 1162 "parser.yy"
     6435  case 267:
     6436
     6437/* Line 1806 of yacc.c  */
     6438#line 1164 "parser.yy"
    64166439    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    64176440    break;
    64186441
    6419   case 266:
    6420 
    6421 /* Line 1806 of yacc.c  */
    6422 #line 1166 "parser.yy"
     6442  case 268:
     6443
     6444/* Line 1806 of yacc.c  */
     6445#line 1168 "parser.yy"
    64236446    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    64246447    break;
    64256448
    6426   case 267:
    6427 
    6428 /* Line 1806 of yacc.c  */
    6429 #line 1171 "parser.yy"
     6449  case 269:
     6450
     6451/* Line 1806 of yacc.c  */
     6452#line 1173 "parser.yy"
    64306453    {
    64316454                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64346457    break;
    64356458
    6436   case 268:
    6437 
    6438 /* Line 1806 of yacc.c  */
    6439 #line 1176 "parser.yy"
     6459  case 270:
     6460
     6461/* Line 1806 of yacc.c  */
     6462#line 1178 "parser.yy"
    64406463    {
    64416464                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64446467    break;
    64456468
    6446   case 269:
    6447 
    6448 /* Line 1806 of yacc.c  */
    6449 #line 1181 "parser.yy"
     6469  case 271:
     6470
     6471/* Line 1806 of yacc.c  */
     6472#line 1183 "parser.yy"
    64506473    {
    64516474                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    64546477    break;
    64556478
    6456   case 270:
    6457 
    6458 /* Line 1806 of yacc.c  */
    6459 #line 1192 "parser.yy"
     6479  case 272:
     6480
     6481/* Line 1806 of yacc.c  */
     6482#line 1194 "parser.yy"
    64606483    {
    64616484                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64646487    break;
    64656488
    6466   case 271:
    6467 
    6468 /* Line 1806 of yacc.c  */
    6469 #line 1197 "parser.yy"
     6489  case 273:
     6490
     6491/* Line 1806 of yacc.c  */
     6492#line 1199 "parser.yy"
    64706493    {
    64716494                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64746497    break;
    64756498
    6476   case 272:
    6477 
    6478 /* Line 1806 of yacc.c  */
    6479 #line 1202 "parser.yy"
     6499  case 274:
     6500
     6501/* Line 1806 of yacc.c  */
     6502#line 1204 "parser.yy"
    64806503    {
    64816504                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64846507    break;
    64856508
    6486   case 273:
    6487 
    6488 /* Line 1806 of yacc.c  */
    6489 #line 1207 "parser.yy"
     6509  case 275:
     6510
     6511/* Line 1806 of yacc.c  */
     6512#line 1209 "parser.yy"
    64906513    {
    64916514                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64946517    break;
    64956518
    6496   case 274:
    6497 
    6498 /* Line 1806 of yacc.c  */
    6499 #line 1212 "parser.yy"
     6519  case 276:
     6520
     6521/* Line 1806 of yacc.c  */
     6522#line 1214 "parser.yy"
    65006523    {
    65016524                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65046527    break;
    65056528
    6506   case 275:
    6507 
    6508 /* Line 1806 of yacc.c  */
    6509 #line 1221 "parser.yy"
     6529  case 277:
     6530
     6531/* Line 1806 of yacc.c  */
     6532#line 1223 "parser.yy"
    65106533    {
    65116534                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    65146537    break;
    65156538
    6516   case 276:
    6517 
    6518 /* Line 1806 of yacc.c  */
    6519 #line 1226 "parser.yy"
     6539  case 278:
     6540
     6541/* Line 1806 of yacc.c  */
     6542#line 1228 "parser.yy"
    65206543    {
    65216544                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    65246547    break;
    65256548
    6526   case 281:
    6527 
    6528 /* Line 1806 of yacc.c  */
    6529 #line 1243 "parser.yy"
     6549  case 283:
     6550
     6551/* Line 1806 of yacc.c  */
     6552#line 1245 "parser.yy"
    65306553    {
    65316554                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65346557    break;
    65356558
    6536   case 282:
    6537 
    6538 /* Line 1806 of yacc.c  */
    6539 #line 1248 "parser.yy"
     6559  case 284:
     6560
     6561/* Line 1806 of yacc.c  */
     6562#line 1250 "parser.yy"
    65406563    {
    65416564                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65446567    break;
    65456568
    6546   case 291:
    6547 
    6548 /* Line 1806 of yacc.c  */
    6549 #line 1270 "parser.yy"
     6569  case 293:
     6570
     6571/* Line 1806 of yacc.c  */
     6572#line 1272 "parser.yy"
    65506573    { (yyval.decl) = 0; }
    65516574    break;
    65526575
    6553   case 294:
    6554 
    6555 /* Line 1806 of yacc.c  */
    6556 #line 1282 "parser.yy"
     6576  case 296:
     6577
     6578/* Line 1806 of yacc.c  */
     6579#line 1284 "parser.yy"
    65576580    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65586581    break;
    65596582
    6560   case 297:
    6561 
    6562 /* Line 1806 of yacc.c  */
    6563 #line 1293 "parser.yy"
     6583  case 299:
     6584
     6585/* Line 1806 of yacc.c  */
     6586#line 1295 "parser.yy"
    65646587    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    65656588    break;
    65666589
    6567   case 298:
    6568 
    6569 /* Line 1806 of yacc.c  */
    6570 #line 1295 "parser.yy"
     6590  case 300:
     6591
     6592/* Line 1806 of yacc.c  */
     6593#line 1297 "parser.yy"
    65716594    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    65726595    break;
    65736596
    6574   case 299:
    6575 
    6576 /* Line 1806 of yacc.c  */
    6577 #line 1297 "parser.yy"
     6597  case 301:
     6598
     6599/* Line 1806 of yacc.c  */
     6600#line 1299 "parser.yy"
    65786601    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    65796602    break;
    65806603
    6581   case 300:
    6582 
    6583 /* Line 1806 of yacc.c  */
    6584 #line 1299 "parser.yy"
     6604  case 302:
     6605
     6606/* Line 1806 of yacc.c  */
     6607#line 1301 "parser.yy"
    65856608    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    65866609    break;
    65876610
    6588   case 301:
    6589 
    6590 /* Line 1806 of yacc.c  */
    6591 #line 1301 "parser.yy"
     6611  case 303:
     6612
     6613/* Line 1806 of yacc.c  */
     6614#line 1303 "parser.yy"
    65926615    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    65936616    break;
    65946617
    6595   case 302:
    6596 
    6597 /* Line 1806 of yacc.c  */
    6598 #line 1303 "parser.yy"
     6618  case 304:
     6619
     6620/* Line 1806 of yacc.c  */
     6621#line 1305 "parser.yy"
    65996622    {
    66006623                        typedefTable.enterScope();
     
    66026625    break;
    66036626
    6604   case 303:
    6605 
    6606 /* Line 1806 of yacc.c  */
    6607 #line 1307 "parser.yy"
     6627  case 305:
     6628
     6629/* Line 1806 of yacc.c  */
     6630#line 1309 "parser.yy"
    66086631    {
    66096632                        typedefTable.leaveScope();
     
    66126635    break;
    66136636
    6614   case 305:
    6615 
    6616 /* Line 1806 of yacc.c  */
    6617 #line 1316 "parser.yy"
     6637  case 307:
     6638
     6639/* Line 1806 of yacc.c  */
     6640#line 1318 "parser.yy"
    66186641    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66196642    break;
    66206643
    6621   case 306:
    6622 
    6623 /* Line 1806 of yacc.c  */
    6624 #line 1318 "parser.yy"
     6644  case 308:
     6645
     6646/* Line 1806 of yacc.c  */
     6647#line 1320 "parser.yy"
    66256648    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66266649    break;
    66276650
    6628   case 308:
    6629 
    6630 /* Line 1806 of yacc.c  */
    6631 #line 1329 "parser.yy"
     6651  case 310:
     6652
     6653/* Line 1806 of yacc.c  */
     6654#line 1331 "parser.yy"
    66326655    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66336656    break;
    66346657
    6635   case 310:
     6658  case 311:
     6659
     6660/* Line 1806 of yacc.c  */
     6661#line 1336 "parser.yy"
     6662    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     6663    break;
     6664
     6665  case 312:
    66366666
    66376667/* Line 1806 of yacc.c  */
    66386668#line 1338 "parser.yy"
    6639     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    6640     break;
    6641 
    6642   case 311:
     6669    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     6670    break;
     6671
     6672  case 313:
    66436673
    66446674/* Line 1806 of yacc.c  */
    66456675#line 1340 "parser.yy"
    6646     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    6647     break;
    6648 
    6649   case 312:
     6676    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     6677    break;
     6678
     6679  case 314:
    66506680
    66516681/* Line 1806 of yacc.c  */
    66526682#line 1342 "parser.yy"
    6653     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    6654     break;
    6655 
    6656   case 313:
    6657 
    6658 /* Line 1806 of yacc.c  */
    6659 #line 1344 "parser.yy"
    66606683    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    66616684    break;
    66626685
    6663   case 314:
    6664 
    6665 /* Line 1806 of yacc.c  */
    6666 #line 1346 "parser.yy"
    6667     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    6668     break;
    6669 
    66706686  case 315:
    66716687
    66726688/* Line 1806 of yacc.c  */
    6673 #line 1348 "parser.yy"
     6689#line 1345 "parser.yy"
     6690    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
     6691    break;
     6692
     6693  case 316:
     6694
     6695/* Line 1806 of yacc.c  */
     6696#line 1347 "parser.yy"
    66746697    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    66756698    break;
    66766699
    6677   case 316:
     6700  case 317:
    66786701
    66796702/* Line 1806 of yacc.c  */
    66806703#line 1350 "parser.yy"
    6681     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    6682     break;
    6683 
    6684   case 317:
     6704    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
     6705    break;
     6706
     6707  case 318:
    66856708
    66866709/* Line 1806 of yacc.c  */
     
    66896712    break;
    66906713
    6691   case 318:
     6714  case 319:
    66926715
    66936716/* Line 1806 of yacc.c  */
     
    66966719    break;
    66976720
    6698   case 319:
     6721  case 320:
    66996722
    67006723/* Line 1806 of yacc.c  */
     
    67036726    break;
    67046727
    6705   case 320:
     6728  case 321:
    67066729
    67076730/* Line 1806 of yacc.c  */
     
    67106733    break;
    67116734
    6712   case 321:
     6735  case 322:
    67136736
    67146737/* Line 1806 of yacc.c  */
     
    67176740    break;
    67186741
    6719   case 322:
     6742  case 323:
    67206743
    67216744/* Line 1806 of yacc.c  */
     
    67246747    break;
    67256748
    6726   case 323:
     6749  case 324:
    67276750
    67286751/* Line 1806 of yacc.c  */
     
    67316754    break;
    67326755
    6733   case 324:
     6756  case 325:
    67346757
    67356758/* Line 1806 of yacc.c  */
     
    67386761    break;
    67396762
    6740   case 325:
     6763  case 326:
    67416764
    67426765/* Line 1806 of yacc.c  */
     
    67456768    break;
    67466769
    6747   case 326:
     6770  case 327:
    67486771
    67496772/* Line 1806 of yacc.c  */
     
    67526775    break;
    67536776
    6754   case 327:
     6777  case 328:
    67556778
    67566779/* Line 1806 of yacc.c  */
     
    67596782    break;
    67606783
    6761   case 328:
     6784  case 329:
    67626785
    67636786/* Line 1806 of yacc.c  */
     
    67666789    break;
    67676790
    6768   case 329:
     6791  case 330:
    67696792
    67706793/* Line 1806 of yacc.c  */
     
    67736796    break;
    67746797
    6775   case 330:
     6798  case 331:
    67766799
    67776800/* Line 1806 of yacc.c  */
     
    67806803    break;
    67816804
    6782   case 332:
     6805  case 333:
    67836806
    67846807/* Line 1806 of yacc.c  */
     
    67876810    break;
    67886811
    6789   case 333:
     6812  case 334:
    67906813
    67916814/* Line 1806 of yacc.c  */
     
    67946817    break;
    67956818
    6796   case 334:
     6819  case 335:
    67976820
    67986821/* Line 1806 of yacc.c  */
     
    68016824    break;
    68026825
    6803   case 335:
     6826  case 336:
    68046827
    68056828/* Line 1806 of yacc.c  */
     
    68086831    break;
    68096832
    6810   case 337:
     6833  case 338:
    68116834
    68126835/* Line 1806 of yacc.c  */
     
    68156838    break;
    68166839
    6817   case 339:
     6840  case 340:
    68186841
    68196842/* Line 1806 of yacc.c  */
     
    68226845    break;
    68236846
    6824   case 340:
     6847  case 341:
    68256848
    68266849/* Line 1806 of yacc.c  */
     
    68296852    break;
    68306853
    6831   case 341:
     6854  case 342:
    68326855
    68336856/* Line 1806 of yacc.c  */
     
    68366859    break;
    68376860
    6838   case 342:
     6861  case 343:
    68396862
    68406863/* Line 1806 of yacc.c  */
     
    68436866    break;
    68446867
    6845   case 343:
     6868  case 344:
    68466869
    68476870/* Line 1806 of yacc.c  */
     
    68506873    break;
    68516874
    6852   case 344:
     6875  case 345:
    68536876
    68546877/* Line 1806 of yacc.c  */
     
    68576880    break;
    68586881
    6859   case 345:
     6882  case 346:
    68606883
    68616884/* Line 1806 of yacc.c  */
     
    68646887    break;
    68656888
    6866   case 347:
     6889  case 348:
    68676890
    68686891/* Line 1806 of yacc.c  */
     
    68716894    break;
    68726895
    6873   case 348:
     6896  case 349:
    68746897
    68756898/* Line 1806 of yacc.c  */
     
    68786901    break;
    68796902
    6880   case 349:
     6903  case 350:
    68816904
    68826905/* Line 1806 of yacc.c  */
     
    68856908    break;
    68866909
    6887   case 351:
     6910  case 352:
    68886911
    68896912/* Line 1806 of yacc.c  */
     
    68926915    break;
    68936916
    6894   case 352:
     6917  case 353:
    68956918
    68966919/* Line 1806 of yacc.c  */
     
    68996922    break;
    69006923
    6901   case 354:
     6924  case 355:
    69026925
    69036926/* Line 1806 of yacc.c  */
     
    69066929    break;
    69076930
    6908   case 355:
     6931  case 356:
    69096932
    69106933/* Line 1806 of yacc.c  */
     
    69136936    break;
    69146937
    6915   case 356:
     6938  case 357:
    69166939
    69176940/* Line 1806 of yacc.c  */
     
    69206943    break;
    69216944
    6922   case 357:
     6945  case 358:
    69236946
    69246947/* Line 1806 of yacc.c  */
     
    69276950    break;
    69286951
    6929   case 358:
     6952  case 359:
    69306953
    69316954/* Line 1806 of yacc.c  */
     
    69346957    break;
    69356958
    6936   case 359:
     6959  case 360:
    69376960
    69386961/* Line 1806 of yacc.c  */
     
    69416964    break;
    69426965
    6943   case 362:
     6966  case 363:
    69446967
    69456968/* Line 1806 of yacc.c  */
     
    69486971    break;
    69496972
    6950   case 363:
     6973  case 364:
    69516974
    69526975/* Line 1806 of yacc.c  */
     
    69586981    break;
    69596982
    6960   case 364:
     6983  case 365:
    69616984
    69626985/* Line 1806 of yacc.c  */
     
    69656988    break;
    69666989
    6967   case 365:
     6990  case 366:
    69686991
    69696992/* Line 1806 of yacc.c  */
     
    69726995    break;
    69736996
    6974   case 366:
     6997  case 367:
    69756998
    69766999/* Line 1806 of yacc.c  */
     
    69797002    break;
    69807003
    6981   case 367:
     7004  case 368:
    69827005
    69837006/* Line 1806 of yacc.c  */
     
    69867009    break;
    69877010
    6988   case 368:
     7011  case 369:
    69897012
    69907013/* Line 1806 of yacc.c  */
     
    69937016    break;
    69947017
    6995   case 369:
     7018  case 370:
    69967019
    69977020/* Line 1806 of yacc.c  */
     
    70007023    break;
    70017024
    7002   case 370:
     7025  case 371:
    70037026
    70047027/* Line 1806 of yacc.c  */
     
    70077030    break;
    70087031
    7009   case 371:
     7032  case 372:
    70107033
    70117034/* Line 1806 of yacc.c  */
     
    70147037    break;
    70157038
    7016   case 373:
     7039  case 374:
    70177040
    70187041/* Line 1806 of yacc.c  */
     
    70217044    break;
    70227045
    7023   case 375:
     7046  case 376:
    70247047
    70257048/* Line 1806 of yacc.c  */
    70267049#line 1505 "parser.yy"
    70277050    {   // mark all fields in list
    7028                         for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     7051                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    70297052                                iter->set_extension( true );
    70307053                        (yyval.decl) = (yyvsp[(2) - (3)].decl);
     
    70327055    break;
    70337056
    7034   case 377:
     7057  case 378:
    70357058
    70367059/* Line 1806 of yacc.c  */
     
    70397062    break;
    70407063
    7041   case 378:
     7064  case 379:
    70427065
    70437066/* Line 1806 of yacc.c  */
     
    70467069    break;
    70477070
    7048   case 379:
     7071  case 380:
    70497072
    70507073/* Line 1806 of yacc.c  */
     
    70537076    break;
    70547077
    7055   case 380:
     7078  case 381:
    70567079
    70577080/* Line 1806 of yacc.c  */
     
    70607083    break;
    70617084
    7062   case 381:
     7085  case 382:
    70637086
    70647087/* Line 1806 of yacc.c  */
     
    70677090    break;
    70687091
    7069   case 382:
     7092  case 383:
    70707093
    70717094/* Line 1806 of yacc.c  */
     
    70747097    break;
    70757098
    7076   case 383:
     7099  case 384:
    70777100
    70787101/* Line 1806 of yacc.c  */
     
    70817104    break;
    70827105
    7083   case 384:
     7106  case 385:
    70847107
    70857108/* Line 1806 of yacc.c  */
     
    70887111    break;
    70897112
    7090   case 385:
     7113  case 386:
    70917114
    70927115/* Line 1806 of yacc.c  */
     
    70957118    break;
    70967119
    7097   case 387:
     7120  case 388:
    70987121
    70997122/* Line 1806 of yacc.c  */
     
    71027125    break;
    71037126
    7104   case 388:
     7127  case 389:
    71057128
    71067129/* Line 1806 of yacc.c  */
     
    71097132    break;
    71107133
    7111   case 389:
     7134  case 390:
    71127135
    71137136/* Line 1806 of yacc.c  */
     
    71167139    break;
    71177140
    7118   case 391:
     7141  case 392:
    71197142
    71207143/* Line 1806 of yacc.c  */
     
    71237146    break;
    71247147
    7125   case 392:
     7148  case 393:
    71267149
    71277150/* Line 1806 of yacc.c  */
     
    71337156    break;
    71347157
    7135   case 393:
     7158  case 394:
    71367159
    71377160/* Line 1806 of yacc.c  */
     
    71407163    break;
    71417164
    7142   case 394:
     7165  case 395:
    71437166
    71447167/* Line 1806 of yacc.c  */
     
    71477170    break;
    71487171
    7149   case 395:
     7172  case 396:
    71507173
    71517174/* Line 1806 of yacc.c  */
     
    71547177    break;
    71557178
    7156   case 396:
     7179  case 397:
    71577180
    71587181/* Line 1806 of yacc.c  */
     
    71617184    break;
    71627185
    7163   case 397:
     7186  case 398:
    71647187
    71657188/* Line 1806 of yacc.c  */
     
    71687191    break;
    71697192
    7170   case 398:
     7193  case 399:
    71717194
    71727195/* Line 1806 of yacc.c  */
     
    71757198    break;
    71767199
    7177   case 399:
     7200  case 400:
    71787201
    71797202/* Line 1806 of yacc.c  */
     
    71827205    break;
    71837206
    7184   case 403:
     7207  case 404:
    71857208
    71867209/* Line 1806 of yacc.c  */
     
    71897212    break;
    71907213
    7191   case 404:
     7214  case 405:
    71927215
    71937216/* Line 1806 of yacc.c  */
     
    71967219    break;
    71977220
    7198   case 405:
     7221  case 406:
    71997222
    72007223/* Line 1806 of yacc.c  */
     
    72037226    break;
    72047227
    7205   case 407:
     7228  case 408:
    72067229
    72077230/* Line 1806 of yacc.c  */
     
    72107233    break;
    72117234
    7212   case 408:
     7235  case 409:
    72137236
    72147237/* Line 1806 of yacc.c  */
     
    72177240    break;
    72187241
    7219   case 409:
     7242  case 410:
    72207243
    72217244/* Line 1806 of yacc.c  */
     
    72247247    break;
    72257248
    7226   case 411:
     7249  case 412:
    72277250
    72287251/* Line 1806 of yacc.c  */
     
    72317254    break;
    72327255
    7233   case 412:
     7256  case 413:
    72347257
    72357258/* Line 1806 of yacc.c  */
     
    72387261    break;
    72397262
    7240   case 415:
     7263  case 416:
    72417264
    72427265/* Line 1806 of yacc.c  */
     
    72457268    break;
    72467269
    7247   case 418:
     7270  case 419:
    72487271
    72497272/* Line 1806 of yacc.c  */
     
    72527275    break;
    72537276
    7254   case 419:
     7277  case 420:
    72557278
    72567279/* Line 1806 of yacc.c  */
     
    72597282    break;
    72607283
    7261   case 421:
     7284  case 422:
    72627285
    72637286/* Line 1806 of yacc.c  */
     
    72667289    break;
    72677290
    7268   case 422:
     7291  case 423:
    72697292
    72707293/* Line 1806 of yacc.c  */
     
    72737296    break;
    72747297
    7275   case 423:
     7298  case 424:
    72767299
    72777300/* Line 1806 of yacc.c  */
     
    72807303    break;
    72817304
    7282   case 428:
     7305  case 429:
    72837306
    72847307/* Line 1806 of yacc.c  */
     
    72877310    break;
    72887311
    7289   case 430:
     7312  case 431:
    72907313
    72917314/* Line 1806 of yacc.c  */
     
    72977320    break;
    72987321
    7299   case 431:
     7322  case 432:
    73007323
    73017324/* Line 1806 of yacc.c  */
     
    73077330    break;
    73087331
    7309   case 433:
     7332  case 434:
    73107333
    73117334/* Line 1806 of yacc.c  */
     
    73147337    break;
    73157338
    7316   case 434:
     7339  case 435:
    73177340
    73187341/* Line 1806 of yacc.c  */
     
    73217344    break;
    73227345
    7323   case 435:
     7346  case 436:
    73247347
    73257348/* Line 1806 of yacc.c  */
     
    73287351    break;
    73297352
    7330   case 447:
     7353  case 448:
    73317354
    73327355/* Line 1806 of yacc.c  */
     
    73357358    break;
    73367359
    7337   case 451:
     7360  case 452:
    73387361
    73397362/* Line 1806 of yacc.c  */
     
    73427365    break;
    73437366
    7344   case 452:
     7367  case 453:
    73457368
    73467369/* Line 1806 of yacc.c  */
     
    73497372    break;
    73507373
    7351   case 453:
     7374  case 454:
    73527375
    73537376/* Line 1806 of yacc.c  */
     
    73567379    break;
    73577380
    7358   case 454:
     7381  case 455:
    73597382
    73607383/* Line 1806 of yacc.c  */
     
    73637386    break;
    73647387
    7365   case 455:
     7388  case 456:
    73667389
    73677390/* Line 1806 of yacc.c  */
     
    73707393    break;
    73717394
    7372   case 456:
     7395  case 457:
    73737396
    73747397/* Line 1806 of yacc.c  */
     
    73777400    break;
    73787401
    7379   case 457:
     7402  case 458:
    73807403
    73817404/* Line 1806 of yacc.c  */
     
    73847407    break;
    73857408
    7386   case 459:
     7409  case 460:
    73877410
    73887411/* Line 1806 of yacc.c  */
     
    73917414    break;
    73927415
    7393   case 460:
     7416  case 461:
    73947417
    73957418/* Line 1806 of yacc.c  */
    73967419#line 1752 "parser.yy"
    7397     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    7398     break;
    7399 
    7400   case 461:
     7420    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
     7421    break;
     7422
     7423  case 462:
    74017424
    74027425/* Line 1806 of yacc.c  */
    74037426#line 1754 "parser.yy"
    7404     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    7405     break;
    7406 
    7407   case 463:
     7427    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     7428    break;
     7429
     7430  case 464:
    74087431
    74097432/* Line 1806 of yacc.c  */
     
    74127435    break;
    74137436
    7414   case 465:
     7437  case 466:
    74157438
    74167439/* Line 1806 of yacc.c  */
    74177440#line 1776 "parser.yy"
    7418     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) ) ); }
    7419     break;
    7420 
    7421   case 466:
     7441    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
     7442    break;
     7443
     7444  case 467:
    74227445
    74237446/* Line 1806 of yacc.c  */
     
    74267449    break;
    74277450
    7428   case 467:
     7451  case 468:
    74297452
    74307453/* Line 1806 of yacc.c  */
     
    74337456    break;
    74347457
    7435   case 468:
     7458  case 469:
    74367459
    74377460/* Line 1806 of yacc.c  */
     
    74407463    break;
    74417464
    7442   case 469:
     7465  case 470:
    74437466
    74447467/* Line 1806 of yacc.c  */
     
    74477470    break;
    74487471
    7449   case 470:
     7472  case 471:
    74507473
    74517474/* Line 1806 of yacc.c  */
     
    74547477    break;
    74557478
    7456   case 472:
     7479  case 473:
    74577480
    74587481/* Line 1806 of yacc.c  */
     
    74617484    break;
    74627485
    7463   case 473:
     7486  case 474:
    74647487
    74657488/* Line 1806 of yacc.c  */
     
    74687491    break;
    74697492
    7470   case 474:
     7493  case 475:
    74717494
    74727495/* Line 1806 of yacc.c  */
     
    74757498    break;
    74767499
    7477   case 476:
     7500  case 477:
    74787501
    74797502/* Line 1806 of yacc.c  */
     
    74827505    break;
    74837506
    7484   case 477:
     7507  case 478:
    74857508
    74867509/* Line 1806 of yacc.c  */
     
    74897512    break;
    74907513
    7491   case 478:
     7514  case 479:
    74927515
    74937516/* Line 1806 of yacc.c  */
     
    74967519    break;
    74977520
    7498   case 480:
     7521  case 481:
    74997522
    75007523/* Line 1806 of yacc.c  */
     
    75037526    break;
    75047527
    7505   case 481:
     7528  case 482:
    75067529
    75077530/* Line 1806 of yacc.c  */
     
    75107533    break;
    75117534
    7512   case 482:
     7535  case 483:
    75137536
    75147537/* Line 1806 of yacc.c  */
     
    75177540    break;
    75187541
    7519   case 484:
     7542  case 485:
    75207543
    75217544/* Line 1806 of yacc.c  */
     
    75247547    break;
    75257548
    7526   case 485:
     7549  case 486:
    75277550
    75287551/* Line 1806 of yacc.c  */
     
    75317554    break;
    75327555
    7533   case 486:
     7556  case 487:
    75347557
    75357558/* Line 1806 of yacc.c  */
     
    75387561    break;
    75397562
    7540   case 487:
     7563  case 488:
    75417564
    75427565/* Line 1806 of yacc.c  */
     
    75457568    break;
    75467569
    7547   case 488:
     7570  case 489:
    75487571
    75497572/* Line 1806 of yacc.c  */
     
    75527575    break;
    75537576
    7554   case 489:
     7577  case 490:
    75557578
    75567579/* Line 1806 of yacc.c  */
     
    75627585    break;
    75637586
    7564   case 490:
     7587  case 491:
    75657588
    75667589/* Line 1806 of yacc.c  */
     
    75697592    break;
    75707593
    7571   case 491:
     7594  case 492:
    75727595
    75737596/* Line 1806 of yacc.c  */
     
    75767599    break;
    75777600
    7578   case 492:
     7601  case 493:
    75797602
    75807603/* Line 1806 of yacc.c  */
     
    75837606    break;
    75847607
    7585   case 494:
     7608  case 495:
    75867609
    75877610/* Line 1806 of yacc.c  */
    75887611#line 1882 "parser.yy"
    7589     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
    7590     break;
    7591 
    7592   case 495:
     7612    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
     7613    break;
     7614
     7615  case 496:
    75937616
    75947617/* Line 1806 of yacc.c  */
    75957618#line 1884 "parser.yy"
    7596     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    7597     break;
    7598 
    7599   case 496:
     7619    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     7620    break;
     7621
     7622  case 497:
    76007623
    76017624/* Line 1806 of yacc.c  */
     
    76047627    break;
    76057628
    7606   case 497:
     7629  case 498:
    76077630
    76087631/* Line 1806 of yacc.c  */
     
    76117634    break;
    76127635
    7613   case 498:
     7636  case 499:
    76147637
    76157638/* Line 1806 of yacc.c  */
     
    76187641    break;
    76197642
    7620   case 499:
     7643  case 500:
    76217644
    76227645/* Line 1806 of yacc.c  */
     
    76257648    break;
    76267649
    7627   case 500:
     7650  case 501:
    76287651
    76297652/* Line 1806 of yacc.c  */
     
    76327655    break;
    76337656
    7634   case 501:
     7657  case 502:
    76357658
    76367659/* Line 1806 of yacc.c  */
     
    76427665    break;
    76437666
    7644   case 502:
     7667  case 503:
    76457668
    76467669/* Line 1806 of yacc.c  */
     
    76527675    break;
    76537676
    7654   case 503:
     7677  case 504:
    76557678
    76567679/* Line 1806 of yacc.c  */
     
    76627685    break;
    76637686
    7664   case 504:
     7687  case 505:
    76657688
    76667689/* Line 1806 of yacc.c  */
     
    76727695    break;
    76737696
    7674   case 505:
     7697  case 506:
    76757698
    76767699/* Line 1806 of yacc.c  */
     
    76837706    break;
    76847707
    7685   case 507:
     7708  case 508:
    76867709
    76877710/* Line 1806 of yacc.c  */
     
    76907713    break;
    76917714
    7692   case 510:
     7715  case 511:
    76937716
    76947717/* Line 1806 of yacc.c  */
     
    77007723    break;
    77017724
    7702   case 511:
     7725  case 512:
    77037726
    77047727/* Line 1806 of yacc.c  */
     
    77107733    break;
    77117734
    7712   case 512:
     7735  case 513:
    77137736
    77147737/* Line 1806 of yacc.c  */
     
    77207743    break;
    77217744
    7722   case 513:
     7745  case 514:
    77237746
    77247747/* Line 1806 of yacc.c  */
     
    77307753    break;
    77317754
    7732   case 514:
     7755  case 515:
    77337756
    77347757/* Line 1806 of yacc.c  */
     
    77407763    break;
    77417764
    7742   case 515:
     7765  case 516:
    77437766
    77447767/* Line 1806 of yacc.c  */
     
    77477770    break;
    77487771
    7749   case 516:
     7772  case 517:
    77507773
    77517774/* Line 1806 of yacc.c  */
    77527775#line 1983 "parser.yy"
     7776    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);    }
     7777    break;
     7778
     7779  case 519:
     7780
     7781/* Line 1806 of yacc.c  */
     7782#line 1989 "parser.yy"
     7783    { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     7784    break;
     7785
     7786  case 520:
     7787
     7788/* Line 1806 of yacc.c  */
     7789#line 1994 "parser.yy"
     7790    { (yyval.decl) = 0; }
     7791    break;
     7792
     7793  case 524:
     7794
     7795/* Line 1806 of yacc.c  */
     7796#line 2002 "parser.yy"
     7797    {}
     7798    break;
     7799
     7800  case 525:
     7801
     7802/* Line 1806 of yacc.c  */
     7803#line 2004 "parser.yy"
    77537804    {
    7754                         if ( theTree ) {
    7755                                 theTree->appendList( (yyvsp[(1) - (1)].decl) );
    7756                         } else {
    7757                                 theTree = (yyvsp[(1) - (1)].decl);
    7758                         }
    7759                 }
    7760     break;
    7761 
    7762   case 518:
    7763 
    7764 /* Line 1806 of yacc.c  */
    7765 #line 1995 "parser.yy"
    7766     { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    7767     break;
    7768 
    7769   case 519:
    7770 
    7771 /* Line 1806 of yacc.c  */
    7772 #line 2000 "parser.yy"
    7773     { (yyval.decl) = 0; }
    7774     break;
    7775 
    7776   case 523:
    7777 
    7778 /* Line 1806 of yacc.c  */
    7779 #line 2008 "parser.yy"
    7780     {}
    7781     break;
    7782 
    7783   case 524:
    7784 
    7785 /* Line 1806 of yacc.c  */
    7786 #line 2010 "parser.yy"
    7787     {
    7788                         linkageStack.push( linkage );
     7805                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
    77897806                        linkage = LinkageSpec::fromString( *(yyvsp[(2) - (2)].tok) );
    77907807                }
    77917808    break;
    77927809
    7793   case 525:
    7794 
    7795 /* Line 1806 of yacc.c  */
    7796 #line 2015 "parser.yy"
     7810  case 526:
     7811
     7812/* Line 1806 of yacc.c  */
     7813#line 2009 "parser.yy"
    77977814    {
    77987815                        linkage = linkageStack.top();
     
    78027819    break;
    78037820
    7804   case 526:
    7805 
    7806 /* Line 1806 of yacc.c  */
    7807 #line 2021 "parser.yy"
     7821  case 527:
     7822
     7823/* Line 1806 of yacc.c  */
     7824#line 2015 "parser.yy"
    78087825    {   // mark all fields in list
    7809                         for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     7826                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    78107827                                iter->set_extension( true );
    78117828                        (yyval.decl) = (yyvsp[(2) - (2)].decl);
     
    78137830    break;
    78147831
    7815   case 528:
    7816 
    7817 /* Line 1806 of yacc.c  */
    7818 #line 2036 "parser.yy"
     7832  case 529:
     7833
     7834/* Line 1806 of yacc.c  */
     7835#line 2030 "parser.yy"
    78197836    {
    78207837                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78247841    break;
    78257842
    7826   case 529:
    7827 
    7828 /* Line 1806 of yacc.c  */
    7829 #line 2042 "parser.yy"
     7843  case 530:
     7844
     7845/* Line 1806 of yacc.c  */
     7846#line 2036 "parser.yy"
    78307847    {
    78317848                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78357852    break;
    78367853
    7837   case 530:
    7838 
    7839 /* Line 1806 of yacc.c  */
    7840 #line 2051 "parser.yy"
     7854  case 531:
     7855
     7856/* Line 1806 of yacc.c  */
     7857#line 2045 "parser.yy"
    78417858    {
    78427859                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78467863    break;
    78477864
    7848   case 531:
    7849 
    7850 /* Line 1806 of yacc.c  */
    7851 #line 2057 "parser.yy"
     7865  case 532:
     7866
     7867/* Line 1806 of yacc.c  */
     7868#line 2051 "parser.yy"
    78527869    {
    78537870                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78577874    break;
    78587875
    7859   case 532:
     7876  case 533:
     7877
     7878/* Line 1806 of yacc.c  */
     7879#line 2057 "parser.yy"
     7880    {
     7881                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     7882                        typedefTable.leaveScope();
     7883                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
     7884                }
     7885    break;
     7886
     7887  case 534:
    78607888
    78617889/* Line 1806 of yacc.c  */
     
    78687896    break;
    78697897
    7870   case 533:
     7898  case 535:
    78717899
    78727900/* Line 1806 of yacc.c  */
    78737901#line 2069 "parser.yy"
    7874     {
    7875                         typedefTable.addToEnclosingScope( TypedefTable::ID );
    7876                         typedefTable.leaveScope();
    7877                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
    7878                 }
    7879     break;
    7880 
    7881   case 534:
    7882 
    7883 /* Line 1806 of yacc.c  */
    7884 #line 2075 "parser.yy"
    78857902    {
    78867903                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78907907    break;
    78917908
    7892   case 535:
    7893 
    7894 /* Line 1806 of yacc.c  */
    7895 #line 2083 "parser.yy"
     7909  case 536:
     7910
     7911/* Line 1806 of yacc.c  */
     7912#line 2077 "parser.yy"
    78967913    {
    78977914                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79017918    break;
    79027919
    7903   case 536:
    7904 
    7905 /* Line 1806 of yacc.c  */
    7906 #line 2089 "parser.yy"
     7920  case 537:
     7921
     7922/* Line 1806 of yacc.c  */
     7923#line 2083 "parser.yy"
    79077924    {
    79087925                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79127929    break;
    79137930
    7914   case 537:
    7915 
    7916 /* Line 1806 of yacc.c  */
    7917 #line 2097 "parser.yy"
     7931  case 538:
     7932
     7933/* Line 1806 of yacc.c  */
     7934#line 2091 "parser.yy"
    79187935    {
    79197936                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79237940    break;
    79247941
    7925   case 538:
    7926 
    7927 /* Line 1806 of yacc.c  */
    7928 #line 2103 "parser.yy"
     7942  case 539:
     7943
     7944/* Line 1806 of yacc.c  */
     7945#line 2097 "parser.yy"
    79297946    {
    79307947                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79347951    break;
    79357952
    7936   case 542:
    7937 
    7938 /* Line 1806 of yacc.c  */
    7939 #line 2118 "parser.yy"
     7953  case 543:
     7954
     7955/* Line 1806 of yacc.c  */
     7956#line 2112 "parser.yy"
    79407957    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    79417958    break;
     
    79447961
    79457962/* Line 1806 of yacc.c  */
    7946 #line 2128 "parser.yy"
     7963#line 2117 "parser.yy"
     7964    { delete (yyvsp[(3) - (5)].str); }
     7965    break;
     7966
     7967  case 546:
     7968
     7969/* Line 1806 of yacc.c  */
     7970#line 2122 "parser.yy"
    79477971    { (yyval.decl) = 0; }
    79487972    break;
    79497973
    7950   case 548:
     7974  case 549:
     7975
     7976/* Line 1806 of yacc.c  */
     7977#line 2129 "parser.yy"
     7978    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7979    break;
     7980
     7981  case 550:
    79517982
    79527983/* Line 1806 of yacc.c  */
    79537984#line 2135 "parser.yy"
    7954     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7955     break;
    7956 
    7957   case 549:
    7958 
    7959 /* Line 1806 of yacc.c  */
    7960 #line 2141 "parser.yy"
    79617985    { (yyval.decl) = 0; }
    79627986    break;
     
    79657989
    79667990/* Line 1806 of yacc.c  */
    7967 #line 2156 "parser.yy"
    7968     {}
     7991#line 2146 "parser.yy"
     7992    { delete (yyvsp[(3) - (4)].en); }
    79697993    break;
    79707994
     
    79727996
    79737997/* Line 1806 of yacc.c  */
    7974 #line 2157 "parser.yy"
    7975     {}
     7998#line 2150 "parser.yy"
     7999    { delete (yyvsp[(1) - (1)].tok); }
    79768000    break;
    79778001
     
    79798003
    79808004/* Line 1806 of yacc.c  */
    7981 #line 2158 "parser.yy"
    7982     {}
     8005#line 2151 "parser.yy"
     8006    { delete (yyvsp[(1) - (1)].decl); }
    79838007    break;
    79848008
     
    79868010
    79878011/* Line 1806 of yacc.c  */
    7988 #line 2159 "parser.yy"
    7989     {}
     8012#line 2152 "parser.yy"
     8013    { delete (yyvsp[(1) - (1)].decl); }
    79908014    break;
    79918015
     
    79938017
    79948018/* Line 1806 of yacc.c  */
    7995 #line 2194 "parser.yy"
     8019#line 2153 "parser.yy"
     8020    { delete (yyvsp[(1) - (1)].decl); }
     8021    break;
     8022
     8023  case 560:
     8024
     8025/* Line 1806 of yacc.c  */
     8026#line 2188 "parser.yy"
    79968027    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79978028    break;
    79988029
    7999   case 561:
    8000 
    8001 /* Line 1806 of yacc.c  */
    8002 #line 2197 "parser.yy"
     8030  case 562:
     8031
     8032/* Line 1806 of yacc.c  */
     8033#line 2191 "parser.yy"
    80038034    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80048035    break;
    80058036
    8006   case 562:
    8007 
    8008 /* Line 1806 of yacc.c  */
    8009 #line 2199 "parser.yy"
     8037  case 563:
     8038
     8039/* Line 1806 of yacc.c  */
     8040#line 2193 "parser.yy"
    80108041    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80118042    break;
    80128043
    8013   case 563:
    8014 
    8015 /* Line 1806 of yacc.c  */
    8016 #line 2204 "parser.yy"
     8044  case 564:
     8045
     8046/* Line 1806 of yacc.c  */
     8047#line 2198 "parser.yy"
    80178048    {
    80188049                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    80218052    break;
    80228053
    8023   case 564:
    8024 
    8025 /* Line 1806 of yacc.c  */
    8026 #line 2209 "parser.yy"
     8054  case 565:
     8055
     8056/* Line 1806 of yacc.c  */
     8057#line 2203 "parser.yy"
    80278058    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80288059    break;
    80298060
    8030   case 565:
    8031 
    8032 /* Line 1806 of yacc.c  */
    8033 #line 2214 "parser.yy"
     8061  case 566:
     8062
     8063/* Line 1806 of yacc.c  */
     8064#line 2208 "parser.yy"
    80348065    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80358066    break;
    80368067
    8037   case 566:
    8038 
    8039 /* Line 1806 of yacc.c  */
    8040 #line 2216 "parser.yy"
     8068  case 567:
     8069
     8070/* Line 1806 of yacc.c  */
     8071#line 2210 "parser.yy"
    80418072    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80428073    break;
    80438074
    8044   case 567:
    8045 
    8046 /* Line 1806 of yacc.c  */
    8047 #line 2218 "parser.yy"
     8075  case 568:
     8076
     8077/* Line 1806 of yacc.c  */
     8078#line 2212 "parser.yy"
    80488079    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80498080    break;
    80508081
    8051   case 568:
     8082  case 569:
     8083
     8084/* Line 1806 of yacc.c  */
     8085#line 2217 "parser.yy"
     8086    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8087    break;
     8088
     8089  case 570:
     8090
     8091/* Line 1806 of yacc.c  */
     8092#line 2219 "parser.yy"
     8093    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8094    break;
     8095
     8096  case 571:
     8097
     8098/* Line 1806 of yacc.c  */
     8099#line 2221 "parser.yy"
     8100    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8101    break;
     8102
     8103  case 572:
    80528104
    80538105/* Line 1806 of yacc.c  */
    80548106#line 2223 "parser.yy"
     8107    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8108    break;
     8109
     8110  case 573:
     8111
     8112/* Line 1806 of yacc.c  */
     8113#line 2228 "parser.yy"
     8114    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8115    break;
     8116
     8117  case 574:
     8118
     8119/* Line 1806 of yacc.c  */
     8120#line 2230 "parser.yy"
     8121    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8122    break;
     8123
     8124  case 575:
     8125
     8126/* Line 1806 of yacc.c  */
     8127#line 2239 "parser.yy"
     8128    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8129    break;
     8130
     8131  case 577:
     8132
     8133/* Line 1806 of yacc.c  */
     8134#line 2242 "parser.yy"
     8135    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8136    break;
     8137
     8138  case 578:
     8139
     8140/* Line 1806 of yacc.c  */
     8141#line 2247 "parser.yy"
     8142    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8143    break;
     8144
     8145  case 579:
     8146
     8147/* Line 1806 of yacc.c  */
     8148#line 2249 "parser.yy"
     8149    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8150    break;
     8151
     8152  case 580:
     8153
     8154/* Line 1806 of yacc.c  */
     8155#line 2251 "parser.yy"
     8156    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8157    break;
     8158
     8159  case 581:
     8160
     8161/* Line 1806 of yacc.c  */
     8162#line 2256 "parser.yy"
     8163    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8164    break;
     8165
     8166  case 582:
     8167
     8168/* Line 1806 of yacc.c  */
     8169#line 2258 "parser.yy"
     8170    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8171    break;
     8172
     8173  case 583:
     8174
     8175/* Line 1806 of yacc.c  */
     8176#line 2260 "parser.yy"
     8177    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8178    break;
     8179
     8180  case 584:
     8181
     8182/* Line 1806 of yacc.c  */
     8183#line 2265 "parser.yy"
     8184    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8185    break;
     8186
     8187  case 585:
     8188
     8189/* Line 1806 of yacc.c  */
     8190#line 2267 "parser.yy"
     8191    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8192    break;
     8193
     8194  case 586:
     8195
     8196/* Line 1806 of yacc.c  */
     8197#line 2269 "parser.yy"
     8198    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8199    break;
     8200
     8201  case 590:
     8202
     8203/* Line 1806 of yacc.c  */
     8204#line 2284 "parser.yy"
     8205    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     8206    break;
     8207
     8208  case 591:
     8209
     8210/* Line 1806 of yacc.c  */
     8211#line 2286 "parser.yy"
     8212    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     8213    break;
     8214
     8215  case 592:
     8216
     8217/* Line 1806 of yacc.c  */
     8218#line 2288 "parser.yy"
     8219    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8220    break;
     8221
     8222  case 593:
     8223
     8224/* Line 1806 of yacc.c  */
     8225#line 2293 "parser.yy"
     8226    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8227    break;
     8228
     8229  case 594:
     8230
     8231/* Line 1806 of yacc.c  */
     8232#line 2295 "parser.yy"
     8233    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8234    break;
     8235
     8236  case 595:
     8237
     8238/* Line 1806 of yacc.c  */
     8239#line 2297 "parser.yy"
     8240    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8241    break;
     8242
     8243  case 596:
     8244
     8245/* Line 1806 of yacc.c  */
     8246#line 2302 "parser.yy"
     8247    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8248    break;
     8249
     8250  case 597:
     8251
     8252/* Line 1806 of yacc.c  */
     8253#line 2304 "parser.yy"
     8254    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8255    break;
     8256
     8257  case 598:
     8258
     8259/* Line 1806 of yacc.c  */
     8260#line 2306 "parser.yy"
     8261    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8262    break;
     8263
     8264  case 599:
     8265
     8266/* Line 1806 of yacc.c  */
     8267#line 2321 "parser.yy"
     8268    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8269    break;
     8270
     8271  case 601:
     8272
     8273/* Line 1806 of yacc.c  */
     8274#line 2324 "parser.yy"
     8275    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8276    break;
     8277
     8278  case 602:
     8279
     8280/* Line 1806 of yacc.c  */
     8281#line 2326 "parser.yy"
     8282    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8283    break;
     8284
     8285  case 604:
     8286
     8287/* Line 1806 of yacc.c  */
     8288#line 2332 "parser.yy"
     8289    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8290    break;
     8291
     8292  case 605:
     8293
     8294/* Line 1806 of yacc.c  */
     8295#line 2337 "parser.yy"
     8296    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8297    break;
     8298
     8299  case 606:
     8300
     8301/* Line 1806 of yacc.c  */
     8302#line 2339 "parser.yy"
     8303    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8304    break;
     8305
     8306  case 607:
     8307
     8308/* Line 1806 of yacc.c  */
     8309#line 2341 "parser.yy"
     8310    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8311    break;
     8312
     8313  case 608:
     8314
     8315/* Line 1806 of yacc.c  */
     8316#line 2346 "parser.yy"
    80558317    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    80568318    break;
    80578319
    8058   case 569:
    8059 
    8060 /* Line 1806 of yacc.c  */
    8061 #line 2225 "parser.yy"
     8320  case 609:
     8321
     8322/* Line 1806 of yacc.c  */
     8323#line 2348 "parser.yy"
    80628324    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80638325    break;
    80648326
    8065   case 570:
    8066 
    8067 /* Line 1806 of yacc.c  */
    8068 #line 2227 "parser.yy"
     8327  case 610:
     8328
     8329/* Line 1806 of yacc.c  */
     8330#line 2350 "parser.yy"
    80698331    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80708332    break;
    80718333
    8072   case 571:
    8073 
    8074 /* Line 1806 of yacc.c  */
    8075 #line 2229 "parser.yy"
     8334  case 611:
     8335
     8336/* Line 1806 of yacc.c  */
     8337#line 2352 "parser.yy"
    80768338    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80778339    break;
    80788340
    8079   case 572:
    8080 
    8081 /* Line 1806 of yacc.c  */
    8082 #line 2234 "parser.yy"
     8341  case 612:
     8342
     8343/* Line 1806 of yacc.c  */
     8344#line 2357 "parser.yy"
     8345    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8346    break;
     8347
     8348  case 613:
     8349
     8350/* Line 1806 of yacc.c  */
     8351#line 2359 "parser.yy"
    80838352    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    80848353    break;
    80858354
    8086   case 573:
    8087 
    8088 /* Line 1806 of yacc.c  */
    8089 #line 2236 "parser.yy"
     8355  case 614:
     8356
     8357/* Line 1806 of yacc.c  */
     8358#line 2361 "parser.yy"
    80908359    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80918360    break;
    80928361
    8093   case 574:
    8094 
    8095 /* Line 1806 of yacc.c  */
    8096 #line 2245 "parser.yy"
     8362  case 615:
     8363
     8364/* Line 1806 of yacc.c  */
     8365#line 2371 "parser.yy"
    80978366    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80988367    break;
    80998368
    8100   case 576:
    8101 
    8102 /* Line 1806 of yacc.c  */
    8103 #line 2248 "parser.yy"
     8369  case 617:
     8370
     8371/* Line 1806 of yacc.c  */
     8372#line 2374 "parser.yy"
    81048373    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81058374    break;
    81068375
    8107   case 577:
    8108 
    8109 /* Line 1806 of yacc.c  */
    8110 #line 2253 "parser.yy"
     8376  case 618:
     8377
     8378/* Line 1806 of yacc.c  */
     8379#line 2376 "parser.yy"
     8380    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8381    break;
     8382
     8383  case 619:
     8384
     8385/* Line 1806 of yacc.c  */
     8386#line 2381 "parser.yy"
     8387    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8388    break;
     8389
     8390  case 620:
     8391
     8392/* Line 1806 of yacc.c  */
     8393#line 2383 "parser.yy"
     8394    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8395    break;
     8396
     8397  case 621:
     8398
     8399/* Line 1806 of yacc.c  */
     8400#line 2385 "parser.yy"
     8401    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8402    break;
     8403
     8404  case 622:
     8405
     8406/* Line 1806 of yacc.c  */
     8407#line 2390 "parser.yy"
     8408    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8409    break;
     8410
     8411  case 623:
     8412
     8413/* Line 1806 of yacc.c  */
     8414#line 2392 "parser.yy"
     8415    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8416    break;
     8417
     8418  case 624:
     8419
     8420/* Line 1806 of yacc.c  */
     8421#line 2394 "parser.yy"
     8422    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8423    break;
     8424
     8425  case 625:
     8426
     8427/* Line 1806 of yacc.c  */
     8428#line 2396 "parser.yy"
     8429    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8430    break;
     8431
     8432  case 626:
     8433
     8434/* Line 1806 of yacc.c  */
     8435#line 2401 "parser.yy"
    81118436    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    81128437    break;
    81138438
    8114   case 578:
    8115 
    8116 /* Line 1806 of yacc.c  */
    8117 #line 2255 "parser.yy"
     8439  case 627:
     8440
     8441/* Line 1806 of yacc.c  */
     8442#line 2403 "parser.yy"
    81188443    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81198444    break;
    81208445
    8121   case 579:
    8122 
    8123 /* Line 1806 of yacc.c  */
    8124 #line 2257 "parser.yy"
     8446  case 628:
     8447
     8448/* Line 1806 of yacc.c  */
     8449#line 2405 "parser.yy"
    81258450    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81268451    break;
    81278452
    8128   case 580:
    8129 
    8130 /* Line 1806 of yacc.c  */
    8131 #line 2262 "parser.yy"
    8132     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8133     break;
    8134 
    8135   case 581:
    8136 
    8137 /* Line 1806 of yacc.c  */
    8138 #line 2264 "parser.yy"
    8139     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8140     break;
    8141 
    8142   case 582:
    8143 
    8144 /* Line 1806 of yacc.c  */
    8145 #line 2266 "parser.yy"
    8146     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8147     break;
    8148 
    8149   case 583:
    8150 
    8151 /* Line 1806 of yacc.c  */
    8152 #line 2271 "parser.yy"
    8153     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8154     break;
    8155 
    8156   case 584:
    8157 
    8158 /* Line 1806 of yacc.c  */
    8159 #line 2273 "parser.yy"
    8160     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8161     break;
    8162 
    8163   case 585:
    8164 
    8165 /* Line 1806 of yacc.c  */
    8166 #line 2275 "parser.yy"
    8167     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8168     break;
    8169 
    8170   case 589:
    8171 
    8172 /* Line 1806 of yacc.c  */
    8173 #line 2290 "parser.yy"
    8174     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    8175     break;
    8176 
    8177   case 590:
    8178 
    8179 /* Line 1806 of yacc.c  */
    8180 #line 2292 "parser.yy"
    8181     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    8182     break;
    8183 
    8184   case 591:
    8185 
    8186 /* Line 1806 of yacc.c  */
    8187 #line 2294 "parser.yy"
    8188     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8189     break;
    8190 
    8191   case 592:
    8192 
    8193 /* Line 1806 of yacc.c  */
    8194 #line 2299 "parser.yy"
    8195     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8196     break;
    8197 
    8198   case 593:
    8199 
    8200 /* Line 1806 of yacc.c  */
    8201 #line 2301 "parser.yy"
    8202     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8203     break;
    8204 
    8205   case 594:
    8206 
    8207 /* Line 1806 of yacc.c  */
    8208 #line 2303 "parser.yy"
    8209     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8210     break;
    8211 
    8212   case 595:
    8213 
    8214 /* Line 1806 of yacc.c  */
    8215 #line 2308 "parser.yy"
    8216     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8217     break;
    8218 
    8219   case 596:
    8220 
    8221 /* Line 1806 of yacc.c  */
    8222 #line 2310 "parser.yy"
    8223     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8224     break;
    8225 
    8226   case 597:
    8227 
    8228 /* Line 1806 of yacc.c  */
    8229 #line 2312 "parser.yy"
    8230     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8231     break;
    8232 
    8233   case 598:
    8234 
    8235 /* Line 1806 of yacc.c  */
    8236 #line 2327 "parser.yy"
     8453  case 629:
     8454
     8455/* Line 1806 of yacc.c  */
     8456#line 2436 "parser.yy"
    82378457    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82388458    break;
    82398459
    8240   case 600:
    8241 
    8242 /* Line 1806 of yacc.c  */
    8243 #line 2330 "parser.yy"
     8460  case 631:
     8461
     8462/* Line 1806 of yacc.c  */
     8463#line 2439 "parser.yy"
    82448464    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82458465    break;
    82468466
    8247   case 601:
    8248 
    8249 /* Line 1806 of yacc.c  */
    8250 #line 2332 "parser.yy"
     8467  case 632:
     8468
     8469/* Line 1806 of yacc.c  */
     8470#line 2441 "parser.yy"
    82518471    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82528472    break;
    82538473
    8254   case 603:
    8255 
    8256 /* Line 1806 of yacc.c  */
    8257 #line 2338 "parser.yy"
    8258     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8259     break;
    8260 
    8261   case 604:
    8262 
    8263 /* Line 1806 of yacc.c  */
    8264 #line 2343 "parser.yy"
    8265     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8266     break;
    8267 
    8268   case 605:
    8269 
    8270 /* Line 1806 of yacc.c  */
    8271 #line 2345 "parser.yy"
    8272     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8273     break;
    8274 
    8275   case 606:
    8276 
    8277 /* Line 1806 of yacc.c  */
    8278 #line 2347 "parser.yy"
    8279     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8280     break;
    8281 
    8282   case 607:
    8283 
    8284 /* Line 1806 of yacc.c  */
    8285 #line 2352 "parser.yy"
    8286     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8287     break;
    8288 
    8289   case 608:
    8290 
    8291 /* Line 1806 of yacc.c  */
    8292 #line 2354 "parser.yy"
    8293     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8294     break;
    8295 
    8296   case 609:
    8297 
    8298 /* Line 1806 of yacc.c  */
    8299 #line 2356 "parser.yy"
    8300     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8301     break;
    8302 
    8303   case 610:
    8304 
    8305 /* Line 1806 of yacc.c  */
    8306 #line 2358 "parser.yy"
    8307     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8308     break;
    8309 
    8310   case 611:
    8311 
    8312 /* Line 1806 of yacc.c  */
    8313 #line 2363 "parser.yy"
    8314     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8315     break;
    8316 
    8317   case 612:
    8318 
    8319 /* Line 1806 of yacc.c  */
    8320 #line 2365 "parser.yy"
    8321     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8322     break;
    8323 
    8324   case 613:
    8325 
    8326 /* Line 1806 of yacc.c  */
    8327 #line 2367 "parser.yy"
    8328     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8329     break;
    8330 
    8331   case 614:
    8332 
    8333 /* Line 1806 of yacc.c  */
    8334 #line 2377 "parser.yy"
    8335     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8336     break;
    8337 
    8338   case 616:
    8339 
    8340 /* Line 1806 of yacc.c  */
    8341 #line 2380 "parser.yy"
    8342     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8343     break;
    8344 
    8345   case 617:
    8346 
    8347 /* Line 1806 of yacc.c  */
    8348 #line 2382 "parser.yy"
    8349     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8350     break;
    8351 
    8352   case 618:
    8353 
    8354 /* Line 1806 of yacc.c  */
    8355 #line 2387 "parser.yy"
    8356     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8357     break;
    8358 
    8359   case 619:
    8360 
    8361 /* Line 1806 of yacc.c  */
    8362 #line 2389 "parser.yy"
    8363     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8364     break;
    8365 
    8366   case 620:
    8367 
    8368 /* Line 1806 of yacc.c  */
    8369 #line 2391 "parser.yy"
    8370     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8371     break;
    8372 
    8373   case 621:
    8374 
    8375 /* Line 1806 of yacc.c  */
    8376 #line 2396 "parser.yy"
    8377     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8378     break;
    8379 
    8380   case 622:
    8381 
    8382 /* Line 1806 of yacc.c  */
    8383 #line 2398 "parser.yy"
    8384     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8385     break;
    8386 
    8387   case 623:
    8388 
    8389 /* Line 1806 of yacc.c  */
    8390 #line 2400 "parser.yy"
    8391     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8392     break;
    8393 
    8394   case 624:
    8395 
    8396 /* Line 1806 of yacc.c  */
    8397 #line 2402 "parser.yy"
    8398     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8399     break;
    8400 
    8401   case 625:
    8402 
    8403 /* Line 1806 of yacc.c  */
    8404 #line 2407 "parser.yy"
    8405     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8406     break;
    8407 
    8408   case 626:
    8409 
    8410 /* Line 1806 of yacc.c  */
    8411 #line 2409 "parser.yy"
    8412     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8413     break;
    8414 
    8415   case 627:
    8416 
    8417 /* Line 1806 of yacc.c  */
    8418 #line 2411 "parser.yy"
    8419     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8420     break;
    8421 
    8422   case 628:
    8423 
    8424 /* Line 1806 of yacc.c  */
    8425 #line 2442 "parser.yy"
    8426     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8427     break;
    8428 
    8429   case 630:
    8430 
    8431 /* Line 1806 of yacc.c  */
    8432 #line 2445 "parser.yy"
    8433     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8434     break;
    8435 
    8436   case 631:
    8437 
    8438 /* Line 1806 of yacc.c  */
    8439 #line 2447 "parser.yy"
    8440     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8441     break;
    8442 
    8443   case 632:
    8444 
    8445 /* Line 1806 of yacc.c  */
    8446 #line 2452 "parser.yy"
     8474  case 633:
     8475
     8476/* Line 1806 of yacc.c  */
     8477#line 2446 "parser.yy"
    84478478    {
    84488479                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84518482    break;
    84528483
    8453   case 633:
    8454 
    8455 /* Line 1806 of yacc.c  */
    8456 #line 2457 "parser.yy"
     8484  case 634:
     8485
     8486/* Line 1806 of yacc.c  */
     8487#line 2451 "parser.yy"
    84578488    {
    84588489                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84618492    break;
    84628493
    8463   case 634:
    8464 
    8465 /* Line 1806 of yacc.c  */
    8466 #line 2465 "parser.yy"
     8494  case 635:
     8495
     8496/* Line 1806 of yacc.c  */
     8497#line 2459 "parser.yy"
    84678498    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84688499    break;
    84698500
    8470   case 635:
    8471 
    8472 /* Line 1806 of yacc.c  */
    8473 #line 2467 "parser.yy"
     8501  case 636:
     8502
     8503/* Line 1806 of yacc.c  */
     8504#line 2461 "parser.yy"
    84748505    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84758506    break;
    84768507
    8477   case 636:
    8478 
    8479 /* Line 1806 of yacc.c  */
    8480 #line 2469 "parser.yy"
     8508  case 637:
     8509
     8510/* Line 1806 of yacc.c  */
     8511#line 2463 "parser.yy"
    84818512    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84828513    break;
    84838514
    8484   case 637:
    8485 
    8486 /* Line 1806 of yacc.c  */
    8487 #line 2474 "parser.yy"
     8515  case 638:
     8516
     8517/* Line 1806 of yacc.c  */
     8518#line 2468 "parser.yy"
    84888519    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84898520    break;
    84908521
    8491   case 638:
    8492 
    8493 /* Line 1806 of yacc.c  */
    8494 #line 2476 "parser.yy"
     8522  case 639:
     8523
     8524/* Line 1806 of yacc.c  */
     8525#line 2470 "parser.yy"
    84958526    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84968527    break;
    84978528
    8498   case 639:
    8499 
    8500 /* Line 1806 of yacc.c  */
    8501 #line 2481 "parser.yy"
     8529  case 640:
     8530
     8531/* Line 1806 of yacc.c  */
     8532#line 2475 "parser.yy"
    85028533    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    85038534    break;
    85048535
    8505   case 640:
    8506 
    8507 /* Line 1806 of yacc.c  */
    8508 #line 2483 "parser.yy"
     8536  case 641:
     8537
     8538/* Line 1806 of yacc.c  */
     8539#line 2477 "parser.yy"
    85098540    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85108541    break;
    85118542
    8512   case 642:
    8513 
    8514 /* Line 1806 of yacc.c  */
    8515 #line 2498 "parser.yy"
     8543  case 643:
     8544
     8545/* Line 1806 of yacc.c  */
     8546#line 2492 "parser.yy"
    85168547    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85178548    break;
    85188549
    8519   case 643:
    8520 
    8521 /* Line 1806 of yacc.c  */
    8522 #line 2500 "parser.yy"
     8550  case 644:
     8551
     8552/* Line 1806 of yacc.c  */
     8553#line 2494 "parser.yy"
    85238554    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85248555    break;
    85258556
    8526   case 644:
     8557  case 645:
     8558
     8559/* Line 1806 of yacc.c  */
     8560#line 2499 "parser.yy"
     8561    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8562    break;
     8563
     8564  case 646:
     8565
     8566/* Line 1806 of yacc.c  */
     8567#line 2501 "parser.yy"
     8568    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8569    break;
     8570
     8571  case 647:
     8572
     8573/* Line 1806 of yacc.c  */
     8574#line 2503 "parser.yy"
     8575    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8576    break;
     8577
     8578  case 648:
    85278579
    85288580/* Line 1806 of yacc.c  */
    85298581#line 2505 "parser.yy"
     8582    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8583    break;
     8584
     8585  case 649:
     8586
     8587/* Line 1806 of yacc.c  */
     8588#line 2507 "parser.yy"
     8589    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8590    break;
     8591
     8592  case 651:
     8593
     8594/* Line 1806 of yacc.c  */
     8595#line 2513 "parser.yy"
     8596    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8597    break;
     8598
     8599  case 652:
     8600
     8601/* Line 1806 of yacc.c  */
     8602#line 2515 "parser.yy"
     8603    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8604    break;
     8605
     8606  case 653:
     8607
     8608/* Line 1806 of yacc.c  */
     8609#line 2517 "parser.yy"
     8610    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8611    break;
     8612
     8613  case 654:
     8614
     8615/* Line 1806 of yacc.c  */
     8616#line 2522 "parser.yy"
     8617    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8618    break;
     8619
     8620  case 655:
     8621
     8622/* Line 1806 of yacc.c  */
     8623#line 2524 "parser.yy"
     8624    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8625    break;
     8626
     8627  case 656:
     8628
     8629/* Line 1806 of yacc.c  */
     8630#line 2526 "parser.yy"
     8631    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8632    break;
     8633
     8634  case 657:
     8635
     8636/* Line 1806 of yacc.c  */
     8637#line 2532 "parser.yy"
     8638    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8639    break;
     8640
     8641  case 658:
     8642
     8643/* Line 1806 of yacc.c  */
     8644#line 2534 "parser.yy"
     8645    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     8646    break;
     8647
     8648  case 660:
     8649
     8650/* Line 1806 of yacc.c  */
     8651#line 2540 "parser.yy"
     8652    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     8653    break;
     8654
     8655  case 661:
     8656
     8657/* Line 1806 of yacc.c  */
     8658#line 2542 "parser.yy"
     8659    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     8660    break;
     8661
     8662  case 662:
     8663
     8664/* Line 1806 of yacc.c  */
     8665#line 2544 "parser.yy"
     8666    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     8667    break;
     8668
     8669  case 663:
     8670
     8671/* Line 1806 of yacc.c  */
     8672#line 2546 "parser.yy"
     8673    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     8674    break;
     8675
     8676  case 665:
     8677
     8678/* Line 1806 of yacc.c  */
     8679#line 2561 "parser.yy"
     8680    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8681    break;
     8682
     8683  case 666:
     8684
     8685/* Line 1806 of yacc.c  */
     8686#line 2563 "parser.yy"
     8687    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8688    break;
     8689
     8690  case 667:
     8691
     8692/* Line 1806 of yacc.c  */
     8693#line 2568 "parser.yy"
    85308694    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85318695    break;
    85328696
    8533   case 645:
    8534 
    8535 /* Line 1806 of yacc.c  */
    8536 #line 2507 "parser.yy"
     8697  case 668:
     8698
     8699/* Line 1806 of yacc.c  */
     8700#line 2570 "parser.yy"
    85378701    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85388702    break;
    85398703
    8540   case 646:
    8541 
    8542 /* Line 1806 of yacc.c  */
    8543 #line 2509 "parser.yy"
     8704  case 669:
     8705
     8706/* Line 1806 of yacc.c  */
     8707#line 2572 "parser.yy"
    85448708    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85458709    break;
    85468710
    8547   case 647:
    8548 
    8549 /* Line 1806 of yacc.c  */
    8550 #line 2511 "parser.yy"
     8711  case 670:
     8712
     8713/* Line 1806 of yacc.c  */
     8714#line 2574 "parser.yy"
    85518715    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85528716    break;
    85538717
    8554   case 648:
    8555 
    8556 /* Line 1806 of yacc.c  */
    8557 #line 2513 "parser.yy"
     8718  case 671:
     8719
     8720/* Line 1806 of yacc.c  */
     8721#line 2576 "parser.yy"
    85588722    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85598723    break;
    85608724
    8561   case 650:
    8562 
    8563 /* Line 1806 of yacc.c  */
    8564 #line 2519 "parser.yy"
     8725  case 673:
     8726
     8727/* Line 1806 of yacc.c  */
     8728#line 2582 "parser.yy"
    85658729    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85668730    break;
    85678731
    8568   case 651:
    8569 
    8570 /* Line 1806 of yacc.c  */
    8571 #line 2521 "parser.yy"
     8732  case 674:
     8733
     8734/* Line 1806 of yacc.c  */
     8735#line 2584 "parser.yy"
    85728736    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85738737    break;
    85748738
    8575   case 652:
    8576 
    8577 /* Line 1806 of yacc.c  */
    8578 #line 2523 "parser.yy"
     8739  case 675:
     8740
     8741/* Line 1806 of yacc.c  */
     8742#line 2586 "parser.yy"
    85798743    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85808744    break;
    85818745
    8582   case 653:
    8583 
    8584 /* Line 1806 of yacc.c  */
    8585 #line 2528 "parser.yy"
     8746  case 676:
     8747
     8748/* Line 1806 of yacc.c  */
     8749#line 2591 "parser.yy"
    85868750    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    85878751    break;
    85888752
    8589   case 654:
    8590 
    8591 /* Line 1806 of yacc.c  */
    8592 #line 2530 "parser.yy"
     8753  case 677:
     8754
     8755/* Line 1806 of yacc.c  */
     8756#line 2593 "parser.yy"
    85938757    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85948758    break;
    85958759
    8596   case 655:
    8597 
    8598 /* Line 1806 of yacc.c  */
    8599 #line 2532 "parser.yy"
     8760  case 678:
     8761
     8762/* Line 1806 of yacc.c  */
     8763#line 2595 "parser.yy"
    86008764    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86018765    break;
    86028766
    8603   case 656:
    8604 
    8605 /* Line 1806 of yacc.c  */
    8606 #line 2538 "parser.yy"
     8767  case 680:
     8768
     8769/* Line 1806 of yacc.c  */
     8770#line 2602 "parser.yy"
     8771    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8772    break;
     8773
     8774  case 682:
     8775
     8776/* Line 1806 of yacc.c  */
     8777#line 2613 "parser.yy"
    86078778    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86088779    break;
    86098780
    8610   case 657:
    8611 
    8612 /* Line 1806 of yacc.c  */
    8613 #line 2540 "parser.yy"
    8614     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    8615     break;
    8616 
    8617   case 659:
    8618 
    8619 /* Line 1806 of yacc.c  */
    8620 #line 2546 "parser.yy"
    8621     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    8622     break;
    8623 
    8624   case 660:
    8625 
    8626 /* Line 1806 of yacc.c  */
    8627 #line 2548 "parser.yy"
    8628     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    8629     break;
    8630 
    8631   case 661:
    8632 
    8633 /* Line 1806 of yacc.c  */
    8634 #line 2550 "parser.yy"
    8635     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    8636     break;
    8637 
    8638   case 662:
    8639 
    8640 /* Line 1806 of yacc.c  */
    8641 #line 2552 "parser.yy"
    8642     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    8643     break;
    8644 
    8645   case 664:
    8646 
    8647 /* Line 1806 of yacc.c  */
    8648 #line 2567 "parser.yy"
     8781  case 683:
     8782
     8783/* Line 1806 of yacc.c  */
     8784#line 2616 "parser.yy"
     8785    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     8786    break;
     8787
     8788  case 684:
     8789
     8790/* Line 1806 of yacc.c  */
     8791#line 2618 "parser.yy"
     8792    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     8793    break;
     8794
     8795  case 685:
     8796
     8797/* Line 1806 of yacc.c  */
     8798#line 2621 "parser.yy"
     8799    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     8800    break;
     8801
     8802  case 686:
     8803
     8804/* Line 1806 of yacc.c  */
     8805#line 2623 "parser.yy"
     8806    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     8807    break;
     8808
     8809  case 687:
     8810
     8811/* Line 1806 of yacc.c  */
     8812#line 2625 "parser.yy"
     8813    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     8814    break;
     8815
     8816  case 689:
     8817
     8818/* Line 1806 of yacc.c  */
     8819#line 2639 "parser.yy"
    86498820    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86508821    break;
    86518822
    8652   case 665:
    8653 
    8654 /* Line 1806 of yacc.c  */
    8655 #line 2569 "parser.yy"
     8823  case 690:
     8824
     8825/* Line 1806 of yacc.c  */
     8826#line 2641 "parser.yy"
    86568827    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86578828    break;
    86588829
    8659   case 666:
    8660 
    8661 /* Line 1806 of yacc.c  */
    8662 #line 2574 "parser.yy"
     8830  case 691:
     8831
     8832/* Line 1806 of yacc.c  */
     8833#line 2646 "parser.yy"
    86638834    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    86648835    break;
    86658836
    8666   case 667:
    8667 
    8668 /* Line 1806 of yacc.c  */
    8669 #line 2576 "parser.yy"
     8837  case 692:
     8838
     8839/* Line 1806 of yacc.c  */
     8840#line 2648 "parser.yy"
    86708841    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    86718842    break;
    86728843
    8673   case 668:
    8674 
    8675 /* Line 1806 of yacc.c  */
    8676 #line 2578 "parser.yy"
     8844  case 693:
     8845
     8846/* Line 1806 of yacc.c  */
     8847#line 2650 "parser.yy"
    86778848    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    86788849    break;
    86798850
    8680   case 669:
    8681 
    8682 /* Line 1806 of yacc.c  */
    8683 #line 2580 "parser.yy"
     8851  case 694:
     8852
     8853/* Line 1806 of yacc.c  */
     8854#line 2652 "parser.yy"
    86848855    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    86858856    break;
    86868857
    8687   case 670:
    8688 
    8689 /* Line 1806 of yacc.c  */
    8690 #line 2582 "parser.yy"
     8858  case 695:
     8859
     8860/* Line 1806 of yacc.c  */
     8861#line 2654 "parser.yy"
    86918862    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86928863    break;
    86938864
    8694   case 672:
    8695 
    8696 /* Line 1806 of yacc.c  */
    8697 #line 2588 "parser.yy"
     8865  case 697:
     8866
     8867/* Line 1806 of yacc.c  */
     8868#line 2660 "parser.yy"
    86988869    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86998870    break;
    87008871
    8701   case 673:
    8702 
    8703 /* Line 1806 of yacc.c  */
    8704 #line 2590 "parser.yy"
     8872  case 698:
     8873
     8874/* Line 1806 of yacc.c  */
     8875#line 2662 "parser.yy"
    87058876    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87068877    break;
    87078878
    8708   case 674:
    8709 
    8710 /* Line 1806 of yacc.c  */
    8711 #line 2592 "parser.yy"
     8879  case 699:
     8880
     8881/* Line 1806 of yacc.c  */
     8882#line 2664 "parser.yy"
    87128883    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87138884    break;
    87148885
    8715   case 675:
    8716 
    8717 /* Line 1806 of yacc.c  */
    8718 #line 2597 "parser.yy"
    8719     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8720     break;
    8721 
    8722   case 676:
    8723 
    8724 /* Line 1806 of yacc.c  */
    8725 #line 2599 "parser.yy"
     8886  case 700:
     8887
     8888/* Line 1806 of yacc.c  */
     8889#line 2669 "parser.yy"
    87268890    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87278891    break;
    87288892
    8729   case 677:
    8730 
    8731 /* Line 1806 of yacc.c  */
    8732 #line 2601 "parser.yy"
     8893  case 701:
     8894
     8895/* Line 1806 of yacc.c  */
     8896#line 2671 "parser.yy"
    87338897    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87348898    break;
    87358899
    8736   case 679:
    8737 
    8738 /* Line 1806 of yacc.c  */
    8739 #line 2608 "parser.yy"
    8740     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8741     break;
    8742 
    8743   case 681:
    8744 
    8745 /* Line 1806 of yacc.c  */
    8746 #line 2619 "parser.yy"
    8747     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8748     break;
    8749 
    8750   case 682:
    8751 
    8752 /* Line 1806 of yacc.c  */
    8753 #line 2622 "parser.yy"
    8754     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    8755     break;
    8756 
    8757   case 683:
    8758 
    8759 /* Line 1806 of yacc.c  */
    8760 #line 2624 "parser.yy"
    8761     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    8762     break;
    8763 
    8764   case 684:
    8765 
    8766 /* Line 1806 of yacc.c  */
    8767 #line 2627 "parser.yy"
    8768     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    8769     break;
    8770 
    8771   case 685:
    8772 
    8773 /* Line 1806 of yacc.c  */
    8774 #line 2629 "parser.yy"
    8775     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    8776     break;
    8777 
    8778   case 686:
    8779 
    8780 /* Line 1806 of yacc.c  */
    8781 #line 2631 "parser.yy"
    8782     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    8783     break;
    8784 
    8785   case 688:
    8786 
    8787 /* Line 1806 of yacc.c  */
    8788 #line 2645 "parser.yy"
    8789     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8790     break;
    8791 
    8792   case 689:
    8793 
    8794 /* Line 1806 of yacc.c  */
    8795 #line 2647 "parser.yy"
    8796     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8797     break;
    8798 
    8799   case 690:
    8800 
    8801 /* Line 1806 of yacc.c  */
    8802 #line 2652 "parser.yy"
    8803     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8804     break;
    8805 
    8806   case 691:
    8807 
    8808 /* Line 1806 of yacc.c  */
    8809 #line 2654 "parser.yy"
    8810     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8811     break;
    8812 
    8813   case 692:
    8814 
    8815 /* Line 1806 of yacc.c  */
    8816 #line 2656 "parser.yy"
    8817     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8818     break;
    8819 
    8820   case 693:
    8821 
    8822 /* Line 1806 of yacc.c  */
    8823 #line 2658 "parser.yy"
    8824     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8825     break;
    8826 
    8827   case 694:
    8828 
    8829 /* Line 1806 of yacc.c  */
    8830 #line 2660 "parser.yy"
    8831     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8832     break;
    8833 
    8834   case 696:
    8835 
    8836 /* Line 1806 of yacc.c  */
    8837 #line 2666 "parser.yy"
    8838     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8839     break;
    8840 
    8841   case 697:
    8842 
    8843 /* Line 1806 of yacc.c  */
    8844 #line 2668 "parser.yy"
    8845     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8846     break;
    8847 
    8848   case 698:
    8849 
    8850 /* Line 1806 of yacc.c  */
    8851 #line 2670 "parser.yy"
    8852     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8853     break;
    8854 
    8855   case 699:
    8856 
    8857 /* Line 1806 of yacc.c  */
    8858 #line 2675 "parser.yy"
    8859     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8860     break;
    8861 
    8862   case 700:
    8863 
    8864 /* Line 1806 of yacc.c  */
    8865 #line 2677 "parser.yy"
    8866     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8867     break;
    8868 
    8869   case 703:
    8870 
    8871 /* Line 1806 of yacc.c  */
    8872 #line 2687 "parser.yy"
     8900  case 704:
     8901
     8902/* Line 1806 of yacc.c  */
     8903#line 2681 "parser.yy"
    88738904    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    88748905    break;
    88758906
    8876   case 706:
     8907  case 707:
     8908
     8909/* Line 1806 of yacc.c  */
     8910#line 2691 "parser.yy"
     8911    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8912    break;
     8913
     8914  case 708:
     8915
     8916/* Line 1806 of yacc.c  */
     8917#line 2693 "parser.yy"
     8918    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8919    break;
     8920
     8921  case 709:
     8922
     8923/* Line 1806 of yacc.c  */
     8924#line 2695 "parser.yy"
     8925    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8926    break;
     8927
     8928  case 710:
    88778929
    88788930/* Line 1806 of yacc.c  */
    88798931#line 2697 "parser.yy"
     8932    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8933    break;
     8934
     8935  case 711:
     8936
     8937/* Line 1806 of yacc.c  */
     8938#line 2699 "parser.yy"
    88808939    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88818940    break;
    88828941
    8883   case 707:
    8884 
    8885 /* Line 1806 of yacc.c  */
    8886 #line 2699 "parser.yy"
     8942  case 712:
     8943
     8944/* Line 1806 of yacc.c  */
     8945#line 2701 "parser.yy"
    88878946    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88888947    break;
    88898948
    8890   case 708:
    8891 
    8892 /* Line 1806 of yacc.c  */
    8893 #line 2701 "parser.yy"
    8894     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8895     break;
    8896 
    8897   case 709:
    8898 
    8899 /* Line 1806 of yacc.c  */
    8900 #line 2703 "parser.yy"
    8901     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    8902     break;
    8903 
    8904   case 710:
    8905 
    8906 /* Line 1806 of yacc.c  */
    8907 #line 2705 "parser.yy"
    8908     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8909     break;
    8910 
    8911   case 711:
    8912 
    8913 /* Line 1806 of yacc.c  */
    8914 #line 2707 "parser.yy"
    8915     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    8916     break;
    8917 
    8918   case 712:
     8949  case 713:
     8950
     8951/* Line 1806 of yacc.c  */
     8952#line 2708 "parser.yy"
     8953    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8954    break;
     8955
     8956  case 714:
     8957
     8958/* Line 1806 of yacc.c  */
     8959#line 2710 "parser.yy"
     8960    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8961    break;
     8962
     8963  case 715:
     8964
     8965/* Line 1806 of yacc.c  */
     8966#line 2712 "parser.yy"
     8967    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8968    break;
     8969
     8970  case 716:
    89198971
    89208972/* Line 1806 of yacc.c  */
    89218973#line 2714 "parser.yy"
    8922     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8923     break;
    8924 
    8925   case 713:
     8974    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8975    break;
     8976
     8977  case 717:
    89268978
    89278979/* Line 1806 of yacc.c  */
     
    89308982    break;
    89318983
    8932   case 714:
     8984  case 718:
    89338985
    89348986/* Line 1806 of yacc.c  */
    89358987#line 2718 "parser.yy"
     8988    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8989    break;
     8990
     8991  case 719:
     8992
     8993/* Line 1806 of yacc.c  */
     8994#line 2720 "parser.yy"
     8995    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8996    break;
     8997
     8998  case 720:
     8999
     9000/* Line 1806 of yacc.c  */
     9001#line 2722 "parser.yy"
    89369002    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89379003    break;
    89389004
    8939   case 715:
    8940 
    8941 /* Line 1806 of yacc.c  */
    8942 #line 2720 "parser.yy"
     9005  case 721:
     9006
     9007/* Line 1806 of yacc.c  */
     9008#line 2724 "parser.yy"
    89439009    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    89449010    break;
    89459011
    8946   case 716:
    8947 
    8948 /* Line 1806 of yacc.c  */
    8949 #line 2722 "parser.yy"
    8950     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    8951     break;
    8952 
    8953   case 717:
    8954 
    8955 /* Line 1806 of yacc.c  */
    8956 #line 2724 "parser.yy"
    8957     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8958     break;
    8959 
    8960   case 718:
     9012  case 722:
    89619013
    89629014/* Line 1806 of yacc.c  */
     
    89659017    break;
    89669018
    8967   case 719:
    8968 
    8969 /* Line 1806 of yacc.c  */
    8970 #line 2728 "parser.yy"
     9019  case 723:
     9020
     9021/* Line 1806 of yacc.c  */
     9022#line 2731 "parser.yy"
     9023    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     9024    break;
     9025
     9026  case 724:
     9027
     9028/* Line 1806 of yacc.c  */
     9029#line 2733 "parser.yy"
     9030    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     9031    break;
     9032
     9033  case 725:
     9034
     9035/* Line 1806 of yacc.c  */
     9036#line 2738 "parser.yy"
     9037    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     9038    break;
     9039
     9040  case 726:
     9041
     9042/* Line 1806 of yacc.c  */
     9043#line 2740 "parser.yy"
     9044    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     9045    break;
     9046
     9047  case 728:
     9048
     9049/* Line 1806 of yacc.c  */
     9050#line 2767 "parser.yy"
     9051    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     9052    break;
     9053
     9054  case 732:
     9055
     9056/* Line 1806 of yacc.c  */
     9057#line 2778 "parser.yy"
     9058    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9059    break;
     9060
     9061  case 733:
     9062
     9063/* Line 1806 of yacc.c  */
     9064#line 2780 "parser.yy"
     9065    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9066    break;
     9067
     9068  case 734:
     9069
     9070/* Line 1806 of yacc.c  */
     9071#line 2782 "parser.yy"
     9072    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9073    break;
     9074
     9075  case 735:
     9076
     9077/* Line 1806 of yacc.c  */
     9078#line 2784 "parser.yy"
     9079    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9080    break;
     9081
     9082  case 736:
     9083
     9084/* Line 1806 of yacc.c  */
     9085#line 2786 "parser.yy"
     9086    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9087    break;
     9088
     9089  case 737:
     9090
     9091/* Line 1806 of yacc.c  */
     9092#line 2788 "parser.yy"
     9093    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9094    break;
     9095
     9096  case 738:
     9097
     9098/* Line 1806 of yacc.c  */
     9099#line 2795 "parser.yy"
     9100    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9101    break;
     9102
     9103  case 739:
     9104
     9105/* Line 1806 of yacc.c  */
     9106#line 2797 "parser.yy"
    89719107    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89729108    break;
    89739109
    8974   case 720:
    8975 
    8976 /* Line 1806 of yacc.c  */
    8977 #line 2730 "parser.yy"
    8978     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    8979     break;
    8980 
    8981   case 721:
    8982 
    8983 /* Line 1806 of yacc.c  */
    8984 #line 2732 "parser.yy"
     9110  case 740:
     9111
     9112/* Line 1806 of yacc.c  */
     9113#line 2799 "parser.yy"
    89859114    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89869115    break;
    89879116
    8988   case 722:
    8989 
    8990 /* Line 1806 of yacc.c  */
    8991 #line 2737 "parser.yy"
    8992     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    8993     break;
    8994 
    8995   case 723:
    8996 
    8997 /* Line 1806 of yacc.c  */
    8998 #line 2739 "parser.yy"
    8999     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    9000     break;
    9001 
    9002   case 724:
    9003 
    9004 /* Line 1806 of yacc.c  */
    9005 #line 2744 "parser.yy"
    9006     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    9007     break;
    9008 
    9009   case 725:
    9010 
    9011 /* Line 1806 of yacc.c  */
    9012 #line 2746 "parser.yy"
    9013     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    9014     break;
    9015 
    9016   case 727:
    9017 
    9018 /* Line 1806 of yacc.c  */
    9019 #line 2773 "parser.yy"
    9020     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    9021     break;
    9022 
    9023   case 731:
    9024 
    9025 /* Line 1806 of yacc.c  */
    9026 #line 2784 "parser.yy"
    9027     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9028     break;
    9029 
    9030   case 732:
    9031 
    9032 /* Line 1806 of yacc.c  */
    9033 #line 2786 "parser.yy"
    9034     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9035     break;
    9036 
    9037   case 733:
    9038 
    9039 /* Line 1806 of yacc.c  */
    9040 #line 2788 "parser.yy"
    9041     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9042     break;
    9043 
    9044   case 734:
    9045 
    9046 /* Line 1806 of yacc.c  */
    9047 #line 2790 "parser.yy"
    9048     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9049     break;
    9050 
    9051   case 735:
    9052 
    9053 /* Line 1806 of yacc.c  */
    9054 #line 2792 "parser.yy"
    9055     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9056     break;
    9057 
    9058   case 736:
    9059 
    9060 /* Line 1806 of yacc.c  */
    9061 #line 2794 "parser.yy"
    9062     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9063     break;
    9064 
    9065   case 737:
     9117  case 741:
    90669118
    90679119/* Line 1806 of yacc.c  */
     
    90709122    break;
    90719123
    9072   case 738:
     9124  case 742:
    90739125
    90749126/* Line 1806 of yacc.c  */
     
    90779129    break;
    90789130
    9079   case 739:
     9131  case 743:
    90809132
    90819133/* Line 1806 of yacc.c  */
     
    90849136    break;
    90859137
    9086   case 740:
    9087 
    9088 /* Line 1806 of yacc.c  */
    9089 #line 2807 "parser.yy"
    9090     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9091     break;
    9092 
    9093   case 741:
    9094 
    9095 /* Line 1806 of yacc.c  */
    9096 #line 2809 "parser.yy"
    9097     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9098     break;
    9099 
    9100   case 742:
    9101 
    9102 /* Line 1806 of yacc.c  */
    9103 #line 2811 "parser.yy"
    9104     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9105     break;
    9106 
    9107   case 743:
    9108 
    9109 /* Line 1806 of yacc.c  */
    9110 #line 2816 "parser.yy"
     9138  case 744:
     9139
     9140/* Line 1806 of yacc.c  */
     9141#line 2810 "parser.yy"
    91119142    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    91129143    break;
    91139144
    9114   case 744:
    9115 
    9116 /* Line 1806 of yacc.c  */
    9117 #line 2821 "parser.yy"
     9145  case 745:
     9146
     9147/* Line 1806 of yacc.c  */
     9148#line 2815 "parser.yy"
    91189149    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    91199150    break;
    91209151
    9121   case 745:
    9122 
    9123 /* Line 1806 of yacc.c  */
    9124 #line 2823 "parser.yy"
     9152  case 746:
     9153
     9154/* Line 1806 of yacc.c  */
     9155#line 2817 "parser.yy"
    91259156    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    91269157    break;
    91279158
    9128   case 746:
    9129 
    9130 /* Line 1806 of yacc.c  */
    9131 #line 2825 "parser.yy"
     9159  case 747:
     9160
     9161/* Line 1806 of yacc.c  */
     9162#line 2819 "parser.yy"
    91329163    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    91339164    break;
    91349165
    9135   case 749:
    9136 
    9137 /* Line 1806 of yacc.c  */
    9138 #line 2849 "parser.yy"
     9166  case 750:
     9167
     9168/* Line 1806 of yacc.c  */
     9169#line 2843 "parser.yy"
    91399170    { (yyval.en) = 0; }
    91409171    break;
    91419172
    9142   case 750:
    9143 
    9144 /* Line 1806 of yacc.c  */
    9145 #line 2851 "parser.yy"
     9173  case 751:
     9174
     9175/* Line 1806 of yacc.c  */
     9176#line 2845 "parser.yy"
    91469177    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    91479178    break;
     
    91509181
    91519182/* Line 1806 of yacc.c  */
    9152 #line 9153 "Parser/parser.cc"
     9183#line 9184 "Parser/parser.cc"
    91539184      default: break;
    91549185    }
     
    93819412
    93829413/* Line 2067 of yacc.c  */
    9383 #line 2854 "parser.yy"
     9414#line 2848 "parser.yy"
    93849415
    93859416// ----end of grammar----
     9417
     9418extern char *yytext;
    93869419
    93879420void yyerror( const char * ) {
  • src/Parser/parser.h

    r79841be r6943a987  
    276276        InitializerNode *in;
    277277        OperKinds op;
     278        std::string *str;
    278279        bool flag;
    279280
     
    281282
    282283/* Line 2068 of yacc.c  */
    283 #line 284 "Parser/parser.h"
     284#line 285 "Parser/parser.h"
    284285} YYSTYPE;
    285286# define YYSTYPE_IS_TRIVIAL 1
  • src/Parser/parser.yy

    r79841be r6943a987  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug 11 18:02:57 2016
    13 // Update Count     : 1861
     12// Last Modified On : Fri Aug 26 16:45:44 2016
     13// Update Count     : 1964
    1414//
    1515
     
    4343#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
    4444#define YYDEBUG 1                                                                               // get the pretty debugging code to compile
    45 extern char *yytext;
    4645
    4746#undef __GNUC_MINOR__
     
    5655#include "LinkageSpec.h"
    5756
    58 DeclarationNode *theTree = 0;                                                   // the resulting parse tree
    59 LinkageSpec::Type linkage = LinkageSpec::Cforall;
    60 std::stack< LinkageSpec::Type > linkageStack;
    61 TypedefTable typedefTable;
    62 
    63 void appendStr( std::string &to, std::string *from ) {
     57extern DeclarationNode * parseTree;
     58extern LinkageSpec::Spec linkage;
     59extern TypedefTable typedefTable;
     60
     61std::stack< LinkageSpec::Spec > linkageStack;
     62
     63void appendStr( std::string *to, std::string *from ) {
    6464        // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
    65         to.insert( to.length() - 1, from->substr( 1, from->length() - 2 ) );
     65        to->insert( to->length() - 1, from->substr( 1, from->length() - 2 ) );
    6666} // appendStr
    6767%}
     
    126126        InitializerNode *in;
    127127        OperKinds op;
     128        std::string *str;
    128129        bool flag;
    129130}
     
    131132%type<tok> identifier  no_01_identifier  no_attr_identifier zero_one
    132133%type<tok> identifier_or_type_name  no_attr_identifier_or_type_name  no_01_identifier_or_type_name
    133 %type<constant> string_literal_list
     134%type<constant> string_literal
     135%type<str> string_literal_list
    134136
    135137// expressions
     
    143145%type<en> constant_expression                   assignment_expression           assignment_expression_opt
    144146%type<en> comma_expression                              comma_expression_opt
    145 //%type<en> argument_expression_list            argument_expression                     for_control_expression          assignment_opt
    146147%type<en> argument_expression_list              argument_expression                     assignment_opt
    147148%type<fctl> for_control_expression
     
    162163%type<sn> case_value_list                               case_label                                      case_label_list
    163164%type<sn> switch_clause_list_opt                switch_clause_list                      choose_clause_list_opt          choose_clause_list
    164 %type<pn> handler_list                                  handler_clause                          finally_clause
     165%type<sn> handler_list                                  handler_clause                          finally_clause
    165166
    166167// declarations
     
    224225%type<decl> paren_identifier paren_type
    225226
    226 %type<decl> storage_class storage_class_name storage_class_list
     227%type<decl> storage_class storage_class_list
    227228
    228229%type<decl> sue_declaration_specifier sue_type_specifier
     
    297298
    298299push:
    299                 {
    300                         typedefTable.enterScope();
    301                 }
     300                { typedefTable.enterScope(); }
    302301        ;
    303302
    304303pop:
    305                 {
    306                         typedefTable.leaveScope();
    307                 }
     304                { typedefTable.leaveScope(); }
    308305        ;
    309306
     
    312309constant:
    313310                // ENUMERATIONconstant is not included here; it is treated as a variable with type "enumeration constant".
    314 INTEGERconstant                                                                 { $$ = new ExpressionNode( build_constantInteger( *$1 ) ); }
     311        INTEGERconstant                                                         { $$ = new ExpressionNode( build_constantInteger( *$1 ) ); }
    315312        | FLOATINGconstant                                                      { $$ = new ExpressionNode( build_constantFloat( *$1 ) ); }
    316313        | CHARACTERconstant                                                     { $$ = new ExpressionNode( build_constantChar( *$1 ) ); }
     
    338335        ;
    339336
     337string_literal:
     338        string_literal_list                                                     { $$ = build_constantStr( *$1 ); }
     339        ;
     340
    340341string_literal_list:                                                                    // juxtaposed strings are concatenated
    341         STRINGliteral                                                           { $$ = build_constantStr( *$1 ); }
     342        STRINGliteral                                                           { $$ = $1; } // conversion from tok to str
    342343        | string_literal_list STRINGliteral
    343344                {
    344                         appendStr( $1->get_constant()->get_value(), $2 );
     345                        appendStr( $1, $2 );                                            // append 2nd juxtaposed string to 1st
    345346                        delete $2;                                                                      // allocated by lexer
    346                         $$ = $1;
     347                        $$ = $1;                                                                        // conversion from tok to str
    347348                }
    348349        ;
     
    371372        | postfix_expression '(' argument_expression_list ')'
    372373                { $$ = new ExpressionNode( build_func( $1, $3 ) ); }
    373         // ambiguity with .0 so space required after field-selection, e.g.
     374                // ambiguity with .0 so space required after field-selection, e.g.
    374375                //   struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;
    375376        | postfix_expression '.' no_attr_identifier
     
    389390                        Token fn;
    390391                        fn.str = new std::string( "?{}" ); // location undefined
    391                         $$ = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $1 )->set_link( $3 ) ) );
     392                        $$ = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $1 )->set_last( $3 ) ) );
    392393                }
    393394        ;
     
    396397        argument_expression
    397398        | argument_expression_list ',' argument_expression
    398                 { $$ = (ExpressionNode *)( $1->set_link( $3 )); }
     399                { $$ = (ExpressionNode *)( $1->set_last( $3 )); }
    399400        ;
    400401
     
    407408field_list:                                                                                             // CFA, tuple field selector
    408409        field
    409         | field_list ',' field                                          { $$ = (ExpressionNode *)$1->set_link( $3 ); }
     410        | field_list ',' field                                          { $$ = (ExpressionNode *)$1->set_last( $3 ); }
    410411        ;
    411412
     
    413414        no_attr_identifier
    414415                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    415         // ambiguity with .0 so space required after field-selection, e.g.
     416                // ambiguity with .0 so space required after field-selection, e.g.
    416417                //   struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;
    417418        | no_attr_identifier '.' field
     
    431432        | constant
    432433                { $$ = $1; }
    433         | string_literal_list
     434        | string_literal
    434435                { $$ = new ExpressionNode( $1 ); }
    435436        | EXTENSION cast_expression                                                     // GCC
     
    607608assignment_operator:
    608609        '='                                                                                     { $$ = OperKinds::Assign; }
     610        | ATassign                                                                      { $$ = OperKinds::AtAssn; }
    609611        | MULTassign                                                            { $$ = OperKinds::MulAssn; }
    610612        | DIVassign                                                                     { $$ = OperKinds::DivAssn; }
     
    627629                { $$ = new ExpressionNode( build_tuple( $3 ) ); }
    628630        | '[' push ',' tuple_expression_list pop ']'
    629                 { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_link( $4 ) ) ); }
     631                { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( $4 ) ) ); }
    630632        | '[' push assignment_expression ',' tuple_expression_list pop ']'
    631                 { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)$3->set_link( $5 ) ) ); }
     633                { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)$3->set_last( $5 ) ) ); }
    632634        ;
    633635
     
    635637        assignment_expression_opt
    636638        | tuple_expression_list ',' assignment_expression_opt
    637                 { $$ = (ExpressionNode *)$1->set_link( $3 ); }
     639                { $$ = (ExpressionNode *)$1->set_last( $3 ); }
    638640        ;
    639641
     
    665667                        Token fn;
    666668                        fn.str = new std::string( "^?{}" ); // location undefined
    667                         $$ = new StatementNode2( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $2 )->set_link( $4 ) ) ) ) );
     669                        $$ = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $2 )->set_last( $4 ) ) ) ) );
    668670                }
    669671        ;
     
    679681compound_statement:
    680682        '{' '}'
    681                 { $$ = new CompoundStmtNode( (StatementNode *)0 ); }
     683                { $$ = new StatementNode( build_compound( (StatementNode *)0 ) ); }
    682684        | '{'
    683685                // Two scopes are necessary because the block itself has a scope, but every declaration within the block also
     
    686688          local_label_declaration_opt                                           // GCC, local labels
    687689          block_item_list pop '}'                                                       // C99, intermix declarations and statements
    688                 { $$ = new CompoundStmtNode( $5 ); }
     690                { $$ = new StatementNode( build_compound( $5 ) ); }
    689691        ;
    690692
     
    692694        block_item
    693695        | block_item_list push block_item
    694                 { if ( $1 != 0 ) { $1->set_link( $3 ); $$ = $1; } }
     696                { if ( $1 != 0 ) { $1->set_last( $3 ); $$ = $1; } }
    695697        ;
    696698
     
    700702        | EXTENSION declaration                                                         // GCC
    701703                {       // mark all fields in list
    702                         for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     704                        for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    703705                                iter->set_extension( true );
    704706                        $$ = new StatementNode( $2 );
     
    712714        statement
    713715        | statement_list statement
    714                 { if ( $1 != 0 ) { $1->set_link( $2 ); $$ = $1; } }
     716                { if ( $1 != 0 ) { $1->set_last( $2 ); $$ = $1; } }
    715717        ;
    716718
    717719expression_statement:
    718720        comma_expression_opt ';'
    719                 { $$ = new StatementNode2( build_expr( $1 ) ); }
     721                { $$ = new StatementNode( build_expr( $1 ) ); }
    720722        ;
    721723
     
    723725        IF '(' comma_expression ')' statement                           %prec THEN
    724726                // explicitly deal with the shift/reduce conflict on if/else
    725                 { $$ = new StatementNode2( build_if( $3, $5, nullptr ) ); }
     727                { $$ = new StatementNode( build_if( $3, $5, nullptr ) ); }
    726728        | IF '(' comma_expression ')' statement ELSE statement
    727                 { $$ = new StatementNode2( build_if( $3, $5, $7 ) ); }
     729                { $$ = new StatementNode( build_if( $3, $5, $7 ) ); }
    728730        | SWITCH '(' comma_expression ')' case_clause           // CFA
    729                 { $$ = new StatementNode2( build_switch( $3, $5 ) ); }
     731                { $$ = new StatementNode( build_switch( $3, $5 ) ); }
    730732        | SWITCH '(' comma_expression ')' '{' push declaration_list_opt switch_clause_list_opt '}' // CFA
    731733                {
    732                         StatementNode *sw = new StatementNode2( build_switch( $3, $8 ) );
     734                        StatementNode *sw = new StatementNode( build_switch( $3, $8 ) );
    733735                        // The semantics of the declaration list is changed to include associated initialization, which is performed
    734736                        // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
     
    736738                        // therefore, are removed from the grammar even though C allows it. The change also applies to choose
    737739                        // statement.
    738                         $$ = $7 != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( $7 ))->set_link( sw )) ) : sw;
     740                        $$ = $7 != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
    739741                }
    740742        | CHOOSE '(' comma_expression ')' case_clause           // CFA
    741                 { $$ = new StatementNode2( build_switch( $3, $5 ) ); }
     743                { $$ = new StatementNode( build_switch( $3, $5 ) ); }
    742744        | CHOOSE '(' comma_expression ')' '{' push declaration_list_opt choose_clause_list_opt '}' // CFA
    743745                {
    744                         StatementNode *sw = new StatementNode2( build_switch( $3, $8 ) );
    745                         $$ = $7 != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( $7 ))->set_link( sw )) ) : sw;
     746                        StatementNode *sw = new StatementNode( build_switch( $3, $8 ) );
     747                        $$ = $7 != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
    746748                }
    747749        ;
     
    758760
    759761case_value_list:                                                                                // CFA
    760         //case_value                                                                    { $$ = new StatementNode( StatementNode::Case, $1, 0 ); }
    761         case_value                                                                      { $$ = new StatementNode2( build_case( $1 ) ); }
     762        case_value                                                                      { $$ = new StatementNode( build_case( $1 ) ); }
    762763                // convert case list, e.g., "case 1, 3, 5:" into "case 1: case 3: case 5"
    763         | case_value_list ',' case_value                        { $$ = (StatementNode *)($1->set_link( new StatementNode2( build_case( $3 ) ) ) ); }
     764        | case_value_list ',' case_value                        { $$ = (StatementNode *)($1->set_last( new StatementNode( build_case( $3 ) ) ) ); }
    764765        ;
    765766
    766767case_label:                                                                                             // CFA
    767768        CASE case_value_list ':'                                        { $$ = $2; }
    768         | DEFAULT ':'                                                           { $$ = new StatementNode2( build_default() ); }
     769        | DEFAULT ':'                                                           { $$ = new StatementNode( build_default() ); }
    769770                // A semantic check is required to ensure only one default clause per switch/choose statement.
    770771        ;
     
    772773case_label_list:                                                                                // CFA
    773774        case_label
    774         | case_label_list case_label                            { $$ = (StatementNode *)( $1->set_link( $2 )); }
     775        | case_label_list case_label                            { $$ = (StatementNode *)( $1->set_last( $2 )); }
    775776        ;
    776777
    777778case_clause:                                                                                    // CFA
    778         case_label_list statement                                       { $$ = $1->append_last_case( new CompoundStmtNode( $2 ) ); }
     779        case_label_list statement                                       { $$ = $1->append_last_case( new StatementNode( build_compound( $2 ) ) ); }
    779780        ;
    780781
     
    787788switch_clause_list:                                                                             // CFA
    788789        case_label_list statement_list
    789                 { $$ = $1->append_last_case( new CompoundStmtNode( $2 ) ); }
     790                { $$ = $1->append_last_case( new StatementNode( build_compound( $2 ) ) ); }
    790791        | switch_clause_list case_label_list statement_list
    791                 { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( new CompoundStmtNode( $3 ) ) ) ); }
     792                { $$ = (StatementNode *)( $1->set_last( $2->append_last_case( new StatementNode( build_compound( $3 ) ) ) ) ); }
    792793        ;
    793794
     
    802803                { $$ = $1->append_last_case( $2 ); }
    803804        | case_label_list statement_list fall_through_opt
    804                 { $$ = $1->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*$2, *$3 ) ) ) ); }
     805                { $$ = $1->append_last_case( new StatementNode( build_compound( (StatementNode *)$2->set_last( $3 ) ) ) ); }
    805806        | choose_clause_list case_label_list fall_through
    806                 { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( $3 ))); }
     807                { $$ = (StatementNode *)( $1->set_last( $2->append_last_case( $3 ))); }
    807808        | choose_clause_list case_label_list statement_list fall_through_opt
    808                 { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*$3, *$4 ) ) ) ) ) ); }
     809                { $$ = (StatementNode *)( $1->set_last( $2->append_last_case( new StatementNode( build_compound( (StatementNode *)$3->set_last( $4 ) ) ) ) ) ); }
    809810        ;
    810811
    811812fall_through_opt:                                                                               // CFA
    812813        // empty
    813                 { $$ = new StatementNode2( build_branch( "", BranchStmt::Break ) ); } // insert implicit break
     814                { $$ = new StatementNode( build_branch( BranchStmt::Break ) ); } // insert implicit break
    814815        | fall_through
    815816        ;
     
    824825iteration_statement:
    825826        WHILE '(' comma_expression ')' statement
    826                 { $$ = new StatementNode2( build_while( $3, $5 ) ); }
     827                { $$ = new StatementNode( build_while( $3, $5 ) ); }
    827828        | DO statement WHILE '(' comma_expression ')' ';'
    828                 { $$ = new StatementNode2( build_while( $5, $2 ) ); }
     829                { $$ = new StatementNode( build_while( $5, $2 ) ); }
    829830        | FOR '(' push for_control_expression ')' statement
    830                 { $$ = new StatementNode2( build_for( $4, $6 ) ); }
     831                { $$ = new StatementNode( build_for( $4, $6 ) ); }
    831832        ;
    832833
     
    840841jump_statement:
    841842        GOTO IDENTIFIER ';'
    842                 { $$ = new StatementNode2( build_branch( *$2, BranchStmt::Goto ) ); }
     843                { $$ = new StatementNode( build_branch( $2, BranchStmt::Goto ) ); }
    843844        | GOTO '*' comma_expression ';'                                         // GCC, computed goto
    844845                // The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; => goto *(i+3);
    845846                // whereas normal operator precedence yields goto (*i)+3;
    846                 { $$ = new StatementNode2( build_computedgoto( $3 ) ); }
     847                { $$ = new StatementNode( build_computedgoto( $3 ) ); }
    847848        | CONTINUE ';'
    848849                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    849                 { $$ = new StatementNode2( build_branch( "", BranchStmt::Continue ) ); }
     850                { $$ = new StatementNode( build_branch( BranchStmt::Continue ) ); }
    850851        | CONTINUE IDENTIFIER ';'                                                       // CFA, multi-level continue
    851852                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    852853                // the target of the transfer appears only at the start of an iteration statement.
    853                 { $$ = new StatementNode2( build_branch( *$2, BranchStmt::Continue ) ); delete $2; }
     854                { $$ = new StatementNode( build_branch( $2, BranchStmt::Continue ) ); }
    854855        | BREAK ';'
    855856                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    856                 { $$ = new StatementNode2( build_branch( "", BranchStmt::Break ) ); }
     857                { $$ = new StatementNode( build_branch( BranchStmt::Break ) ); }
    857858        | BREAK IDENTIFIER ';'                                                          // CFA, multi-level exit
    858859                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    859860                // the target of the transfer appears only at the start of an iteration statement.
    860                 { $$ = new StatementNode2( build_branch( *$2, BranchStmt::Break ) ); delete $2; }
     861                { $$ = new StatementNode( build_branch( $2, BranchStmt::Break ) ); }
    861862        | RETURN comma_expression_opt ';'
    862                 { $$ = new StatementNode2( build_return( $2 ) ); }
     863                { $$ = new StatementNode( build_return( $2 ) ); }
    863864        | THROW assignment_expression_opt ';'                           // handles rethrow
    864                 { $$ = new StatementNode2( build_throw( $2 ) ); }
     865                { $$ = new StatementNode( build_throw( $2 ) ); }
    865866        | THROWRESUME assignment_expression_opt ';'                     // handles reresume
    866                 { $$ = new StatementNode2( build_throw( $2 ) ); }
     867                { $$ = new StatementNode( build_throw( $2 ) ); }
    867868        | THROWRESUME assignment_expression_opt AT assignment_expression ';' // handles reresume
    868                 { $$ = new StatementNode2( build_throw( $2 ) ); }
     869                { $$ = new StatementNode( build_throw( $2 ) ); }
    869870        ;
    870871
    871872exception_statement:
    872873        TRY compound_statement handler_list
    873                 { $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 )))); }
     874                { $$ = new StatementNode( build_try( $2, $3, 0 ) ); }
    874875        | TRY compound_statement finally_clause
    875                 { $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 )))); }
     876                { $$ = new StatementNode( build_try( $2, 0, $3 ) ); }
    876877        | TRY compound_statement handler_list finally_clause
    877                 {
    878                         $3->set_link( $4 );
    879                         $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 ))));
    880                 }
     878                { $$ = new StatementNode( build_try( $2, $3, $4 ) ); }
    881879        ;
    882880
    883881handler_list:
    884                 // There must be at least one catch clause
    885882        handler_clause
    886883                // ISO/IEC 9899:1999 Section 15.3(6 ) If present, a "..." handler shall be the last handler for its try block.
    887884        | CATCH '(' ELLIPSIS ')' compound_statement
    888                 { $$ = StatementNode::newCatchStmt( 0, $5, true ); }
     885                { $$ = new StatementNode( build_catch( 0, $5, true ) ); }
    889886        | handler_clause CATCH '(' ELLIPSIS ')' compound_statement
    890                 { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); }
     887                { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( 0, $6, true ) ) ); }
    891888        | CATCHRESUME '(' ELLIPSIS ')' compound_statement
    892                 { $$ = StatementNode::newCatchStmt( 0, $5, true ); }
     889                { $$ = new StatementNode( build_catch( 0, $5, true ) ); }
    893890        | handler_clause CATCHRESUME '(' ELLIPSIS ')' compound_statement
    894                 { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); }
     891                { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( 0, $6, true ) ) ); }
    895892        ;
    896893
    897894handler_clause:
    898895        CATCH '(' push push exception_declaration pop ')' compound_statement pop
    899                 { $$ = StatementNode::newCatchStmt( $5, $8 ); }
     896                { $$ = new StatementNode( build_catch( $5, $8 ) ); }
    900897        | handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop
    901                 { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); }
     898        { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $6, $9 ) ) ); }
    902899        | CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
    903                 { $$ = StatementNode::newCatchStmt( $5, $8 ); }
     900                { $$ = new StatementNode( build_catch( $5, $8 ) ); }
    904901        | handler_clause CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
    905                 { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); }
     902                { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $6, $9 ) ) ); }
    906903        ;
    907904
     
    909906        FINALLY compound_statement
    910907                {
    911                         $$ = new StatementNode( StatementNode::Finally, 0, $2 );
    912                         std::cout << "Just created a finally node" << std::endl;
     908                        $$ = new StatementNode( build_finally( $2 ) );
    913909                }
    914910        ;
     
    937933
    938934asm_statement:
    939         ASM asm_volatile_opt '(' string_literal_list ')' ';'
    940                 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, 0 ); }
    941         | ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ')' ';' // remaining GCC
    942                 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6 ); }
    943         | ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ':' asm_operands_opt ')' ';'
    944                 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6, $8 ); }
    945         | ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ':' asm_operands_opt ':' asm_clobbers_list_opt ')' ';'
    946                 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6, $8, $10 ); }
    947         | ASM asm_volatile_opt GOTO '(' string_literal_list ':' ':' asm_operands_opt ':' asm_clobbers_list_opt ':' label_list ')' ';'
    948                 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $5, 0, $8, $10, $12 ); }
     935        ASM asm_volatile_opt '(' string_literal ')' ';'
     936                { $$ = new StatementNode( build_asmstmt( $2, $4, 0 ) ); }
     937        | ASM asm_volatile_opt '(' string_literal ':' asm_operands_opt ')' ';' // remaining GCC
     938                { $$ = new StatementNode( build_asmstmt( $2, $4, $6 ) ); }
     939        | ASM asm_volatile_opt '(' string_literal ':' asm_operands_opt ':' asm_operands_opt ')' ';'
     940                { $$ = new StatementNode( build_asmstmt( $2, $4, $6, $8 ) ); }
     941        | ASM asm_volatile_opt '(' string_literal ':' asm_operands_opt ':' asm_operands_opt ':' asm_clobbers_list_opt ')' ';'
     942                { $$ = new StatementNode( build_asmstmt( $2, $4, $6, $8, $10 ) ); }
     943        | ASM asm_volatile_opt GOTO '(' string_literal ':' ':' asm_operands_opt ':' asm_clobbers_list_opt ':' label_list ')' ';'
     944                { $$ = new StatementNode( build_asmstmt( $2, $5, 0, $8, $10, $12 ) ); }
    949945        ;
    950946
     
    965961        asm_operand
    966962        | asm_operands_list ',' asm_operand
    967                 { $$ = (ExpressionNode *)$1->set_link( $3 ); }
     963                { $$ = (ExpressionNode *)$1->set_last( $3 ); }
    968964        ;
    969965
    970966asm_operand:                                                                                    // GCC
    971         string_literal_list '(' constant_expression ')'
    972                 { $$ = new ExpressionNode( build_asm( 0, $1, $3 ) ); }
    973         | '[' constant_expression ']' string_literal_list '(' constant_expression ')'
    974         { $$ = new ExpressionNode( build_asm( $2, $4, $6 ) ); }
     967        string_literal '(' constant_expression ')'
     968                { $$ = new ExpressionNode( build_asmexpr( 0, $1, $3 ) ); }
     969        | '[' constant_expression ']' string_literal '(' constant_expression ')'
     970        { $$ = new ExpressionNode( build_asmexpr( $2, $4, $6 ) ); }
    975971        ;
    976972
     
    978974        // empty
    979975                { $$ = 0; }                                                                             // use default argument
    980         | string_literal_list
     976        | string_literal
    981977                { $$ = new ExpressionNode( $1 ); }
    982         | asm_clobbers_list_opt ',' string_literal_list
    983         { $$ = (ExpressionNode *)$1->set_link( new ExpressionNode( $3 ) ); }
     978        | asm_clobbers_list_opt ',' string_literal
     979                { $$ = (ExpressionNode *)$1->set_last( new ExpressionNode( $3 ) ); }
    984980        ;
    985981
    986982label_list:
    987983        no_attr_identifier
    988                 { $$ = new LabelNode(); $$->append_label( $1 ); }
     984                {
     985                        $$ = new LabelNode(); $$->labels.push_back( *$1 );
     986                        delete $1;                                                                      // allocated by lexer
     987                }
    989988        | label_list ',' no_attr_identifier
    990                 { $$ = $1; $1->append_label( $3 ); }
     989                {
     990                        $$ = $1; $1->labels.push_back( *$3 );
     991                        delete $3;                                                                      // allocated by lexer
     992                }
    991993        ;
    992994
     
    12861288        type_qualifier_name
    12871289        | attribute
    1288         //{ $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
     1290                //{ $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
    12891291        ;
    12901292
     
    13311333
    13321334storage_class:
    1333         storage_class_name
    1334         ;
    1335 
    1336 storage_class_name:
    13371335        EXTERN
    13381336                { $$ = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     
    13441342                { $$ = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    13451343        | INLINE                                                                                        // C99
    1346                 { $$ = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     1344                //{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     1345                { $$ = new DeclarationNode; $$->isInline = true; }
    13471346        | FORTRAN                                                                                       // C99
    13481347                { $$ = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    13491348        | NORETURN                                                                                      // C11
    1350                 { $$ = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     1349                //{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     1350                { $$ = new DeclarationNode; $$->isNoreturn = true; }
    13511351        | THREADLOCAL                                                                           // C11
    13521352                { $$ = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     
    15041504        | EXTENSION field_declaring_list ';'                            // GCC
    15051505                {       // mark all fields in list
    1506                         for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     1506                        for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    15071507                                iter->set_extension( true );
    15081508                        $$ = $2;
     
    17501750        | initializer
    17511751        | designation initializer                                       { $$ = $2->set_designators( $1 ); }
    1752         | initializer_list ',' initializer                      { $$ = (InitializerNode *)( $1->set_link( $3 ) ); }
     1752        | initializer_list ',' initializer                      { $$ = (InitializerNode *)( $1->set_last( $3 ) ); }
    17531753        | initializer_list ',' designation initializer
    1754                 { $$ = (InitializerNode *)( $1->set_link( $4->set_designators( $3 ) ) ); }
     1754                { $$ = (InitializerNode *)( $1->set_last( $4->set_designators( $3 ) ) ); }
    17551755        ;
    17561756
     
    17741774        designator
    17751775        | designator_list designator
    1776                 { $$ = (ExpressionNode *)( $1->set_link( $2 ) ); }
     1776                { $$ = (ExpressionNode *)( $1->set_last( $2 ) ); }
    17771777        //| designator_list designator                                          { $$ = new ExpressionNode( $1, $2 ); }
    17781778        ;
     
    18801880        | assignment_expression
    18811881        | type_name_list ',' type_name
    1882                 { $$ = (ExpressionNode *)( $1->set_link( new ExpressionNode( build_typevalue( $3 ) ) ) ); }
     1882                { $$ = (ExpressionNode *)( $1->set_last( new ExpressionNode( build_typevalue( $3 ) ) ) ); }
    18831883        | type_name_list ',' assignment_expression
    1884                 { $$ = (ExpressionNode *)( $1->set_link( $3 )); }
     1884                { $$ = (ExpressionNode *)( $1->set_last( $3 )); }
    18851885        ;
    18861886
     
    19811981                {}                                                                                              // empty input file
    19821982        | external_definition_list
    1983                 {
    1984                         if ( theTree ) {
    1985                                 theTree->appendList( $1 );
    1986                         } else {
    1987                                 theTree = $1;
    1988                         }
    1989                 }
     1983                { parseTree = parseTree != nullptr ? parseTree->appendList( $1 ) : $1;  }
    19901984        ;
    19911985
     
    19931987        external_definition
    19941988        | external_definition_list push external_definition
    1995                 { $$ = ( $1 != NULL ) ? $1->appendList( $3 ) : $3; }
     1989                { $$ = $1 != nullptr ? $1->appendList( $3 ) : $3; }
    19961990        ;
    19971991
     
    20092003        | EXTERN STRINGliteral
    20102004                {
    2011                         linkageStack.push( linkage );
     2005                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
    20122006                        linkage = LinkageSpec::fromString( *$2 );
    20132007                }
     
    20202014        | EXTENSION external_definition
    20212015                {       // mark all fields in list
    2022                         for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     2016                        for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    20232017                                iter->set_extension( true );
    20242018                        $$ = $2;
     
    21212115asm_name_opt:                                                                                   // GCC
    21222116        // empty
    2123         | ASM '(' string_literal_list ')' attribute_list_opt
     2117        | ASM '(' string_literal_list ')' attribute_list_opt { delete $3; }     // FIX ME: unimplemented
    21242118        ;
    21252119
     
    21502144        // empty
    21512145        | any_word
    2152         | any_word '(' comma_expression_opt ')'
     2146        | any_word '(' comma_expression_opt ')' { delete $3; } // FIX ME: unimplemented
    21532147        ;
    21542148
    21552149any_word:                                                                                               // GCC
    2156         identifier_or_type_name {}
    2157         | storage_class_name {}
    2158         | basic_type_name {}
    2159         | type_qualifier {}
     2150        identifier_or_type_name { delete $1; }                          // FIX ME: unimplemented
     2151        | storage_class { delete $1; }                                          // FIX ME: unimplemented
     2152        | basic_type_name { delete $1; }                                        // FIX ME: unimplemented
     2153        | type_qualifier { delete $1; }                                         // FIX ME: unimplemented
    21602154        ;
    21612155
     
    28552849// ----end of grammar----
    28562850
     2851extern char *yytext;
     2852
    28572853void yyerror( const char * ) {
    28582854        std::cout << "Error ";
  • src/Parser/parseutility.cc

    r79841be r6943a987  
    1010// Created On       : Sat May 16 15:30:39 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 15:31:33 2015
    13 // Update Count     : 2
     12// Last Modified On : Sun Aug 14 23:45:03 2016
     13// Update Count     : 3
    1414//
    1515
     
    1717#include "SynTree/Type.h"
    1818#include "SynTree/Expression.h"
     19
     20// rewrite
     21//    if ( x ) ...
     22// as
     23//    if ( (int)(x != 0) ) ...
    1924
    2025Expression *notZeroExpr( Expression *orig ) {
Note: See TracChangeset for help on using the changeset viewer.