Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 4ed70597f55cf4d141df0e03cc994430a3b4182c)
+++ src/Parser/DeclarationNode.cc	(revision 101e0bd58a8e0c34b449fd0a68b51abc97b85acc)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Sep 11 09:24:11 2016
-// Update Count     : 438
+// Last Modified On : Wed Sep 14 23:13:28 2016
+// Update Count     : 502
 //
 
@@ -32,9 +32,11 @@
 // These must remain in the same order as the corresponding DeclarationNode enumerations.
 const char *DeclarationNode::storageName[] = { "extern", "static", "auto", "register", "inline", "fortran", "_Noreturn", "_Thread_local", "NoStorageClass" };
-const char *DeclarationNode::qualifierName[] = { "const", "restrict", "volatile", "lvalue", "_Atomic" };
-const char *DeclarationNode::basicTypeName[] = { "char", "int", "float", "double", "void", "_Bool", "_Complex", "_Imaginary",  };
-const char *DeclarationNode::modifierName[]  = { "signed", "unsigned", "short", "long" };
+const char *DeclarationNode::qualifierName[] = { "const", "restrict", "volatile", "lvalue", "_Atomic", "NoQualifier" };
+const char *DeclarationNode::basicTypeName[] = { "void", "_Bool", "char", "int", "float", "double", "long double", "NoBasicType" };
+const char *DeclarationNode::complexTypeName[] = { "_Complex", "_Imaginary", "NoComplexType" };
+const char *DeclarationNode::signednessName[] = { "signed", "unsigned", "NoSignedness" };
+const char *DeclarationNode::lengthName[] = { "short", "long", "long long", "NoLength" };
 const char *DeclarationNode::aggregateName[] = { "struct", "union", "context" };
-const char *DeclarationNode::typeClassName[] = { "type", "dtype", "ftype" };
+const char *DeclarationNode::typeClassName[] = { "otype", "dtype", "ftype" };
 const char *DeclarationNode::builtinTypeName[] = { "__builtin_va_list" };
 
@@ -53,5 +55,5 @@
 		linkage( ::linkage ),
 		extension( false ) {
-	variable.tyClass = DeclarationNode::Type;
+	variable.tyClass = DeclarationNode::Otype;
 	variable.assertions = nullptr;
 
@@ -188,14 +190,28 @@
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->type = new TypeData( TypeData::Basic );
-	newnode->type->basic.typeSpec.push_back( bt );
+	newnode->type->basictype = bt;
 	return newnode;
 } // DeclarationNode::newBasicType
 
-DeclarationNode * DeclarationNode::newModifier( Modifier mod ) {
+DeclarationNode * DeclarationNode::newComplexType( ComplexType ct ) {
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->type = new TypeData( TypeData::Basic );
-	newnode->type->basic.modifiers.push_back( mod );
-	return newnode;
-} // DeclarationNode::newModifier
+	newnode->type->complextype = ct;
+	return newnode;
+} // DeclarationNode::newComplexType
+
+DeclarationNode * DeclarationNode::newSignedNess( Signedness sn ) {
+	DeclarationNode *newnode = new DeclarationNode;
+	newnode->type = new TypeData( TypeData::Basic );
+	newnode->type->signedness = sn;
+	return newnode;
+} // DeclarationNode::newSignedNess
+
+DeclarationNode * DeclarationNode::newLength( Length lnth ) {
+	DeclarationNode *newnode = new DeclarationNode;
+	newnode->type = new TypeData( TypeData::Basic );
+	newnode->type->length = lnth;
+	return newnode;
+} // DeclarationNode::newLength
 
 DeclarationNode * DeclarationNode::newFromTypedef( std::string *name ) {
@@ -367,24 +383,9 @@
 }
 
-static void addQualifiersToType( TypeData *&src, TypeData *dst ) {
-	if ( src && dst ) {
-		if ( src->forall && dst->kind == TypeData::Function ) {
-			if ( dst->forall ) {
-				dst->forall->appendList( src->forall );
-			} else {
-				dst->forall = src->forall;
-			} // if
-			src->forall = 0;
-		} // if
-		if ( dst->base ) {
-			addQualifiersToType( src, dst->base );
-		} else if ( dst->kind == TypeData::Function ) {
-			dst->base = src;
-			src = 0;
-		} else {
-			dst->qualifiers |= src->qualifiers;
-		} // if
-	} // if
-}
+void appendError( string & dst, const string & src ) {
+	if ( src.empty() ) return;
+	if ( dst.empty() ) { dst = src; return; }
+	dst += ", " + src;
+} // appendError
 
 void DeclarationNode::checkQualifiers( const TypeData *src, const TypeData *dst ) {
@@ -392,8 +393,7 @@
 
 	if ( (qsrc & qdst).any() ) {						// common qualifier ?
-		for ( int i = 0; i < NoOfQualifier; i += 1 ) {	// find common qualifiers
-			if ( qsrc[i] & qdst[i] ) {
-				if ( ! error.empty() ) error += ", ";	// separator
-				error += string( "duplicate " ) + DeclarationNode::qualifierName[i];
+		for ( int i = 0; i < NoQualifier; i += 1 ) {	// find common qualifiers
+			if ( qsrc[i] && qdst[i] ) {
+				appendError( error, string( "duplicate " ) + DeclarationNode::qualifierName[i] );
 			} // if
 		} // for
@@ -403,22 +403,17 @@
 void DeclarationNode::checkStorageClasses( DeclarationNode *q ) {
 	if ( storageClass != NoStorageClass && q->storageClass != NoStorageClass ) {
-		if ( ! error.empty() ) error += ", ";			// separator
 		if ( storageClass == q->storageClass ) {		// duplicate qualifier
-			error += string( "duplicate " ) + storageName[ storageClass ];
+			appendError( error, string( "duplicate " ) + storageName[ storageClass ] );
 		} else {										// only one storage class
-			error += string( "conflicting " ) + storageName[ storageClass ] + " & " + storageName[ q->storageClass ];
-			q->storageClass = storageClass;				// FIX ERROR
-		} // if
-		if ( ! q->error.empty() ) error += ", " + q->error;	// separator
-	} else {
-		if ( ! error.empty() ) {
-			if ( ! q->error.empty() ) error += ", " + q->error; // separator
-		} else if ( ! q->error.empty() ) error += q->error;
-	} // if
+			appendError( error, string( "conflicting " ) + storageName[ storageClass ] + " & " + storageName[ q->storageClass ] );
+			q->storageClass = storageClass;				// FIX ERROR, prevent assertions from triggering
+		} // if
+	} // if
+	appendError( error, q->error );
 } // DeclarationNode::copyStorageClasses
 
 DeclarationNode *DeclarationNode::copyStorageClasses( DeclarationNode *q ) {
-	isInline = isInline | q->isInline;
-	isNoreturn = isNoreturn | q->isNoreturn;
+	isInline = isInline || q->isInline;
+	isNoreturn = isNoreturn || q->isNoreturn;
 	// do not overwrite an existing value with NoStorageClass
 	if ( q->storageClass != NoStorageClass ) {
@@ -429,86 +424,127 @@
 } // DeclarationNode::copyStorageClasses
 
+static void addQualifiersToType( TypeData *&src, TypeData *dst ) {
+	if ( src->forall && dst->kind == TypeData::Function ) {
+		if ( dst->forall ) {
+			dst->forall->appendList( src->forall );
+		} else {
+			dst->forall = src->forall;
+		} // if
+		src->forall = 0;
+	} // if
+	if ( dst->base ) {
+		addQualifiersToType( src, dst->base );
+	} else if ( dst->kind == TypeData::Function ) {
+		dst->base = src;
+		src = 0;
+	} else {
+		dst->qualifiers |= src->qualifiers;
+	} // if
+} // addQualifiersToType
+
 DeclarationNode *DeclarationNode::addQualifiers( DeclarationNode *q ) {
-	if ( q ) {
-		checkStorageClasses( q );
-		copyStorageClasses( q );
-		if ( q->type ) {
-			if ( ! type ) {
-				type = new TypeData;
+	if ( ! q ) return this;
+
+	checkStorageClasses( q );
+	copyStorageClasses( q );
+
+	if ( ! q->type ) { delete q; return this; }
+
+	if ( ! type ) {
+//		type = new TypeData;
+		type = q->type;
+		return this;
+	} // if
+
+	checkQualifiers( q->type, type );
+	addQualifiersToType( q->type, type );
+
+	if ( q->type->forall ) {
+		if ( type->forall ) {
+			type->forall->appendList( q->type->forall );
+		} else {
+			if ( type->kind == TypeData::Aggregate ) {
+				type->aggregate.params = q->type->forall;
+				// change implicit typedef from TYPEDEFname to TYPEGENname
+				typedefTable.changeKind( type->aggregate.name, TypedefTable::TG );
 			} else {
-				checkQualifiers( q->type, type );
+				type->forall = q->type->forall;
 			} // if
-			addQualifiersToType( q->type, type );
-			if ( q->type && q->type->forall ) {
-				if ( type->forall ) {
-					type->forall->appendList( q->type->forall );
-				} else {
-					if ( type->kind == TypeData::Aggregate ) {
-						type->aggregate.params = q->type->forall;
-						// change implicit typedef from TYPEDEFname to TYPEGENname
-						typedefTable.changeKind( type->aggregate.name, TypedefTable::TG );
-					} else {
-						type->forall = q->type->forall;
-					} // if
+		} // if
+		q->type->forall = 0;
+	} // if
+	delete q;
+	return this;
+} // addQualifiers
+
+static void addTypeToType( TypeData *&src, TypeData *&dst ) {
+	if ( src->forall && dst->kind == TypeData::Function ) {
+		if ( dst->forall ) {
+			dst->forall->appendList( src->forall );
+		} else {
+			dst->forall = src->forall;
+		} // if
+		src->forall = 0;
+	} // if
+	if ( dst->base ) {
+		addTypeToType( src, dst->base );
+	} else {
+		switch ( dst->kind ) {
+		  case TypeData::Unknown:
+			src->qualifiers |= dst->qualifiers;
+			dst = src;
+			src = 0;
+			break;
+		  case TypeData::Basic:
+			dst->qualifiers |= src->qualifiers;
+			if ( src->kind != TypeData::Unknown ) {
+				assert( src->kind == TypeData::Basic );
+
+				if ( dst->basictype == DeclarationNode::NoBasicType ) {
+					dst->basictype = src->basictype;
+				} else if ( src->basictype != DeclarationNode::NoBasicType )
+					throw SemanticError( std::string( "conflicting type specifier " ) + DeclarationNode::basicTypeName[ src->basictype ] + " in type: ", src );
+
+				if ( dst->complextype == DeclarationNode::NoComplexType ) {
+					dst->complextype = src->complextype;
+				} else if ( src->complextype != DeclarationNode::NoComplexType )
+					throw SemanticError( std::string( "conflicting type specifier " ) + DeclarationNode::complexTypeName[ src->complextype ] + " in type: ", src );
+
+				if ( dst->signedness == DeclarationNode::NoSignedness ) {
+					dst->signedness = src->signedness;
+				} else if ( src->signedness != DeclarationNode::NoSignedness )
+					throw SemanticError( std::string( "conflicting type specifier " ) + DeclarationNode::signednessName[ src->signedness ] + " in type: ", src );
+
+				if ( dst->length == DeclarationNode::NoLength ) {
+					dst->length = src->length;
+				} else if ( dst->length == DeclarationNode::Long && src->length == DeclarationNode::Long ) {
+					dst->length = DeclarationNode::LongLong;
+				} else if ( src->length != DeclarationNode::NoLength )
+					throw SemanticError( std::string( "conflicting type specifier " ) + DeclarationNode::lengthName[ src->length ] + " in type: ", src );
+			} // if
+			break;
+		  default:
+			switch ( src->kind ) {
+			  case TypeData::Aggregate:
+			  case TypeData::Enum:
+				dst->base = new TypeData( TypeData::AggregateInst );
+				dst->base->aggInst.aggregate = src;
+				if ( src->kind == TypeData::Aggregate ) {
+					dst->base->aggInst.params = maybeClone( src->aggregate.actuals );
 				} // if
-				q->type->forall = 0;
-			} // if
-		} // if
-	} // if
-	delete q;
-	return this;
-}
-
-static void addTypeToType( TypeData *&src, TypeData *&dst ) {
-	if ( src && dst ) {
-		if ( src->forall && dst->kind == TypeData::Function ) {
-			if ( dst->forall ) {
-				dst->forall->appendList( src->forall );
-			} else {
-				dst->forall = src->forall;
-			} // if
-			src->forall = 0;
-		} // if
-		if ( dst->base ) {
-			addTypeToType( src, dst->base );
-		} else {
-			switch ( dst->kind ) {
-			  case TypeData::Unknown:
-				src->qualifiers |= dst->qualifiers;
-				dst = src;
+				dst->base->qualifiers |= src->qualifiers;
 				src = 0;
 				break;
-			  case TypeData::Basic:
-				dst->qualifiers |= src->qualifiers;
-				if ( src->kind != TypeData::Unknown ) {
-					assert( src->kind == TypeData::Basic );
-					dst->basic.modifiers.splice( dst->basic.modifiers.end(), src->basic.modifiers );
-					dst->basic.typeSpec.splice( dst->basic.typeSpec.end(), src->basic.typeSpec );
+			  default:
+				if ( dst->forall ) {
+					dst->forall->appendList( src->forall );
+				} else {
+					dst->forall = src->forall;
 				} // if
-				break;
-			  default:
-				switch ( src->kind ) {
-				  case TypeData::Aggregate:
-				  case TypeData::Enum:
-					dst->base = new TypeData( TypeData::AggregateInst );
-					dst->base->aggInst.aggregate = src;
-					if ( src->kind == TypeData::Aggregate ) {
-						dst->base->aggInst.params = maybeClone( src->aggregate.actuals );
-					} // if
-					dst->base->qualifiers |= src->qualifiers;
-					src = 0;
-					break;
-				  default:
-					if ( dst->forall ) {
-						dst->forall->appendList( src->forall );
-					} else {
-						dst->forall = src->forall;
-					} // if
-					src->forall = 0;
-					dst->base = src;
-					src = 0;
-				} // switch
+				src->forall = 0;
+				dst->base = src;
+				src = 0;
 			} // switch
-		} // if
+		} // switch
 	} // if
 }
@@ -875,12 +911,4 @@
 	while ( cur ) {
 		try {
-///       if ( DeclarationNode *extr = cur->extractAggregate() ) {
-/// 	// handle the case where a structure declaration is contained within an object or type
-/// 	// declaration
-/// 	Declaration *decl = extr->build();
-/// 	if ( decl ) {
-///          *out++ = decl;
-/// 	}
-///       }
 			Declaration *decl = cur->build();
 			if ( decl ) {
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 4ed70597f55cf4d141df0e03cc994430a3b4182c)
+++ src/Parser/ParseNode.h	(revision 101e0bd58a8e0c34b449fd0a68b51abc97b85acc)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Sep 10 17:14:37 2016
-// Update Count     : 589
+// Last Modified On : Mon Sep 12 08:00:05 2016
+// Update Count     : 603
 //
 
@@ -196,16 +196,21 @@
 class DeclarationNode : public ParseNode {
   public:
-	enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic, NoOfQualifier };
+	// These must remain in the same order as the corresponding DeclarationNode names.
 	enum StorageClass { Extern, Static, Auto, Register, Inline, Fortran, Noreturn, Threadlocal, NoStorageClass, };
-	enum BasicType { Char, Int, Float, Double, Void, Bool, Complex, Imaginary };
-	enum Modifier  { Signed, Unsigned, Short, Long };
+	enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic, NoQualifier };
+	enum BasicType { Void, Bool, Char, Int, Float, Double, LongDouble, NoBasicType };
+	enum ComplexType { Complex, Imaginary, NoComplexType };
+	enum Signedness { Signed, Unsigned, NoSignedness };
+	enum Length { Short, Long, LongLong, NoLength };
 	enum Aggregate { Struct, Union, Trait };
-	enum TypeClass { Type, Dtype, Ftype };
+	enum TypeClass { Otype, Dtype, Ftype };
 	enum BuiltinType { Valist };
 
+	static const char * storageName[];
 	static const char * qualifierName[];
-	static const char * storageName[];
 	static const char * basicTypeName[];
-	static const char * modifierName[];
+	static const char * complexTypeName[];
+	static const char * signednessName[];
+	static const char * lengthName[];
 	static const char * aggregateName[];
 	static const char * typeClassName[];
@@ -217,5 +222,7 @@
 	static DeclarationNode * newStorageClass( StorageClass );
 	static DeclarationNode * newBasicType( BasicType );
-	static DeclarationNode * newModifier( Modifier );
+	static DeclarationNode * newComplexType( ComplexType );
+	static DeclarationNode * newSignedNess( Signedness sn );
+	static DeclarationNode * newLength( Length lnth );
 	static DeclarationNode * newBuiltinType( BuiltinType );
 	static DeclarationNode * newFromTypedef( std::string *);
@@ -309,5 +316,4 @@
 	TypeData * type;
 	std::string name;
-	// std::list< StorageClass > storageClasses;
 	StorageClass storageClass;
 	bool isInline, isNoreturn;
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision 4ed70597f55cf4d141df0e03cc994430a3b4182c)
+++ src/Parser/TypeData.cc	(revision 101e0bd58a8e0c34b449fd0a68b51abc97b85acc)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:12:51 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Aug 29 22:31:53 2016
-// Update Count     : 277
+// Last Modified On : Mon Sep 12 21:11:22 2016
+// Update Count     : 377
 //
 
@@ -178,6 +178,8 @@
 		break;
 	  case Basic:
-		newtype->basic.typeSpec = basic.typeSpec;
-		newtype->basic.modifiers = basic.modifiers;
+		newtype->basictype = basictype;
+		newtype->complextype = complextype;
+		newtype->signedness = signedness;
+		newtype->length = length;
 		break;
 	  case Array:
@@ -247,5 +249,5 @@
 	using std::string;
 
-	for ( int i = 0; i < DeclarationNode::NoOfQualifier; i += 1 ) {
+	for ( int i = 0; i < DeclarationNode::NoQualifier; i += 1 ) {
 		if ( qualifiers[i] ) os << DeclarationNode::qualifierName[ i ] << ' ';
 	} // for
@@ -271,6 +273,9 @@
 		break;
 	  case Basic:
-		printEnums( basic.modifiers.begin(), basic.modifiers.end(), DeclarationNode::modifierName, os );
-		printEnums( basic.typeSpec.begin(), basic.typeSpec.end(), DeclarationNode::basicTypeName, os );
+		if ( signedness != DeclarationNode::NoSignedness ) os << DeclarationNode::signednessName[ signedness ] << " ";
+		if ( length != DeclarationNode::NoLength ) os << DeclarationNode::lengthName[ length ] << " ";
+		assert( basictype != DeclarationNode::NoBasicType );
+		os << DeclarationNode::basicTypeName[ basictype ] << " ";
+		if ( complextype != DeclarationNode::NoComplexType ) os << DeclarationNode::complexTypeName[ complextype ] << " ";
 		break;
 	  case Array:
@@ -418,5 +423,5 @@
 		break;
 	  default:
-		os << "internal error: TypeData::print " << kind  << endl;
+		os << "internal error: TypeData::print " << kind << endl;
 		assert( false );
 	} // switch
@@ -531,205 +536,90 @@
 
 Type * buildBasicType( const TypeData * td ) {
-	static const BasicType::Kind kindMap[] = { BasicType::Char, BasicType::SignedInt, BasicType::Float, BasicType::Double,
-											   BasicType::Char /* void */, BasicType::Bool, BasicType::DoubleComplex,
-											   BasicType::DoubleImaginary };
-	bool init = false;
-	bool sawDouble = false;
-	bool sawSigned = false;
 	BasicType::Kind ret;
 
-	for ( std::list< DeclarationNode::BasicType >::const_iterator i = td->basic.typeSpec.begin(); i != td->basic.typeSpec.end(); ++i ) {
-		if ( ! init ) {
-			init = true;
-			if ( *i == DeclarationNode::Void ) {
-				if ( td->basic.typeSpec.size() != 1 || ! td->basic.modifiers.empty() ) {
-					throw SemanticError( "invalid type specifier \"void\" in type: ", td );
-				} else {
-					return new VoidType( buildQualifiers( td ) );
-				} // if
-			} else {
-				ret = kindMap[ *i ];
-			} // if
-		} else {
-			switch ( *i ) {
-			  case DeclarationNode::Float:
-				if ( sawDouble ) {
-					throw SemanticError( "invalid type specifier \"float\" in type: ", td );
-				} else {
-					switch ( ret ) {
-					  case BasicType::DoubleComplex:
-						ret = BasicType::FloatComplex;
-						break;
-					  case BasicType::DoubleImaginary:
-						ret = BasicType::FloatImaginary;
-						break;
-					  default:
-						throw SemanticError( "invalid type specifier \"float\" in type: ", td );
-					} // switch
-				} // if
-				break;
-			  case DeclarationNode::Double:
-				if ( sawDouble ) {
-					throw SemanticError( "duplicate type specifier \"double\" in type: ", td );
-				} else {
-					switch ( ret ) {
-					  case BasicType::DoubleComplex:
-					  case BasicType::DoubleImaginary:
-						break;
-					  default:
-						throw SemanticError( "invalid type specifier \"double\" in type: ", td );
-					} // switch
-				} // if
-				break;
-			  case DeclarationNode::Complex:
-				switch ( ret ) {
-				  case BasicType::Float:
-					ret = BasicType::FloatComplex;
-					break;
-				  case BasicType::Double:
-					ret = BasicType::DoubleComplex;
-					break;
-				  default:
-					throw SemanticError( "invalid type specifier \"_Complex\" in type: ", td );
-				} // switch
-				break;
-			  case DeclarationNode::Imaginary:
-				switch ( ret ) {
-				  case BasicType::Float:
-					ret = BasicType::FloatImaginary;
-					break;
-				  case BasicType::Double:
-					ret = BasicType::DoubleImaginary;
-					break;
-				  default:
-					throw SemanticError( "invalid type specifier \"_Imaginary\" in type: ", td );
-				} // switch
-				break;
-			  default:
-				throw SemanticError( std::string( "invalid type specifier \"" ) + DeclarationNode::basicTypeName[ *i ] + "\" in type: ", td );
-			} // switch
-		} // if
-		if ( *i == DeclarationNode::Double ) {
-			sawDouble = true;
-		} // if
-	} // for
-
-	for ( std::list< DeclarationNode::Modifier >::const_iterator i = td->basic.modifiers.begin(); i != td->basic.modifiers.end(); ++i ) {
-		switch ( *i ) {
-		  case DeclarationNode::Long:
-			if ( ! init ) {
-				init = true;
-				ret = BasicType::LongSignedInt;
-			} else {
-				switch ( ret ) {
-				  case BasicType::SignedInt:
-					ret = BasicType::LongSignedInt;
-					break;
-				  case BasicType::UnsignedInt:
-					ret = BasicType::LongUnsignedInt;
-					break;
-				  case BasicType::LongSignedInt:
-					ret = BasicType::LongLongSignedInt;
-					break;
-				  case BasicType::LongUnsignedInt:
-					ret = BasicType::LongLongUnsignedInt;
-					break;
-				  case BasicType::Double:
-					ret = BasicType::LongDouble;
-					break;
-				  case BasicType::DoubleComplex:
-					ret = BasicType::LongDoubleComplex;
-					break;
-				  case BasicType::DoubleImaginary:
-					ret = BasicType::LongDoubleImaginary;
-					break;
-				  default:
-					throw SemanticError( "invalid type modifier \"long\" in type: ", td );
-				} // switch
-			} // if
-			break;
-		  case DeclarationNode::Short:
-			if ( ! init ) {
-				init = true;
-				ret = BasicType::ShortSignedInt;
-			} else {
-				switch ( ret ) {
-				  case BasicType::SignedInt:
-					ret = BasicType::ShortSignedInt;
-					break;
-				  case BasicType::UnsignedInt:
-					ret = BasicType::ShortUnsignedInt;
-					break;
-				  default:
-					throw SemanticError( "invalid type modifier \"short\" in type: ", td );
-				} // switch
-			} // if
-			break;
-		  case DeclarationNode::Signed:
-			if ( ! init ) {
-				init = true;
-				ret = BasicType::SignedInt;
-			} else if ( sawSigned ) {
-				throw SemanticError( "duplicate type modifer \"signed\" in type: ", td );
-			} else {
-				switch ( ret ) {
-				  case BasicType::LongLongSignedInt:
-					ret = BasicType::LongLongUnsignedInt;
-					break;
-				  case BasicType::LongSignedInt:
-					ret = BasicType::LongUnsignedInt;
-					break;
-				  case BasicType::SignedInt:
-				  case BasicType::ShortSignedInt:
-					break;
-				  case BasicType::Char:
-					ret = BasicType::SignedChar;
-					break;
-				  default:
-					throw SemanticError( "invalid type modifer \"signed\" in type: ", td );
-				} // switch
-			} // if
-			break;
-		  case DeclarationNode::Unsigned:
-			if ( ! init ) {
-				init = true;
-				ret = BasicType::UnsignedInt;
-			} else if ( sawSigned ) {
-				throw SemanticError( "invalid type modifer \"unsigned\" in type: ", td );
-			} else {
-				switch ( ret ) {
-				  case BasicType::LongLongSignedInt:
-					ret = BasicType::LongLongUnsignedInt;
-					break;
-				  case BasicType::LongSignedInt:
-					ret = BasicType::LongUnsignedInt;
-					break;
-				  case BasicType::SignedInt:
-					ret = BasicType::UnsignedInt;
-					break;
-				  case BasicType::ShortSignedInt:
-					ret = BasicType::ShortUnsignedInt;
-					break;
-				  case BasicType::Char:
-					ret = BasicType::UnsignedChar;
-					break;
-				  default:
-					throw SemanticError( "invalid type modifer \"unsigned\" in type: ", td );
-				} // switch
-			} // if
-			break;
-		} // switch
-
-		if ( *i == DeclarationNode::Signed ) {
-			sawSigned = true;
-		} // if
-	} // for
-
-	BasicType * bt;
-	if ( ! init ) {
-		bt = new BasicType( buildQualifiers( td ), BasicType::SignedInt );
-	} else {
-		bt = new BasicType( buildQualifiers( td ), ret );
-	} // if
+	switch ( td->basictype ) {
+	  case DeclarationNode::Void:
+		if ( td->signedness != DeclarationNode::NoSignedness && td->length != DeclarationNode::NoLength ) {
+			throw SemanticError( "invalid type specifier \"void\" in type: ", td );
+		} // if
+
+		return new VoidType( buildQualifiers( td ) );
+		break;
+
+	  case DeclarationNode::Bool:
+		if ( td->signedness != DeclarationNode::NoSignedness ) {
+			throw SemanticError( std::string( "invalid type specifier " ) + DeclarationNode::signednessName[ td->signedness ] + " in type: ", td );
+		} // if
+		if ( td->length != DeclarationNode::NoLength ) {
+			throw SemanticError( std::string( "invalid type specifier " ) + DeclarationNode::lengthName[ td->length ] + " in type: ", td );
+		} // if
+
+		ret = BasicType::Bool;
+		break;
+
+	  case DeclarationNode::Char:
+		// C11 Standard 6.2.5.15: The three types char, signed char, and unsigned char are collectively called the
+		// character types. The implementation shall define char to have the same range, representation, and behavior as
+		// either signed char or unsigned char.
+		static BasicType::Kind chartype[] = { BasicType::SignedChar, BasicType::UnsignedChar, BasicType::Char }; 
+
+		if ( td->length != DeclarationNode::NoLength ) {
+			throw SemanticError( std::string( "invalid type specifier " ) + DeclarationNode::lengthName[ td->length ] + " in type: ", td );
+		} // if
+
+		ret = chartype[ td->signedness ];
+		break;
+
+	  case DeclarationNode::Int:
+		static BasicType::Kind inttype[2][4] = {
+			{ BasicType::ShortSignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt, BasicType::SignedInt },
+			{ BasicType::ShortUnsignedInt, BasicType::LongUnsignedInt, BasicType::LongLongUnsignedInt, BasicType::UnsignedInt },
+		};
+
+	  Integral: ;
+		if ( td->signedness == DeclarationNode::NoSignedness ) {
+			const_cast<TypeData *>(td)->signedness = DeclarationNode::Signed;
+		} // if
+		ret = inttype[ td->signedness ][ td->length ];
+		break;
+
+	  case DeclarationNode::Float:
+	  case DeclarationNode::Double:
+	  case DeclarationNode::LongDouble:					// not set until below
+		static BasicType::Kind floattype[3][3] = {
+			{ BasicType::FloatComplex, BasicType::DoubleComplex, BasicType::LongDoubleComplex },
+			{ BasicType::FloatImaginary, BasicType::DoubleImaginary, BasicType::LongDoubleImaginary },
+			{ BasicType::Float, BasicType::Double, BasicType::LongDouble },
+		};
+
+	  FloatingPoint: ;
+		if ( td->signedness != DeclarationNode::NoSignedness ) {
+			throw SemanticError( std::string( "invalid type specifier " ) + DeclarationNode::signednessName[ td->signedness ] + " in type: ", td );
+		} // if
+		if ( td->length == DeclarationNode::Short || td->length == DeclarationNode::LongLong ) {
+			throw SemanticError( std::string( "invalid type specifier " ) + DeclarationNode::lengthName[ td->length ] + " in type: ", td );
+		} // if
+		if ( td->basictype == DeclarationNode::Float && td->length == DeclarationNode::Long ) {
+			throw SemanticError( "invalid type specifier \"long\" in type: ", td );
+		} // if
+		if ( td->length == DeclarationNode::Long ) {
+			const_cast<TypeData *>(td)->basictype = DeclarationNode::LongDouble;
+		} // if
+
+		ret = floattype[ td->complextype ][ td->basictype - DeclarationNode::Float ];
+		break;
+
+	  case DeclarationNode::NoBasicType:
+		// No basic type in declaration => default double for Complex/Imaginary and int type for integral types
+		if ( td->complextype == DeclarationNode::Complex || td->complextype == DeclarationNode::Imaginary ) {
+			const_cast<TypeData *>(td)->basictype = DeclarationNode::Double;
+			goto FloatingPoint;
+		} // if
+
+		const_cast<TypeData *>(td)->basictype = DeclarationNode::Int;
+		goto Integral;
+	} // switch
+
+	BasicType * bt = new BasicType( buildQualifiers( td ), ret );
 	buildForall( td->forall, bt->get_forall() );
 	return bt;
Index: src/Parser/TypeData.h
===================================================================
--- src/Parser/TypeData.h	(revision 4ed70597f55cf4d141df0e03cc994430a3b4182c)
+++ src/Parser/TypeData.h	(revision 101e0bd58a8e0c34b449fd0a68b51abc97b85acc)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:18:36 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Sep 10 09:42:54 2016
-// Update Count     : 118
+// Last Modified On : Mon Sep 12 17:15:49 2016
+// Update Count     : 129
 //
 
@@ -25,9 +25,4 @@
 	enum Kind { Unknown, Basic, Pointer, Array, Function, Aggregate, AggregateInst,
 				Enum, EnumConstant, Symbolic, SymbolicInst, Variable, Tuple, Typeof, Builtin, Attr };
-
-	struct Basic_t {
-		std::list< DeclarationNode::BasicType > typeSpec;
-		std::list< DeclarationNode::Modifier > modifiers;
-	};
 
 	struct Aggregate_t {
@@ -73,25 +68,15 @@
 	};
 
-	// struct Tuple_t {
-	// 	DeclarationNode * members;
-	// };
-  
-	// struct Typeof_t {
-	// 	ExpressionNode * expr;
-	// };
-
-	// struct Builtin_t {
-	// 	DeclarationNode::BuiltinType type;
-	// };
-
 	Kind kind;
 	TypeData * base;
-	typedef std::bitset< DeclarationNode::NoOfQualifier > Qualifiers;
+	DeclarationNode::BasicType basictype = DeclarationNode::NoBasicType;
+	DeclarationNode::ComplexType complextype = DeclarationNode::NoComplexType;
+	DeclarationNode::Signedness signedness = DeclarationNode::NoSignedness;
+	DeclarationNode::Length length = DeclarationNode::NoLength;
+	typedef std::bitset< DeclarationNode::NoQualifier > Qualifiers;
 	Qualifiers qualifiers;
-	typedef std::bitset< DeclarationNode::NoStorageClass > StorageClasses;
-	StorageClasses storageclasses;
 	DeclarationNode * forall;
 
-		Basic_t basic;
+		// Basic_t basic;
 		Aggregate_t aggregate;
 		AggInst_t aggInst;
Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision 4ed70597f55cf4d141df0e03cc994430a3b4182c)
+++ 	(revision )
@@ -1,8370 +1,0 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
-
-/* Bison implementation for Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* As a special exception, you may create a larger work that contains
-   part or all of the Bison parser skeleton and distribute that work
-   under terms of your choice, so long as that work isn't itself a
-   parser generator using the skeleton or a modified version thereof
-   as a parser skeleton.  Alternatively, if you modify or redistribute
-   the parser skeleton itself, you may (at your option) remove this
-   special exception, which will cause the skeleton and the resulting
-   Bison output files to be licensed under the GNU General Public
-   License without this special exception.
-
-   This special exception was added by the Free Software Foundation in
-   version 2.2 of Bison.  */
-
-/* C LALR(1) parser skeleton written by Richard Stallman, by
-   simplifying the original so-called "semantic" parser.  */
-
-/* All symbols defined below should begin with yy or YY, to avoid
-   infringing on user name space.  This should be done even for local
-   variables, as they might otherwise be expanded by user macros.
-   There are some unavoidable exceptions within include files to
-   define necessary library symbols; they are noted "INFRINGES ON
-   USER NAME SPACE" below.  */
-
-/* Identify Bison output.  */
-#define YYBISON 1
-
-/* Bison version.  */
-#define YYBISON_VERSION "3.0.2"
-
-/* Skeleton name.  */
-#define YYSKELETON_NAME "yacc.c"
-
-/* Pure parsers.  */
-#define YYPURE 0
-
-/* Push parsers.  */
-#define YYPUSH 0
-
-/* Pull parsers.  */
-#define YYPULL 1
-
-
-
-
-/* Copy the first part of user declarations.  */
-#line 42 "parser.yy" /* yacc.c:339  */
-
-#define YYDEBUG_LEXER_TEXT (yylval)						// lexer loads this up each time
-#define YYDEBUG 1										// get the pretty debugging code to compile
-
-#undef __GNUC_MINOR__
-
-#include <cstdio>
-#include <stack>
-#include "lex.h"
-#include "parser.h"
-#include "ParseNode.h"
-#include "TypedefTable.h"
-#include "TypeData.h"
-#include "LinkageSpec.h"
-
-extern DeclarationNode * parseTree;
-extern LinkageSpec::Spec linkage;
-extern TypedefTable typedefTable;
-
-std::stack< LinkageSpec::Spec > linkageStack;
-
-void appendStr( std::string *to, std::string *from ) {
-	// "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
-	to->insert( to->length() - 1, from->substr( 1, from->length() - 2 ) );
-} // appendStr
-
-#line 93 "Parser/parser.cc" /* yacc.c:339  */
-
-# ifndef YY_NULLPTR
-#  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULLPTR nullptr
-#  else
-#   define YY_NULLPTR 0
-#  endif
-# endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* In a future release of Bison, this section will be replaced
-   by #include "y.tab.h".  */
-#ifndef YY_YY_Y_TAB_H_INCLUDED
-# define YY_YY_Y_TAB_H_INCLUDED
-/* Debug traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 1
-#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Token type.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-  enum yytokentype
-  {
-    TYPEDEF = 258,
-    AUTO = 259,
-    EXTERN = 260,
-    REGISTER = 261,
-    STATIC = 262,
-    INLINE = 263,
-    FORTRAN = 264,
-    CONST = 265,
-    VOLATILE = 266,
-    RESTRICT = 267,
-    FORALL = 268,
-    LVALUE = 269,
-    VOID = 270,
-    CHAR = 271,
-    SHORT = 272,
-    INT = 273,
-    LONG = 274,
-    FLOAT = 275,
-    DOUBLE = 276,
-    SIGNED = 277,
-    UNSIGNED = 278,
-    VALIST = 279,
-    BOOL = 280,
-    COMPLEX = 281,
-    IMAGINARY = 282,
-    TYPEOF = 283,
-    LABEL = 284,
-    ENUM = 285,
-    STRUCT = 286,
-    UNION = 287,
-    OTYPE = 288,
-    FTYPE = 289,
-    DTYPE = 290,
-    TRAIT = 291,
-    SIZEOF = 292,
-    OFFSETOF = 293,
-    ATTRIBUTE = 294,
-    EXTENSION = 295,
-    IF = 296,
-    ELSE = 297,
-    SWITCH = 298,
-    CASE = 299,
-    DEFAULT = 300,
-    DO = 301,
-    WHILE = 302,
-    FOR = 303,
-    BREAK = 304,
-    CONTINUE = 305,
-    GOTO = 306,
-    RETURN = 307,
-    CHOOSE = 308,
-    DISABLE = 309,
-    ENABLE = 310,
-    FALLTHRU = 311,
-    TRY = 312,
-    CATCH = 313,
-    CATCHRESUME = 314,
-    FINALLY = 315,
-    THROW = 316,
-    THROWRESUME = 317,
-    AT = 318,
-    ASM = 319,
-    ALIGNAS = 320,
-    ALIGNOF = 321,
-    ATOMIC = 322,
-    GENERIC = 323,
-    NORETURN = 324,
-    STATICASSERT = 325,
-    THREADLOCAL = 326,
-    IDENTIFIER = 327,
-    QUOTED_IDENTIFIER = 328,
-    TYPEDEFname = 329,
-    TYPEGENname = 330,
-    ATTR_IDENTIFIER = 331,
-    ATTR_TYPEDEFname = 332,
-    ATTR_TYPEGENname = 333,
-    INTEGERconstant = 334,
-    FLOATINGconstant = 335,
-    CHARACTERconstant = 336,
-    STRINGliteral = 337,
-    ZERO = 338,
-    ONE = 339,
-    ARROW = 340,
-    ICR = 341,
-    DECR = 342,
-    LS = 343,
-    RS = 344,
-    LE = 345,
-    GE = 346,
-    EQ = 347,
-    NE = 348,
-    ANDAND = 349,
-    OROR = 350,
-    ELLIPSIS = 351,
-    MULTassign = 352,
-    DIVassign = 353,
-    MODassign = 354,
-    PLUSassign = 355,
-    MINUSassign = 356,
-    LSassign = 357,
-    RSassign = 358,
-    ANDassign = 359,
-    ERassign = 360,
-    ORassign = 361,
-    ATassign = 362,
-    THEN = 363
-  };
-#endif
-/* Tokens.  */
-#define TYPEDEF 258
-#define AUTO 259
-#define EXTERN 260
-#define REGISTER 261
-#define STATIC 262
-#define INLINE 263
-#define FORTRAN 264
-#define CONST 265
-#define VOLATILE 266
-#define RESTRICT 267
-#define FORALL 268
-#define LVALUE 269
-#define VOID 270
-#define CHAR 271
-#define SHORT 272
-#define INT 273
-#define LONG 274
-#define FLOAT 275
-#define DOUBLE 276
-#define SIGNED 277
-#define UNSIGNED 278
-#define VALIST 279
-#define BOOL 280
-#define COMPLEX 281
-#define IMAGINARY 282
-#define TYPEOF 283
-#define LABEL 284
-#define ENUM 285
-#define STRUCT 286
-#define UNION 287
-#define OTYPE 288
-#define FTYPE 289
-#define DTYPE 290
-#define TRAIT 291
-#define SIZEOF 292
-#define OFFSETOF 293
-#define ATTRIBUTE 294
-#define EXTENSION 295
-#define IF 296
-#define ELSE 297
-#define SWITCH 298
-#define CASE 299
-#define DEFAULT 300
-#define DO 301
-#define WHILE 302
-#define FOR 303
-#define BREAK 304
-#define CONTINUE 305
-#define GOTO 306
-#define RETURN 307
-#define CHOOSE 308
-#define DISABLE 309
-#define ENABLE 310
-#define FALLTHRU 311
-#define TRY 312
-#define CATCH 313
-#define CATCHRESUME 314
-#define FINALLY 315
-#define THROW 316
-#define THROWRESUME 317
-#define AT 318
-#define ASM 319
-#define ALIGNAS 320
-#define ALIGNOF 321
-#define ATOMIC 322
-#define GENERIC 323
-#define NORETURN 324
-#define STATICASSERT 325
-#define THREADLOCAL 326
-#define IDENTIFIER 327
-#define QUOTED_IDENTIFIER 328
-#define TYPEDEFname 329
-#define TYPEGENname 330
-#define ATTR_IDENTIFIER 331
-#define ATTR_TYPEDEFname 332
-#define ATTR_TYPEGENname 333
-#define INTEGERconstant 334
-#define FLOATINGconstant 335
-#define CHARACTERconstant 336
-#define STRINGliteral 337
-#define ZERO 338
-#define ONE 339
-#define ARROW 340
-#define ICR 341
-#define DECR 342
-#define LS 343
-#define RS 344
-#define LE 345
-#define GE 346
-#define EQ 347
-#define NE 348
-#define ANDAND 349
-#define OROR 350
-#define ELLIPSIS 351
-#define MULTassign 352
-#define DIVassign 353
-#define MODassign 354
-#define PLUSassign 355
-#define MINUSassign 356
-#define LSassign 357
-#define RSassign 358
-#define ANDassign 359
-#define ERassign 360
-#define ORassign 361
-#define ATassign 362
-#define THEN 363
-
-/* Value type.  */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
-union YYSTYPE
-{
-#line 115 "parser.yy" /* yacc.c:355  */
-
-	Token tok;
-	ParseNode *pn;
-	ExpressionNode *en;
-	DeclarationNode *decl;
-	DeclarationNode::Aggregate aggKey;
-	DeclarationNode::TypeClass tclass;
-	StatementNode *sn;
-	ConstantExpr *constant;
-	ForCtl *fctl;
-	LabelNode *label;
-	InitializerNode *in;
-	OperKinds op;
-	std::string *str;
-	bool flag;
-
-#line 366 "Parser/parser.cc" /* yacc.c:355  */
-};
-# define YYSTYPE_IS_TRIVIAL 1
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
-
-extern YYSTYPE yylval;
-
-int yyparse (void);
-
-#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
-
-/* Copy the second part of user declarations.  */
-
-#line 381 "Parser/parser.cc" /* yacc.c:358  */
-
-#ifdef short
-# undef short
-#endif
-
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
-#endif
-
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#else
-typedef signed char yytype_int8;
-#endif
-
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
-#endif
-
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
-#else
-typedef short int yytype_int16;
-#endif
-
-#ifndef YYSIZE_T
-# ifdef __SIZE_TYPE__
-#  define YYSIZE_T __SIZE_TYPE__
-# elif defined size_t
-#  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYSIZE_T size_t
-# else
-#  define YYSIZE_T unsigned int
-# endif
-#endif
-
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-
-#ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
-#  if ENABLE_NLS
-#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
-#  endif
-# endif
-# ifndef YY_
-#  define YY_(Msgid) Msgid
-# endif
-#endif
-
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__                                               \
-      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
-     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
-# else
-#  define YY_ATTRIBUTE(Spec) /* empty */
-# endif
-#endif
-
-#ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
-#endif
-
-#ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
-#endif
-
-#if !defined _Noreturn \
-     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-#  define _Noreturn __declspec (noreturn)
-# else
-#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
-# endif
-#endif
-
-/* Suppress unused-variable warnings by "using" E.  */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
-#else
-# define YYUSE(E) /* empty */
-#endif
-
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
-/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
-    _Pragma ("GCC diagnostic push") \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
-    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
-    _Pragma ("GCC diagnostic pop")
-#else
-# define YY_INITIAL_VALUE(Value) Value
-#endif
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
-#endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
-
-
-#if ! defined yyoverflow || YYERROR_VERBOSE
-
-/* The parser invokes alloca or malloc; define the necessary symbols.  */
-
-# ifdef YYSTACK_USE_ALLOCA
-#  if YYSTACK_USE_ALLOCA
-#   ifdef __GNUC__
-#    define YYSTACK_ALLOC __builtin_alloca
-#   elif defined __BUILTIN_VA_ARG_INCR
-#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-#   elif defined _AIX
-#    define YYSTACK_ALLOC __alloca
-#   elif defined _MSC_VER
-#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-#    define alloca _alloca
-#   else
-#    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
-#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
-#     ifndef EXIT_SUCCESS
-#      define EXIT_SUCCESS 0
-#     endif
-#    endif
-#   endif
-#  endif
-# endif
-
-# ifdef YYSTACK_ALLOC
-   /* Pacify GCC's 'empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-    /* The OS might guarantee only one guard page at the bottom of the stack,
-       and a page size can be as small as 4096 bytes.  So we cannot safely
-       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
-       to allow for a few compiler-allocated temporary stack slots.  */
-#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
-#  endif
-# else
-#  define YYSTACK_ALLOC YYMALLOC
-#  define YYSTACK_FREE YYFREE
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-#  endif
-#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
-       && ! ((defined YYMALLOC || defined malloc) \
-             && (defined YYFREE || defined free)))
-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef EXIT_SUCCESS
-#    define EXIT_SUCCESS 0
-#   endif
-#  endif
-#  ifndef YYMALLOC
-#   define YYMALLOC malloc
-#   if ! defined malloc && ! defined EXIT_SUCCESS
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-#  ifndef YYFREE
-#   define YYFREE free
-#   if ! defined free && ! defined EXIT_SUCCESS
-void free (void *); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-# endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
-
-#if (! defined yyoverflow \
-     && (! defined __cplusplus \
-         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member.  */
-union yyalloc
-{
-  yytype_int16 yyss_alloc;
-  YYSTYPE yyvs_alloc;
-};
-
-/* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
-   N elements.  */
-# define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
-      + YYSTACK_GAP_MAXIMUM)
-
-# define YYCOPY_NEEDED 1
-
-/* Relocate STACK from its old location to the new one.  The
-   local variables YYSIZE and YYSTACKSIZE give the old and new number of
-   elements in the stack, and YYPTR gives the new location of the
-   stack.  Advance YYPTR to a properly aligned location for the next
-   stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
-    do                                                                  \
-      {                                                                 \
-        YYSIZE_T yynewbytes;                                            \
-        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
-        Stack = &yyptr->Stack_alloc;                                    \
-        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-        yyptr += yynewbytes / sizeof (*yyptr);                          \
-      }                                                                 \
-    while (0)
-
-#endif
-
-#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from SRC to DST.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(Dst, Src, Count) \
-      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
-#  else
-#   define YYCOPY(Dst, Src, Count)              \
-      do                                        \
-        {                                       \
-          YYSIZE_T yyi;                         \
-          for (yyi = 0; yyi < (Count); yyi++)   \
-            (Dst)[yyi] = (Src)[yyi];            \
-        }                                       \
-      while (0)
-#  endif
-# endif
-#endif /* !YYCOPY_NEEDED */
-
-/* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  250
-/* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   10863
-
-/* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  133
-/* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  241
-/* YYNRULES -- Number of rules.  */
-#define YYNRULES  751
-/* YYNSTATES -- Number of states.  */
-#define YYNSTATES  1555
-
-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
-   by yylex, with out-of-bounds checking.  */
-#define YYUNDEFTOK  2
-#define YYMAXUTOK   363
-
-#define YYTRANSLATE(YYX)                                                \
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
-/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex, without out-of-bounds checking.  */
-static const yytype_uint8 yytranslate[] =
-{
-       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   121,     2,     2,     2,   124,   118,     2,
-     109,   110,   117,   119,   116,   120,   113,   123,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   130,   132,
-     125,   131,   126,   129,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   111,     2,   112,   127,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   114,   128,   115,   122,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108
-};
-
-#if YYDEBUG
-  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
-{
-       0,   300,   300,   304,   311,   312,   313,   317,   318,   319,
-     323,   324,   328,   329,   333,   334,   338,   342,   343,   354,
-     356,   358,   360,   365,   366,   372,   376,   378,   379,   381,
-     382,   384,   386,   388,   397,   398,   404,   405,   409,   410,
-     414,   418,   420,   422,   424,   429,   432,   434,   436,   441,
-     454,   456,   458,   460,   462,   464,   466,   468,   470,   472,
-     474,   481,   482,   488,   489,   490,   491,   495,   496,   498,
-     503,   504,   506,   508,   513,   514,   516,   521,   522,   524,
-     529,   530,   532,   534,   536,   541,   542,   544,   549,   550,
-     555,   556,   561,   562,   567,   568,   573,   574,   579,   580,
-     583,   585,   590,   595,   596,   598,   604,   605,   609,   610,
-     611,   612,   613,   614,   615,   616,   617,   618,   619,   620,
-     626,   628,   630,   632,   637,   638,   643,   644,   650,   651,
-     657,   658,   659,   660,   661,   662,   663,   664,   665,   675,
-     682,   684,   694,   695,   700,   702,   708,   710,   714,   715,
-     720,   725,   728,   730,   732,   742,   744,   755,   756,   758,
-     762,   764,   768,   769,   774,   775,   779,   784,   785,   789,
-     791,   797,   798,   802,   804,   806,   808,   814,   815,   819,
-     821,   826,   828,   830,   835,   837,   842,   844,   848,   851,
-     855,   858,   862,   864,   866,   868,   873,   875,   877,   882,
-     884,   886,   888,   890,   895,   897,   899,   901,   906,   918,
-     919,   924,   926,   931,   935,   937,   939,   941,   943,   949,
-     950,   956,   957,   961,   962,   967,   969,   975,   976,   978,
-     983,   988,   998,  1000,  1004,  1005,  1010,  1012,  1016,  1017,
-    1021,  1023,  1027,  1028,  1032,  1033,  1037,  1038,  1053,  1054,
-    1055,  1056,  1057,  1061,  1066,  1073,  1083,  1088,  1093,  1101,
-    1106,  1111,  1116,  1121,  1129,  1151,  1156,  1163,  1165,  1172,
-    1177,  1182,  1193,  1198,  1203,  1208,  1213,  1222,  1227,  1235,
-    1236,  1237,  1238,  1244,  1249,  1257,  1258,  1259,  1260,  1264,
-    1265,  1266,  1267,  1272,  1273,  1282,  1283,  1288,  1289,  1294,
-    1296,  1298,  1300,  1302,  1305,  1304,  1316,  1317,  1319,  1329,
-    1330,  1335,  1337,  1339,  1341,  1343,  1346,  1348,  1351,  1356,
-    1358,  1360,  1362,  1364,  1366,  1368,  1370,  1372,  1374,  1376,
-    1378,  1380,  1386,  1387,  1389,  1391,  1393,  1398,  1399,  1405,
-    1406,  1408,  1410,  1415,  1417,  1419,  1421,  1426,  1427,  1429,
-    1431,  1436,  1437,  1439,  1444,  1445,  1447,  1449,  1454,  1456,
-    1458,  1463,  1464,  1468,  1470,  1476,  1475,  1479,  1481,  1486,
-    1488,  1494,  1495,  1500,  1501,  1503,  1504,  1513,  1514,  1516,
-    1518,  1523,  1525,  1531,  1532,  1534,  1537,  1540,  1545,  1546,
-    1551,  1556,  1560,  1562,  1568,  1567,  1574,  1576,  1582,  1583,
-    1591,  1592,  1596,  1597,  1598,  1600,  1602,  1609,  1610,  1612,
-    1614,  1619,  1620,  1626,  1627,  1631,  1632,  1637,  1638,  1639,
-    1641,  1649,  1650,  1652,  1655,  1657,  1661,  1662,  1663,  1665,
-    1667,  1671,  1676,  1684,  1685,  1694,  1696,  1701,  1702,  1703,
-    1707,  1708,  1709,  1713,  1714,  1715,  1719,  1720,  1721,  1726,
-    1727,  1728,  1729,  1735,  1736,  1738,  1743,  1744,  1749,  1750,
-    1751,  1752,  1753,  1768,  1769,  1774,  1775,  1781,  1783,  1786,
-    1788,  1790,  1813,  1814,  1816,  1818,  1823,  1824,  1826,  1831,
-    1836,  1837,  1843,  1842,  1846,  1850,  1852,  1854,  1860,  1861,
-    1866,  1871,  1873,  1878,  1880,  1881,  1883,  1888,  1890,  1892,
-    1897,  1899,  1904,  1909,  1917,  1923,  1922,  1936,  1937,  1942,
-    1943,  1947,  1952,  1957,  1965,  1970,  1981,  1982,  1987,  1988,
-    1994,  1995,  1999,  2000,  2001,  2004,  2003,  2014,  2023,  2029,
-    2035,  2044,  2050,  2056,  2062,  2068,  2076,  2082,  2090,  2096,
-    2105,  2106,  2107,  2111,  2115,  2117,  2122,  2123,  2127,  2128,
-    2133,  2139,  2140,  2143,  2145,  2146,  2150,  2151,  2152,  2153,
-    2187,  2189,  2190,  2192,  2197,  2202,  2207,  2209,  2211,  2216,
-    2218,  2220,  2222,  2227,  2229,  2238,  2240,  2241,  2246,  2248,
-    2250,  2255,  2257,  2259,  2264,  2266,  2268,  2277,  2278,  2279,
-    2283,  2285,  2287,  2292,  2294,  2296,  2301,  2303,  2305,  2320,
-    2322,  2323,  2325,  2330,  2331,  2336,  2338,  2340,  2345,  2347,
-    2349,  2351,  2356,  2358,  2360,  2370,  2372,  2373,  2375,  2380,
-    2382,  2384,  2389,  2391,  2393,  2395,  2400,  2402,  2404,  2435,
-    2437,  2438,  2440,  2445,  2450,  2458,  2460,  2462,  2467,  2469,
-    2474,  2476,  2490,  2491,  2493,  2498,  2500,  2502,  2504,  2506,
-    2511,  2512,  2514,  2516,  2521,  2523,  2525,  2531,  2533,  2535,
-    2539,  2541,  2543,  2545,  2559,  2560,  2562,  2567,  2569,  2571,
-    2573,  2575,  2580,  2581,  2583,  2585,  2590,  2592,  2594,  2600,
-    2601,  2603,  2612,  2615,  2617,  2620,  2622,  2624,  2637,  2638,
-    2640,  2645,  2647,  2649,  2651,  2653,  2658,  2659,  2661,  2663,
-    2668,  2670,  2678,  2679,  2680,  2685,  2686,  2690,  2692,  2694,
-    2696,  2698,  2700,  2707,  2709,  2711,  2713,  2715,  2717,  2719,
-    2721,  2723,  2725,  2730,  2732,  2734,  2739,  2765,  2766,  2768,
-    2772,  2773,  2777,  2779,  2781,  2783,  2785,  2787,  2794,  2796,
-    2798,  2800,  2802,  2804,  2809,  2814,  2816,  2818,  2836,  2838,
-    2843,  2844
-};
-#endif
-
-#if YYDEBUG || YYERROR_VERBOSE || 0
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
-static const char *const yytname[] =
-{
-  "$end", "error", "$undefined", "TYPEDEF", "AUTO", "EXTERN", "REGISTER",
-  "STATIC", "INLINE", "FORTRAN", "CONST", "VOLATILE", "RESTRICT", "FORALL",
-  "LVALUE", "VOID", "CHAR", "SHORT", "INT", "LONG", "FLOAT", "DOUBLE",
-  "SIGNED", "UNSIGNED", "VALIST", "BOOL", "COMPLEX", "IMAGINARY", "TYPEOF",
-  "LABEL", "ENUM", "STRUCT", "UNION", "OTYPE", "FTYPE", "DTYPE", "TRAIT",
-  "SIZEOF", "OFFSETOF", "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH",
-  "CASE", "DEFAULT", "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO",
-  "RETURN", "CHOOSE", "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH",
-  "CATCHRESUME", "FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS",
-  "ALIGNOF", "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT",
-  "THREADLOCAL", "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname",
-  "TYPEGENname", "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname",
-  "INTEGERconstant", "FLOATINGconstant", "CHARACTERconstant",
-  "STRINGliteral", "ZERO", "ONE", "ARROW", "ICR", "DECR", "LS", "RS", "LE",
-  "GE", "EQ", "NE", "ANDAND", "OROR", "ELLIPSIS", "MULTassign",
-  "DIVassign", "MODassign", "PLUSassign", "MINUSassign", "LSassign",
-  "RSassign", "ANDassign", "ERassign", "ORassign", "ATassign", "THEN",
-  "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "'*'", "'&'",
-  "'+'", "'-'", "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'",
-  "'?'", "':'", "'='", "';'", "$accept", "push", "pop", "constant",
-  "identifier", "no_01_identifier", "no_attr_identifier", "zero_one",
-  "string_literal", "string_literal_list", "primary_expression",
-  "postfix_expression", "argument_expression_list", "argument_expression",
-  "field_list", "field", "unary_expression", "ptrref_operator",
-  "unary_operator", "cast_expression", "multiplicative_expression",
-  "additive_expression", "shift_expression", "relational_expression",
-  "equality_expression", "AND_expression", "exclusive_OR_expression",
-  "inclusive_OR_expression", "logical_AND_expression",
-  "logical_OR_expression", "conditional_expression", "constant_expression",
-  "assignment_expression", "assignment_expression_opt",
-  "assignment_operator", "tuple", "tuple_expression_list",
-  "comma_expression", "comma_expression_opt", "statement",
-  "labeled_statement", "compound_statement", "block_item_list",
-  "block_item", "statement_list", "expression_statement",
-  "selection_statement", "case_value", "case_value_list", "case_label",
-  "case_label_list", "case_clause", "switch_clause_list_opt",
-  "switch_clause_list", "choose_clause_list_opt", "choose_clause_list",
-  "fall_through_opt", "fall_through", "iteration_statement",
-  "for_control_expression", "jump_statement", "exception_statement",
-  "handler_list", "handler_clause", "finally_clause",
-  "exception_declaration", "asm_statement", "asm_volatile_opt",
-  "asm_operands_opt", "asm_operands_list", "asm_operand",
-  "asm_clobbers_list_opt", "label_list", "declaration_list_opt",
-  "declaration_list", "old_declaration_list_opt", "old_declaration_list",
-  "local_label_declaration_opt", "local_label_declaration_list",
-  "local_label_list", "declaration", "new_declaration",
-  "new_variable_declaration", "new_variable_specifier",
-  "new_function_declaration", "new_function_specifier",
-  "new_function_return", "new_typedef_declaration", "typedef_declaration",
-  "typedef_expression", "old_declaration", "declaring_list",
-  "declaration_specifier", "type_specifier", "type_qualifier_list_opt",
-  "type_qualifier_list", "type_qualifier", "type_qualifier_name", "$@1",
-  "declaration_qualifier_list", "storage_class_list", "storage_class",
-  "basic_type_name", "basic_declaration_specifier", "basic_type_specifier",
-  "direct_type_name", "indirect_type_name", "sue_declaration_specifier",
-  "sue_type_specifier", "typedef_declaration_specifier",
-  "typedef_type_specifier", "elaborated_type_name", "aggregate_name",
-  "$@2", "aggregate_key", "field_declaration_list", "field_declaration",
-  "new_field_declaring_list", "field_declaring_list", "field_declarator",
-  "bit_subrange_size_opt", "bit_subrange_size", "enum_key", "enum_name",
-  "$@3", "enumerator_list", "enumerator_value_opt",
-  "new_parameter_type_list_opt", "new_parameter_type_list",
-  "new_parameter_list", "new_abstract_parameter_list",
-  "parameter_type_list_opt", "parameter_type_list", "parameter_list",
-  "new_parameter_declaration", "new_abstract_parameter_declaration",
-  "parameter_declaration", "abstract_parameter_declaration",
-  "identifier_list", "identifier_or_type_name",
-  "no_01_identifier_or_type_name", "no_attr_identifier_or_type_name",
-  "type_name_no_function", "type_name", "initializer_opt", "initializer",
-  "initializer_list", "designation", "designator_list", "designator",
-  "typegen_declaration_specifier", "typegen_type_specifier",
-  "typegen_name", "type_parameter_list", "type_parameter", "$@4",
-  "type_class", "assertion_list_opt", "assertion", "type_name_list",
-  "type_declaring_list", "type_declarator", "type_declarator_name",
-  "trait_specifier", "$@5", "trait_declaration_list", "trait_declaration",
-  "new_trait_declaring_list", "trait_declaring_list", "translation_unit",
-  "external_definition_list", "external_definition_list_opt",
-  "external_definition", "$@6", "external_function_definition",
-  "function_definition", "declarator", "subrange", "asm_name_opt",
-  "attribute_list_opt", "attribute_list", "attribute",
-  "attribute_parameter_list", "attrib", "any_word", "variable_declarator",
-  "paren_identifier", "variable_ptr", "variable_array",
-  "variable_function", "function_declarator", "function_no_ptr",
-  "function_ptr", "function_array", "old_function_declarator",
-  "old_function_no_ptr", "old_function_ptr", "old_function_array",
-  "variable_type_redeclarator", "paren_type", "type_ptr", "type_array",
-  "type_function", "identifier_parameter_declarator",
-  "identifier_parameter_ptr", "identifier_parameter_array",
-  "identifier_parameter_function", "type_parameter_redeclarator",
-  "typedef", "type_parameter_ptr", "type_parameter_array",
-  "type_parameter_function", "abstract_declarator", "abstract_ptr",
-  "abstract_array", "abstract_function", "array_dimension",
-  "multi_array_dimension", "abstract_parameter_declarator",
-  "abstract_parameter_ptr", "abstract_parameter_array",
-  "abstract_parameter_function", "array_parameter_dimension",
-  "array_parameter_1st_dimension", "variable_abstract_declarator",
-  "variable_abstract_ptr", "variable_abstract_array",
-  "variable_abstract_function",
-  "new_identifier_parameter_declarator_tuple",
-  "new_identifier_parameter_declarator_no_tuple",
-  "new_identifier_parameter_ptr", "new_identifier_parameter_array",
-  "new_array_parameter_1st_dimension", "new_abstract_declarator_tuple",
-  "new_abstract_declarator_no_tuple", "new_abstract_ptr",
-  "new_abstract_array", "new_abstract_tuple", "new_abstract_function",
-  "comma_opt", "assignment_opt", YY_NULLPTR
-};
-#endif
-
-# ifdef YYPRINT
-/* YYTOKNUM[NUM] -- (External) token number corresponding to the
-   (internal) symbol number NUM (which must be that of a token).  */
-static const yytype_uint16 yytoknum[] =
-{
-       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
-     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
-     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
-     355,   356,   357,   358,   359,   360,   361,   362,   363,    40,
-      41,    91,    93,    46,   123,   125,    44,    42,    38,    43,
-      45,    33,   126,    47,    37,    60,    62,    94,   124,    63,
-      58,    61,    59
-};
-# endif
-
-#define YYPACT_NINF -1323
-
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-1323)))
-
-#define YYTABLE_NINF -522
-
-#define yytable_value_is_error(Yytable_value) \
-  0
-
-  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-     STATE-NUM.  */
-static const yytype_int16 yypact[] =
-{
-    7329,  8828, -1323,    37, -1323, -1323, -1323, -1323, -1323, -1323,
-   -1323,   109, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
-   -1323, -1323, -1323, -1323, -1323, -1323,    85,    85,    85,   873,
-     733,   178,  7561,   370, -1323, -1323, -1323, -1323, -1323,   191,
-   -1323, -1323, -1323,   614,   225, -1323, -1323, -1323, -1323,  4615,
-   -1323, -1323, -1323, -1323,   229,   285, -1323,   934, -1323, -1323,
-   -1323, -1323,   435,  1196,   579,   110,  7677, -1323, -1323,  4858,
-    1038, -1323, -1323,   580,   596,  6761,  1021,   875,   580,  1103,
-   -1323, -1323,  1317,   308, -1323,   580,  1224, -1323,   495, -1323,
-     616,   623, -1323, -1323, -1323, -1323,   547,   285,    85, -1323,
-      85, -1323, -1323, -1323, -1323,  9174,   934, -1323, -1323,   934,
-   -1323,   551, -1323,  9403, -1323, -1323,  1899,  9436, -1323,   844,
-     844,   844, -1323, -1323, -1323,    85, -1323, -1323, -1323,   584,
-     608,   632, -1323, -1323, -1323,   646, -1323, -1323, -1323, -1323,
-   -1323,   664,   687, -1323, -1323,   -28,  8797,  2908,   117,   701,
-     717,   726,   771,   786,   799,  8715,  6849,   731,   757, -1323,
-    5600, -1323, -1323, -1323, -1323,   804, -1323,   223,  5225,  5225,
-   -1323,   802,   365, -1323, -1323, -1323, -1323,   816,   443,   480,
-     534,    85,   827, -1323, -1323,  1196,  4341,   868, -1323,    50,
-   -1323,    85,    85,   285, -1323, -1323,    61, -1323,    85,    85,
-   -1323,  4647,   857,   864,   844,  6523, -1323, -1323,   869,  4615,
-   -1323, -1323,   580, -1323, -1323, -1323,   285, -1323,   934,   229,
-   -1323,  7868, -1323,   844,   844,   844,   285, -1323,   873, -1323,
-    5676, -1323, -1323,   852,   844, -1323,   844, -1323,   191,  8797,
-   -1323,   884, -1323,   733,   890,   844, -1323,   873,   888,   892,
-   -1323,  7561,   631, -1323, -1323, -1323,  9256, -1323, -1323,  9621,
-   -1323,   868,   151, 10214,  9436,  1899,  4647, -1323,    88, -1323,
-   -1323,  9403,   934,   891,  7708, -1323, -1323,   347, -1323, 10561,
-     922,   956, 10347,   945, 10366, 10423, -1323,   954, -1323, -1323,
-   -1323, -1323, 10442, 10442,  8571,   952, -1323, -1323, -1323, -1323,
-   -1323, -1323, -1323,   988, -1323,   966,  1946,  8910, 10366, -1323,
-     756,   338,   485,   411,   635,   955,   947,   957,   984,   237,
-   -1323, -1323,   962,   647, -1323,   302, -1323, -1323,  2908, -1323,
-   -1323,   235,   985, -1323,   312,   985,   989,   191, -1323, -1323,
-     990,  9174, -1323,   999,  1006,  9023, -1323, -1323,  1335,  2030,
-    8286,  6523,   580, -1323,   580,   844,   844, -1323, -1323, -1323,
-   -1323, -1323, -1323,   844,  9174,   934, -1323, -1323,  9474,  1575,
-   -1323,  8017, -1323, -1323, -1323, -1323, -1323, -1323, -1323,  1008,
-    5958, 10366, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
-   -1323, -1323, -1323, -1323, -1323, -1323,  1899, -1323,   973,   991,
-     992,  1012,   978,  1017,  1018,  1020,  4341, -1323, -1323,  1029,
-     229,  1031, -1323, -1323,  1033, -1323, -1323, -1323,  9256, -1323,
-   -1323, -1323, -1323, -1323,  4647, -1323,  8797,  8797, -1323,   844,
-    1899,  6642,   934,  8359, -1323, -1323, -1323, -1323,  9256,   151,
-   -1323, -1323,   580,   285, -1323, -1323,  9256, -1323,  5770, -1323,
-   -1323,   844,   844,   337,  8204,  1032,  1036,  1023,  1042,   844,
-   -1323, -1323, -1323, -1323,  9660, -1323,   367,  6404, -1323,   285,
-    1044, -1323,  1899, 10643, 10271, -1323, -1323, -1323, -1323,  1015,
-    4647, -1323,  8432,   868,  7445, -1323, -1323, -1323,   843,   436,
-     962,   733,  7708,  1341,  9403, -1323,  7708, -1323, -1323, -1323,
-   -1323,   508, -1323,  1051,   956,   248,  8571, -1323,  9512, -1323,
-   -1323,  8571, -1323,  8684,  8571, -1323, -1323,  1049, -1323,   606,
-    1057,   682,  1059, -1323, -1323,  3527,  6492, -1323,   362, -1323,
-   -1323, 10214, -1323,   368, 10214, -1323, -1323, -1323, -1323, -1323,
-   -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10214, -1323, -1323,
-   10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366,
-   10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366,  3593, 10214,
-   -1323,   647,  1677, -1323, -1323,    85,    85, -1323, -1323,  8797,
-   -1323, -1323,  1033,   631, -1323,  1033, 10290, -1323, -1323, -1323,
-    5046,  6492,  1060,  1063, -1323,  9436, -1323, -1323,   804, -1323,
-    1067,   750,  1068,  2627,   125,   962, -1323,    85,    85,   962,
-     132, -1323,    85,    85,  1033, -1323, -1323,    85,    85, -1323,
-     985,  9545,   934, 10788,   532,   656,  9545, -1323,  9621, -1323,
-     962, -1323,  9174, -1323,   238,  7983,  7983,  7983,   934, -1323,
-    5791,  1047,  1008,   493,  1058,  1061, -1323,  1076,  5225,   528,
-   -1323,  1165,   934,  7983,   631,  1899,   631,   868,   430,   985,
-   -1323, -1323,   536,   985, -1323, -1323, -1323,   956, -1323,   985,
-     285,  9660, -1323,   619,  1086,   633,  1088, -1323,  1087,   285,
-   -1323, -1323,  9256,   285,  1089,  9512,  1092, -1323,  1065, -1323,
-     538,   552,   733, -1323,   733,  1085, 10366, -1323,   733, 10788,
-   -1323, -1323,  1096, -1323, -1323, -1323,   631, -1323, 10716,  1006,
-   -1323,  7983,   703,  8286, -1323, -1323,   804,  1095,  1098,   843,
-    5016, -1323, -1323,  7708, -1323, -1323,  1091, -1323, -1323,  1102,
-   -1323,  1091,  1104, 10561, 10214,  1090,  1093,    94,  1109,  1107,
-    1111,  1114, -1323,  1118,  1129,  9365,  6611, -1323, 10214, -1323,
-     682,  1717, -1323, -1323, -1323,    85,    85, 10157, 10214,  1125,
-   -1323, -1323,   653, -1323, 10214, -1323, -1323,   736, -1323, -1323,
-   -1323, -1323,   756,   756,   338,   338,   485,   485,   485,   485,
-     411,   411,   635,   955,   947,   957,   984, 10366,   260, -1323,
-    9660,  1132,  1136,  1137,  1677, -1323, -1323, -1323, -1323, -1323,
-    9660,   708,  7983, -1323,  9174, -1323,  6968,  9136, -1323,  8017,
-    6849, -1323, -1323,   750,  9660,  1022,  1140,  1141,  1142,  1143,
-    1146,  1149,  1154, -1323,  3715,  2627, -1323, -1323, -1323, -1323,
-   -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
-   -1323, -1323, -1323,  1033, -1323, -1323, -1323,   962, -1323, -1323,
-   -1323, -1323, -1323, -1323, -1323, -1323,  1155, -1323,  1157,  1159,
-   -1323, -1323,   229,  1125,  5791, -1323, -1323, -1323,  5958,  1158,
-   -1323, -1323, -1323, -1323,   733,  6174,  1248, -1323, -1323, -1323,
-   -1323,  1151,   229, -1323, -1323,  1033, -1323, -1323,  1033,    84,
-    1033, -1323, -1323, -1323, -1323, -1323, -1323,  9327, -1323,   285,
-   -1323, -1323,   559,   562,  9474,  7087,  2137, 10366,  3114, -1323,
-   -1323,  1156,    51,  1156, -1323,   733, -1323,    85, -1323, -1323,
-    8941,  1023, -1323, -1323, -1323,  1036,  1175,  1171, -1323, -1323,
-    1178,  1181, -1323,   703,  1901, -1323,   672, -1323,  5016,   962,
-   -1323,  1184,  7708,  9583,  8797,  1185, -1323, -1323,  1180,  1187,
-    1170, -1323, 10366,  1197,   326,  1194, -1323,  1202,   631,  1202,
-   -1323, -1323,  1202,  1199, -1323,  1208,  1210,  1211,  1717, -1323,
-   -1323, -1323,  5958, -1323, -1323, -1323, -1323,  1209, 10214,  1212,
-     631, -1323, 10214, -1323,   631, -1323, -1323, 10214, -1323,   558,
-     985, -1323, -1323, -1323, -1323, -1323, -1323, -1323,  1008,  1006,
-    9023, -1323, -1323,  7206,  1218, -1323,   674,   985, -1323,   813,
-     861,   985, -1323,   844,  4029, -1323, -1323, -1323,  9660,  9660,
-   -1323,  8359,  8359, -1323,  1215,  1216,  1225,  1230, -1323,  1232,
-     685,    82,  1125, -1323,   631, -1323,  5225, -1323, 10214,   564,
-   -1323,  6373,  1236,  1240, 10100,  1242,  1243,    70,    79,    96,
-   10214,  1244,   285, 10214, 10214,  1227,  1249,   522,  1222, -1323,
-   -1323, -1323,  1250, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
-   -1323, -1323,   733,  1254, 10214, -1323,  9660,  9660,    85,  1257,
-   -1323,  9054, -1323, -1323,   752, -1323,  3114, -1323, -1323, -1323,
-   -1323,  1065, -1323, -1323,  1255, -1323, -1323, -1323, -1323,  1258,
-    1901, -1323, -1323,  1245, -1323,  1091, -1323, -1323,  1899,  1260,
-   -1323, -1323, -1323,   713,  1264, -1323,    94,  1269, 10366,  1252,
-      94,    94,  1262,  3527,   879,   985, -1323, -1323,  1076, 10214,
-    1273,  1209,   358,   204,  1270, -1323, -1323,  1275,  1270, -1323,
-   -1323,  1278, -1323, -1323,  1033,  1280,  1284,  6730,  1285,  1290,
-    1291, -1323, -1323,  1286, -1323, -1323,  1033, -1323, -1323, -1323,
-   -1323,  1033, 10214, 10214,  1006,  1294, -1323, -1323, -1323, -1323,
-   -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10366, 10366,
-    1300,  1302,  1270, -1323, -1323,   733, -1323, -1323, -1323,  5213,
-    9583, 10214, 10214,  1374, 10214, -1323,  1295, -1323,  1296, -1323,
-    1297, 10214,  1301, 10214,  1105,  1304,    12,    85,  9289,  1625,
-   -1323, -1323,  6174,  1322,   573, -1323, -1323, -1323, -1323, -1323,
-   -1323, -1323, -1323, -1323,  9920, -1323,  8432,  1330, -1323, -1323,
-    9583,   576,   602, -1323,  1331,  1315,   956,  1337, -1323,   329,
-   -1323, -1323, -1323, -1323,  1033,  1339, -1323, -1323,  1320,   486,
-     509,   631,  1340, -1323,  1344, -1323,  9660, -1323, -1323, -1323,
-   -1323, -1323,  1347, -1323,  9660,  9660,  9660, -1323, -1323,  1348,
-   -1323,  1351,  1354,  1355,   716,  8056,  8171, -1323, -1323,   529,
-   -1323,  1357,  1362, -1323,  8505,   721,   730,  1358,   761,  3837,
-   -1323, -1323, -1323,   605, -1323,   766,  1366,  1367,   285,  1419,
-     834, -1323, -1323, 10214, -1323, 10100, 10214, -1323, -1323, -1323,
-    1370,  1375, -1323, -1323, -1323,  1372, -1323, -1323, -1323, -1323,
-   -1323, -1323,  9583,   956,  1379, -1323,  1352,   956,  9660, -1323,
-   -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
-   -1323, -1323, -1323,  1378,  1382, -1323, -1323, -1323, -1323, -1323,
-   -1323, -1323,  1387, -1323,  1386, -1323, -1323, 10100,   289, 10214,
-   10100, -1323,  1389, 10214, -1323,   318,  1405,  1406, -1323, -1323,
-    1399,  1400,  1380, -1323,   821, -1323, -1323, -1323,   934,  1899,
-    1396, -1323,   402, 10366, -1323,   785, -1323,   631,   631,  1407,
-    1408,  1413,  1415, -1323, -1323,  8359,  1414, -1323,  1490, 10366,
-    1385, -1323, -1323, 10012, -1323,   800, -1323,  1402, 10100,  1403,
-   -1323, -1323,  1426, -1323,  1427, -1323,  1445,  1446, -1323,  1411,
-    9583, -1323, -1323, -1323,   956,   631,  1434,  1417,  1435,  1270,
-    1270, -1323, -1323, -1323, -1323, -1323, 10100,   107, -1323,   433,
-   -1323, -1323,  7793, -1323, -1323,  1418, 10214, -1323, 10214,  7793,
-     285,  9512,   285,  9512,  1436, -1323,  1442, -1323, -1323,  1440,
-   -1323, -1323,   825, -1323, -1323, -1323,  1444,  1449, -1323, 10366,
-   10366, -1323, -1323,   909,   211, -1323, -1323,  1425, -1323,   909,
-   -1323, -1323,  2166,   631, -1323, -1323,   285,  9512,   285,  9512,
-    1453,  1431,   631, -1323, -1323, -1323, -1323, 10012,  1443,   909,
-    6091, 10214,  9924,  1452,   909,  1454,  2166,  3344, -1323, -1323,
-   -1323,  1458, -1323, -1323, -1323, -1323,  8797, -1323, -1323, -1323,
-    9791, -1323, 10012, -1323, -1323,  1438,  9703, -1323, -1323,  9924,
-     285,  3344,   285,  1464,  1466,   853, -1323,  9791, -1323, -1323,
-   -1323,  9703, -1323, -1323, -1323,   285,   285, -1323, -1323, -1323,
-   -1323, -1323, -1323, -1323, -1323
-};
-
-  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
-     Performed when YYTABLE does not specify something else to do.  Zero
-     means the default is an error.  */
-static const yytype_uint16 yydefact[] =
-{
-     293,   293,   313,   311,   314,   312,   315,   316,   299,   301,
-     300,     0,   302,   327,   319,   324,   322,   323,   321,   320,
-     325,   326,   331,   328,   329,   330,   546,   546,   546,     0,
-       0,     0,   293,   219,   303,   317,   318,     7,   358,     0,
-       8,    14,    15,     0,     2,    61,    62,   564,     9,   293,
-     524,   522,   246,     3,   453,     3,   259,     0,     3,     3,
-       3,   247,     3,     0,     0,     0,   294,   295,   297,   293,
-     306,   309,   339,   285,   332,   337,   286,   347,   287,   354,
-     351,   361,     0,     0,   362,   288,   472,   476,     3,     3,
-       0,     2,   518,   523,   528,   298,     0,     0,   546,   576,
-     546,     2,   587,   588,   589,   293,     0,   730,   731,     0,
-      12,     0,    13,   293,   269,   270,     0,   294,   289,   290,
-     291,   292,   525,   304,   391,   547,   548,   369,   370,    12,
-     444,   445,    11,   440,   443,     0,   502,   497,   488,   444,
-     445,     0,     0,   527,   220,     0,   293,     0,     0,     0,
-       0,     0,     0,     0,     0,   293,   293,     2,     0,   732,
-     294,   581,   593,   736,   729,   727,   734,     0,     0,     0,
-     253,     2,     0,   531,   438,   439,   437,     0,     0,     0,
-       0,   546,     0,   633,   634,     0,     0,   544,   540,   546,
-     561,   546,   546,   542,     2,   541,   546,   600,   546,   546,
-     603,     0,     0,     0,   293,   293,   311,   359,     2,   293,
-     260,   296,   307,   340,   352,   477,     0,     2,     0,   453,
-     261,   294,   333,   348,   355,   473,     0,     2,     0,   310,
-     334,   341,   342,     0,   349,   353,   356,   360,   445,   293,
-     371,   364,   368,     0,   393,   474,   478,     0,     0,     0,
-       1,   293,     2,   529,   575,   577,   293,     2,   740,   294,
-     743,   544,   544,     0,   294,     0,     0,   272,   546,   542,
-       2,   293,     0,     0,   293,   549,     2,   500,     2,   553,
-       0,     0,     0,     0,     0,     0,    19,    58,     4,     5,
-       6,    17,     0,     0,   293,     2,    63,    64,    65,    66,
-      46,    20,    47,    16,    23,    45,    67,   293,     0,    70,
-      74,    77,    80,    85,    88,    90,    92,    94,    96,    98,
-     103,   494,   750,   451,   493,     0,   449,   450,     0,   565,
-     580,   583,   586,   592,   595,   598,   358,     0,     2,   738,
-       0,   293,   741,     2,    61,   293,     3,   425,     0,   433,
-     294,   293,   306,   332,   286,   347,   354,     3,     3,   407,
-     411,   421,   426,   472,   293,   427,   705,   706,   293,   428,
-     430,   293,     2,   582,   594,   728,     2,     2,   248,     2,
-     458,     0,   456,   455,   454,   140,     2,     2,   250,     2,
-       2,   249,     2,   280,     2,   281,     0,   279,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   566,   605,     0,
-     453,     2,   560,   569,   659,   562,   563,   532,   293,     2,
-     599,   608,   601,   602,     0,   275,   293,   293,   338,   294,
-       0,   294,     0,   293,   733,   737,   735,   533,   293,   544,
-     254,   262,   308,     0,     2,   534,   293,   498,   335,   336,
-     282,   350,   357,     0,   293,     0,   748,   398,     0,   475,
-     499,   251,   252,   519,   293,   435,     0,   293,   236,     0,
-       2,   238,     0,   294,     0,   256,     2,   257,   277,     0,
-       0,     2,   293,   544,   293,   485,   487,   486,     0,     0,
-     750,     0,   293,     0,   293,   489,   293,   559,   557,   558,
-     556,     0,   551,   554,     0,     0,   293,    53,   293,    67,
-      48,   293,    55,   293,   293,    51,    52,     2,   126,     0,
-       0,   447,     0,   446,   727,   120,   293,    18,     0,    30,
-      31,    36,     2,     0,    36,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   109,   108,     0,    49,    50,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     105,     2,   645,   452,   642,   546,   546,   650,   479,   293,
-       2,   584,   585,     0,   596,   597,     0,     2,   739,   742,
-     120,   293,     0,     2,   707,   294,   711,   702,   703,   709,
-       0,     2,     2,   667,   546,   750,   616,   546,   546,   750,
-     546,   630,   546,   546,   681,   434,   664,   546,   546,   672,
-     679,   293,   429,   294,     0,     0,   293,   717,   294,   722,
-     750,   714,   293,   719,   750,   293,   293,   293,     0,   120,
-       0,    19,     2,     0,    20,     0,   459,   748,     0,     0,
-     465,   240,     0,   293,     0,     0,     0,   544,   568,   572,
-     574,   604,   607,   611,   614,   567,   606,     0,   283,   657,
-       0,   293,   276,     0,     0,     0,     0,   274,     2,     0,
-     258,   535,   293,     0,     0,   293,     2,   363,   383,   372,
-       0,     0,   377,   371,   749,     0,     0,   396,     0,   294,
-       3,   414,     3,   418,   417,   590,     0,   530,   293,    61,
-       3,   293,   433,   294,     3,   427,   428,     2,     0,     0,
-       0,   484,   305,   293,   480,   482,     3,     2,     2,     0,
-     501,     3,     0,   553,   128,     0,     0,   221,     0,     0,
-       0,     0,    37,     0,     0,   120,   293,    21,     0,    22,
-       0,   691,   696,   448,   688,   546,   546,     0,   106,     3,
-       2,    28,     0,    34,     0,     2,    26,     0,   104,    71,
-      72,    73,    75,    76,    78,    79,    83,    84,    81,    82,
-      86,    87,    89,    91,    93,    95,    97,     0,     0,   751,
-     293,     0,     0,     0,   646,   647,   643,   644,   496,   495,
-     293,     0,   293,   713,   293,   718,   294,   293,   661,   293,
-     293,   704,   660,     2,   293,     0,     0,     0,     0,     0,
-       0,     0,     0,   682,     0,   668,   619,   635,   669,     2,
-     615,   622,   431,   617,   618,   432,     2,   629,   638,   631,
-     632,   665,   666,   680,   708,   712,   710,   750,   267,     2,
-     744,     2,   422,   716,   721,   423,     0,   401,     3,     3,
-       3,     3,   453,     3,     0,     2,   467,   464,   749,     0,
-     460,     2,   463,   466,     0,   293,   241,   263,     3,   271,
-     273,     0,   453,     2,   570,   571,     2,   609,   610,     0,
-     658,   536,     3,   344,   343,   346,   345,   293,   537,     0,
-     538,   371,     0,     0,   293,   293,     0,     0,   691,   381,
-     384,   388,   546,   388,   387,   380,   373,   546,   375,   378,
-     293,   398,   392,   102,   399,   748,     0,     0,   436,   239,
-       0,     0,     3,     2,   667,   429,     0,   526,     0,   750,
-     488,     0,   293,   293,   293,     0,   550,   552,   129,     0,
-       0,   214,     0,     0,     0,   222,   223,    54,     0,    56,
-      59,    60,     0,     2,   127,     0,     0,     0,   692,   693,
-     689,   690,   458,    68,    69,   107,   124,     3,   106,     0,
-       0,    25,    36,     3,     0,    33,   100,     0,     3,   649,
-     653,   656,   648,     3,   591,     3,   715,   720,     2,    61,
-     293,     3,     3,   294,     0,     3,   621,   625,   628,   637,
-     671,   675,   678,   293,     3,   620,   636,   670,   293,   293,
-     424,   293,   293,   745,     0,     0,     0,     0,   255,     0,
-     102,     0,     3,     3,     0,   461,     0,   457,     0,     0,
-     244,   293,     0,     0,   128,     0,     0,     0,     0,     0,
-     128,     0,     0,   106,   106,    19,     2,     0,     0,     3,
-     130,   131,     2,   142,   132,   133,   134,   135,   136,   137,
-     144,   146,     0,     0,     0,   284,   293,   293,   546,     0,
-     539,   293,   374,   376,     0,   390,   692,   385,   389,   386,
-     379,   383,   366,   397,     0,   578,     2,   663,   662,     0,
-     668,     2,   481,   483,   503,     3,   511,   512,     0,     2,
-     507,     3,     3,     0,     0,   555,   221,     0,     0,     0,
-     221,     0,     0,   120,   695,   699,   701,   694,   748,   106,
-       0,     3,   660,    40,     3,    38,    35,     0,     3,    99,
-     101,     0,     2,   651,   652,     0,     0,   293,     0,     0,
-       0,     3,   637,     0,     2,   623,   624,     2,   639,     2,
-     673,   674,     0,     0,    61,     0,     3,     3,     3,     3,
-     409,   408,   412,     2,     2,   747,   746,   121,     0,     0,
-       0,     0,     3,   462,     3,     0,   242,   145,     3,   294,
-     293,     0,     0,     0,     0,     2,     0,   190,     0,   188,
-       0,     0,     0,     0,     0,     0,     0,   546,   120,     0,
-     150,   147,   293,     0,     0,   266,   278,     3,     3,   545,
-     612,   367,   382,   395,   293,   265,   293,     0,   514,   491,
-     293,     0,     0,   490,   505,     0,     0,     0,   215,     0,
-     224,    57,     2,   697,   698,     0,   125,   122,     0,     0,
-       0,     0,     0,    24,     0,   654,   293,   579,   264,   723,
-     724,   725,     0,   676,   293,   293,   293,     3,     3,     0,
-     684,     0,     0,     0,     0,   293,   293,     3,   543,   121,
-     469,     0,     0,   245,   294,     0,     0,     0,     0,   293,
-     191,   189,   186,     0,   192,     0,     0,     0,     0,   196,
-     199,   197,   193,     0,   194,   128,    36,   143,   141,   243,
-       0,     0,   416,   420,   419,     0,   508,     2,   509,     2,
-     510,   504,   293,   227,     0,   225,     0,   227,   293,    32,
-     123,     2,    43,     2,    41,    39,    29,    27,     3,   726,
-       3,     3,     3,     0,     0,   683,   685,   626,   640,   268,
-       2,   406,     3,   405,     0,   471,   468,   128,     0,     0,
-     128,     3,     0,   128,   187,     0,     2,     2,   208,   198,
-       0,     0,     0,   139,     0,   573,   613,     2,     0,     0,
-       2,   228,     0,     0,   216,     0,     3,     0,     0,     0,
-       0,     0,     0,   686,   687,   293,     0,   470,   151,     0,
-       0,     2,   164,   128,   153,     0,   181,     0,   128,     0,
-       2,   155,     0,     2,     0,     2,     2,     2,   195,    33,
-     293,   513,   515,   506,     0,     0,     0,     0,     0,     3,
-       3,   655,   627,   641,   677,   410,   128,   157,   160,     0,
-     159,   163,     3,   166,   165,     0,   128,   183,   128,     3,
-       0,   293,     0,   293,     0,     2,     0,     2,   138,     2,
-     229,   230,     0,   226,   217,   700,     0,     0,   152,     0,
-       0,   162,   232,   167,     2,   234,   182,     0,   185,   171,
-     200,     3,   209,   213,   202,     3,     0,   293,     0,   293,
-       0,     0,     0,    44,    42,   158,   161,   128,     0,   168,
-     293,   128,   128,     0,   172,     0,     0,   691,   210,   211,
-     212,     0,   201,     3,   203,     3,   293,   218,   231,   148,
-     169,   154,   128,   235,   184,   179,   177,   173,   156,   128,
-       0,   692,     0,     0,     0,     0,   149,   170,   180,   174,
-     178,   177,   175,     3,     3,     0,     0,   492,   176,   204,
-     206,     3,     3,   205,   207
-};
-
-  /* YYPGOTO[NTERM-NUM].  */
-static const yytype_int16 yypgoto[] =
-{
-   -1323,  4572,  3263, -1323,   197, -1323,   601,   950,  -251,   910,
-   -1323,   521,  -520,  -467,  -853,   -64,  3183,     0, -1323,  -150,
-     423,   446,   477,   450,  1016,  1025,  1019,  1026,  1028, -1323,
-    -622,  -408,  5012,  -745, -1323,  -735,   604,   472,  -656,   413,
-   -1323,  1279, -1323,   374, -1058, -1323, -1323,   126, -1323,  -823,
-   -1106,   222, -1323, -1323, -1323, -1323,    58, -1209, -1323, -1323,
-   -1323, -1323, -1323, -1323,   301, -1149,    35, -1323,  -933, -1323,
-     482,   274, -1323,   159, -1323,  -303, -1323, -1323, -1323,   535,
-    -827, -1323, -1323,    15, -1007,    71,    28, -1323, -1323, -1323,
-     -21, -1323,   357,  1253,  -198,  1636,  4113, -1323, -1323,    80,
-      54,   422,  1473, -1323,  1886, -1323, -1323,   192,  2183, -1323,
-    2495,   898, -1323, -1323, -1323,  -638, -1323,   924,   925,   524,
-     699,    83, -1323, -1323, -1323,   915,   695,  -339, -1323,  -106,
-      34,  1281, -1323, -1323,  -847,  -986,  1046,  1127,  1039,     5,
-   -1323,  1536,   481,  -165,  -210,  -124,   651,   758, -1323,   979,
-   -1323,  2789,  1548,  -413,   904, -1323, -1323,   689, -1323,  -235,
-   -1323,   158, -1323, -1323, -1323, -1257,   401, -1323, -1323, -1323,
-    1148, -1323,    21, -1323, -1323,  -858,  -105, -1322,  -129,  2267,
-   -1323,  2391, -1323,   906, -1323,  -184,    59,  -180,  -173,  -170,
-       7,   -40,   -35,   -33,    60,    -6,    25,    93,  -168,  -164,
-    -158,  -147,  -144,  -292,  -471,  -462,  -452,  -551,  -302,  -537,
-   -1323, -1323,  -511,  1069,  1072,  1074,  2608,  4844,  -578,  -514,
-    -502,  -495,  -500, -1323,  -508,  -724,  -717,  -708,  -590,  -305,
-    -195, -1323, -1323,   246,    19,    36, -1323,  3865,   104,  -623,
-    -397
-};
-
-  /* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
-{
-      -1,   814,   468,   300,    47,   133,   134,   301,   302,   303,
-     304,   305,   762,   763,  1134,  1135,   306,   381,   308,   309,
-     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
-     320,  1031,   518,   976,   547,   322,   977,   948,  1058,  1519,
-    1060,  1061,  1062,  1063,  1520,  1064,  1065,  1438,  1439,  1402,
-    1403,  1404,  1498,  1499,  1503,  1504,  1539,  1540,  1066,  1362,
-    1067,  1068,  1299,  1300,  1301,  1481,  1069,   145,   954,   955,
-     956,  1382,  1462,  1473,  1474,   469,   470,   875,   876,  1039,
-      51,    52,    53,    54,    55,   347,   158,    58,    59,    60,
-      61,    62,   349,    64,    65,   264,    67,    68,   274,   351,
-     352,    71,    72,    73,   118,    75,   204,   354,   119,    78,
-     120,    80,    81,   455,    82,   454,   689,   690,   691,   909,
-    1087,   910,    83,    84,   458,   456,   697,   856,   857,   858,
-     859,   700,   701,   702,   359,   360,   361,   362,   466,   340,
-     135,   136,   522,   324,   170,   646,   647,   648,   649,   650,
-      85,   121,    87,   489,   490,   940,   491,   277,   495,   325,
-      88,   137,   138,    89,  1322,  1109,  1110,  1111,  1112,    90,
-      91,   718,    92,   273,    93,    94,   187,  1033,   680,   412,
-     125,    95,   501,   502,   503,   188,   268,   190,   191,   192,
-     269,    98,    99,   100,   101,   102,   103,   104,   195,   196,
-     197,   198,   199,   826,   606,   607,   608,   609,   200,   611,
-     612,   613,   573,   574,   575,   576,   752,   105,   615,   616,
-     617,   618,   619,   620,   969,   754,   755,   756,   596,   365,
-     366,   367,   368,   326,   164,   107,   108,   109,   370,   695,
-     570
-};
-
-  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
-     positive, shift that token.  If negative, reduce the rule whose
-     number is the opposite.  If YYTABLE_NINF, syntax error.  */
-static const yytype_int16 yytable[] =
-{
-      49,   113,   407,   149,   453,   399,   428,    97,   150,   440,
-     151,   267,   400,   753,   767,   401,   114,  1071,   408,   106,
-     106,   402,   974,   280,   869,   828,   965,   403,    57,    57,
-     505,   845,    49,   966,  1188,    50,  1172,   152,   404,    97,
-     597,   405,   967,   147,   383,   384,   741,   610,  1070,    49,
-     357,   106,   827,   143,    70,   920,   161,   605,   410,    96,
-      57,   795,   177,   186,   819,  1380,   209,    50,   153,    49,
-     193,    56,   115,   216,   923,  1303,   226,  1440,   949,   726,
-      69,   281,   407,   731,   219,   399,    70,   820,   106,    31,
-      31,    96,   400,   724,    57,   401,   425,    57,   408,   821,
-      31,   402,   148,    56,   831,   113,   822,   403,    96,   162,
-     838,   261,    69,   113,   262,   670,   266,   271,   404,   122,
-     212,   405,   189,   194,    31,    96,   217,    31,    96,   227,
-     816,  1138,   475,   477,   510,   679,   154,   210,   202,   817,
-     220,   260,  1196,   683,  1304,   149,   307,   147,  1440,   818,
-     150,  1198,   151,   166,   161,   113,   345,   548,   549,   252,
-     209,   411,   411,  1459,    31,   986,   527,   373,  1200,   629,
-     419,    31,   411,   633,  1170,  1171,   291,   715,  1178,   152,
-     914,  1182,   965,  1235,   348,   186,   186,  1239,   203,   966,
-     358,   342,    76,   161,  1078,   548,   721,   481,   967,   411,
-     668,   266,  1197,  1469,  1179,   952,    96,   162,   832,    49,
-     153,  1199,   835,  1201,  1187,   409,   161,   166,   123,    96,
-     374,   209,   665,   439,    76,   149,   252,   329,   443,  1179,
-     150,   548,   151,   852,   829,   471,   602,   855,   666,   307,
-    1172,   836,  1030,   602,   398,   189,   162,  1017,   816,    57,
-     327,    49,  1140,   735,   176,  -233,  -233,   817,    97,   271,
-     476,   674,   676,  1081,   271,   266,   266,   818,    96,   162,
-     106,   113,   463,   161,  1016,   442,  1004,   483,   154,    57,
-      96,   444,  1188,   992,   500,   923,    50,   142,   924,  1249,
-    1172,   657,   441,  1527,   307,   163,   665,   860,   861,   820,
-     146,   610,  1094,   176,  1485,    70,   176,   307,  1205,  1206,
-      96,   821,   666,   436,   878,   831,   597,  1250,   822,   672,
-    1542,   597,    56,   572,   479,   677,  -233,   357,   147,   730,
-     923,    69,   567,  1399,  1400,   373,   168,   155,  1513,   377,
-    1515,   113,   816,   327,   580,   345,   411,   476,   743,   603,
-     621,   817,   176,   177,  1071,   378,   828,    63,   736,   163,
-     169,   818,  1399,  1400,   626,  1139,   568,  1497,   626,   569,
-     630,   113,   932,  1502,   634,   436,   748,   589,   737,   899,
-     110,   144,   139,   140,  1246,  1070,   447,    96,   374,    63,
-     987,    41,    42,  1522,  1202,   805,   266,   471,  1529,   171,
-     769,   770,   771,  1401,   212,   460,   186,   342,   604,  1172,
-     845,   166,   578,   373,   799,   176,  1030,   471,   579,   820,
-     357,   583,   243,   411,   266,   471,   307,   307,  1170,  1171,
-     266,   821,  1410,   626,   110,  1188,  1119,   854,   822,  1326,
-     110,   715,  1188,    76,  1526,    41,    42,   684,    76,   599,
-    1020,    41,    42,   579,   113,   435,  1120,   553,   554,  1327,
-    1127,   348,  1363,   995,  1537,   189,   374,   358,  -121,   176,
-    -121,  1541,   266,   760,  -121,   493,   176,   705,   494,   765,
-     266,   387,   626,   706,    49,   357,   953,   373,   720,  -121,
-    -121,    97,   229,  1188,   113,   230,   923,   388,   234,  1085,
-     236,   557,   558,   106,   911,  1245,   307,   245,   113,  1158,
-    1160,   307,    57,   307,   307,  1136,   714,   435,  1424,    50,
-     913,   751,  1017,   610,   870,   113,   345,   212,   882,  1105,
-     327,   327,  1425,  1015,  1429,  1430,   559,   560,    70,   883,
-     523,   411,  1102,    96,  1117,   176,   722,   604,  1435,  1470,
-     880,   181,   723,   163,   348,    56,   923,   923,   110,   390,
-     358,   342,   176,  1471,    69,   110,   176,   139,   140,    41,
-      42,   572,   572,   555,   556,   391,    41,    42,  1127,   307,
-    1444,   110,   201,   914,     2,   206,     4,     5,     6,     7,
-     626,   345,    41,    42,   286,   621,   392,  1331,   327,  -289,
-     715,   603,   111,   603,   865,    41,    42,   973,    63,   997,
-      76,   247,   393,   472,   805,  1475,   250,   327,   732,   348,
-    1333,   626,  1475,  -517,   733,   358,   626,   847,   621,   176,
-      76,   514,   626,  1361,   229,   626,   626,   626,    76,   871,
-    -468,   643,  -468,   862,   848,   886,  1015,   411,   849,    35,
-     394,    36,  1028,   626,   915,   266,   252,   877,   872,  -468,
-     815,   471,   604,   348,   348,   348,   395,  1142,   917,   411,
-     916,   807,  1075,  1523,  1444,   915,    76,   442,   917,  1444,
-    1185,   348,   263,   327,   918,   113,    37,   929,   908,  1185,
-      40,  1082,  1317,   -10,  1083,   597,  1186,    41,    42,  1444,
-     692,   498,   805,   110,   357,  1309,  1444,  1409,  1318,  1113,
-    1237,   626,   934,   621,    41,    42,   747,  -441,  1319,   720,
-     720,   748,   748,    43,   407,   846,   399,   561,   562,   893,
-     599,    45,    46,   400,  1320,   748,   401,  1364,   500,   348,
-     408,  -442,   402,   895,  1035,   113,   345,   912,   403,   748,
-     751,   751,   523,   212,   523,   276,   571,   523,   411,   404,
-     523,   923,   405,   981,    45,    46,   519,   212,   850,   982,
-    1277,  1278,   851,   278,   229,   472,   234,   923,   815,   604,
-     714,   342,   965,  1154,   850,   411,  1374,   176,  1101,   966,
-    1477,   750,  1478,   411,   572,   472,   279,  -103,   967,    45,
-      46,  -103,   626,   472,   626,   110,  1000,   139,   140,   626,
-     345,   330,   933,   603,   602,  1162,    41,    42,   994,   176,
-      45,    46,    37,  1233,   706,   603,    40,   331,  1349,   579,
-     348,  1357,  1350,    41,    42,   176,   332,   748,   348,   712,
-    1358,    63,   715,   371,   358,  1524,   748,   923,   923,   176,
-     548,   985,   982,   465,     8,     9,    10,    11,    12,   813,
-     212,   602,   329,   411,   229,   953,   372,    45,    46,   953,
-     953,  1360,   815,   550,    76,   307,  1365,   748,  -290,   551,
-     552,   333,   748,    31,   604,     8,     9,    10,    11,    12,
-     807,   510,  1370,  1371,   106,  1427,   334,   626,   673,   675,
-      76,  1424,   665,    57,   113,   345,   908,   911,   908,   335,
-    1445,    34,  1183,   376,    31,    37,   748,   385,   666,    40,
-     113,   715,  1157,   913,   602,   389,    41,    42,   805,    70,
-     176,   692,   409,   934,   934,  1491,  1419,   982,   720,   714,
-     342,  1492,    34,   113,   307,   129,    56,   130,   131,   132,
-      48,   112,   719,  1399,  1400,    69,    41,    42,  1106,   397,
-      45,    46,   106,  1547,   214,  1084,   426,   912,   751,   579,
-    1159,    57,   602,   427,  1509,  1426,   772,   773,   519,   112,
-     112,   432,    48,   519,   450,  1324,   519,   738,  1242,   739,
-     411,  1437,   740,    48,  1088,   744,  1088,   604,  -365,    48,
-     345,   774,   775,  1228,  -394,   484,    37,    48,   174,   175,
-      40,   780,   781,    48,  1107,   214,    48,    41,    42,    48,
-     461,   626,   626,  1127,   462,     2,   206,     4,     5,     6,
-       7,   504,   112,   112,   776,   777,   778,   779,   291,   472,
-     788,   307,     2,   206,     4,     5,     6,     7,   327,   348,
-     348,   528,   529,   530,   508,  1169,    48,   442,   214,    48,
-     106,  1495,  1437,   513,   525,   472,    48,    76,   111,    57,
-     527,   228,  1381,   563,   564,   531,  1381,   532,   566,   533,
-     534,   113,   252,   329,   411,   565,   908,   419,   661,   411,
-      35,   908,    36,   569,   176,    70,   338,    48,  -438,   587,
-     934,   658,   659,   712,   846,    48,  -291,    35,   266,    36,
-      48,   590,    56,     8,     9,    10,    11,    12,    -3,   214,
-     639,  1190,   660,   626,   481,   329,   411,   662,   663,   761,
-     664,   829,   329,   602,   766,    48,    48,    37,   667,   183,
-     184,    40,    31,   669,   257,   912,   693,   345,    41,    42,
-     912,    48,   694,    -3,   696,   498,   698,   214,  -237,    48,
-     734,   745,   214,  1296,  1297,  1298,   692,   749,    48,   757,
-      34,    48,   808,  1460,   906,   809,   411,   -12,   112,   812,
-     823,   714,    45,    46,   465,  1332,  1334,  1335,   -13,   271,
-     113,   867,   868,   112,   874,   907,   894,   112,   896,   897,
-     922,    48,   112,   901,   904,   219,  -415,   723,   113,   106,
-    -521,   944,   307,   937,   946,    48,    48,    57,    57,   957,
-     950,   959,    48,   958,   960,   951,   626,  -292,   961,    48,
-     113,   106,    63,    76,     8,     9,    10,    11,    12,   962,
-      57,   978,   989,   212,   342,  1106,   990,   991,   214,   106,
-    1006,  1007,  1008,  1009,   116,   879,  1010,   881,    57,  1011,
-     210,   220,   712,    31,  1012,  1023,    70,  -403,    37,  -402,
-     183,   184,    40,  1037,  1422,   626,   626,  1072,    48,    41,
-      42,  1535,  1074,    56,   271,  1095,   907,  1096,  1059,   307,
-    1097,    34,    69,  1098,  1104,  1114,   748,  1115,    48,    48,
-    1116,  1107,   159,   348,   348,   185,  1118,   928,   106,  1352,
-    1121,  1123,    57,    45,    46,    48,   972,    57,  1124,    48,
-    1125,  1126,   113,   407,  1132,  1129,   399,   692,  1152,   214,
-     644,  1173,  1174,   400,   173,  1175,   401,  1106,   442,   408,
-    1176,   106,   402,    70,  1177,  1191,    48,   665,   403,  1192,
-      57,  1194,  1195,  1203,  1210,   441,    48,  1207,   258,   404,
-      56,  1208,   405,   666,  1215,    -3,   159,  1220,  1225,  1190,
-    1223,   214,  1241,   493,    48,  1229,   253,  1508,  1234,   266,
-      48,  1236,    48,  1421,  1238,  1247,  1251,  1253,  1255,   110,
-    1257,   139,   238,  1107,  1258,   626,  1263,  1259,   472,   323,
-      41,    42,  1260,  1261,    76,   176,  1270,    37,   339,   174,
-     175,    40,  1279,   110,  1280,   139,   140,   112,    41,    42,
-     113,  1287,    48,   348,    41,    42,   239,  1290,  1291,  1292,
-      48,   240,  1330,  1294,    48,  1106,  1302,  1308,    48,   106,
-    1315,   112,   113,   112,   372,  1323,  1321,  1325,    57,   113,
-     727,   113,  1336,   113,  1329,   728,  1337,  1193,   430,  1339,
-    1345,   106,   434,  1346,  1347,  1348,   149,  1359,   106,  1355,
-      57,   150,   417,   151,  1356,  1366,  1367,    57,   112,  1298,
-    1375,    76,  1507,   112,  1384,  1376,  1377,   113,  1383,   113,
-    1393,  1107,   323,   214,  1394,   437,    70,  -404,  1397,  1408,
-     113,  1412,  1414,    70,   712,   445,  1507,  1507,  1416,  1417,
-     703,  1423,  1418,    56,   161,  1441,   307,  1431,  1432,   106,
-      56,   214,  1190,  1433,   434,  1434,   214,   488,    57,  1190,
-    1350,  1507,  1436,   112,  1446,  1448,  1450,  1452,   373,   213,
-      48,  1454,  1456,  1458,  1463,  1465,  1486,   521,   232,  1464,
-    1476,    48,  1488,    48,    70,  1490,  1493,  1501,  1521,  1122,
-     159,  1494,  1516,  1517,  1530,   479,   141,  1528,  1532,    63,
-    1538,    56,    48,   520,  1545,   176,  1546,   889,  1209,   782,
-    1190,  1133,  1131,   712,   784,  1133,  1307,  1411,    48,   783,
-     213,   704,   785,   112,   588,   786,  1496,   214,   594,  1548,
-    1369,  1385,    48,  1240,   112,    48,   112,  1214,  1479,   902,
-     903,   214,  1089,   925,   215,  1222,  1093,   627,   241,   244,
-     327,   631,   801,  1128,   339,  1059,  1036,   939,   873,  1103,
-     242,  1316,   717,   213,    76,  1133,    66,   117,    48,   947,
-     791,    76,   112,   792,   112,   793,   472,    37,   112,   174,
-     175,    40,     0,     0,     0,     0,   112,     0,    41,    42,
-       0,     0,     0,  1285,  1286,   215,  1288,     0,    66,    48,
-      48,     0,     0,  1293,     0,  1295,     0,     0,     0,   323,
-     323,     0,     0,    48,   376,   160,     0,     8,     9,    10,
-      11,    12,    76,     0,   213,     0,     0,  1483,     0,  1483,
-       0,     0,     0,     0,   214,   221,     0,   688,   215,     0,
-     528,   529,   530,     0,     0,     0,    31,   703,  1373,     0,
-     116,     0,   681,     0,     0,     0,     0,     8,     9,    10,
-      11,    12,   213,  1483,   531,  1483,   532,   213,   533,  1306,
-       0,   259,     0,     0,    34,   488,     0,   323,   707,   488,
-       0,     0,   499,     0,     0,     0,    31,     0,     0,   521,
-       0,   521,     0,    48,   521,     0,   323,   521,     0,   215,
-    1398,     0,     0,  1406,     0,    48,     0,     0,   339,   457,
-       0,     0,     0,   328,    34,   520,   571,     0,   411,     0,
-     520,   259,   350,   520,    45,    46,     0,     0,   704,   472,
-       0,     0,     0,     0,     0,     0,   472,   215,     0,     0,
-       0,     0,   215,     0,     0,     0,  1443,     0,   644,     0,
-       0,  1447,   406,   213,   112,     0,   750,     0,   411,     0,
-       0,  1405,   323,     0,    45,    46,   703,   424,     0,     0,
-     429,   431,     0,   803,     0,   160,   703,    48,     0,  1468,
-    1133,  1133,  1133,     0,     0,     0,    48,   472,    48,     0,
-     703,     0,     0,     0,     0,   112,   448,     0,     0,     0,
-     451,     0,   452,     0,   844,     0,     0,     0,     0,   594,
-       0,   459,     0,     0,     0,   853,    74,    66,    48,     0,
-       0,     0,   473,     0,     0,     0,     0,     0,   215,     0,
-       0,   214,   480,     0,   213,     0,     0,     0,   112,     0,
-     431,     8,     9,    10,    11,    12,   645,   704,    74,     0,
-       0,   213,   644,     0,     0,     0,     0,   704,     0,     0,
-     112,     0,     0,  1536,   112,     0,     0,     0,   688,  1536,
-      31,   704,     0,     0,     0,     0,   213,     0,     0,   891,
-    1536,     0,   892,     0,  1536,   222,     0,     0,   898,     0,
-       0,     0,   900,     0,     0,     0,     0,     0,    34,     0,
-       0,    37,     0,   183,   184,    40,   488,   259,     0,   215,
-       0,   595,    41,    42,   112,     0,     0,   623,  1133,  1133,
-       0,     0,     0,     0,     0,     0,     0,     0,   339,     0,
-     628,     0,     0,     0,   628,     0,     0,   259,   265,     0,
-     933,     0,   602,     0,     0,     0,    45,    46,    45,    46,
-       0,   215,   112,     0,     0,     0,  1461,   725,     0,   729,
-       0,     0,     0,     0,     0,     0,    48,     0,     0,     0,
-       0,    48,   353,   535,   536,   537,   538,   539,   540,   541,
-     542,   543,   544,   545,   473,     0,     0,   996,    48,     0,
-       0,     0,   803,     0,   703,   703,     0,     0,   213,   350,
-       0,   988,     0,     0,   473,     0,     0,   546,     0,     0,
-       0,   993,   473,     0,  1510,     0,     0,   214,     0,     0,
-       0,     0,     0,  1518,     0,  1005,   213,     0,     0,     0,
-     699,   213,    37,   431,   183,   184,    40,     0,     0,     0,
-       0,     0,     0,    41,    42,     0,   449,     0,   713,     0,
-      66,     0,   703,   703,     0,     0,     0,     0,   431,     0,
-       0,     0,   431,     0,     0,   112,     0,    74,     0,   601,
-       0,   602,    74,   215,     0,   704,   704,    45,    46,     0,
-     803,     0,     0,     0,     0,     0,     0,   339,    48,     0,
-       0,   259,   350,     0,     0,     0,     0,     0,     0,     0,
-       0,   215,   213,   688,     0,     0,   215,     0,  1080,   866,
-       0,     0,   214,    77,     0,     0,   213,     0,     0,     0,
-       0,     0,     0,     0,     0,   488,  1108,   323,     0,   112,
-     112,   112,     0,   704,   704,     0,   499,     0,   794,    37,
-       0,   183,   184,    40,     0,    77,     0,     0,     0,     0,
-      41,    42,     0,     0,     0,     0,   628,   806,   919,     0,
-     921,     0,     0,     0,   457,     0,     0,   222,    37,   825,
-     183,   184,    40,     0,     0,     0,   906,   215,   411,    41,
-      42,     0,   223,   844,    45,    46,     0,   595,     0,     0,
-       0,   215,   595,     0,     0,     0,     0,     0,   628,     0,
-    1313,   350,   350,   350,     0,  1506,     0,   411,     0,   213,
-       0,     0,     0,    45,    46,     0,     0,     0,     0,   350,
-       0,     0,     0,   124,   127,   128,     0,     0,     0,  1167,
-    1168,     0,   703,     0,    74,     0,     0,   699,     0,     0,
-     703,   703,   703,     0,     0,     0,     0,     0,   473,   353,
-       0,     0,     0,     0,    74,     0,     0,     0,    48,    48,
-       0,  1204,    74,     0,   688,     0,     0,   112,   112,   355,
-       0,     0,     0,     0,   473,     0,     0,   350,     0,     0,
-     353,  1314,     0,     0,   215,     0,   938,  1217,  1218,   431,
-       0,     0,     0,     0,     0,   254,     0,   255,   353,     0,
-      74,     0,     0,     0,   703,   112,   803,     0,     0,     0,
-       0,   259,   713,   704,     0,     0,     0,   968,     0,     0,
-       0,   704,   704,   704,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   645,     0,     0,     0,     0,     0,
-    1040,     0,   353,     0,     0,     0,     0,   126,   126,   126,
-       0,     0,     0,     0,     0,     0,   699,     0,     0,     0,
-       0,     0,    48,   112,    77,     0,   699,     0,   350,    77,
-     628,     0,   112,  1003,     0,   628,   806,     0,   396,     0,
-     699,  1090,     0,     0,     0,   704,    48,    48,   415,   416,
-    1014,   339,     0,   420,     0,   422,   423,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   213,   353,     0,     0,
-       0,    48,     0,  1108,     0,     0,     0,     0,     0,   126,
-       0,   126,     0,     0,     0,    79,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   645,     0,
-       0,    66,     0,     0,     0,     0,   275,     0,     0,     0,
-       0,   353,   353,   353,     0,     0,     0,    79,     0,     0,
-       0,     0,     0,   628,   223,     0,     0,  1338,     0,   353,
-     259,   713,     0,     0,  1086,  1340,  1341,  1342,     0,     0,
-       0,   215,     0,     0,     0,     0,     0,   353,     0,     0,
-       0,     0,     0,     0,   224,     0,     0,     0,    74,     0,
-    1100,     0,   126,     0,     0,  1108,     0,  1368,   431,   117,
-     126,     0,   126,   126,     0,     0,     0,   126,     0,   126,
-     126,     0,     0,     0,    74,     0,     0,   353,     0,     0,
-       0,    77,     0,     0,     0,     0,     0,     0,  1040,  1386,
-       0,     0,     0,     0,     0,     0,   355,     0,     0,     0,
-       0,    77,     0,     0,     0,     0,     0,     0,     0,    77,
-       0,     0,   353,     0,     0,     0,   595,     8,     9,    10,
-      11,    12,     0,     0,     0,     0,     0,   355,     0,   429,
-       0,   356,     0,     0,   699,   699,     0,   350,   350,   126,
-       0,     0,   213,     0,     0,   355,    31,    77,     0,     0,
-       0,     0,     0,  1108,     0,     0,   353,  1189,     0,     0,
-       0,     0,     0,     0,     0,     0,   353,     0,   353,     0,
-       0,     0,     0,   222,    34,     0,   353,     0,     0,    37,
-     353,   183,   184,    40,  1482,     0,  1482,     0,     0,   355,
-      41,    42,   699,   699,     0,     0,     0,     0,     0,     0,
-       0,  1283,     0,     0,     0,     0,     0,     0,     0,  1480,
-       0,  1484,     0,     0,     0,     0,   601,   215,   602,     0,
-    1482,     0,  1482,     0,    45,    46,    79,     0,     0,     0,
-       0,    79,     0,     0,     0,     0,     0,   213,     0,   628,
-       0,    74,     0,     0,     0,  1512,     0,  1514,     0,   323,
-       0,     0,     0,     0,   355,     0,     0,     0,     0,     0,
-       0,     0,     0,   713,     0,     0,     0,     0,     0,    86,
-       0,   353,     0,     0,     0,     0,     0,   413,     0,     0,
-       0,     0,     0,     0,   421,     0,     0,     0,     0,  1543,
-       0,  1544,     0,     0,     0,     0,     0,     0,   355,   355,
-     355,    86,     0,     0,  1551,  1552,  1284,     0,     0,     0,
-       0,     0,   215,     0,     0,     0,   355,     0,     0,     0,
-       0,     0,   796,   797,   259,     0,   224,     0,    66,     0,
-       0,     0,     0,     0,   355,     0,     0,     0,   225,     0,
-     699,     0,   713,     0,     0,    77,   117,     0,     0,     0,
-       0,   830,     0,     0,   833,   834,   413,   837,     0,   839,
-     840,     0,     0,     0,   841,   842,     0,     0,     0,     0,
-       0,    77,   699,     0,   355,     0,     0,     0,     0,     0,
-     699,   699,   699,     0,   353,   353,     0,   353,   353,     0,
-       0,   350,   350,    79,     0,     0,     0,     0,     8,     9,
-      10,    11,    12,     0,     0,  1189,     0,    74,   356,   355,
-       0,   577,     0,    79,     0,     0,     0,     0,     0,   581,
-       0,    79,   584,     0,     0,   363,     0,    31,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   117,   356,
-       0,     0,   353,   353,   699,     0,   126,   126,     0,     0,
-       0,     0,     0,   355,     0,    34,     0,   356,     0,    79,
-      37,     0,     0,   355,    40,   355,     0,     0,     0,     0,
-     223,    41,    42,   355,     0,   126,     0,   355,   126,   126,
-       0,   126,     0,   126,   126,     0,   413,     0,   126,   126,
-     421,     0,     0,     0,     0,     0,     0,    43,     0,     0,
-       0,   356,   970,   971,     0,    45,    46,     0,     0,     0,
-       0,   350,     0,   353,     0,     0,     0,     0,     0,     0,
-      86,     0,     0,     0,     0,    86,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   117,     0,    77,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   222,     0,  1189,     0,
-       0,     0,     0,     0,     0,  1189,   356,   413,   355,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    74,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     353,     0,   353,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     8,     9,    10,    11,    12,     0,
-     356,   356,   356,     0,     0,     0,  1189,     0,     0,     0,
-     225,     0,   353,  1531,     0,     0,   126,   126,   356,     0,
-     353,   353,   353,    31,     0,     0,     0,     0,     0,     0,
-       0,   353,   353,     0,     0,     0,   356,     0,     0,     0,
-       0,     0,     0,     0,     0,    74,     0,    79,     0,   577,
-     577,    34,     0,     0,  1091,     0,    37,     0,   183,   184,
-      40,     0,     0,     0,     0,     0,     0,    41,    42,     0,
-       0,   355,   355,    79,   355,   355,   356,    86,     0,     0,
-       0,     0,     0,     0,   353,     0,     0,     0,     0,     0,
-       0,     0,   363,   906,    77,   411,     0,    86,     0,     0,
-       0,    45,    46,     0,     0,    86,     0,     0,     0,     0,
-       0,   356,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   363,     0,     0,     0,     0,     0,   355,
-     355,     0,     0,     0,     0,     0,   884,     0,     0,     0,
-     887,   363,     0,    86,     0,     0,     0,     0,     0,     0,
-       0,   353,     0,     0,     0,   356,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   356,     0,   356,     0,     0,
-       0,     0,   224,   126,     0,   356,     0,     0,   126,   356,
-       0,     0,     0,     0,     0,   363,   167,     0,   172,     0,
-       0,   178,   179,   180,     0,   182,     0,     0,    74,     0,
-     355,     0,     0,     0,     0,    74,     0,     0,     0,   233,
-       0,     0,     0,     0,     0,  1219,     0,     0,     0,     0,
-       0,   248,   249,     0,     8,     9,    10,    11,    12,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      79,     0,     0,   223,     0,     0,     0,     0,     0,     0,
-     363,     0,     0,    31,     0,     0,    74,     0,     0,     0,
-       0,     0,     0,     0,     0,    77,     0,     0,     0,     0,
-     356,     0,   577,     0,     0,     0,     0,   355,     0,   355,
-       0,    34,     0,     0,     0,     0,    37,     0,   183,   184,
-      40,     0,     0,     0,   363,   363,   363,    41,    42,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   355,
-       0,     0,   363,     0,     0,     0,     0,   355,   355,   355,
-       0,     0,     0,  1506,     0,   411,     0,     0,   355,   355,
-     363,    45,    46,     0,     0,   507,     0,   509,   512,   126,
-       0,    86,    77,     0,  1305,   515,   516,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     509,   509,     0,     0,     0,     0,     0,    86,     0,     0,
-     363,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   355,     0,   356,   356,     0,   356,   356,     0,     0,
-     413,     0,     0,     0,     0,     0,     0,     0,   509,     0,
-       0,     0,     0,     0,     0,   363,    79,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,  -293,     0,    26,    27,    28,
-       0,     0,     0,     0,   509,     0,    31,     0,     0,     0,
-       0,   356,   356,     0,     0,     0,     0,     0,   355,   363,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   363,
-       0,   363,     0,     0,    34,     0,   225,  1143,   126,   363,
-       0,    38,    39,   363,     0,  -293,     0,   592,     0,   600,
-       0,     0,     0,     0,  1155,     0,     0,     0,     0,     0,
-     624,   625,     0,     0,     0,    77,     0,     0,     0,     0,
-     282,   283,    77,   284,     0,     0,   635,     0,   338,     0,
-       0,     0,   356,     0,    45,    46,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   285,
-       0,     0,     0,     0,    86,   286,     0,     0,     0,   287,
-       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
-     293,     0,     0,    77,     0,   224,     0,     0,     0,     0,
-       0,     0,   413,     0,   363,     0,     0,     0,     0,     0,
-       0,     0,   294,     0,   379,     0,     0,    79,     0,     0,
-      45,    46,   296,   297,   298,   299,     0,     0,     0,   356,
-       0,   356,  1013,   787,     0,     8,     9,    10,    11,    12,
-       0,     0,  1243,   509,   509,   509,   509,   509,   509,   509,
-     509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
-     509,   356,   282,   283,    31,   284,     0,     0,     0,   356,
-     356,   356,     0,     0,     0,     0,     0,     0,     0,     0,
-     356,   356,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   285,    34,     0,    79,     0,     0,   286,     0,     0,
-       0,   287,     0,     0,   288,   289,   290,   291,    41,    42,
-       0,   292,   293,     0,     0,     0,     0,   363,   363,     0,
-     363,   363,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   356,   294,     0,   379,     0,     0,     0,
-      86,     0,   344,    46,   296,   297,   298,   299,     0,     0,
-       1,     2,   206,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,   363,   363,    26,    27,    28,
-      29,     0,     0,    30,   282,   283,    31,   284,     0,   509,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   285,    34,     0,    35,     0,    36,   286,
-       0,    38,    39,   287,   165,     0,   288,   289,   290,   291,
-      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
-       0,   218,     0,     0,     0,     0,   363,    79,     0,     0,
-     509,     0,     0,     0,    79,     0,   294,     0,  1056,     0,
-       0,     0,     0,     0,    45,    46,   296,   297,   298,   299,
-       0,     0,     0,   926,     0,   927,     0,     0,     0,  -128,
-     509,     0,   930,   931,     0,     0,     0,   936,   165,   225,
-       0,     0,   272,     0,     0,     0,     0,     0,     0,   941,
-       0,     0,     0,     0,   945,    79,     0,     0,     0,     0,
-       0,    86,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   165,     0,   363,     0,   363,     0,     0,     0,     0,
-       0,   369,   979,     0,     0,   375,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,  1163,     0,     0,     8,
-       9,    10,    11,    12,     0,   363,     0,     0,     0,     0,
-       0,     0,     0,   363,   363,   363,     0,     0,     0,     0,
-       0,     0,     0,     0,   363,   363,   282,   283,    31,   284,
-       0,     0,     0,     0,   165,     0,     0,     0,    86,     0,
-       0,     0,     0,     0,     0,     0,   218,     0,     0,     0,
-     509,     0,     0,     0,     0,   285,    34,     0,     0,     0,
-       0,   286,     0,     0,   165,   287,     0,     0,   288,   289,
-     290,   291,    41,    42,     0,   292,   293,   363,     0,     0,
-       0,  1024,  1025,  1026,  1027,     0,  1029,     0,     0,   375,
-       0,     0,     0,     0,     0,   509,   165,     0,   294,     0,
-     379,  1073,     0,     0,     0,     0,  1164,    46,   296,   297,
-     298,   299,     0,     0,     0,  1079,     0,     0,     0,   524,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     509,     0,   165,     0,     0,     0,     0,     0,     0,   211,
-       0,     0,     0,   509,   363,     0,     0,     0,   231,     0,
-     235,     0,   237,     0,     0,  1099,     0,     0,     0,   246,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     598,     0,     0,     0,     0,   622,     0,     0,     0,     0,
-       0,     0,     0,     0,   509,     0,     0,     0,     0,     0,
-     211,    86,   235,   237,   246,     0,     0,     0,    86,     0,
-    1130,     0,     0,     0,     0,     0,  1137,     0,     0,     0,
-       0,  1141,     0,     0,     0,     0,  1145,     0,  1146,     0,
-       0,     0,  1148,     0,  1149,  1150,     0,     0,  1153,     0,
-       0,     0,     0,   211,     0,     0,     0,  1165,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    86,
-       0,   165,   165,     0,     0,  1180,  1181,     0,   369,     0,
-       0,   509,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   524,
-       0,     0,  1211,     0,     0,  1213,     0,     0,     0,     0,
-       0,     0,     0,     0,   211,     0,   235,   237,   246,     0,
-       0,     0,     0,     0,     0,     0,     0,   716,     0,     0,
-       0,     8,     9,    10,    11,    12,     0,     0,     0,   165,
-       0,   509,   509,     0,     0,     0,     0,     0,  1227,     0,
-       0,   524,   211,   524,  1231,  1232,   524,   211,   165,   524,
-      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   369,   497,     0,  1248,     0,     0,  1252,     0,     0,
-       0,  1254,     0,     0,     0,     0,     0,     0,    34,     0,
-       0,     0,     0,    37,  1262,   183,   184,    40,     0,     0,
-       0,     0,     0,     0,    41,    42,     0,  1269,     0,  1271,
-    1272,  1273,  1274,     0,     0,     0,     0,     0,     0,     0,
-       0,   211,     0,     0,   165,  1281,     0,  1282,     0,     0,
-     185,   172,     0,     0,     0,     0,   369,     0,    45,    46,
-     811,     0,     0,   211,     0,     0,     0,     0,   235,   237,
-       0,     0,     0,     0,     0,     0,   246,     0,     0,     0,
-    1310,  1311,     0,     0,     0,     0,   598,     0,     0,     0,
-       0,   598,     0,     0,     0,     0,     0,     0,     0,     0,
-     369,   369,   369,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   369,   211,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    1343,  1344,     0,     0,     0,     0,     0,   211,     0,     0,
-    1354,     0,   211,     0,   211,     0,     0,     0,     0,     0,
-     524,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   211,     0,     0,   211,   211,   509,     0,     0,     0,
-       0,     0,   211,     0,     0,     0,   369,     0,   935,     0,
-       0,     0,   509,     0,     0,     0,   211,     0,     0,     0,
-       0,     0,     0,   211,     0,     0,     0,     0,     0,     0,
-       0,  1389,     0,  1390,  1391,  1392,     0,     0,     0,     0,
-       0,   716,     0,     0,     0,  1396,   156,     0,     0,     0,
-       0,     0,     0,     0,  1407,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,     0,  1428,
-       0,     0,   509,   509,    31,     0,     0,     8,     9,    10,
-      11,    12,     0,   251,     0,     0,     0,   369,     0,     0,
-       0,   622,     0,   256,     0,   369,     0,     0,     0,     0,
-       0,     0,    34,     0,     0,     0,    31,    37,     0,    38,
-      39,    40,  1466,  1467,     0,     0,     0,     0,    41,    42,
-       0,     0,     0,     0,     0,  1472,     0,     0,   211,     0,
-       0,     0,  1472,     0,    34,     0,     0,     0,     0,    37,
-       0,   183,   184,    40,    43,     0,   157,     0,     0,   156,
-      41,    42,    45,    46,     0,     0,   211,     0,     0,     0,
-       0,   211,     0,   386,  1505,     0,     0,     0,  1511,     0,
-       0,     0,     0,     0,     0,     0,   265,     0,     0,     0,
-       0,     0,     0,     0,    45,    46,   418,     0,     0,     0,
-     716,     0,     0,     0,     0,     0,  1533,     0,  1534,     0,
-     433,     0,     0,     0,     0,   524,     0,     0,     0,   438,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   446,
-       0,     0,     0,     0,     0,     0,  1549,  1550,     0,   165,
-       0,     0,   211,     0,  1553,  1554,     0,     0,     0,     0,
-       0,     0,     0,     0,   464,     0,   211,     0,     0,   474,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   482,     0,     0,     0,   497,     0,   492,     0,
-     496,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   598,     0,   526,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,   369,   369,    26,    27,
-      28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   211,     0,     0,
-     586,     0,     0,     0,     0,   591,     0,     0,     0,   211,
-       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
-      37,     0,    38,    39,    40,     0,     0,     0,   211,     0,
-       0,    41,    42,     0,   636,     0,   524,     0,   637,   638,
-       0,   640,     0,     0,     0,     0,     0,     0,   651,   652,
-       0,   653,   654,     0,   655,     0,   656,    43,     0,    44,
-       0,     0,     0,     0,     0,    45,    46,     0,     0,     0,
-       0,     0,     0,   586,     0,     0,     0,     0,     0,     0,
-       0,   671,     0,     0,     0,     0,     0,     0,     0,   341,
-     364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   716,     0,     0,     0,   682,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     8,     9,    10,    11,
-      12,     0,     0,   414,     0,     0,     0,     0,     0,     0,
-     414,     0,   708,     0,     0,     0,     0,     0,   711,     0,
-       0,   211,     0,   464,   218,    31,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,  -293,     0,    26,    27,    28,     0,
-       0,   211,     0,    34,     0,    31,     0,     0,    37,   746,
-       0,   716,    40,     0,     0,     0,     0,     0,     0,    41,
-      42,     0,     0,     0,   764,     0,     0,     0,     0,     0,
-       0,     0,   414,    34,     0,     0,   211,     0,    37,     0,
-     336,   337,    40,     0,  -293,   719,     0,   211,     0,    41,
-      42,     0,     0,    45,    46,     0,     0,     0,     0,     0,
-     369,   369,     0,   790,     0,     0,     0,     0,     0,   218,
-       0,     0,   800,     0,     0,   635,     0,   338,   321,   802,
-       0,     0,     0,    45,    46,   810,     0,   414,   346,     0,
-       0,     0,     0,     0,   824,   414,   582,     0,   414,   585,
-     382,   382,     0,     0,     0,     0,     0,     0,     0,   364,
-       0,     0,     0,   614,     0,     0,     0,     0,     0,   211,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   632,   211,   864,   341,   205,     2,   206,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,   414,    26,    27,    28,   414,     0,     0,     0,
-     810,   321,    31,     0,     0,     0,     0,     0,   905,     0,
-     369,     0,   282,   283,     0,   284,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   478,     0,   364,     0,     0,
-      34,     0,    35,     0,    36,     0,     0,   207,    39,   251,
-       0,   285,     0,     0,     0,     0,     0,   286,     0,   942,
-     943,   287,   211,     0,   288,   289,   290,   291,    41,    42,
-       0,   292,   293,     0,     0,     0,   524,     0,   524,     0,
-       0,     0,     0,   414,   208,     0,   364,     0,     0,     0,
-      45,    46,   980,     0,   294,     0,   379,   984,     0,   380,
-       0,     0,    45,    46,   296,   297,   298,   299,     0,     0,
-       0,     0,   524,     0,   524,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   414,     0,     0,     0,   341,
-     364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   165,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   382,     0,     0,     0,     0,   211,     0,     0,
-       0,  1018,     0,     0,     0,     0,     0,     0,  1019,     0,
-       0,     0,     0,     0,     0,   414,   414,     0,     0,     0,
-       0,  1021,     0,  1022,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   804,   364,     0,  1034,     0,     0,
-       0,     0,     0,  1038,     0,   614,     0,   614,   614,     0,
-       0,     0,     0,     0,   614,  1076,     0,     0,  1077,     0,
-       0,     0,     0,     0,   843,   364,     0,     0,     0,     0,
-     364,     0,     0,     0,     0,     0,     0,     0,     0,   364,
-     364,   364,     0,     0,     0,     0,   710,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   364,     0,     0,
-       0,     0,   414,   885,     0,     0,   414,   888,     0,     0,
-       0,     0,     0,   890,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   742,     0,     0,     0,     0,
-       0,     0,   414,     0,     0,   591,     0,     0,   759,     0,
-       0,     0,     0,   742,     0,     0,   742,     0,     0,     0,
-       0,     0,     0,     0,     0,   364,   614,     0,     0,   768,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    1147,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   789,     0,     0,     0,     0,     0,     0,     0,   341,
-     364,   798,     0,     0,   414,   414,     0,     0,   346,     0,
-       0,     0,     0,   759,     0,     0,     0,     0,     0,     0,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,   526,     0,
-      26,    27,    28,     0,  1212,     0,     0,     0,   414,    31,
-       0,     0,     0,     0,   211,     0,   364,     0,     0,     0,
-       0,     0,   863,   804,   364,     0,     0,   614,     0,   614,
-     382,     0,     0,     0,     0,     0,     0,    34,  1224,   614,
-       0,     0,    37,  1226,   207,    39,    40,     0,     0,     0,
-       0,  1230,     0,    41,    42,     0,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,  -293,     0,     0,     0,     0,    43,
-       0,   270,     0,     0,  1256,    31,     0,    45,    46,     0,
-       0,     0,     0,     0,     0,     0,  1264,     0,     0,  1265,
-       0,  1266,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   804,     0,    34,     0,  1275,  1276,     0,   341,   364,
-     414,     0,   414,     0,  -293,     0,   414,     0,   759,     0,
-     964,     0,     0,     0,     0,     0,     0,  1289,     0,     0,
-     975,     0,     0,     0,     0,     0,   983,   614,   614,     0,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,  -294,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    31,
-       0,     0,   414,     0,  1328,     0,     0,     0,  1001,  1002,
-       0,     0,   346,     0,     0,     0,     0,     0,   282,   283,
-       0,   284,     0,   414,  1144,     0,   346,    34,     0,     0,
-       0,     0,     0,     0,   364,     0,     0,     0,  -294,     0,
-     414,  1156,     0,   614,   614,  1161,     0,   285,     0,     0,
-       0,     0,     0,   286,     0,   364,   364,   287,     0,     0,
-     288,   289,   290,   291,    41,    42,  1032,   292,   293,     0,
-     382,     0,     0,     0,     0,     0,     0,     0,     0,  1378,
-       0,  1379,     0,     0,     0,     0,     0,     0,     0,     0,
-     294,     0,   379,  1387,     0,  1388,     0,   758,    45,    46,
-     296,   297,   298,   299,     0,     0,     0,   346,     0,     0,
-       0,     0,  1395,     0,     0,     0,     0,     0,   414,     0,
-     414,     0,     0,     0,     0,   414,     0,     0,  1413,  1415,
-       0,     0,     0,     0,   614,     0,     0,     0,     0,  1420,
-       0,     0,  1230,     0,     0,     0,   321,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   804,   414,  1244,
-       0,     0,     0,  1442,     0,     0,     0,     0,     0,     0,
-       0,     0,  1449,     0,   382,  1451,     0,  1453,  1455,  1457,
-     975,   364,     0,     0,   742,   282,   283,     0,   284,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,  1151,     0,     0,     0,     0,
-       0,     0,     0,     0,   285,     0,  1166,  1487,     0,  1489,
-     641,  1230,   139,   140,   287,     0,     0,   288,   289,   290,
-     291,    41,    42,     0,   292,   293,  1500,     0,   382,     0,
-    1184,     0,   341,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   975,   975,   294,     0,   642,
-     364,   643,   380,     0,     0,    45,    46,   296,   297,   298,
-     299,     0,     0,     0,     0,     0,  1216,     0,     0,     0,
-       0,     0,     0,     0,     1,     2,   206,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,   364,
-     364,    26,    27,    28,    29,     0,     0,    30,     0,     0,
-      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   975,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    34,   863,
-      35,     0,    36,     0,     0,    38,    39,     0,     0,     0,
-       0,     0,     0,     0,  1267,  1268,     0,     1,     2,   206,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    44,     0,    26,    27,    28,    29,    45,    46,
-      30,   282,   283,    31,  1041,  1042,     0,  1043,     0,     0,
-    1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,
-       0,  1052,     0,     0,     0,  1053,  1054,     0,    33,   364,
-     285,    34,     0,    35,     0,    36,  1055,     0,    38,    39,
-     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
-     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   294,     0,  1056,     0,     0,   171,     0,
-       0,    45,    46,   296,   297,   298,   299,     0,     0,     0,
-       0,  1057,     0,     0,     0,     0,  -128,     0,     0,     0,
-       0,     0,     0,     0,     0,  1372,     0,     0,   742,     0,
-       0,     0,     0,     0,     0,     0,   414,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     414,   414,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   414,     1,     2,   206,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,     0,    26,    27,    28,    29,     0,     0,    30,
-     282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
-      34,     0,    35,    31,    36,   286,     0,    38,    39,   287,
-       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
-     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    34,     0,     0,     0,     0,   110,     0,    38,    39,
-       0,     0,   294,     0,    44,     0,     0,    41,    42,     0,
-      45,    46,   296,   297,   298,   299,     2,   206,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-       0,     0,    26,    27,    28,     0,     0,     0,   321,   282,
-     283,    31,   284,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,     0,    26,    27,    28,     0,     0,   285,    34,
-       0,    35,    31,    36,   286,     0,    38,    39,   287,     0,
-       0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
-       0,   294,     0,   343,     0,     0,     0,     0,   758,   344,
-      46,   296,   297,   298,   299,     2,   206,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
-      31,   284,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-       0,     0,    26,    27,    28,     0,     0,   285,    34,     0,
-      35,    31,    36,   286,     0,    38,    39,   287,     0,     0,
-     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
-       0,     0,     0,     0,     0,     0,   207,    39,     0,     0,
-     294,     0,   963,     0,     0,     0,     0,   758,   344,    46,
-     296,   297,   298,   299,     2,   206,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
-      26,    27,    28,     0,     0,     0,     0,   282,   283,    31,
-     284,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,     0,     0,     0,     0,     0,   285,    34,     0,    35,
-      31,    36,   286,     0,    38,    39,   287,     0,     0,   288,
-     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
-       0,   963,     0,     0,     0,     0,   758,    45,    46,   296,
-     297,   298,   299,     2,   206,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
-      27,    28,     0,     0,     0,     0,   282,   283,    31,   284,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   285,    34,     0,    35,     0,
-      36,   286,     0,    38,    39,   287,     0,     0,   288,   289,
-     290,   291,    41,    42,     0,   292,   293,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   294,     0,
-     343,     0,     0,     0,     0,     0,   344,    46,   296,   297,
-     298,   299,     2,   206,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
-      28,     0,     0,     0,     0,   282,   283,    31,   284,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   285,    34,     0,    35,     0,    36,
-     286,     0,   207,    39,   287,     0,     0,   288,   289,   290,
-     291,    41,    42,     0,   292,   293,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   294,     0,   998,
-       0,     0,     0,     0,     0,   999,    46,   296,   297,   298,
-     299,     2,   206,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
-       0,     0,     0,     0,   282,   283,    31,   284,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   285,    34,     0,    35,     0,    36,   286,
-       0,    38,    39,   287,     0,     0,   288,   289,   290,   291,
-      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   294,     0,   963,     0,
-       0,     0,     0,     0,   344,    46,   296,   297,   298,   299,
-       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
-       0,     0,     0,   282,   283,    31,   284,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   285,    34,     0,    35,     0,    36,   286,     0,
-     207,    39,   287,     0,     0,   288,   289,   290,   291,    41,
-      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   294,     0,   379,     0,     0,
-       0,     0,     0,    45,    46,   296,   297,   298,   299,  -516,
-       0,     0,     1,     2,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
-      27,    28,    29,     0,     0,    30,     0,     0,    31,    32,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    33,     0,     0,    34,     0,    35,     0,
-      36,    37,     0,    38,    39,    40,     0,     0,     0,     0,
-       0,     0,    41,    42,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
-      44,     0,     0,     0,     0,     0,    45,    46,     1,     2,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
-       0,    30,     0,     0,    31,    32,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
-       0,     0,    34,     0,    35,     0,    36,    37,     0,    38,
-      39,    40,     0,     0,     0,     0,     0,     0,    41,    42,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    43,     0,    44,     0,     0,     0,
-    -520,     0,    45,    46,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,    26,    27,    28,    29,     0,     0,    30,     0,     0,
-      31,    32,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    33,     0,     0,    34,     0,
-      35,     0,    36,    37,     0,    38,    39,    40,     0,     0,
-       0,     0,     0,     0,    41,    42,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      43,     0,    44,     0,     0,     0,     0,     0,    45,    46,
-     205,     2,   206,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
-       0,     0,     0,     0,     0,     0,    31,     0,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
-      28,   485,   486,   487,    34,     0,    35,    31,    36,    37,
-       0,   207,    39,    40,     0,     0,     0,     0,     0,     0,
-      41,    42,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
-       0,     0,    38,    39,     0,     0,    43,     0,   208,     0,
-       0,     0,     0,     0,    45,    46,     1,     2,   206,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,  -293,     0,    26,    27,    28,    29,     0,     0,    30,
-       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      34,     0,    35,     0,    36,     0,     0,    38,    39,     0,
-       0,  -293,     2,   206,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
-      28,     0,     0,     0,    44,     0,     0,    31,     0,     0,
-      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
-      37,     0,   207,    39,    40,     0,     0,     0,     0,     0,
-       0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    43,     0,   208,
-       0,     0,     0,     0,     0,    45,    46,     2,   206,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
-       0,     0,    31,     0,     0,     0,     0,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
-      34,     0,    35,     0,    36,     0,    31,    38,    39,     0,
-       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    34,     0,    26,    27,    28,     0,
-       0,    38,    39,  -400,   678,    31,     0,     0,     0,     0,
-      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    34,     0,    35,   635,    36,   338,     0,
-      38,    39,     0,     0,    45,    46,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,  1351,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   678,     0,     0,
-       0,     0,     0,    45,    46,     2,   206,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
-      31,     0,     0,     0,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,     0,    26,    27,    28,     0,    34,     0,
-      35,     0,    36,    31,   685,    38,    39,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,  1353,     0,     0,
-       0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
-       0,     0,   678,     0,     0,     0,     0,     0,    45,    46,
-       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,   686,    26,    27,    28,   687,
-       0,    45,    46,     0,     0,    31,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
-     207,    39,     0,     2,   206,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
-      27,    28,     0,     0,     0,     0,     0,   270,    31,     0,
-       0,     0,     0,    45,    46,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
-      36,     0,     0,    38,    39,     0,     2,   206,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
-     678,    31,     0,     0,     0,     0,    45,    46,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
-       0,    35,     0,    36,     0,     0,    38,    39,     0,     2,
-     206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
-       0,     0,     0,   593,    31,     0,     0,     0,     0,    45,
-      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    34,     0,    35,     0,    36,     0,     0,   207,
-      39,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
-      31,   284,     0,     0,     0,     0,   208,     0,     0,     0,
-       0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   285,    34,     0,
-       0,     0,     0,   286,     0,    38,    39,   287,     0,     0,
-     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     294,     0,   517,     0,     0,   171,     0,     0,    45,    46,
-     296,   297,   298,   299,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
-       0,   282,   283,    31,   284,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
-     285,    34,     0,     0,    31,     0,   286,     0,    38,    39,
-     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
-     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    34,     0,     0,     0,     0,    37,     0,   336,
-     337,    40,     0,   294,   -36,   295,     0,     0,    41,    42,
-       0,    45,    46,   296,   297,   298,   299,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,     0,   338,    26,    27,    28,
-       0,     0,    45,    46,   282,   283,    31,   284,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
-      28,     0,     0,   285,    34,     0,     0,    31,     0,   286,
-       0,    38,    39,   287,     0,     0,   288,   289,   290,   291,
-      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
-     110,     0,    38,    39,     0,     0,   294,     0,   295,     0,
-       0,    41,    42,     0,    45,    46,   296,   297,   298,   299,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,     0,    44,
-      26,    27,    28,     0,     0,    45,    46,   282,   283,    31,
-     284,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,    26,    27,    28,     0,     0,   285,    34,     0,     0,
-      31,   685,   286,     0,    38,    39,   287,     0,     0,   288,
-     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
-       0,     0,     0,     0,     0,    38,    39,     0,     0,   294,
-       0,   157,     0,     0,     0,     0,     0,    45,    46,   296,
-     297,   298,   299,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,   686,    26,    27,    28,  1092,     0,    45,    46,
-     282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
-      34,     0,     0,    31,   685,   286,     0,    38,    39,   287,
-       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
-     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
-       0,     0,   294,     0,   593,     0,     0,     0,     0,     0,
-      45,    46,   296,   297,   298,   299,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,   686,    26,    27,    28,  1221,
-       0,    45,    46,   282,   283,    31,   284,     0,     0,     0,
-       0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,   285,    34,    26,    27,    28,     0,   286,     0,
-      38,    39,   287,    31,     0,   288,   289,   290,   291,    41,
-      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    34,     0,     0,     0,   294,     0,   379,    38,    39,
-       0,     0,     0,    45,    46,   296,   297,   298,   299,   467,
-       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,   257,    26,    27,    28,     0,
-       0,    45,    46,     0,     0,    31,     0,     0,     0,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,  -293,     0,    26,
-      27,    28,     0,    34,     0,    35,     0,    36,    31,     0,
-      38,    39,     0,     0,     0,     0,     0,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,     0,    34,    26,    27,    28,
-       0,    37,     0,   336,   337,    40,    31,  -293,     0,     0,
-      -3,     0,    41,    42,     0,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,  -293,    34,    26,    27,    28,     0,    37,
-     338,   336,   337,    40,    31,     0,    45,    46,     0,     0,
-      41,    42,     0,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,    34,    26,    27,    28,   635,     0,   338,    38,
-      39,     0,    31,  -293,    45,    46,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
-      34,     0,     0,     0,     0,    31,   338,    38,    39,     0,
-       0,     0,    45,    46,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,    34,    26,    27,    28,     0,     0,     0,
-     207,    39,     0,    31,   157,     0,     0,     0,     0,     0,
-      45,    46,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-       0,    34,    26,    27,    28,     0,     0,   270,    38,    39,
-       0,    31,     0,    45,    46,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,     0,    34,
-       0,     0,     0,     0,    31,   338,    38,    39,     0,     0,
-       0,    45,    46,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,    34,    26,    27,    28,     0,     0,     0,    38,
-      39,     0,    31,   686,     0,     0,     0,     0,     0,    45,
-      46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-      34,    26,    27,    28,     0,     0,   593,    38,    39,     0,
-      31,     0,    45,    46,     2,   206,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    34,     0,
-      26,    27,    28,     0,    44,   207,    39,     0,     0,    31,
-      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
-       0,    36,     0,     0,    38,    39,     0,     0,    45,    46,
-     282,   283,     0,   284,  1042,     0,  1043,     0,     0,  1044,
-    1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,  1525,
-    1052,     0,     0,     0,  1053,  1054,     0,    33,     0,   285,
-    -413,     0,     0,     0,     0,  1055,     0,     0,     0,   287,
-       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
-     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   294,     0,   379,     0,     0,   171,     0,     0,
-      45,    46,   296,   297,   298,   299,     0,     0,   282,   283,
-    1057,   284,  1042,     0,  1043,  -128,     0,  1044,  1045,  1046,
-    1047,  1048,  1049,  1050,  1051,     0,     0,     0,  1052,     0,
-       0,     0,  1053,  1054,     0,    33,     0,   285,     0,     0,
-       0,     0,     0,  1055,     0,     0,     0,   287,     0,     0,
-     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     294,     0,   379,     0,     0,   171,     0,     0,    45,    46,
-     296,   297,   298,   299,     0,     0,     0,     0,  1057,     0,
-       0,     0,     0,  -128,     2,   206,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
-      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
-       0,   282,   283,     0,   284,  1042,     0,  1043,  1399,  1400,
-    1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,
-    1525,  1052,     0,     0,     0,  1053,  1054,    34,    33,    35,
-     285,    36,     0,     0,    38,    39,  1055,     0,     0,     0,
-     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
-     292,   293,     0,     0,     0,     0,  1312,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   294,     0,   379,     0,     0,   171,     0,
-       0,    45,    46,   296,   297,   298,   299,     0,     0,   282,
-     283,  1057,   284,  1042,     0,  1043,  1399,  1400,  1044,  1045,
-    1046,  1047,  1048,  1049,  1050,  1051,     0,     0,     0,  1052,
-       0,     0,     0,  1053,  1054,     0,    33,     0,   285,     0,
-       0,     0,     0,     0,  1055,     0,     0,     0,   287,     0,
-       0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   294,     0,   379,     0,     0,   171,     0,     0,    45,
-      46,   296,   297,   298,   299,     0,     0,   282,   283,  1057,
-     284,  1042,     0,  1043,     0,     0,  1044,  1045,  1046,  1047,
-    1048,  1049,  1050,  1051,     0,     0,     0,  1052,     0,     0,
-       0,  1053,  1054,     0,    33,     0,   285,     0,     0,     0,
-       0,     0,  1055,     0,     0,     0,   287,     0,     0,   288,
-     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
-       0,     0,     0,     0,   282,   283,     0,   284,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
-       0,   379,     0,     0,   171,     0,     0,    45,    46,   296,
-     297,   298,   299,   285,     0,     0,     0,  1057,     0,   286,
-       0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
-      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
-       0,   282,   283,     0,   284,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   294,     0,   379,     0,
-       0,   972,     0,     0,    45,    46,   296,   297,   298,   299,
-     285,     0,     0,     0,     0,     0,   286,     0,     0,     0,
-     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
-     292,   293,     0,     0,     0,     0,     0,     0,   282,   283,
-       0,   284,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   294,     0,   379,     0,   282,   283,     0,
-     284,    45,    46,   296,   297,   298,   299,   285,     0,     0,
-       0,     0,     0,   286,     0,     0,     0,   287,     0,     0,
-     288,   289,   290,   291,    41,    42,   285,   292,   293,     0,
-       0,     0,   286,     0,     0,     0,   287,     0,     0,   288,
-     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
-     294,     0,   379,     0,   282,   283,     0,   284,   709,    46,
-     296,   297,   298,   299,     0,     0,     0,     0,     0,   294,
-       0,   379,     0,   282,   283,     0,   284,   344,    46,   296,
-     297,   298,   299,   285,     0,     0,     0,     0,     0,   286,
-       0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
-      41,    42,   285,   292,   293,     0,     0,     0,   286,     0,
-       0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
-      42,     0,   292,   293,     0,     0,   506,     0,     0,     0,
-     282,   283,     0,   284,    45,    46,   296,   297,   298,   299,
-       0,     0,     0,     0,     0,   294,     0,     0,     0,   282,
-     283,     0,   284,    45,    46,   296,   297,   298,   299,   285,
-       0,     0,     0,     0,     0,   286,     0,     0,     0,   287,
-       0,     0,   288,   289,   290,   291,    41,    42,   285,   292,
-     293,     0,     0,     0,   286,     0,     0,     0,   287,     0,
-       0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
-       0,     0,   511,     0,     0,     0,     0,     0,     0,     0,
-      45,    46,   296,   297,   298,   299,     0,     0,     0,     0,
-       0,   514,     0,     0,     0,     0,     0,     0,     0,    45,
-      46,   296,   297,   298,   299,     2,   206,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
-      35,     0,    36,    37,     0,   174,   175,    40,     0,     0,
-       0,     0,     0,     0,    41,    42,   205,     2,   206,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
-       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      34,     0,    35,     0,    36,     0,     0,   207,    39,   467,
-       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
-       0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
-      38,    39,     2,   206,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
-      28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
-       0,     0,   207,    39
-};
-
-static const yytype_int16 yycheck[] =
-{
-       0,     1,   186,    43,   239,   185,   204,     0,    43,   219,
-      43,   116,   185,   521,   534,   185,     1,   875,   186,     0,
-       1,   185,   757,    51,   647,   603,   750,   185,     0,     1,
-     281,   621,    32,   750,  1041,     0,  1022,    43,   185,    32,
-     345,   185,   750,    43,   168,   169,   513,   349,   875,    49,
-     156,    32,   603,    32,     0,   693,    49,   349,   187,     0,
-      32,   572,    57,    63,   601,  1322,    66,    32,    43,    69,
-      63,     0,     1,    66,   696,    63,    69,  1399,   734,   492,
-       0,   109,   266,   496,    69,   265,    32,   601,    69,    39,
-      39,    32,   265,   490,    66,   265,   201,    69,   266,   601,
-      39,   265,    43,    32,   604,   105,   601,   265,    49,    49,
-     610,   106,    32,   113,   109,   418,   116,   117,   265,    82,
-      66,   265,    63,    63,    39,    66,    66,    39,    69,    69,
-     601,   984,   261,   262,   284,   438,    43,    66,    28,   601,
-      69,   105,    72,   446,   132,   185,   146,   147,  1470,   601,
-     185,    72,   185,    49,   147,   155,   156,   307,   308,   109,
-     160,   111,   111,  1420,    39,   787,    82,   160,    72,   364,
-     109,    39,   111,   368,  1021,  1022,    82,   482,    96,   185,
-     688,  1034,   906,  1116,   156,   185,   186,  1120,    78,   906,
-     156,   155,     0,   186,   110,   345,   488,   109,   906,   111,
-     410,   201,   132,    96,   122,   111,   147,   147,   605,   209,
-     185,   132,   609,   117,  1041,    64,   209,   113,   109,   160,
-     160,   221,   406,   218,    32,   265,   109,   110,   221,   122,
-     265,   381,   265,   630,   109,   256,   111,   634,   406,   239,
-    1226,   109,   864,   111,   185,   186,   186,   825,   719,   221,
-     146,   251,   987,   504,    57,    44,    45,   719,   251,   259,
-     109,   426,   427,   901,   264,   265,   266,   719,   209,   209,
-     251,   271,   251,   266,   825,   221,   813,   272,   185,   251,
-     221,   221,  1289,   794,   279,   907,   251,   109,   696,    85,
-    1276,   396,   221,  1502,   294,    49,   480,   636,   637,   813,
-     109,   603,   925,   106,  1453,   251,   109,   307,  1053,  1054,
-     251,   813,   480,   209,   653,   815,   621,   113,   813,   424,
-    1529,   626,   251,   323,   265,   430,   115,   433,   328,   494,
-     952,   251,    95,    44,    45,   328,   107,   112,  1487,   116,
-    1489,   341,   813,   239,   109,   345,   111,   109,   513,   349,
-     350,   813,   155,   348,  1212,   132,   934,     0,   110,   113,
-     131,   813,    44,    45,   364,   987,   129,  1473,   368,   131,
-     365,   371,   711,  1479,   369,   271,   116,   341,   130,   682,
-      72,    11,    74,    75,  1129,  1212,   228,   328,   328,    32,
-     130,    83,    84,  1499,  1050,   590,   396,   418,  1504,   114,
-     550,   551,   552,   114,   350,   247,   406,   371,   349,  1395,
-    1000,   307,   110,   406,   579,   218,  1038,   438,   116,   933,
-     526,   109,   114,   111,   424,   446,   426,   427,  1275,  1276,
-     430,   933,   114,   433,    72,  1442,   110,   632,   933,   110,
-      72,   746,  1449,   251,  1502,    83,    84,   110,   256,   345,
-     847,    83,    84,   116,   454,   209,   130,   119,   120,   130,
-     968,   433,  1289,   802,  1522,   406,   406,   433,   110,   272,
-     112,  1529,   472,   111,   116,   128,   279,   110,   131,   111,
-     480,   116,   482,   116,   484,   591,   737,   480,   488,   131,
-     132,   484,    70,  1500,   494,    73,  1118,   132,    76,   907,
-      78,    90,    91,   484,   688,  1128,   506,    85,   508,  1009,
-    1010,   511,   484,   513,   514,   982,   482,   271,   116,   484,
-     688,   521,  1100,   825,   648,   525,   526,   473,   657,   942,
-     426,   427,   130,   825,  1387,  1388,   125,   126,   484,   109,
-     294,   111,   939,   484,   952,   348,   110,   488,  1395,   116,
-     655,   116,   116,   307,   526,   484,  1178,  1179,    72,   116,
-     526,   525,   365,   130,   484,    72,   369,    74,    75,    83,
-      84,   571,   572,    88,    89,   132,    83,    84,  1086,   579,
-    1403,    72,     3,  1091,     4,     5,     6,     7,     8,     9,
-     590,   591,    83,    84,    72,   595,   116,   111,   494,     3,
-     905,   601,     1,   603,   111,    83,    84,   757,   251,   804,
-     418,   116,   132,   256,   809,  1442,     0,   513,   110,   591,
-     111,   621,  1449,     0,   116,   591,   626,   622,   628,   432,
-     438,   109,   632,  1289,   212,   635,   636,   637,   446,   111,
-     111,   113,   113,   638,   112,   109,   938,   111,   116,    69,
-     116,    71,   862,   653,   116,   655,   109,   652,   130,   130,
-     601,   682,   603,   635,   636,   637,   132,   109,   116,   111,
-     132,   591,   882,  1500,  1497,   116,   484,   623,   116,  1502,
-     116,   653,   131,   579,   132,   685,    72,   708,   688,   116,
-      76,   132,   116,   109,   132,  1000,   132,    83,    84,  1522,
-     454,   279,   897,    72,   810,   132,  1529,  1363,   132,   944,
-    1118,   711,   712,   713,    83,    84,   110,   109,   116,   719,
-     720,   116,   116,   109,   908,   621,   906,    92,    93,   110,
-     626,   117,   118,   906,   132,   116,   906,   132,   733,   711,
-     908,   109,   906,   110,   868,   745,   746,   688,   906,   116,
-     750,   751,   506,   699,   508,   109,   109,   511,   111,   906,
-     514,  1383,   906,   110,   117,   118,   294,   713,   112,   116,
-    1178,  1179,   116,   109,   352,   418,   354,  1399,   719,   720,
-     746,   745,  1506,   109,   112,   111,  1306,   590,   116,  1506,
-    1446,   109,  1448,   111,   794,   438,   109,   112,  1506,   117,
-     118,   116,   802,   446,   804,    72,   806,    74,    75,   809,
-     810,   110,   109,   813,   111,  1013,    83,    84,   110,   622,
-     117,   118,    72,   110,   116,   825,    76,   110,   112,   116,
-     802,   110,   116,    83,    84,   638,   110,   116,   810,   482,
-     110,   484,  1147,   112,   810,  1501,   116,  1469,  1470,   652,
-    1000,   115,   116,   252,    10,    11,    12,    13,    14,   109,
-     806,   111,   110,   111,   442,  1116,   109,   117,   118,  1120,
-    1121,   110,   813,   117,   682,   875,   110,   116,     3,   123,
-     124,   110,   116,    39,   825,    10,    11,    12,    13,    14,
-     810,  1041,    58,    59,   875,   110,   110,   897,   426,   427,
-     708,   116,  1086,   875,   904,   905,   906,  1091,   908,   110,
-     110,    67,  1036,   109,    39,    72,   116,   115,  1086,    76,
-     920,  1226,   109,  1091,   111,   109,    83,    84,  1123,   875,
-     733,   685,    64,   933,   934,   110,   115,   116,   938,   905,
-     904,   116,    67,   943,   944,    72,   875,    74,    75,    76,
-       0,     1,   109,    44,    45,   875,    83,    84,   943,   132,
-     117,   118,   943,   110,    66,   906,   109,   908,   968,   116,
-     109,   943,   111,   109,  1482,  1383,   553,   554,   506,    29,
-      30,   112,    32,   511,   132,  1236,   514,   506,   109,   508,
-     111,  1399,   511,    43,   911,   514,   913,   938,   114,    49,
-    1000,   555,   556,  1108,   114,   114,    72,    57,    74,    75,
-      76,   561,   562,    63,   943,   117,    66,    83,    84,    69,
-     132,  1021,  1022,  1531,   132,     4,     5,     6,     7,     8,
-       9,   109,    82,    83,   557,   558,   559,   560,    82,   682,
-     568,  1041,     4,     5,     6,     7,     8,     9,   944,  1021,
-    1022,    85,    86,    87,   109,  1021,   106,  1003,   160,   109,
-    1041,  1469,  1470,   109,   112,   708,   116,   875,   467,  1041,
-      82,    33,  1323,   118,   127,   109,  1327,   111,    94,   113,
-     114,  1081,   109,   110,   111,   128,  1086,   109,   110,   111,
-      69,  1091,    71,   131,   897,  1041,   111,   147,   109,   109,
-    1100,   110,   110,   746,  1000,   155,     3,    69,  1108,    71,
-     160,   112,  1041,    10,    11,    12,    13,    14,   112,   221,
-     112,  1041,   110,  1123,   109,   110,   111,   110,   110,   528,
-     110,   109,   110,   111,   533,   185,   186,    72,   109,    74,
-      75,    76,    39,   112,   111,  1086,   114,  1147,    83,    84,
-    1091,   201,   116,   132,   131,   733,   114,   259,   114,   209,
-     109,   112,   264,    58,    59,    60,   920,   110,   218,   110,
-      67,   221,   112,  1424,   109,   112,   111,   130,   228,   112,
-     112,  1147,   117,   118,   583,  1249,  1250,  1251,   130,  1189,
-    1190,   130,   116,   243,    29,   130,   110,   247,   110,   112,
-     115,   251,   252,   114,   112,  1190,   110,   116,  1208,  1190,
-     115,   109,  1212,   115,   110,   265,   266,  1189,  1190,   110,
-     130,   110,   272,   116,   110,   132,  1226,     3,   110,   279,
-    1230,  1212,   875,  1041,    10,    11,    12,    13,    14,   110,
-    1212,   116,   110,  1189,  1208,  1230,   110,   110,   350,  1230,
-     110,   110,   110,   110,     1,   654,   110,   656,  1230,   110,
-    1189,  1190,   905,    39,   110,   110,  1212,   110,    72,   110,
-      74,    75,    76,   115,  1379,  1275,  1276,    29,   328,    83,
-      84,  1516,   131,  1212,  1284,   110,   130,   116,   875,  1289,
-     112,    67,  1212,   112,   110,   110,   116,   110,   348,   349,
-     130,  1230,    49,  1275,  1276,   109,   109,   706,  1289,  1275,
-     116,   112,  1284,   117,   118,   365,   114,  1289,   110,   369,
-     110,   110,  1322,  1507,   112,   116,  1506,  1081,   110,   431,
-     380,   116,   116,  1506,    55,   110,  1506,  1322,  1284,  1507,
-     110,  1322,  1506,  1289,   112,   109,   396,  1531,  1506,   109,
-    1322,   109,   109,   109,   132,  1284,   406,   130,   105,  1506,
-    1289,   112,  1506,  1531,   110,   115,   113,   110,   110,  1289,
-     115,   473,   110,   128,   424,   115,    97,  1482,   114,  1379,
-     430,   112,   432,  1378,   132,   112,   116,   112,   110,    72,
-     110,    74,    75,  1322,   110,  1395,   110,   112,  1041,   146,
-      83,    84,   112,   112,  1212,  1208,   112,    72,   155,    74,
-      75,    76,   112,    72,   112,    74,    75,   467,    83,    84,
-    1420,    47,   472,  1395,    83,    84,   109,   132,   132,   132,
-     480,   114,   112,   132,   484,  1420,   132,   115,   488,  1420,
-     110,   491,  1442,   493,   109,   130,   115,   110,  1420,  1449,
-     109,  1451,   112,  1453,   115,   114,   112,  1044,   205,   112,
-     112,  1442,   209,   112,   110,   110,  1506,   109,  1449,   112,
-    1442,  1506,   193,  1506,   112,   109,   109,  1449,   528,    60,
-     110,  1289,  1482,   533,   132,   110,   114,  1487,   109,  1489,
-     112,  1420,   239,   595,   112,   216,  1442,   110,   112,   110,
-    1500,    96,    96,  1449,  1147,   226,  1506,  1507,   109,   109,
-     464,   115,   132,  1442,  1507,   130,  1516,   110,   110,  1500,
-    1449,   623,  1442,   110,   271,   110,   628,   274,  1500,  1449,
-     116,  1531,    42,   583,   132,   132,   110,   110,  1531,    66,
-     590,    96,    96,   132,   110,   110,   110,   294,    75,   132,
-     132,   601,   110,   603,  1500,   115,   112,   132,   115,   958,
-     307,   112,   109,   132,   110,  1506,    30,   115,   110,  1212,
-     132,  1500,   622,   294,   110,  1378,   110,   667,  1057,   563,
-    1500,   980,   978,  1226,   565,   984,  1212,  1365,   638,   564,
-     117,   464,   566,   643,   341,   567,  1470,   699,   345,  1541,
-    1299,  1327,   652,  1121,   654,   655,   656,  1072,  1449,   685,
-     685,   713,   913,   698,    66,  1091,   921,   364,    82,    83,
-    1516,   368,   583,   972,   371,  1212,   868,   723,   649,   940,
-      82,  1230,   484,   160,  1442,  1034,     0,     1,   688,   733,
-     571,  1449,   692,   571,   694,   571,  1289,    72,   698,    74,
-      75,    76,    -1,    -1,    -1,    -1,   706,    -1,    83,    84,
-      -1,    -1,    -1,  1191,  1192,   117,  1194,    -1,    32,   719,
-     720,    -1,    -1,  1201,    -1,  1203,    -1,    -1,    -1,   426,
-     427,    -1,    -1,   733,   109,    49,    -1,    10,    11,    12,
-      13,    14,  1500,    -1,   221,    -1,    -1,  1451,    -1,  1453,
-      -1,    -1,    -1,    -1,   806,    69,    -1,   454,   160,    -1,
-      85,    86,    87,    -1,    -1,    -1,    39,   671,  1305,    -1,
-     467,    -1,   443,    -1,    -1,    -1,    -1,    10,    11,    12,
-      13,    14,   259,  1487,   109,  1489,   111,   264,   113,   114,
-      -1,   105,    -1,    -1,    67,   492,    -1,   494,   469,   496,
-      -1,    -1,   279,    -1,    -1,    -1,    39,    -1,    -1,   506,
-      -1,   508,    -1,   813,   511,    -1,   513,   514,    -1,   221,
-    1357,    -1,    -1,  1360,    -1,   825,    -1,    -1,   525,   243,
-      -1,    -1,    -1,   147,    67,   506,   109,    -1,   111,    -1,
-     511,   155,   156,   514,   117,   118,    -1,    -1,   671,  1442,
-      -1,    -1,    -1,    -1,    -1,    -1,  1449,   259,    -1,    -1,
-      -1,    -1,   264,    -1,    -1,    -1,  1403,    -1,   868,    -1,
-      -1,  1408,   186,   350,   874,    -1,   109,    -1,   111,    -1,
-      -1,  1359,   579,    -1,   117,   118,   790,   201,    -1,    -1,
-     204,   205,    -1,   590,    -1,   209,   800,   897,    -1,  1436,
-    1249,  1250,  1251,    -1,    -1,    -1,   906,  1500,   908,    -1,
-     814,    -1,    -1,    -1,    -1,   915,   230,    -1,    -1,    -1,
-     234,    -1,   236,    -1,   621,    -1,    -1,    -1,    -1,   626,
-      -1,   245,    -1,    -1,    -1,   632,     0,   251,   938,    -1,
-      -1,    -1,   256,    -1,    -1,    -1,    -1,    -1,   350,    -1,
-      -1,  1003,   266,    -1,   431,    -1,    -1,    -1,   958,    -1,
-     274,    10,    11,    12,    13,    14,   380,   790,    32,    -1,
-      -1,   448,   972,    -1,    -1,    -1,    -1,   800,    -1,    -1,
-     980,    -1,    -1,  1520,   984,    -1,    -1,    -1,   685,  1526,
-      39,   814,    -1,    -1,    -1,    -1,   473,    -1,    -1,   670,
-    1537,    -1,   671,    -1,  1541,    69,    -1,    -1,   679,    -1,
-      -1,    -1,   683,    -1,    -1,    -1,    -1,    -1,    67,    -1,
-      -1,    72,    -1,    74,    75,    76,   723,   341,    -1,   431,
-      -1,   345,    83,    84,  1034,    -1,    -1,   351,  1387,  1388,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,    -1,
-     364,    -1,    -1,    -1,   368,    -1,    -1,   371,   109,    -1,
-     109,    -1,   111,    -1,    -1,    -1,   117,   118,   117,   118,
-      -1,   473,  1072,    -1,    -1,    -1,  1425,   491,    -1,   493,
-      -1,    -1,    -1,    -1,    -1,    -1,  1086,    -1,    -1,    -1,
-      -1,  1091,   156,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   418,    -1,    -1,   804,  1108,    -1,
-      -1,    -1,   809,    -1,  1018,  1019,    -1,    -1,   595,   433,
-      -1,   790,    -1,    -1,   438,    -1,    -1,   131,    -1,    -1,
-      -1,   800,   446,    -1,  1483,    -1,    -1,  1189,    -1,    -1,
-      -1,    -1,    -1,  1492,    -1,   814,   623,    -1,    -1,    -1,
-     464,   628,    72,   467,    74,    75,    76,    -1,    -1,    -1,
-      -1,    -1,    -1,    83,    84,    -1,   230,    -1,   482,    -1,
-     484,    -1,  1076,  1077,    -1,    -1,    -1,    -1,   492,    -1,
-      -1,    -1,   496,    -1,    -1,  1185,    -1,   251,    -1,   109,
-      -1,   111,   256,   595,    -1,  1018,  1019,   117,   118,    -1,
-     897,    -1,    -1,    -1,    -1,    -1,    -1,   904,  1208,    -1,
-      -1,   525,   526,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   623,   699,   920,    -1,    -1,   628,    -1,   899,   643,
-      -1,    -1,  1284,     0,    -1,    -1,   713,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   942,   943,   944,    -1,  1249,
-    1250,  1251,    -1,  1076,  1077,    -1,   733,    -1,   572,    72,
-      -1,    74,    75,    76,    -1,    32,    -1,    -1,    -1,    -1,
-      83,    84,    -1,    -1,    -1,    -1,   590,   591,   692,    -1,
-     694,    -1,    -1,    -1,   698,    -1,    -1,   351,    72,   603,
-      74,    75,    76,    -1,    -1,    -1,   109,   699,   111,    83,
-      84,    -1,    69,  1000,   117,   118,    -1,   621,    -1,    -1,
-      -1,   713,   626,    -1,    -1,    -1,    -1,    -1,   632,    -1,
-    1224,   635,   636,   637,    -1,   109,    -1,   111,    -1,   806,
-      -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,   653,
-      -1,    -1,    -1,    26,    27,    28,    -1,    -1,    -1,  1018,
-    1019,    -1,  1256,    -1,   418,    -1,    -1,   671,    -1,    -1,
-    1264,  1265,  1266,    -1,    -1,    -1,    -1,    -1,   682,   433,
-      -1,    -1,    -1,    -1,   438,    -1,    -1,    -1,  1378,  1379,
-      -1,  1052,   446,    -1,  1081,    -1,    -1,  1387,  1388,   156,
-      -1,    -1,    -1,    -1,   708,    -1,    -1,   711,    -1,    -1,
-     464,  1224,    -1,    -1,   806,    -1,   720,  1076,  1077,   723,
-      -1,    -1,    -1,    -1,    -1,    98,    -1,   100,   482,    -1,
-     484,    -1,    -1,    -1,  1328,  1425,  1123,    -1,    -1,    -1,
-      -1,   745,   746,  1256,    -1,    -1,    -1,   751,    -1,    -1,
-      -1,  1264,  1265,  1266,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   868,    -1,    -1,    -1,    -1,    -1,
-     874,    -1,   526,    -1,    -1,    -1,    -1,    26,    27,    28,
-      -1,    -1,    -1,    -1,    -1,    -1,   790,    -1,    -1,    -1,
-      -1,    -1,  1482,  1483,   251,    -1,   800,    -1,   802,   256,
-     804,    -1,  1492,   807,    -1,   809,   810,    -1,   181,    -1,
-     814,   915,    -1,    -1,    -1,  1328,  1506,  1507,   191,   192,
-     824,  1208,    -1,   196,    -1,   198,   199,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1003,   591,    -1,    -1,
-      -1,  1531,    -1,  1230,    -1,    -1,    -1,    -1,    -1,    98,
-      -1,   100,    -1,    -1,    -1,     0,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   972,    -1,
-      -1,   875,    -1,    -1,    -1,    -1,   125,    -1,    -1,    -1,
-      -1,   635,   636,   637,    -1,    -1,    -1,    32,    -1,    -1,
-      -1,    -1,    -1,   897,   351,    -1,    -1,  1256,    -1,   653,
-     904,   905,    -1,    -1,   908,  1264,  1265,  1266,    -1,    -1,
-      -1,  1003,    -1,    -1,    -1,    -1,    -1,   671,    -1,    -1,
-      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,   682,    -1,
-     934,    -1,   181,    -1,    -1,  1322,    -1,  1298,   942,   943,
-     189,    -1,   191,   192,    -1,    -1,    -1,   196,    -1,   198,
-     199,    -1,    -1,    -1,   708,    -1,    -1,   711,    -1,    -1,
-      -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,  1072,  1328,
-      -1,    -1,    -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,
-      -1,   438,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   446,
-      -1,    -1,   746,    -1,    -1,    -1,  1000,    10,    11,    12,
-      13,    14,    -1,    -1,    -1,    -1,    -1,   464,    -1,  1013,
-      -1,   156,    -1,    -1,  1018,  1019,    -1,  1021,  1022,   268,
-      -1,    -1,  1189,    -1,    -1,   482,    39,   484,    -1,    -1,
-      -1,    -1,    -1,  1420,    -1,    -1,   790,  1041,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   800,    -1,   802,    -1,
-      -1,    -1,    -1,   807,    67,    -1,   810,    -1,    -1,    72,
-     814,    74,    75,    76,  1451,    -1,  1453,    -1,    -1,   526,
-      83,    84,  1076,  1077,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1185,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1450,
-      -1,  1452,    -1,    -1,    -1,    -1,   109,  1189,   111,    -1,
-    1487,    -1,  1489,    -1,   117,   118,   251,    -1,    -1,    -1,
-      -1,   256,    -1,    -1,    -1,    -1,    -1,  1284,    -1,  1123,
-      -1,   875,    -1,    -1,    -1,  1486,    -1,  1488,    -1,  1516,
-      -1,    -1,    -1,    -1,   591,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1147,    -1,    -1,    -1,    -1,    -1,     0,
-      -1,   905,    -1,    -1,    -1,    -1,    -1,   189,    -1,    -1,
-      -1,    -1,    -1,    -1,   196,    -1,    -1,    -1,    -1,  1530,
-      -1,  1532,    -1,    -1,    -1,    -1,    -1,    -1,   635,   636,
-     637,    32,    -1,    -1,  1545,  1546,  1190,    -1,    -1,    -1,
-      -1,    -1,  1284,    -1,    -1,    -1,   653,    -1,    -1,    -1,
-      -1,    -1,   575,   576,  1208,    -1,   351,    -1,  1212,    -1,
-      -1,    -1,    -1,    -1,   671,    -1,    -1,    -1,    69,    -1,
-    1224,    -1,  1226,    -1,    -1,   682,  1230,    -1,    -1,    -1,
-      -1,   604,    -1,    -1,   607,   608,   268,   610,    -1,   612,
-     613,    -1,    -1,    -1,   617,   618,    -1,    -1,    -1,    -1,
-      -1,   708,  1256,    -1,   711,    -1,    -1,    -1,    -1,    -1,
-    1264,  1265,  1266,    -1,  1018,  1019,    -1,  1021,  1022,    -1,
-      -1,  1275,  1276,   418,    -1,    -1,    -1,    -1,    10,    11,
-      12,    13,    14,    -1,    -1,  1289,    -1,  1041,   433,   746,
-      -1,   323,    -1,   438,    -1,    -1,    -1,    -1,    -1,   331,
-      -1,   446,   334,    -1,    -1,   156,    -1,    39,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1322,   464,
-      -1,    -1,  1076,  1077,  1328,    -1,   575,   576,    -1,    -1,
-      -1,    -1,    -1,   790,    -1,    67,    -1,   482,    -1,   484,
-      72,    -1,    -1,   800,    76,   802,    -1,    -1,    -1,    -1,
-     807,    83,    84,   810,    -1,   604,    -1,   814,   607,   608,
-      -1,   610,    -1,   612,   613,    -1,   398,    -1,   617,   618,
-     402,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,
-      -1,   526,   755,   756,    -1,   117,   118,    -1,    -1,    -1,
-      -1,  1395,    -1,  1147,    -1,    -1,    -1,    -1,    -1,    -1,
-     251,    -1,    -1,    -1,    -1,   256,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1420,    -1,   875,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1190,    -1,  1442,    -1,
-      -1,    -1,    -1,    -1,    -1,  1449,   591,   479,   905,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1212,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1224,    -1,  1226,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    -1,
-     635,   636,   637,    -1,    -1,    -1,  1500,    -1,    -1,    -1,
-     351,    -1,  1256,  1507,    -1,    -1,   755,   756,   653,    -1,
-    1264,  1265,  1266,    39,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1275,  1276,    -1,    -1,    -1,   671,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1289,    -1,   682,    -1,   571,
-     572,    67,    -1,    -1,   917,    -1,    72,    -1,    74,    75,
-      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,
-      -1,  1018,  1019,   708,  1021,  1022,   711,   418,    -1,    -1,
-      -1,    -1,    -1,    -1,  1328,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   433,   109,  1041,   111,    -1,   438,    -1,    -1,
-      -1,   117,   118,    -1,    -1,   446,    -1,    -1,    -1,    -1,
-      -1,   746,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   464,    -1,    -1,    -1,    -1,    -1,  1076,
-    1077,    -1,    -1,    -1,    -1,    -1,   658,    -1,    -1,    -1,
-     662,   482,    -1,   484,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1395,    -1,    -1,    -1,   790,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   800,    -1,   802,    -1,    -1,
-      -1,    -1,   807,   912,    -1,   810,    -1,    -1,   917,   814,
-      -1,    -1,    -1,    -1,    -1,   526,    53,    -1,    55,    -1,
-      -1,    58,    59,    60,    -1,    62,    -1,    -1,  1442,    -1,
-    1147,    -1,    -1,    -1,    -1,  1449,    -1,    -1,    -1,    76,
-      -1,    -1,    -1,    -1,    -1,  1078,    -1,    -1,    -1,    -1,
-      -1,    88,    89,    -1,    10,    11,    12,    13,    14,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     875,    -1,    -1,  1190,    -1,    -1,    -1,    -1,    -1,    -1,
-     591,    -1,    -1,    39,    -1,    -1,  1500,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1212,    -1,    -1,    -1,    -1,
-     905,    -1,   794,    -1,    -1,    -1,    -1,  1224,    -1,  1226,
-      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
-      76,    -1,    -1,    -1,   635,   636,   637,    83,    84,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1256,
-      -1,    -1,   653,    -1,    -1,    -1,    -1,  1264,  1265,  1266,
-      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,  1275,  1276,
-     671,   117,   118,    -1,    -1,   282,    -1,   284,   285,  1078,
-      -1,   682,  1289,    -1,  1207,   292,   293,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     307,   308,    -1,    -1,    -1,    -1,    -1,   708,    -1,    -1,
-     711,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1328,    -1,  1018,  1019,    -1,  1021,  1022,    -1,    -1,
-     912,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,    -1,
-      -1,    -1,    -1,    -1,    -1,   746,  1041,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    -1,    30,    31,    32,
-      -1,    -1,    -1,    -1,   381,    -1,    39,    -1,    -1,    -1,
-      -1,  1076,  1077,    -1,    -1,    -1,    -1,    -1,  1395,   790,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   800,
-      -1,   802,    -1,    -1,    67,    -1,   807,   989,  1207,   810,
-      -1,    74,    75,   814,    -1,    78,    -1,   344,    -1,   346,
-      -1,    -1,    -1,    -1,  1006,    -1,    -1,    -1,    -1,    -1,
-     357,   358,    -1,    -1,    -1,  1442,    -1,    -1,    -1,    -1,
-      37,    38,  1449,    40,    -1,    -1,   109,    -1,   111,    -1,
-      -1,    -1,  1147,    -1,   117,   118,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
-      -1,    -1,    -1,    -1,   875,    72,    -1,    -1,    -1,    76,
-      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
-      87,    -1,    -1,  1500,    -1,  1190,    -1,    -1,    -1,    -1,
-      -1,    -1,  1084,    -1,   905,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   109,    -1,   111,    -1,    -1,  1212,    -1,    -1,
-     117,   118,   119,   120,   121,   122,    -1,    -1,    -1,  1224,
-      -1,  1226,     7,   130,    -1,    10,    11,    12,    13,    14,
-      -1,    -1,  1124,   550,   551,   552,   553,   554,   555,   556,
-     557,   558,   559,   560,   561,   562,   563,   564,   565,   566,
-     567,  1256,    37,    38,    39,    40,    -1,    -1,    -1,  1264,
-    1265,  1266,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1275,  1276,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    66,    67,    -1,  1289,    -1,    -1,    72,    -1,    -1,
-      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
-      -1,    86,    87,    -1,    -1,    -1,    -1,  1018,  1019,    -1,
-    1021,  1022,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1328,   109,    -1,   111,    -1,    -1,    -1,
-    1041,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,  1076,  1077,    30,    31,    32,
-      33,    -1,    -1,    36,    37,    38,    39,    40,    -1,   696,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1395,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,
-      -1,    74,    75,    76,    49,    -1,    79,    80,    81,    82,
-      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
-      -1,    66,    -1,    -1,    -1,    -1,  1147,  1442,    -1,    -1,
-     757,    -1,    -1,    -1,  1449,    -1,   109,    -1,   111,    -1,
-      -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
-      -1,    -1,    -1,   700,    -1,   702,    -1,    -1,    -1,   132,
-     787,    -1,   709,   710,    -1,    -1,    -1,   714,   113,  1190,
-      -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,   726,
-      -1,    -1,    -1,    -1,   731,  1500,    -1,    -1,    -1,    -1,
-      -1,  1212,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   146,    -1,  1224,    -1,  1226,    -1,    -1,    -1,    -1,
-      -1,   156,   759,    -1,    -1,   160,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,     7,    -1,    -1,    10,
-      11,    12,    13,    14,    -1,  1256,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1264,  1265,  1266,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,  1275,  1276,    37,    38,    39,    40,
-      -1,    -1,    -1,    -1,   209,    -1,    -1,    -1,  1289,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   221,    -1,    -1,    -1,
-     907,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,
-      -1,    72,    -1,    -1,   239,    76,    -1,    -1,    79,    80,
-      81,    82,    83,    84,    -1,    86,    87,  1328,    -1,    -1,
-      -1,   858,   859,   860,   861,    -1,   863,    -1,    -1,   264,
-      -1,    -1,    -1,    -1,    -1,   952,   271,    -1,   109,    -1,
-     111,   878,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
-     121,   122,    -1,    -1,    -1,   892,    -1,    -1,    -1,   294,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     987,    -1,   307,    -1,    -1,    -1,    -1,    -1,    -1,    66,
-      -1,    -1,    -1,  1000,  1395,    -1,    -1,    -1,    75,    -1,
-      77,    -1,    79,    -1,    -1,   932,    -1,    -1,    -1,    86,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     345,    -1,    -1,    -1,    -1,   350,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,  1041,    -1,    -1,    -1,    -1,    -1,
-     117,  1442,   119,   120,   121,    -1,    -1,    -1,  1449,    -1,
-     977,    -1,    -1,    -1,    -1,    -1,   983,    -1,    -1,    -1,
-      -1,   988,    -1,    -1,    -1,    -1,   993,    -1,   995,    -1,
-      -1,    -1,   999,    -1,  1001,  1002,    -1,    -1,  1005,    -1,
-      -1,    -1,    -1,   160,    -1,    -1,    -1,  1014,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1500,
-      -1,   426,   427,    -1,    -1,  1032,  1033,    -1,   433,    -1,
-      -1,  1118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   454,
-      -1,    -1,  1059,    -1,    -1,  1062,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   221,    -1,   223,   224,   225,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   482,    -1,    -1,
-      -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,   494,
-      -1,  1178,  1179,    -1,    -1,    -1,    -1,    -1,  1105,    -1,
-      -1,   506,   259,   508,  1111,  1112,   511,   264,   513,   514,
-      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   526,   279,    -1,  1131,    -1,    -1,  1134,    -1,    -1,
-      -1,  1138,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
-      -1,    -1,    -1,    72,  1151,    74,    75,    76,    -1,    -1,
-      -1,    -1,    -1,    -1,    83,    84,    -1,  1164,    -1,  1166,
-    1167,  1168,  1169,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   328,    -1,    -1,   579,  1182,    -1,  1184,    -1,    -1,
-     109,  1188,    -1,    -1,    -1,    -1,   591,    -1,   117,   118,
-     595,    -1,    -1,   350,    -1,    -1,    -1,    -1,   355,   356,
-      -1,    -1,    -1,    -1,    -1,    -1,   363,    -1,    -1,    -1,
-    1217,  1218,    -1,    -1,    -1,    -1,   621,    -1,    -1,    -1,
-      -1,   626,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     635,   636,   637,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   653,   406,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1267,  1268,    -1,    -1,    -1,    -1,    -1,   424,    -1,    -1,
-    1277,    -1,   429,    -1,   431,    -1,    -1,    -1,    -1,    -1,
-     685,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   448,    -1,    -1,   451,   452,  1383,    -1,    -1,    -1,
-      -1,    -1,   459,    -1,    -1,    -1,   711,    -1,   713,    -1,
-      -1,    -1,  1399,    -1,    -1,    -1,   473,    -1,    -1,    -1,
-      -1,    -1,    -1,   480,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1338,    -1,  1340,  1341,  1342,    -1,    -1,    -1,    -1,
-      -1,   746,    -1,    -1,    -1,  1352,    44,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,  1361,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,  1386,
-      -1,    -1,  1469,  1470,    39,    -1,    -1,    10,    11,    12,
-      13,    14,    -1,    91,    -1,    -1,    -1,   802,    -1,    -1,
-      -1,   806,    -1,   101,    -1,   810,    -1,    -1,    -1,    -1,
-      -1,    -1,    67,    -1,    -1,    -1,    39,    72,    -1,    74,
-      75,    76,  1429,  1430,    -1,    -1,    -1,    -1,    83,    84,
-      -1,    -1,    -1,    -1,    -1,  1442,    -1,    -1,   595,    -1,
-      -1,    -1,  1449,    -1,    67,    -1,    -1,    -1,    -1,    72,
-      -1,    74,    75,    76,   109,    -1,   111,    -1,    -1,   157,
-      83,    84,   117,   118,    -1,    -1,   623,    -1,    -1,    -1,
-      -1,   628,    -1,   171,  1481,    -1,    -1,    -1,  1485,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   117,   118,   194,    -1,    -1,    -1,
-     905,    -1,    -1,    -1,    -1,    -1,  1513,    -1,  1515,    -1,
-     208,    -1,    -1,    -1,    -1,   920,    -1,    -1,    -1,   217,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   227,
-      -1,    -1,    -1,    -1,    -1,    -1,  1543,  1544,    -1,   944,
-      -1,    -1,   699,    -1,  1551,  1552,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   252,    -1,   713,    -1,    -1,   257,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   270,    -1,    -1,    -1,   733,    -1,   276,    -1,
-     278,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1000,    -1,   295,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,  1021,  1022,    30,    31,
-      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   794,    -1,    -1,
-     338,    -1,    -1,    -1,    -1,   343,    -1,    -1,    -1,   806,
-      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
-      72,    -1,    74,    75,    76,    -1,    -1,    -1,   825,    -1,
-      -1,    83,    84,    -1,   372,    -1,  1081,    -1,   376,   377,
-      -1,   379,    -1,    -1,    -1,    -1,    -1,    -1,   386,   387,
-      -1,   389,   390,    -1,   392,    -1,   394,   109,    -1,   111,
-      -1,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,
-      -1,    -1,    -1,   411,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   419,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,
-     156,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,  1147,    -1,    -1,    -1,   444,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
-      14,    -1,    -1,   189,    -1,    -1,    -1,    -1,    -1,    -1,
-     196,    -1,   470,    -1,    -1,    -1,    -1,    -1,   476,    -1,
-      -1,   938,    -1,   481,  1189,    39,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    -1,    30,    31,    32,    -1,
-      -1,   968,    -1,    67,    -1,    39,    -1,    -1,    72,   517,
-      -1,  1226,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
-      84,    -1,    -1,    -1,   532,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   268,    67,    -1,    -1,  1003,    -1,    72,    -1,
-      74,    75,    76,    -1,    78,   109,    -1,  1014,    -1,    83,
-      84,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
-    1275,  1276,    -1,   571,    -1,    -1,    -1,    -1,    -1,  1284,
-      -1,    -1,   580,    -1,    -1,   109,    -1,   111,   146,   587,
-      -1,    -1,    -1,   117,   118,   593,    -1,   323,   156,    -1,
-      -1,    -1,    -1,    -1,   602,   331,   332,    -1,   334,   335,
-     168,   169,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,
-      -1,    -1,    -1,   349,    -1,    -1,    -1,    -1,    -1,  1086,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   368,  1100,   642,   371,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,   398,    30,    31,    32,   402,    -1,    -1,    -1,
-     678,   239,    39,    -1,    -1,    -1,    -1,    -1,   686,    -1,
-    1395,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   263,    -1,   433,    -1,    -1,
-      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,   717,
-      -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,   727,
-     728,    76,  1189,    -1,    79,    80,    81,    82,    83,    84,
-      -1,    86,    87,    -1,    -1,    -1,  1451,    -1,  1453,    -1,
-      -1,    -1,    -1,   479,   111,    -1,   482,    -1,    -1,    -1,
-     117,   118,   760,    -1,   109,    -1,   111,   765,    -1,   114,
-      -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
-      -1,    -1,  1487,    -1,  1489,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   521,    -1,    -1,    -1,   525,
-     526,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1516,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   380,    -1,    -1,    -1,    -1,  1284,    -1,    -1,
-      -1,   829,    -1,    -1,    -1,    -1,    -1,    -1,   836,    -1,
-      -1,    -1,    -1,    -1,    -1,   571,   572,    -1,    -1,    -1,
-      -1,   849,    -1,   851,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   590,   591,    -1,   865,    -1,    -1,
-      -1,    -1,    -1,   871,    -1,   601,    -1,   603,   604,    -1,
-      -1,    -1,    -1,    -1,   610,   883,    -1,    -1,   886,    -1,
-      -1,    -1,    -1,    -1,   620,   621,    -1,    -1,    -1,    -1,
-     626,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   635,
-     636,   637,    -1,    -1,    -1,    -1,   474,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   653,    -1,    -1,
-      -1,    -1,   658,   659,    -1,    -1,   662,   663,    -1,    -1,
-      -1,    -1,    -1,   669,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   513,    -1,    -1,    -1,    -1,
-      -1,    -1,   688,    -1,    -1,   963,    -1,    -1,   526,    -1,
-      -1,    -1,    -1,   531,    -1,    -1,   534,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   711,   712,    -1,    -1,   547,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     998,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   569,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,
-     746,   579,    -1,    -1,   750,   751,    -1,    -1,   586,    -1,
-      -1,    -1,    -1,   591,    -1,    -1,    -1,    -1,    -1,    -1,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,  1056,    -1,
-      30,    31,    32,    -1,  1062,    -1,    -1,    -1,   794,    39,
-      -1,    -1,    -1,    -1,  1531,    -1,   802,    -1,    -1,    -1,
-      -1,    -1,   640,   809,   810,    -1,    -1,   813,    -1,   815,
-     648,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1096,   825,
-      -1,    -1,    72,  1101,    74,    75,    76,    -1,    -1,    -1,
-      -1,  1109,    -1,    83,    84,    -1,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    -1,    -1,    -1,    -1,   109,
-      -1,   111,    -1,    -1,  1142,    39,    -1,   117,   118,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1154,    -1,    -1,  1157,
-      -1,  1159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   897,    -1,    67,    -1,  1173,  1174,    -1,   904,   905,
-     906,    -1,   908,    -1,    78,    -1,   912,    -1,   746,    -1,
-     748,    -1,    -1,    -1,    -1,    -1,    -1,  1195,    -1,    -1,
-     758,    -1,    -1,    -1,    -1,    -1,   764,   933,   934,    -1,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,
-      -1,    -1,   968,    -1,  1242,    -1,    -1,    -1,   806,   807,
-      -1,    -1,   810,    -1,    -1,    -1,    -1,    -1,    37,    38,
-      -1,    40,    -1,   989,   990,    -1,   824,    67,    -1,    -1,
-      -1,    -1,    -1,    -1,  1000,    -1,    -1,    -1,    78,    -1,
-    1006,  1007,    -1,  1009,  1010,  1011,    -1,    66,    -1,    -1,
-      -1,    -1,    -1,    72,    -1,  1021,  1022,    76,    -1,    -1,
-      79,    80,    81,    82,    83,    84,   864,    86,    87,    -1,
-     868,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1317,
-      -1,  1319,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     109,    -1,   111,  1331,    -1,  1333,    -1,   116,   117,   118,
-     119,   120,   121,   122,    -1,    -1,    -1,   905,    -1,    -1,
-      -1,    -1,  1350,    -1,    -1,    -1,    -1,    -1,  1084,    -1,
-    1086,    -1,    -1,    -1,    -1,  1091,    -1,    -1,  1366,  1367,
-      -1,    -1,    -1,    -1,  1100,    -1,    -1,    -1,    -1,  1377,
-      -1,    -1,  1380,    -1,    -1,    -1,   944,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1123,  1124,  1125,
-      -1,    -1,    -1,  1401,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,  1410,    -1,   972,  1413,    -1,  1415,  1416,  1417,
-     978,  1147,    -1,    -1,   982,    37,    38,    -1,    40,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1003,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    66,    -1,  1014,  1455,    -1,  1457,
-      72,  1459,    74,    75,    76,    -1,    -1,    79,    80,    81,
-      82,    83,    84,    -1,    86,    87,  1474,    -1,  1036,    -1,
-    1038,    -1,  1208,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1053,  1054,   109,    -1,   111,
-    1226,   113,   114,    -1,    -1,   117,   118,   119,   120,   121,
-     122,    -1,    -1,    -1,    -1,    -1,  1074,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,  1275,
-    1276,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
-      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1129,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1147,
-      69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,  1162,  1163,    -1,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,   111,    -1,    30,    31,    32,    33,   117,   118,
-      36,    37,    38,    39,    40,    41,    -1,    43,    -1,    -1,
-      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
-      -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,  1395,
-      66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
-      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
-      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
-      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
-      -1,   127,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1303,    -1,    -1,  1306,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1482,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1506,  1507,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1531,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,
-      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
-      67,    -1,    69,    39,    71,    72,    -1,    74,    75,    76,
-      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
-      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
-      -1,    -1,   109,    -1,   111,    -1,    -1,    83,    84,    -1,
-     117,   118,   119,   120,   121,   122,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      -1,    -1,    30,    31,    32,    -1,    -1,    -1,  1516,    37,
-      38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,
-      -1,    69,    39,    71,    72,    -1,    74,    75,    76,    -1,
-      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
-      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,   116,   117,
-     118,   119,   120,   121,   122,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
-      39,    40,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,
-      69,    39,    71,    72,    -1,    74,    75,    76,    -1,    -1,
-      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
-      -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,
-     109,    -1,   111,    -1,    -1,    -1,    -1,   116,   117,   118,
-     119,   120,   121,   122,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
-      30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,
-      40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,
-      39,    71,    72,    -1,    74,    75,    76,    -1,    -1,    79,
-      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
-      -1,   111,    -1,    -1,    -1,    -1,   116,   117,   118,   119,
-     120,   121,   122,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
-      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
-      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
-      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
-     111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
-     121,   122,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
-      32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,
-      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
-      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
-      -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,
-     122,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
-      -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,
-      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
-      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
-      -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
-      -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,
-      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
-      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
-      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     0,
-      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
-      31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,    40,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    64,    -1,    -1,    67,    -1,    69,    -1,
-      71,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
-      -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
-     111,    -1,    -1,    -1,    -1,    -1,   117,   118,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
-      -1,    36,    -1,    -1,    39,    40,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,
-      -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,
-      75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
-     115,    -1,   117,   118,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
-      39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,
-      69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
-      -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
-      -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
-      32,    33,    34,    35,    67,    -1,    69,    39,    71,    72,
-      -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
-      83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
-      -1,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
-      -1,    -1,    -1,    -1,   117,   118,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    -1,    30,    31,    32,    33,    -1,    -1,    36,
-      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
-      -1,    78,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
-      32,    -1,    -1,    -1,   111,    -1,    -1,    39,    -1,    -1,
-     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
-      72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
-      -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
-      -1,    -1,    -1,    -1,    -1,   117,   118,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
-      -1,    -1,    39,    -1,    -1,    -1,    -1,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
-      67,    -1,    69,    -1,    71,    -1,    39,    74,    75,    -1,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    67,    -1,    30,    31,    32,    -1,
-      -1,    74,    75,   110,   111,    39,    -1,    -1,    -1,    -1,
-     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    67,    -1,    69,   109,    71,   111,    -1,
-      74,    75,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
-      -1,    -1,    -1,   117,   118,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
-      39,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,    -1,    30,    31,    32,    -1,    67,    -1,
-      69,    -1,    71,    39,    40,    74,    75,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,
-      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
-      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,   111,    30,    31,    32,   115,
-      -1,   117,   118,    -1,    -1,    39,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
-      74,    75,    -1,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
-      31,    32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,
-      -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
-      71,    -1,    -1,    74,    75,    -1,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
-     111,    39,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
-      -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
-      -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,   117,
-     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
-      75,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
-      39,    40,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
-      -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,
-      -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
-      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
-     119,   120,   121,   122,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
-      -1,    37,    38,    39,    40,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
-      66,    67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,
-      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
-      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
-      75,    76,    -1,   109,   110,   111,    -1,    -1,    83,    84,
-      -1,   117,   118,   119,   120,   121,   122,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    -1,   111,    30,    31,    32,
-      -1,    -1,   117,   118,    37,    38,    39,    40,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
-      32,    -1,    -1,    66,    67,    -1,    -1,    39,    -1,    72,
-      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
-      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
-      72,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
-      -1,    83,    84,    -1,   117,   118,   119,   120,   121,   122,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    -1,   111,
-      30,    31,    32,    -1,    -1,   117,   118,    37,    38,    39,
-      40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,
-      39,    40,    72,    -1,    74,    75,    76,    -1,    -1,    79,
-      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
-      -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,
-      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,
-     120,   121,   122,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,   111,    30,    31,    32,   115,    -1,   117,   118,
-      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
-      67,    -1,    -1,    39,    40,    72,    -1,    74,    75,    76,
-      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
-      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
-      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
-     117,   118,   119,   120,   121,   122,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,   111,    30,    31,    32,   115,
-      -1,   117,   118,    37,    38,    39,    40,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    66,    67,    30,    31,    32,    -1,    72,    -1,
-      74,    75,    76,    39,    -1,    79,    80,    81,    82,    83,
-      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    67,    -1,    -1,    -1,   109,    -1,   111,    74,    75,
-      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,   111,    30,    31,    32,    -1,
-      -1,   117,   118,    -1,    -1,    39,    -1,    -1,    -1,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    -1,    30,
-      31,    32,    -1,    67,    -1,    69,    -1,    71,    39,    -1,
-      74,    75,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    -1,    67,    30,    31,    32,
-      -1,    72,    -1,    74,    75,    76,    39,    78,    -1,    -1,
-     114,    -1,    83,    84,    -1,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    67,    30,    31,    32,    -1,    72,
-     111,    74,    75,    76,    39,    -1,   117,   118,    -1,    -1,
-      83,    84,    -1,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,    67,    30,    31,    32,   109,    -1,   111,    74,
-      75,    -1,    39,    78,   117,   118,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
-      67,    -1,    -1,    -1,    -1,    39,   111,    74,    75,    -1,
-      -1,    -1,   117,   118,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,    67,    30,    31,    32,    -1,    -1,    -1,
-      74,    75,    -1,    39,   111,    -1,    -1,    -1,    -1,    -1,
-     117,   118,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      -1,    67,    30,    31,    32,    -1,    -1,   111,    74,    75,
-      -1,    39,    -1,   117,   118,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    67,
-      -1,    -1,    -1,    -1,    39,   111,    74,    75,    -1,    -1,
-      -1,   117,   118,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,    67,    30,    31,    32,    -1,    -1,    -1,    74,
-      75,    -1,    39,   111,    -1,    -1,    -1,    -1,    -1,   117,
-     118,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      67,    30,    31,    32,    -1,    -1,   111,    74,    75,    -1,
-      39,    -1,   117,   118,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    67,    -1,
-      30,    31,    32,    -1,   111,    74,    75,    -1,    -1,    39,
-     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
-      -1,    71,    -1,    -1,    74,    75,    -1,    -1,   117,   118,
-      37,    38,    -1,    40,    41,    -1,    43,    -1,    -1,    46,
-      47,    48,    49,    50,    51,    52,    53,    -1,    -1,    56,
-      57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,
-     110,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
-      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
-      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,
-     117,   118,   119,   120,   121,   122,    -1,    -1,    37,    38,
-     127,    40,    41,    -1,    43,   132,    -1,    46,    47,    48,
-      49,    50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,
-      -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
-      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
-      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
-     119,   120,   121,   122,    -1,    -1,    -1,    -1,   127,    -1,
-      -1,    -1,    -1,   132,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
-      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
-      -1,    37,    38,    -1,    40,    41,    -1,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
-      56,    57,    -1,    -1,    -1,    61,    62,    67,    64,    69,
-      66,    71,    -1,    -1,    74,    75,    72,    -1,    -1,    -1,
-      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
-      86,    87,    -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
-      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    37,
-      38,   127,    40,    41,    -1,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    -1,    -1,    -1,    57,
-      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,
-      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
-      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,
-     118,   119,   120,   121,   122,    -1,    -1,    37,    38,   127,
-      40,    41,    -1,    43,    -1,    -1,    46,    47,    48,    49,
-      50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,
-      -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
-      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
-      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
-      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
-      -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,   119,
-     120,   121,   122,    66,    -1,    -1,    -1,   127,    -1,    72,
-      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
-      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
-      -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
-      -1,   114,    -1,    -1,   117,   118,   119,   120,   121,   122,
-      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
-      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
-      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
-      -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   109,    -1,   111,    -1,    37,    38,    -1,
-      40,   117,   118,   119,   120,   121,   122,    66,    -1,    -1,
-      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
-      79,    80,    81,    82,    83,    84,    66,    86,    87,    -1,
-      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
-      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
-     109,    -1,   111,    -1,    37,    38,    -1,    40,   117,   118,
-     119,   120,   121,   122,    -1,    -1,    -1,    -1,    -1,   109,
-      -1,   111,    -1,    37,    38,    -1,    40,   117,   118,   119,
-     120,   121,   122,    66,    -1,    -1,    -1,    -1,    -1,    72,
-      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
-      83,    84,    66,    86,    87,    -1,    -1,    -1,    72,    -1,
-      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
-      84,    -1,    86,    87,    -1,    -1,   109,    -1,    -1,    -1,
-      37,    38,    -1,    40,   117,   118,   119,   120,   121,   122,
-      -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    37,
-      38,    -1,    40,   117,   118,   119,   120,   121,   122,    66,
-      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
-      -1,    -1,    79,    80,    81,    82,    83,    84,    66,    86,
-      87,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
-      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
-      -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     117,   118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,
-      -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,
-     118,   119,   120,   121,   122,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
-      69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
-      -1,    -1,    -1,    -1,    83,    84,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
-      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
-      -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
-      74,    75,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
-      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
-      -1,    -1,    74,    75
-};
-
-  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-     symbol of state STATE-NUM.  */
-static const yytype_uint16 yystos[] =
-{
-       0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
-      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
-      76,    83,    84,   109,   111,   117,   118,   137,   140,   150,
-     199,   213,   214,   215,   216,   217,   218,   219,   220,   221,
-     222,   223,   224,   225,   226,   227,   228,   229,   230,   232,
-     233,   234,   235,   236,   237,   238,   240,   241,   242,   243,
-     244,   245,   247,   255,   256,   283,   284,   285,   293,   296,
-     302,   303,   305,   307,   308,   314,   319,   323,   324,   325,
-     326,   327,   328,   329,   330,   350,   367,   368,   369,   370,
-      72,   139,   140,   150,   216,   218,   226,   228,   237,   241,
-     243,   284,    82,   109,   312,   313,   314,   312,   312,    72,
-      74,    75,    76,   138,   139,   273,   274,   294,   295,    74,
-      75,   274,   109,   305,    11,   200,   109,   150,   319,   324,
-     325,   326,   328,   329,   330,   112,   134,   111,   219,   226,
-     228,   323,   327,   366,   367,   370,   371,   135,   107,   131,
-     277,   114,   135,   174,    74,    75,   137,   272,   135,   135,
-     135,   116,   135,    74,    75,   109,   150,   309,   318,   319,
-     320,   321,   322,   323,   327,   331,   332,   333,   334,   335,
-     341,     3,    28,    78,   239,     3,     5,    74,   111,   150,
-     218,   229,   233,   235,   244,   285,   323,   327,   370,   216,
-     218,   228,   237,   241,   243,   284,   323,   327,    33,   234,
-     234,   229,   235,   135,   234,   229,   234,   229,    75,   109,
-     114,   274,   285,   114,   274,   234,   229,   116,   135,   135,
-       0,   134,   109,   174,   312,   312,   134,   111,   226,   228,
-     368,   272,   272,   131,   228,   109,   150,   309,   319,   323,
-     111,   150,   370,   306,   231,   314,   109,   290,   109,   109,
-      51,   109,    37,    38,    40,    66,    72,    76,    79,    80,
-      81,    82,    86,    87,   109,   111,   119,   120,   121,   122,
-     136,   140,   141,   142,   143,   144,   149,   150,   151,   152,
-     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-     163,   165,   168,   226,   276,   292,   366,   371,   228,   110,
-     110,   110,   110,   110,   110,   110,    74,    75,   111,   226,
-     272,   350,   368,   111,   117,   150,   165,   218,   219,   225,
-     228,   232,   233,   237,   240,   241,   243,   262,   263,   267,
-     268,   269,   270,   284,   350,   362,   363,   364,   365,   370,
-     371,   112,   109,   323,   327,   370,   109,   116,   132,   111,
-     114,   150,   165,   278,   278,   115,   134,   116,   132,   109,
-     116,   132,   116,   132,   116,   132,   312,   132,   319,   320,
-     321,   322,   332,   333,   334,   335,   228,   318,   331,    64,
-     311,   111,   312,   349,   350,   312,   312,   174,   134,   109,
-     312,   349,   312,   312,   228,   309,   109,   109,   227,   228,
-     226,   228,   112,   134,   226,   366,   371,   174,   134,   272,
-     277,   218,   233,   323,   327,   174,   134,   294,   228,   237,
-     132,   228,   228,   292,   248,   246,   258,   274,   257,   228,
-     294,   132,   132,   305,   134,   139,   271,     3,   135,   208,
-     209,   223,   225,   228,   134,   311,   109,   311,   165,   319,
-     228,   109,   134,   272,   114,    33,    34,    35,   226,   286,
-     287,   289,   134,   128,   131,   291,   134,   229,   234,   235,
-     272,   315,   316,   317,   109,   141,   109,   149,   109,   149,
-     152,   109,   149,   109,   109,   149,   149,   111,   165,   170,
-     174,   226,   275,   366,   370,   112,   134,    82,    85,    86,
-      87,   109,   111,   113,   114,    97,    98,    99,   100,   101,
-     102,   103,   104,   105,   106,   107,   131,   167,   152,   152,
-     117,   123,   124,   119,   120,    88,    89,    90,    91,   125,
-     126,    92,    93,   118,   127,   128,    94,    95,   129,   131,
-     373,   109,   150,   345,   346,   347,   348,   349,   110,   116,
-     109,   349,   350,   109,   349,   350,   134,   109,   226,   368,
-     112,   134,   135,   111,   226,   228,   361,   362,   370,   371,
-     135,   109,   111,   150,   319,   336,   337,   338,   339,   340,
-     341,   342,   343,   344,   350,   351,   352,   353,   354,   355,
-     356,   150,   370,   228,   135,   135,   150,   226,   228,   363,
-     272,   226,   350,   363,   272,   109,   134,   134,   134,   112,
-     134,    72,   111,   113,   140,   274,   278,   279,   280,   281,
-     282,   134,   134,   134,   134,   134,   134,   309,   110,   110,
-     110,   110,   110,   110,   110,   318,   331,   109,   277,   112,
-     208,   134,   309,   170,   276,   170,   276,   309,   111,   208,
-     311,   174,   134,   208,   110,    40,   111,   115,   226,   249,
-     250,   251,   366,   114,   116,   372,   131,   259,   114,   228,
-     264,   265,   266,   269,   270,   110,   116,   174,   134,   117,
-     165,   134,   225,   228,   263,   362,   370,   303,   304,   109,
-     150,   336,   110,   116,   373,   274,   286,   109,   114,   274,
-     276,   286,   110,   116,   109,   141,   110,   130,   275,   275,
-     275,   146,   165,   276,   275,   112,   134,   110,   116,   110,
-     109,   150,   349,   357,   358,   359,   360,   110,   116,   165,
-     111,   139,   145,   146,   134,   111,   139,   145,   165,   152,
-     152,   152,   153,   153,   154,   154,   155,   155,   155,   155,
-     156,   156,   157,   158,   159,   160,   161,   130,   170,   165,
-     134,   346,   347,   348,   228,   345,   312,   312,   165,   276,
-     134,   271,   134,   226,   350,   363,   228,   232,   112,   112,
-     134,   370,   112,   109,   134,   319,   337,   338,   339,   342,
-     352,   353,   354,   112,   134,   228,   336,   340,   351,   109,
-     312,   355,   373,   312,   312,   373,   109,   312,   355,   312,
-     312,   312,   312,   350,   226,   361,   371,   272,   112,   116,
-     112,   116,   373,   226,   363,   373,   260,   261,   262,   263,
-     260,   260,   272,   165,   134,   111,   274,   130,   116,   372,
-     278,   111,   130,   282,    29,   210,   211,   272,   260,   139,
-     309,   139,   311,   109,   349,   350,   109,   349,   350,   142,
-     350,   174,   264,   110,   110,   110,   110,   112,   174,   208,
-     174,   114,   250,   251,   112,   134,   109,   130,   150,   252,
-     254,   318,   319,   331,   357,   116,   132,   116,   132,   274,
-     248,   274,   115,   163,   164,   258,   135,   135,   139,   223,
-     135,   135,   260,   109,   150,   370,   135,   115,   228,   287,
-     288,   135,   134,   134,   109,   135,   110,   316,   170,   171,
-     130,   132,   111,   141,   201,   202,   203,   110,   116,   110,
-     110,   110,   110,   111,   165,   358,   359,   360,   228,   357,
-     312,   312,   114,   152,   168,   165,   166,   169,   116,   135,
-     134,   110,   116,   165,   134,   115,   163,   130,   264,   110,
-     110,   110,   345,   264,   110,   260,   226,   363,   111,   117,
-     150,   165,   165,   228,   342,   264,   110,   110,   110,   110,
-     110,   110,   110,     7,   228,   336,   340,   351,   134,   134,
-     373,   134,   134,   110,   135,   135,   135,   135,   277,   135,
-     163,   164,   165,   310,   134,   278,   280,   115,   134,   212,
-     274,    40,    41,    43,    46,    47,    48,    49,    50,    51,
-      52,    53,    57,    61,    62,    72,   111,   127,   171,   172,
-     173,   174,   175,   176,   178,   179,   191,   193,   194,   199,
-     213,   308,    29,   135,   131,   277,   134,   134,   110,   135,
-     174,   248,   132,   132,   319,   164,   228,   253,   254,   253,
-     274,   312,   115,   259,   372,   110,   116,   112,   112,   135,
-     228,   116,   373,   290,   110,   286,   216,   218,   226,   298,
-     299,   300,   301,   292,   110,   110,   130,   164,   109,   110,
-     130,   116,   139,   112,   110,   110,   110,   357,   279,   116,
-     135,   169,   112,   139,   147,   148,   146,   135,   147,   163,
-     168,   135,   109,   349,   350,   135,   135,   134,   135,   135,
-     135,   165,   110,   135,   109,   349,   350,   109,   355,   109,
-     355,   350,   227,     7,   117,   135,   165,   264,   264,   263,
-     267,   267,   268,   116,   116,   110,   110,   112,    96,   122,
-     135,   135,   147,   278,   165,   116,   132,   213,   217,   228,
-     232,   109,   109,   172,   109,   109,    72,   132,    72,   132,
-      72,   117,   171,   109,   174,   166,   166,   130,   112,   144,
-     132,   135,   134,   135,   212,   110,   165,   264,   264,   312,
-     110,   115,   252,   115,   134,   110,   134,   135,   309,   115,
-     134,   135,   135,   110,   114,   201,   112,   164,   132,   201,
-     203,   110,   109,   349,   350,   372,   166,   112,   135,    85,
-     113,   116,   135,   112,   135,   110,   134,   110,   110,   112,
-     112,   112,   135,   110,   134,   134,   134,   165,   165,   135,
-     112,   135,   135,   135,   135,   134,   134,   164,   164,   112,
-     112,   135,   135,   274,   228,   170,   170,    47,   170,   134,
-     132,   132,   132,   170,   132,   170,    58,    59,    60,   195,
-     196,   197,   132,    63,   132,   312,   114,   176,   115,   132,
-     135,   135,    96,   269,   270,   110,   299,   116,   132,   116,
-     132,   115,   297,   130,   141,   110,   110,   130,   134,   115,
-     112,   111,   148,   111,   148,   148,   112,   112,   264,   112,
-     264,   264,   264,   135,   135,   112,   112,   110,   110,   112,
-     116,    96,   263,    96,   135,   112,   112,   110,   110,   109,
-     110,   171,   192,   213,   132,   110,   109,   109,   174,   197,
-      58,    59,   165,   172,   145,   110,   110,   114,   134,   134,
-     298,   141,   204,   109,   132,   204,   264,   134,   134,   135,
-     135,   135,   135,   112,   112,   134,   135,   112,   172,    44,
-      45,   114,   182,   183,   184,   170,   172,   135,   110,   171,
-     114,   184,    96,   134,    96,   134,   109,   109,   132,   115,
-     134,   272,   309,   115,   116,   130,   164,   110,   135,   147,
-     147,   110,   110,   110,   110,   267,    42,   164,   180,   181,
-     310,   130,   134,   172,   182,   110,   132,   172,   132,   134,
-     110,   134,   110,   134,    96,   134,    96,   134,   132,   298,
-     141,   139,   205,   110,   132,   110,   135,   135,   172,    96,
-     116,   130,   135,   206,   207,   213,   132,   171,   171,   206,
-     174,   198,   226,   366,   174,   198,   110,   134,   110,   134,
-     115,   110,   116,   112,   112,   164,   180,   183,   185,   186,
-     134,   132,   183,   187,   188,   135,   109,   150,   309,   357,
-     139,   135,   174,   198,   174,   198,   109,   132,   139,   172,
-     177,   115,   183,   213,   171,    56,   177,   190,   115,   183,
-     110,   228,   110,   135,   135,   292,   172,   177,   132,   189,
-     190,   177,   190,   174,   174,   110,   110,   110,   189,   135,
-     135,   174,   174,   135,   135
-};
-
-  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint16 yyr1[] =
-{
-       0,   133,   134,   135,   136,   136,   136,   137,   137,   137,
-     138,   138,   139,   139,   140,   140,   141,   142,   142,   143,
-     143,   143,   143,   144,   144,   144,   144,   144,   144,   144,
-     144,   144,   144,   144,   145,   145,   146,   146,   147,   147,
-     148,   148,   148,   148,   148,   149,   149,   149,   149,   149,
-     149,   149,   149,   149,   149,   149,   149,   149,   149,   149,
-     149,   150,   150,   151,   151,   151,   151,   152,   152,   152,
-     153,   153,   153,   153,   154,   154,   154,   155,   155,   155,
-     156,   156,   156,   156,   156,   157,   157,   157,   158,   158,
-     159,   159,   160,   160,   161,   161,   162,   162,   163,   163,
-     163,   163,   164,   165,   165,   165,   166,   166,   167,   167,
-     167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
-     168,   168,   168,   168,   169,   169,   170,   170,   171,   171,
-     172,   172,   172,   172,   172,   172,   172,   172,   172,   173,
-     174,   174,   175,   175,   176,   176,   176,   176,   177,   177,
-     178,   179,   179,   179,   179,   179,   179,   180,   180,   180,
-     181,   181,   182,   182,   183,   183,   184,   185,   185,   186,
-     186,   187,   187,   188,   188,   188,   188,   189,   189,   190,
-     190,   191,   191,   191,   192,   192,   193,   193,   193,   193,
-     193,   193,   193,   193,   193,   193,   194,   194,   194,   195,
-     195,   195,   195,   195,   196,   196,   196,   196,   197,   198,
-     198,   198,   198,   198,   199,   199,   199,   199,   199,   200,
-     200,   201,   201,   202,   202,   203,   203,   204,   204,   204,
-     205,   205,   206,   206,   207,   207,   208,   208,   209,   209,
-     210,   210,   211,   211,   212,   212,   213,   213,   214,   214,
-     214,   214,   214,   215,   215,   215,   216,   216,   216,   217,
-     217,   217,   217,   217,   218,   218,   218,   219,   219,   220,
-     220,   220,   221,   221,   221,   221,   221,   222,   222,   223,
-     223,   223,   223,   224,   224,   225,   225,   225,   225,   226,
-     226,   226,   226,   227,   227,   228,   228,   229,   229,   230,
-     230,   230,   230,   230,   231,   230,   232,   232,   232,   233,
-     233,   234,   234,   234,   234,   234,   234,   234,   234,   235,
-     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
-     235,   235,   236,   236,   236,   236,   236,   237,   237,   238,
-     238,   238,   238,   239,   239,   239,   239,   240,   240,   240,
-     240,   241,   241,   241,   242,   242,   242,   242,   243,   243,
-     243,   244,   244,   245,   245,   246,   245,   245,   245,   247,
-     247,   248,   248,   249,   249,   249,   249,   250,   250,   250,
-     250,   251,   251,   252,   252,   252,   252,   252,   253,   253,
-     254,   255,   256,   256,   257,   256,   258,   258,   259,   259,
-     260,   260,   261,   261,   261,   261,   261,   262,   262,   262,
-     262,   263,   263,   264,   264,   265,   265,   266,   266,   266,
-     266,   267,   267,   267,   267,   267,   268,   268,   268,   268,
-     268,   269,   269,   270,   270,   271,   271,   272,   272,   272,
-     273,   273,   273,   274,   274,   274,   275,   275,   275,   276,
-     276,   276,   276,   277,   277,   277,   278,   278,   279,   279,
-     279,   279,   279,   280,   280,   281,   281,   282,   282,   282,
-     282,   282,   283,   283,   283,   283,   284,   284,   284,   285,
-     286,   286,   288,   287,   287,   289,   289,   289,   290,   290,
-     291,   291,   291,   292,   292,   292,   292,   293,   293,   293,
-     294,   294,   295,   295,   296,   297,   296,   298,   298,   299,
-     299,   300,   300,   300,   301,   301,   302,   302,   303,   303,
-     304,   304,   305,   305,   305,   306,   305,   305,   307,   307,
-     307,   308,   308,   308,   308,   308,   308,   308,   308,   308,
-     309,   309,   309,   310,   311,   311,   312,   312,   313,   313,
-     314,   315,   315,   316,   316,   316,   317,   317,   317,   317,
-     318,   318,   318,   318,   319,   319,   320,   320,   320,   321,
-     321,   321,   321,   322,   322,   323,   323,   323,   324,   324,
-     324,   325,   325,   325,   326,   326,   326,   327,   327,   327,
-     328,   328,   328,   329,   329,   329,   330,   330,   330,   331,
-     331,   331,   331,   332,   332,   333,   333,   333,   334,   334,
-     334,   334,   335,   335,   335,   336,   336,   336,   336,   337,
-     337,   337,   338,   338,   338,   338,   339,   339,   339,   340,
-     340,   340,   340,   341,   341,   342,   342,   342,   343,   343,
-     344,   344,   345,   345,   345,   346,   346,   346,   346,   346,
-     347,   347,   347,   347,   348,   348,   348,   349,   349,   349,
-     350,   350,   350,   350,   351,   351,   351,   352,   352,   352,
-     352,   352,   353,   353,   353,   353,   354,   354,   354,   355,
-     355,   355,   356,   356,   356,   356,   356,   356,   357,   357,
-     357,   358,   358,   358,   358,   358,   359,   359,   359,   359,
-     360,   360,   361,   361,   361,   362,   362,   363,   363,   363,
-     363,   363,   363,   364,   364,   364,   364,   364,   364,   364,
-     364,   364,   364,   365,   365,   365,   365,   366,   366,   366,
-     367,   367,   368,   368,   368,   368,   368,   368,   369,   369,
-     369,   369,   369,   369,   370,   371,   371,   371,   372,   372,
-     373,   373
-};
-
-  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
-{
-       0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
-       1,     3,     3,     1,     6,     4,     3,     7,     3,     7,
-       2,     2,     7,     4,     1,     3,     0,     1,     1,     3,
-       1,     3,     7,     3,     7,     1,     1,     1,     2,     2,
-       2,     2,     2,     2,     4,     2,     4,     6,     1,     4,
-       4,     1,     1,     1,     1,     1,     1,     1,     4,     4,
-       1,     3,     3,     3,     1,     3,     3,     1,     3,     3,
-       1,     3,     3,     3,     3,     1,     3,     3,     1,     3,
-       1,     3,     1,     3,     1,     3,     1,     3,     1,     5,
-       4,     5,     1,     1,     3,     2,     0,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       2,     5,     6,     7,     1,     3,     1,     3,     0,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     6,     4,
-       2,     7,     1,     3,     1,     2,     1,     2,     1,     2,
-       2,     5,     7,     5,     9,     5,     9,     1,     3,     1,
-       1,     3,     3,     2,     1,     2,     2,     0,     1,     2,
-       3,     0,     1,     2,     3,     3,     4,     0,     1,     1,
-       2,     5,     7,     6,     6,     4,     3,     4,     2,     3,
-       2,     3,     3,     3,     3,     5,     3,     3,     4,     1,
-       5,     6,     5,     6,     9,    10,     9,    10,     2,     1,
-       2,     2,     2,     1,     6,     8,    10,    12,    14,     0,
-       1,     0,     1,     1,     3,     4,     7,     0,     1,     3,
-       1,     3,     1,     1,     1,     3,     1,     1,     1,     3,
-       0,     1,     3,     4,     1,     3,     1,     1,     3,     3,
-       3,     3,     3,     2,     3,     6,     3,     3,     4,     1,
-       2,     2,     3,     5,     8,     7,     7,     5,     9,     2,
-       2,     5,     3,     5,     4,     3,     4,     4,     7,     3,
-       3,     3,     3,     4,     6,     1,     1,     1,     1,     1,
-       1,     1,     1,     0,     1,     1,     2,     1,     1,     1,
-       1,     1,     1,     1,     0,     5,     1,     2,     3,     1,
-       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     2,     3,     3,     1,     3,     1,
-       2,     2,     2,     4,     4,     4,     4,     1,     2,     2,
-       3,     1,     2,     2,     1,     2,     2,     3,     1,     2,
-       2,     1,     1,     4,     2,     0,     6,     7,     2,     2,
-       2,     0,     2,     2,     3,     2,     3,     1,     2,     3,
-       2,     2,     4,     0,     1,     2,     2,     1,     0,     1,
-       2,     2,     5,     2,     0,     7,     2,     4,     0,     2,
-       0,     1,     1,     1,     5,     5,     5,     1,     5,     5,
-       9,     1,     5,     0,     1,     1,     5,     1,     1,     5,
-       5,     1,     3,     3,     4,     1,     1,     1,     1,     2,
-       1,     3,     3,     1,     2,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
-       1,     1,     2,     0,     2,     2,     1,     4,     0,     1,
-       2,     3,     4,     2,     2,     1,     2,     2,     5,     5,
-       7,     6,     1,     2,     2,     3,     1,     2,     2,     4,
-       2,     4,     0,     4,     2,     1,     1,     1,     0,     2,
-       5,     5,    13,     1,     1,     3,     3,     2,     3,     3,
-       2,     4,     1,     6,     9,     0,    11,     1,     3,     3,
-       3,     1,     1,     5,     2,     5,     0,     1,     1,     3,
-       0,     1,     1,     1,     1,     0,     6,     2,     1,     2,
-       4,     2,     3,     3,     3,     4,     5,     5,     5,     6,
-       1,     1,     1,     3,     0,     5,     0,     1,     1,     2,
-       6,     1,     3,     0,     1,     4,     1,     1,     1,     1,
-       2,     1,     2,     2,     1,     3,     2,     3,     3,     2,
-       4,     4,     3,     8,     3,     2,     1,     2,     6,     8,
-       3,     2,     3,     3,     4,     4,     3,     1,     1,     1,
-       4,     6,     3,     2,     3,     3,     4,     4,     3,     2,
-       1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
-       4,     3,     6,     8,     3,     2,     1,     2,     2,     2,
-       3,     3,     2,     4,     4,     3,     6,     8,     3,     2,
-       1,     2,     2,     1,     1,     2,     3,     3,     2,     4,
-       6,     8,     1,     2,     2,     1,     2,     2,     3,     3,
-       1,     4,     4,     3,     5,     8,     3,     2,     3,     1,
-       5,     5,     6,     6,     1,     2,     2,     1,     2,     2,
-       3,     3,     1,     4,     4,     3,     5,     8,     3,     1,
-       2,     1,     2,     6,     5,     6,     7,     7,     1,     2,
-       2,     1,     2,     2,     3,     3,     1,     4,     4,     3,
-       8,     3,     1,     1,     2,     1,     1,     2,     3,     2,
-       3,     2,     3,     3,     2,     4,     3,     2,     3,     2,
-       4,     3,     2,     6,     6,     6,     7,     1,     2,     1,
-       1,     1,     2,     3,     2,     3,     2,     3,     3,     4,
-       2,     3,     4,     2,     5,     5,     6,     6,     0,     1,
-       0,     2
-};
-
-
-#define yyerrok         (yyerrstatus = 0)
-#define yyclearin       (yychar = YYEMPTY)
-#define YYEMPTY         (-2)
-#define YYEOF           0
-
-#define YYACCEPT        goto yyacceptlab
-#define YYABORT         goto yyabortlab
-#define YYERROR         goto yyerrorlab
-
-
-#define YYRECOVERING()  (!!yyerrstatus)
-
-#define YYBACKUP(Token, Value)                                  \
-do                                                              \
-  if (yychar == YYEMPTY)                                        \
-    {                                                           \
-      yychar = (Token);                                         \
-      yylval = (Value);                                         \
-      YYPOPSTACK (yylen);                                       \
-      yystate = *yyssp;                                         \
-      goto yybackup;                                            \
-    }                                                           \
-  else                                                          \
-    {                                                           \
-      yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;                                                  \
-    }                                                           \
-while (0)
-
-/* Error token number */
-#define YYTERROR        1
-#define YYERRCODE       256
-
-
-
-/* Enable debugging if requested.  */
-#if YYDEBUG
-
-# ifndef YYFPRINTF
-#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYFPRINTF fprintf
-# endif
-
-# define YYDPRINTF(Args)                        \
-do {                                            \
-  if (yydebug)                                  \
-    YYFPRINTF Args;                             \
-} while (0)
-
-/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
-
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
-do {                                                                      \
-  if (yydebug)                                                            \
-    {                                                                     \
-      YYFPRINTF (stderr, "%s ", Title);                                   \
-      yy_symbol_print (stderr,                                            \
-                  Type, Value); \
-      YYFPRINTF (stderr, "\n");                                           \
-    }                                                                     \
-} while (0)
-
-
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT.  |
-`----------------------------------------*/
-
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-{
-  FILE *yyo = yyoutput;
-  YYUSE (yyo);
-  if (!yyvaluep)
-    return;
-# ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# endif
-  YYUSE (yytype);
-}
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-{
-  YYFPRINTF (yyoutput, "%s %s (",
-             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
-
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
-}
-
-/*------------------------------------------------------------------.
-| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-| TOP (included).                                                   |
-`------------------------------------------------------------------*/
-
-static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-{
-  YYFPRINTF (stderr, "Stack now");
-  for (; yybottom <= yytop; yybottom++)
-    {
-      int yybot = *yybottom;
-      YYFPRINTF (stderr, " %d", yybot);
-    }
-  YYFPRINTF (stderr, "\n");
-}
-
-# define YY_STACK_PRINT(Bottom, Top)                            \
-do {                                                            \
-  if (yydebug)                                                  \
-    yy_stack_print ((Bottom), (Top));                           \
-} while (0)
-
-
-/*------------------------------------------------.
-| Report that the YYRULE is going to be reduced.  |
-`------------------------------------------------*/
-
-static void
-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
-{
-  unsigned long int yylno = yyrline[yyrule];
-  int yynrhs = yyr2[yyrule];
-  int yyi;
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-             yyrule - 1, yylno);
-  /* The symbols being reduced.  */
-  for (yyi = 0; yyi < yynrhs; yyi++)
-    {
-      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr,
-                       yystos[yyssp[yyi + 1 - yynrhs]],
-                       &(yyvsp[(yyi + 1) - (yynrhs)])
-                                              );
-      YYFPRINTF (stderr, "\n");
-    }
-}
-
-# define YY_REDUCE_PRINT(Rule)          \
-do {                                    \
-  if (yydebug)                          \
-    yy_reduce_print (yyssp, yyvsp, Rule); \
-} while (0)
-
-/* Nonzero means print parse trace.  It is left uninitialized so that
-   multiple parsers can coexist.  */
-int yydebug;
-#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
-# define YY_STACK_PRINT(Bottom, Top)
-# define YY_REDUCE_PRINT(Rule)
-#endif /* !YYDEBUG */
-
-
-/* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef YYINITDEPTH
-# define YYINITDEPTH 200
-#endif
-
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
-   if the built-in stack extension method is used).
-
-   Do not make this value too large; the results are undefined if
-   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
-   evaluated with infinite-precision integer arithmetic.  */
-
-#ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
-#endif
-
-
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-static YYSIZE_T
-yystrlen (const char *yystr)
-{
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
-    continue;
-  return yylen;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-{
-  char *yyd = yydest;
-  const char *yys = yysrc;
-
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
-
-  return yyd - 1;
-}
-#  endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
-    {
-      YYSIZE_T yyn = 0;
-      char const *yyp = yystr;
-
-      for (;;)
-        switch (*++yyp)
-          {
-          case '\'':
-          case ',':
-            goto do_not_strip_quotes;
-
-          case '\\':
-            if (*++yyp != '\\')
-              goto do_not_strip_quotes;
-            /* Fall through.  */
-          default:
-            if (yyres)
-              yyres[yyn] = *yyp;
-            yyn++;
-            break;
-
-          case '"':
-            if (yyres)
-              yyres[yyn] = '\0';
-            return yyn;
-          }
-    do_not_strip_quotes: ;
-    }
-
-  if (! yyres)
-    return yystrlen (yystr);
-
-  return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
-   about the unexpected token YYTOKEN for the state stack whose top is
-   YYSSP.
-
-   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
-   not large enough to hold the message.  In that case, also set
-   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
-   required number of bytes is too large to store.  */
-static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
-                yytype_int16 *yyssp, int yytoken)
-{
-  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
-  YYSIZE_T yysize = yysize0;
-  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-  /* Internationalized format string. */
-  const char *yyformat = YY_NULLPTR;
-  /* Arguments of yyformat. */
-  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-  /* Number of reported tokens (one for the "unexpected", one per
-     "expected"). */
-  int yycount = 0;
-
-  /* There are many possibilities here to consider:
-     - If this state is a consistent state with a default action, then
-       the only way this function was invoked is if the default action
-       is an error action.  In that case, don't check for expected
-       tokens because there are none.
-     - The only way there can be no lookahead present (in yychar) is if
-       this state is a consistent state with a default action.  Thus,
-       detecting the absence of a lookahead is sufficient to determine
-       that there is no unexpected or expected token to report.  In that
-       case, just report a simple "syntax error".
-     - Don't assume there isn't a lookahead just because this state is a
-       consistent state with a default action.  There might have been a
-       previous inconsistent state, consistent state with a non-default
-       action, or user semantic action that manipulated yychar.
-     - Of course, the expected token list depends on states to have
-       correct lookahead information, and it depends on the parser not
-       to perform extra reductions after fetching a lookahead from the
-       scanner and before detecting a syntax error.  Thus, state merging
-       (from LALR or IELR) and default reductions corrupt the expected
-       token list.  However, the list is correct for canonical LR with
-       one exception: it will still contain any token that will not be
-       accepted due to an error action in a later state.
-  */
-  if (yytoken != YYEMPTY)
-    {
-      int yyn = yypact[*yyssp];
-      yyarg[yycount++] = yytname[yytoken];
-      if (!yypact_value_is_default (yyn))
-        {
-          /* Start YYX at -YYN if negative to avoid negative indexes in
-             YYCHECK.  In other words, skip the first -YYN actions for
-             this state because they are default actions.  */
-          int yyxbegin = yyn < 0 ? -yyn : 0;
-          /* Stay within bounds of both yycheck and yytname.  */
-          int yychecklim = YYLAST - yyn + 1;
-          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-          int yyx;
-
-          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
-                && !yytable_value_is_error (yytable[yyx + yyn]))
-              {
-                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-                  {
-                    yycount = 1;
-                    yysize = yysize0;
-                    break;
-                  }
-                yyarg[yycount++] = yytname[yyx];
-                {
-                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
-                  if (! (yysize <= yysize1
-                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-                    return 2;
-                  yysize = yysize1;
-                }
-              }
-        }
-    }
-
-  switch (yycount)
-    {
-# define YYCASE_(N, S)                      \
-      case N:                               \
-        yyformat = S;                       \
-      break
-      YYCASE_(0, YY_("syntax error"));
-      YYCASE_(1, YY_("syntax error, unexpected %s"));
-      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
-      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
-      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
-      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-# undef YYCASE_
-    }
-
-  {
-    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
-    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-      return 2;
-    yysize = yysize1;
-  }
-
-  if (*yymsg_alloc < yysize)
-    {
-      *yymsg_alloc = 2 * yysize;
-      if (! (yysize <= *yymsg_alloc
-             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
-        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
-      return 1;
-    }
-
-  /* Avoid sprintf, as that infringes on the user's name space.
-     Don't have undefined behavior even if the translation
-     produced a string with the wrong number of "%s"s.  */
-  {
-    char *yyp = *yymsg;
-    int yyi = 0;
-    while ((*yyp = *yyformat) != '\0')
-      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
-        {
-          yyp += yytnamerr (yyp, yyarg[yyi++]);
-          yyformat += 2;
-        }
-      else
-        {
-          yyp++;
-          yyformat++;
-        }
-  }
-  return 0;
-}
-#endif /* YYERROR_VERBOSE */
-
-/*-----------------------------------------------.
-| Release the memory associated to this symbol.  |
-`-----------------------------------------------*/
-
-static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-{
-  YYUSE (yyvaluep);
-  if (!yymsg)
-    yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YYUSE (yytype);
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
-}
-
-
-
-
-/* The lookahead symbol.  */
-int yychar;
-
-/* The semantic value of the lookahead symbol.  */
-YYSTYPE yylval;
-/* Number of syntax errors so far.  */
-int yynerrs;
-
-
-/*----------.
-| yyparse.  |
-`----------*/
-
-int
-yyparse (void)
-{
-    int yystate;
-    /* Number of tokens to shift before error messages enabled.  */
-    int yyerrstatus;
-
-    /* The stacks and their tools:
-       'yyss': related to states.
-       'yyvs': related to semantic values.
-
-       Refer to the stacks through separate pointers, to allow yyoverflow
-       to reallocate them elsewhere.  */
-
-    /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
-
-    /* The semantic value stack.  */
-    YYSTYPE yyvsa[YYINITDEPTH];
-    YYSTYPE *yyvs;
-    YYSTYPE *yyvsp;
-
-    YYSIZE_T yystacksize;
-
-  int yyn;
-  int yyresult;
-  /* Lookahead token as an internal (translated) token number.  */
-  int yytoken = 0;
-  /* The variables used to return semantic value and location from the
-     action routines.  */
-  YYSTYPE yyval;
-
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
-
-#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
-
-  /* The number of symbols on the RHS of the reduced rule.
-     Keep to zero when no symbol should be popped.  */
-  int yylen = 0;
-
-  yyssp = yyss = yyssa;
-  yyvsp = yyvs = yyvsa;
-  yystacksize = YYINITDEPTH;
-
-  YYDPRINTF ((stderr, "Starting parse\n"));
-
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
-  yychar = YYEMPTY; /* Cause a token to be read.  */
-  goto yysetstate;
-
-/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
-`------------------------------------------------------------*/
- yynewstate:
-  /* In all cases, when you get here, the value and location stacks
-     have just been pushed.  So pushing a state here evens the stacks.  */
-  yyssp++;
-
- yysetstate:
-  *yyssp = yystate;
-
-  if (yyss + yystacksize - 1 <= yyssp)
-    {
-      /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
-
-#ifdef yyoverflow
-      {
-        /* Give user a chance to reallocate the stack.  Use copies of
-           these so that the &'s don't force the real ones into
-           memory.  */
-        YYSTYPE *yyvs1 = yyvs;
-        yytype_int16 *yyss1 = yyss;
-
-        /* Each stack pointer address is followed by the size of the
-           data in use in that stack, in bytes.  This used to be a
-           conditional around just the two extra args, but that might
-           be undefined if yyoverflow is a macro.  */
-        yyoverflow (YY_("memory exhausted"),
-                    &yyss1, yysize * sizeof (*yyssp),
-                    &yyvs1, yysize * sizeof (*yyvsp),
-                    &yystacksize);
-
-        yyss = yyss1;
-        yyvs = yyvs1;
-      }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
-      /* Extend the stack our own way.  */
-      if (YYMAXDEPTH <= yystacksize)
-        goto yyexhaustedlab;
-      yystacksize *= 2;
-      if (YYMAXDEPTH < yystacksize)
-        yystacksize = YYMAXDEPTH;
-
-      {
-        yytype_int16 *yyss1 = yyss;
-        union yyalloc *yyptr =
-          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-        if (! yyptr)
-          goto yyexhaustedlab;
-        YYSTACK_RELOCATE (yyss_alloc, yyss);
-        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
-#  undef YYSTACK_RELOCATE
-        if (yyss1 != yyssa)
-          YYSTACK_FREE (yyss1);
-      }
-# endif
-#endif /* no yyoverflow */
-
-      yyssp = yyss + yysize - 1;
-      yyvsp = yyvs + yysize - 1;
-
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long int) yystacksize));
-
-      if (yyss + yystacksize - 1 <= yyssp)
-        YYABORT;
-    }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
-  if (yystate == YYFINAL)
-    YYACCEPT;
-
-  goto yybackup;
-
-/*-----------.
-| yybackup.  |
-`-----------*/
-yybackup:
-
-  /* Do appropriate processing given the current state.  Read a
-     lookahead token if we need one and don't already have one.  */
-
-  /* First try to decide what to do without reference to lookahead token.  */
-  yyn = yypact[yystate];
-  if (yypact_value_is_default (yyn))
-    goto yydefault;
-
-  /* Not known => get a lookahead token if don't already have one.  */
-
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
-  if (yychar == YYEMPTY)
-    {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = yylex ();
-    }
-
-  if (yychar <= YYEOF)
-    {
-      yychar = yytoken = YYEOF;
-      YYDPRINTF ((stderr, "Now at end of input.\n"));
-    }
-  else
-    {
-      yytoken = YYTRANSLATE (yychar);
-      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
-    }
-
-  /* If the proper action on seeing token YYTOKEN is to reduce or to
-     detect an error, take that action.  */
-  yyn += yytoken;
-  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
-    goto yydefault;
-  yyn = yytable[yyn];
-  if (yyn <= 0)
-    {
-      if (yytable_value_is_error (yyn))
-        goto yyerrlab;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-
-  /* Count tokens shifted since error; after three, turn off error
-     status.  */
-  if (yyerrstatus)
-    yyerrstatus--;
-
-  /* Shift the lookahead token.  */
-  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
-  yystate = yyn;
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  *++yyvsp = yylval;
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
-
-  goto yynewstate;
-
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state.  |
-`-----------------------------------------------------------*/
-yydefault:
-  yyn = yydefact[yystate];
-  if (yyn == 0)
-    goto yyerrlab;
-  goto yyreduce;
-
-
-/*-----------------------------.
-| yyreduce -- Do a reduction.  |
-`-----------------------------*/
-yyreduce:
-  /* yyn is the number of a rule to reduce with.  */
-  yylen = yyr2[yyn];
-
-  /* If YYLEN is nonzero, implement the default value of the action:
-     '$$ = $1'.
-
-     Otherwise, the following line sets YYVAL to garbage.
-     This behavior is undocumented and Bison
-     users should not rely upon it.  Assigning to YYVAL
-     unconditionally makes the parser a bit smaller, and it avoids a
-     GCC warning that YYVAL may be used uninitialized.  */
-  yyval = yyvsp[1-yylen];
-
-
-  YY_REDUCE_PRINT (yyn);
-  switch (yyn)
-    {
-        case 2:
-#line 300 "parser.yy" /* yacc.c:1646  */
-    { typedefTable.enterScope(); }
-#line 4483 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 3:
-#line 304 "parser.yy" /* yacc.c:1646  */
-    { typedefTable.leaveScope(); }
-#line 4489 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 4:
-#line 311 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[0].tok) ) ); }
-#line 4495 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 5:
-#line 312 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[0].tok) ) ); }
-#line 4501 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 6:
-#line 313 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[0].tok) ) ); }
-#line 4507 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 16:
-#line 338 "parser.yy" /* yacc.c:1646  */
-    { (yyval.constant) = build_constantStr( *(yyvsp[0].str) ); }
-#line 4513 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 17:
-#line 342 "parser.yy" /* yacc.c:1646  */
-    { (yyval.str) = (yyvsp[0].tok); }
-#line 4519 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 18:
-#line 344 "parser.yy" /* yacc.c:1646  */
-    {
-			appendStr( (yyvsp[-1].str), (yyvsp[0].tok) );						// append 2nd juxtaposed string to 1st
-			delete (yyvsp[0].tok);									// allocated by lexer
-			(yyval.str) = (yyvsp[-1].str);									// conversion from tok to str
-		}
-#line 4529 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 19:
-#line 355 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
-#line 4535 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 20:
-#line 357 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
-#line 4541 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 21:
-#line 359 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[-1].en); }
-#line 4547 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 22:
-#line 361 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[-1].sn) ) ); }
-#line 4553 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 24:
-#line 371 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[-5].en), (yyvsp[-2].en) ) ); }
-#line 4559 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 25:
-#line 373 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[-3].en), (yyvsp[-1].en) ) ); }
-#line 4565 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 26:
-#line 377 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); }
-#line 4571 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 28:
-#line 380 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); }
-#line 4577 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 30:
-#line 383 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[-1].en) ) ); }
-#line 4583 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 31:
-#line 385 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[-1].en) ) ); }
-#line 4589 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 32:
-#line 387 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[-5].decl), new InitializerNode( (yyvsp[-2].in), true ) ) ); }
-#line 4595 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 33:
-#line 389 "parser.yy" /* yacc.c:1646  */
-    {
-			Token fn;
-			fn.str = new std::string( "?{}" ); // location undefined
-			(yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-3].en) )->set_last( (yyvsp[-1].en) ) ) );
-		}
-#line 4605 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 35:
-#line 399 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
-#line 4611 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 36:
-#line 404 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = 0; }
-#line 4617 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 39:
-#line 410 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
-#line 4623 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 40:
-#line 415 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
-#line 4629 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 41:
-#line 419 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[0].en), build_varref( (yyvsp[-2].tok) ) ) ); }
-#line 4635 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 42:
-#line 421 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), build_varref( (yyvsp[-6].tok) ) ) ); }
-#line 4641 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 43:
-#line 423 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[0].en), build_varref( (yyvsp[-2].tok) ) ) ); }
-#line 4647 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 44:
-#line 425 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), build_varref( (yyvsp[-6].tok) ) ) ); }
-#line 4653 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 46:
-#line 433 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 4659 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 47:
-#line 435 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
-#line 4665 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 48:
-#line 437 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en)->set_extension( true ); }
-#line 4671 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 49:
-#line 442 "parser.yy" /* yacc.c:1646  */
-    {
-			switch ( (yyvsp[-1].op) ) {
-			  case OperKinds::AddressOf:
-				(yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[0].en) ) );
-				break;
-			  case OperKinds::PointTo:
-				(yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) );
-				break;
-			  default:
-				assert( false );
-			}
-		}
-#line 4688 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 50:
-#line 455 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) ); }
-#line 4694 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 51:
-#line 457 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[0].en) ) ); }
-#line 4700 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 52:
-#line 459 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[0].en) ) ); }
-#line 4706 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 53:
-#line 461 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[0].en) ) ); }
-#line 4712 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 54:
-#line 463 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[-1].decl) ) ); }
-#line 4718 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 55:
-#line 465 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[0].en) ) ); }
-#line 4724 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 56:
-#line 467 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[-1].decl) ) ); }
-#line 4730 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 57:
-#line 469 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[-3].decl), build_varref( (yyvsp[-1].tok) ) ) ); }
-#line 4736 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 58:
-#line 471 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[0].tok) ), nullptr ) ); }
-#line 4742 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 59:
-#line 473 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].en) ) ); }
-#line 4748 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 60:
-#line 475 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].decl) ) ); }
-#line 4754 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 61:
-#line 481 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::PointTo; }
-#line 4760 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 62:
-#line 482 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::AddressOf; }
-#line 4766 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 63:
-#line 488 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::UnPlus; }
-#line 4772 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 64:
-#line 489 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::UnMinus; }
-#line 4778 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 65:
-#line 490 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::Neg; }
-#line 4784 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 66:
-#line 491 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::BitNeg; }
-#line 4790 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 68:
-#line 497 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); }
-#line 4796 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 69:
-#line 499 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); }
-#line 4802 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 71:
-#line 505 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4808 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 72:
-#line 507 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4814 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 73:
-#line 509 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4820 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 75:
-#line 515 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4826 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 76:
-#line 517 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4832 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 78:
-#line 523 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4838 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 79:
-#line 525 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4844 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 81:
-#line 531 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4850 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 82:
-#line 533 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4856 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 83:
-#line 535 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4862 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 84:
-#line 537 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4868 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 86:
-#line 543 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4874 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 87:
-#line 545 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4880 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 89:
-#line 551 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4886 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 91:
-#line 557 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4892 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 93:
-#line 563 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4898 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 95:
-#line 569 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), true ) ); }
-#line 4904 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 97:
-#line 575 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), false ) ); }
-#line 4910 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 99:
-#line 581 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4916 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 100:
-#line 584 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-3].en), (yyvsp[-3].en), (yyvsp[0].en) ) ); }
-#line 4922 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 101:
-#line 586 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4928 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 104:
-#line 597 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[-1].op), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4934 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 105:
-#line 599 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = ( (yyvsp[0].en) == 0 ) ? (yyvsp[-1].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[-1].en), (yyvsp[0].en) ) ); }
-#line 4940 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 106:
-#line 604 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = nullptr; }
-#line 4946 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 108:
-#line 609 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::Assign; }
-#line 4952 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 109:
-#line 610 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::AtAssn; }
-#line 4958 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 110:
-#line 611 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::MulAssn; }
-#line 4964 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 111:
-#line 612 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::DivAssn; }
-#line 4970 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 112:
-#line 613 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::ModAssn; }
-#line 4976 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 113:
-#line 614 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::PlusAssn; }
-#line 4982 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 114:
-#line 615 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::MinusAssn; }
-#line 4988 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 115:
-#line 616 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::LSAssn; }
-#line 4994 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 116:
-#line 617 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::RSAssn; }
-#line 5000 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 117:
-#line 618 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::AndAssn; }
-#line 5006 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 118:
-#line 619 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::ERAssn; }
-#line 5012 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 119:
-#line 620 "parser.yy" /* yacc.c:1646  */
-    { (yyval.op) = OperKinds::OrAssn; }
-#line 5018 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 120:
-#line 627 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_tuple() ); }
-#line 5024 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 121:
-#line 629 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[-2].en) ) ); }
-#line 5030 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 122:
-#line 631 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[-2].en) ) ) ); }
-#line 5036 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 123:
-#line 633 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[-4].en)->set_last( (yyvsp[-2].en) ) ) ); }
-#line 5042 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 125:
-#line 639 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
-#line 5048 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 127:
-#line 645 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 5054 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 128:
-#line 650 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = 0; }
-#line 5060 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 132:
-#line 659 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[0].sn); }
-#line 5066 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 138:
-#line 666 "parser.yy" /* yacc.c:1646  */
-    {
-			Token fn;
-			fn.str = new std::string( "^?{}" ); // location undefined
-			(yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-4].en) )->set_last( (yyvsp[-2].en) ) ) ) ) );
-		}
-#line 5076 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 139:
-#line 676 "parser.yy" /* yacc.c:1646  */
-    {
-			(yyval.sn) = (yyvsp[0].sn)->add_label( (yyvsp[-3].tok) );
-		}
-#line 5084 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 140:
-#line 683 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
-#line 5090 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 141:
-#line 690 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[-2].sn) ) ); }
-#line 5096 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 143:
-#line 696 "parser.yy" /* yacc.c:1646  */
-    { if ( (yyvsp[-2].sn) != 0 ) { (yyvsp[-2].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-2].sn); } }
-#line 5102 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 144:
-#line 701 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
-#line 5108 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 145:
-#line 703 "parser.yy" /* yacc.c:1646  */
-    {	// mark all fields in list
-			for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
-				iter->set_extension( true );
-			(yyval.sn) = new StatementNode( (yyvsp[0].decl) );
-		}
-#line 5118 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 146:
-#line 709 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
-#line 5124 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 149:
-#line 716 "parser.yy" /* yacc.c:1646  */
-    { if ( (yyvsp[-1].sn) != 0 ) { (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-1].sn); } }
-#line 5130 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 150:
-#line 721 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[-1].en) ) ); }
-#line 5136 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 151:
-#line 727 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_if( (yyvsp[-2].en), (yyvsp[0].sn), nullptr ) ); }
-#line 5142 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 152:
-#line 729 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_if( (yyvsp[-4].en), (yyvsp[-2].sn), (yyvsp[0].sn) ) ); }
-#line 5148 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 153:
-#line 731 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
-#line 5154 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 154:
-#line 733 "parser.yy" /* yacc.c:1646  */
-    {
-			StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
-			// The semantics of the declaration list is changed to include associated initialization, which is performed
-			// *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
-			// statement around the switch.  Statements after the initial declaration list can never be executed, and
-			// therefore, are removed from the grammar even though C allows it. The change also applies to choose
-			// statement.
-			(yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
-		}
-#line 5168 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 155:
-#line 743 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
-#line 5174 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 156:
-#line 745 "parser.yy" /* yacc.c:1646  */
-    {
-			StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
-			(yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
-		}
-#line 5183 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 157:
-#line 755 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 5189 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 158:
-#line 757 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 5195 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 160:
-#line 762 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_case( (yyvsp[0].en) ) ); }
-#line 5201 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 161:
-#line 764 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)((yyvsp[-2].sn)->set_last( new StatementNode( build_case( (yyvsp[0].en) ) ) ) ); }
-#line 5207 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 162:
-#line 768 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[-1].sn); }
-#line 5213 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 163:
-#line 769 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_default() ); }
-#line 5219 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 165:
-#line 775 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)( (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) )); }
-#line 5225 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 166:
-#line 779 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
-#line 5231 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 167:
-#line 784 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = 0; }
-#line 5237 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 169:
-#line 790 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
-#line 5243 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 170:
-#line 792 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ) ) ); }
-#line 5249 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 171:
-#line 797 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = 0; }
-#line 5255 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 173:
-#line 803 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ); }
-#line 5261 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 174:
-#line 805 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[-2].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ) ) ) ); }
-#line 5267 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 175:
-#line 807 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ))); }
-#line 5273 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 176:
-#line 809 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)( (yyvsp[-3].sn)->set_last( (yyvsp[-2].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ) ) ) ) ) ); }
-#line 5279 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 177:
-#line 814 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
-#line 5285 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 179:
-#line 820 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = 0; }
-#line 5291 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 180:
-#line 822 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = 0; }
-#line 5297 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 181:
-#line 827 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
-#line 5303 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 182:
-#line 829 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[-5].sn), true ) ); }
-#line 5309 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 183:
-#line 831 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_for( (yyvsp[-2].fctl), (yyvsp[0].sn) ) ); }
-#line 5315 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 184:
-#line 836 "parser.yy" /* yacc.c:1646  */
-    { (yyval.fctl) = new ForCtl( (yyvsp[-5].en), (yyvsp[-2].en), (yyvsp[0].en) ); }
-#line 5321 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 185:
-#line 838 "parser.yy" /* yacc.c:1646  */
-    { (yyval.fctl) = new ForCtl( (yyvsp[-3].decl), (yyvsp[-2].en), (yyvsp[0].en) ); }
-#line 5327 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 186:
-#line 843 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Goto ) ); }
-#line 5333 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 187:
-#line 847 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[-1].en) ) ); }
-#line 5339 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 188:
-#line 850 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
-#line 5345 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 189:
-#line 854 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Continue ) ); }
-#line 5351 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 190:
-#line 857 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
-#line 5357 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 191:
-#line 861 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Break ) ); }
-#line 5363 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 192:
-#line 863 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_return( (yyvsp[-1].en) ) ); }
-#line 5369 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 193:
-#line 865 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
-#line 5375 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 194:
-#line 867 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
-#line 5381 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 195:
-#line 869 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-3].en) ) ); }
-#line 5387 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 196:
-#line 874 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), (yyvsp[0].sn), 0 ) ); }
-#line 5393 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 197:
-#line 876 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), 0, (yyvsp[0].sn) ) ); }
-#line 5399 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 198:
-#line 878 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-2].sn), (yyvsp[-1].sn), (yyvsp[0].sn) ) ); }
-#line 5405 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 200:
-#line 885 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
-#line 5411 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 201:
-#line 887 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
-#line 5417 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 202:
-#line 889 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
-#line 5423 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 203:
-#line 891 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
-#line 5429 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 204:
-#line 896 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
-#line 5435 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 205:
-#line 898 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
-#line 5441 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 206:
-#line 900 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
-#line 5447 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 207:
-#line 902 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
-#line 5453 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 208:
-#line 907 "parser.yy" /* yacc.c:1646  */
-    {
-			(yyval.sn) = new StatementNode( build_finally( (yyvsp[0].sn) ) );
-		}
-#line 5461 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 210:
-#line 920 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
-		}
-#line 5470 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 211:
-#line 925 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
-#line 5476 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 212:
-#line 927 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) );
-		}
-#line 5485 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 214:
-#line 936 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-4].flag), (yyvsp[-2].constant), 0 ) ); }
-#line 5491 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 215:
-#line 938 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-6].flag), (yyvsp[-4].constant), (yyvsp[-2].en) ) ); }
-#line 5497 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 216:
-#line 940 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-8].flag), (yyvsp[-6].constant), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
-#line 5503 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 217:
-#line 942 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-10].flag), (yyvsp[-8].constant), (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
-#line 5509 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 218:
-#line 944 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-12].flag), (yyvsp[-9].constant), 0, (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].label) ) ); }
-#line 5515 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 219:
-#line 949 "parser.yy" /* yacc.c:1646  */
-    { (yyval.flag) = false; }
-#line 5521 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 220:
-#line 951 "parser.yy" /* yacc.c:1646  */
-    { (yyval.flag) = true; }
-#line 5527 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 221:
-#line 956 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = 0; }
-#line 5533 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 224:
-#line 963 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
-#line 5539 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 225:
-#line 968 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
-#line 5545 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 226:
-#line 970 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[-5].en), (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
-#line 5551 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 227:
-#line 975 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = 0; }
-#line 5557 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 228:
-#line 977 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
-#line 5563 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 229:
-#line 979 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( new ExpressionNode( (yyvsp[0].constant) ) ); }
-#line 5569 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 230:
-#line 984 "parser.yy" /* yacc.c:1646  */
-    {
-			(yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[0].tok) );
-			delete (yyvsp[0].tok);									// allocated by lexer
-		}
-#line 5578 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 231:
-#line 989 "parser.yy" /* yacc.c:1646  */
-    {
-			(yyval.label) = (yyvsp[-2].label); (yyvsp[-2].label)->labels.push_back( *(yyvsp[0].tok) );
-			delete (yyvsp[0].tok);									// allocated by lexer
-		}
-#line 5587 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 232:
-#line 999 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 5593 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 235:
-#line 1006 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
-#line 5599 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 236:
-#line 1011 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 5605 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 239:
-#line 1018 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
-#line 5611 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 244:
-#line 1032 "parser.yy" /* yacc.c:1646  */
-    {}
-#line 5617 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 245:
-#line 1033 "parser.yy" /* yacc.c:1646  */
-    {}
-#line 5623 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 253:
-#line 1062 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-1].decl)->addInitializer( (yyvsp[0].in) );
-		}
-#line 5632 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 254:
-#line 1069 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addInitializer( (yyvsp[0].in) );;
-		}
-#line 5641 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 255:
-#line 1074 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( *(yyvsp[-1].tok), TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneType( (yyvsp[-1].tok) )->addInitializer( (yyvsp[0].in) ) );
-		}
-#line 5650 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 256:
-#line 1084 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
-			(yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
-		}
-#line 5659 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 257:
-#line 1089 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
-			(yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
-		}
-#line 5668 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 258:
-#line 1094 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
-			(yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-3].decl) )->addName( (yyvsp[-1].tok) );
-		}
-#line 5677 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 259:
-#line 1102 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl);
-		}
-#line 5686 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 260:
-#line 1107 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
-		}
-#line 5695 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 261:
-#line 1112 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
-		}
-#line 5704 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 262:
-#line 1117 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-1].decl) );
-		}
-#line 5713 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 263:
-#line 1122 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
-		}
-#line 5722 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 264:
-#line 1130 "parser.yy" /* yacc.c:1646  */
-    {
-			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), DeclarationNode::newTuple( 0 ), (yyvsp[-2].decl), 0, true );
-		}
-#line 5730 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 265:
-#line 1153 "parser.yy" /* yacc.c:1646  */
-    {
-			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
-		}
-#line 5738 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 266:
-#line 1157 "parser.yy" /* yacc.c:1646  */
-    {
-			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
-		}
-#line 5746 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 267:
-#line 1164 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
-#line 5752 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 268:
-#line 1168 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-6].decl)->appendList( (yyvsp[-2].decl) ) ); }
-#line 5758 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 269:
-#line 1173 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[0].decl)->addTypedef();
-		}
-#line 5767 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 270:
-#line 1178 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[0].decl)->addTypedef();
-		}
-#line 5776 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 271:
-#line 1183 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
-			(yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
-		}
-#line 5785 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 272:
-#line 1194 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addTypedef();
-		}
-#line 5794 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 273:
-#line 1199 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) )->addTypedef() );
-		}
-#line 5803 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 274:
-#line 1204 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[-3].decl) )->addTypedef();
-		}
-#line 5812 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 275:
-#line 1209 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-2].decl) )->addTypedef();
-		}
-#line 5821 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 276:
-#line 1214 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-3].decl) )->addTypedef()->addType( (yyvsp[-3].decl) );
-		}
-#line 5830 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 277:
-#line 1223 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
-			(yyval.decl) = DeclarationNode::newName( 0 ); // XXX
-		}
-#line 5839 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 278:
-#line 1228 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
-			(yyval.decl) = DeclarationNode::newName( 0 ); // XXX
-		}
-#line 5848 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 283:
-#line 1245 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = ( (yyvsp[-2].decl)->addType( (yyvsp[-3].decl) ))->addInitializer( (yyvsp[0].in) );
-		}
-#line 5857 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 284:
-#line 1250 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneBaseType( (yyvsp[-2].decl)->addInitializer( (yyvsp[0].in) ) ) );
-		}
-#line 5866 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 293:
-#line 1272 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 5872 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 296:
-#line 1284 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 5878 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 299:
-#line 1295 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
-#line 5884 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 300:
-#line 1297 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
-#line 5890 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 301:
-#line 1299 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
-#line 5896 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 302:
-#line 1301 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
-#line 5902 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 303:
-#line 1303 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
-#line 5908 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 304:
-#line 1305 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.enterScope();
-		}
-#line 5916 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 305:
-#line 1309 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.leaveScope();
-			(yyval.decl) = DeclarationNode::newForall( (yyvsp[-1].decl) );
-		}
-#line 5925 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 307:
-#line 1318 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 5931 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 308:
-#line 1320 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 5937 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 310:
-#line 1331 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 5943 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 311:
-#line 1336 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
-#line 5949 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 312:
-#line 1338 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
-#line 5955 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 313:
-#line 1340 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
-#line 5961 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 314:
-#line 1342 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
-#line 5967 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 315:
-#line 1345 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
-#line 5973 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 316:
-#line 1347 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
-#line 5979 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 317:
-#line 1350 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
-#line 5985 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 318:
-#line 1352 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
-#line 5991 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 319:
-#line 1357 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
-#line 5997 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 320:
-#line 1359 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
-#line 6003 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 321:
-#line 1361 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
-#line 6009 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 322:
-#line 1363 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
-#line 6015 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 323:
-#line 1365 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
-#line 6021 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 324:
-#line 1367 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
-#line 6027 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 325:
-#line 1369 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
-#line 6033 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 326:
-#line 1371 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
-#line 6039 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 327:
-#line 1373 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
-#line 6045 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 328:
-#line 1375 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
-#line 6051 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 329:
-#line 1377 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
-#line 6057 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 330:
-#line 1379 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
-#line 6063 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 331:
-#line 1381 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
-#line 6069 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 333:
-#line 1388 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6075 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 334:
-#line 1390 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6081 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 335:
-#line 1392 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 6087 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 336:
-#line 1394 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) )->addType( (yyvsp[-2].decl) ); }
-#line 6093 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 338:
-#line 1400 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 6099 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 340:
-#line 1407 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6105 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 341:
-#line 1409 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6111 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 342:
-#line 1411 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[0].decl) ); }
-#line 6117 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 343:
-#line 1416 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 6123 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 344:
-#line 1418 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[-1].en) ); }
-#line 6129 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 345:
-#line 1420 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].decl) ); }
-#line 6135 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 346:
-#line 1422 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
-#line 6141 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 348:
-#line 1428 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6147 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 349:
-#line 1430 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6153 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 350:
-#line 1432 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 6159 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 352:
-#line 1438 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6165 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 353:
-#line 1440 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6171 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 355:
-#line 1446 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6177 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 356:
-#line 1448 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6183 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 357:
-#line 1450 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 6189 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 358:
-#line 1455 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) ); }
-#line 6195 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 359:
-#line 1457 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) )->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6201 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 360:
-#line 1459 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6207 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 363:
-#line 1469 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-3].aggKey), 0, 0, (yyvsp[-1].decl), true ); }
-#line 6213 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 364:
-#line 1471 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.makeTypedef( *(yyvsp[0].tok) );
-			(yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-1].aggKey), (yyvsp[0].tok), 0, 0, false );
-		}
-#line 6222 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 365:
-#line 1476 "parser.yy" /* yacc.c:1646  */
-    { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
-#line 6228 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 366:
-#line 1478 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-5].aggKey), (yyvsp[-4].tok), 0, (yyvsp[-1].decl), true ); }
-#line 6234 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 367:
-#line 1480 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-6].aggKey), 0, (yyvsp[-4].en), (yyvsp[-1].decl), false ); }
-#line 6240 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 368:
-#line 1482 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl); }
-#line 6246 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 369:
-#line 1487 "parser.yy" /* yacc.c:1646  */
-    { (yyval.aggKey) = DeclarationNode::Struct; }
-#line 6252 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 370:
-#line 1489 "parser.yy" /* yacc.c:1646  */
-    { (yyval.aggKey) = DeclarationNode::Union; }
-#line 6258 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 371:
-#line 1494 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 6264 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 372:
-#line 1496 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
-#line 6270 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 374:
-#line 1502 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->set_extension( true ); }
-#line 6276 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 376:
-#line 1505 "parser.yy" /* yacc.c:1646  */
-    {	// mark all fields in list
-			for ( DeclarationNode *iter = (yyvsp[-1].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
-				iter->set_extension( true );
-			(yyval.decl) = (yyvsp[-1].decl);
-		}
-#line 6286 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 378:
-#line 1515 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) ); }
-#line 6292 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 379:
-#line 1517 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[-2].decl)->cloneType( (yyvsp[0].tok) ) ); }
-#line 6298 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 380:
-#line 1519 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->appendList( (yyvsp[-1].decl)->cloneType( 0 ) ); }
-#line 6304 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 381:
-#line 1524 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
-#line 6310 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 382:
-#line 1526 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-3].decl)->cloneBaseType( (yyvsp[0].decl) ) ); }
-#line 6316 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 383:
-#line 1531 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
-#line 6322 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 384:
-#line 1533 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[0].en) ); }
-#line 6328 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 385:
-#line 1536 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
-#line 6334 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 386:
-#line 1539 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
-#line 6340 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 388:
-#line 1545 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = 0; }
-#line 6346 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 389:
-#line 1547 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 6352 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 390:
-#line 1552 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 6358 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 392:
-#line 1561 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[-2].decl) ); }
-#line 6364 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 393:
-#line 1563 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.makeTypedef( *(yyvsp[0].tok) );
-			(yyval.decl) = DeclarationNode::newEnum( (yyvsp[0].tok), 0 );
-		}
-#line 6373 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 394:
-#line 1568 "parser.yy" /* yacc.c:1646  */
-    { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
-#line 6379 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 395:
-#line 1570 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[-5].tok), (yyvsp[-2].decl) ); }
-#line 6385 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 396:
-#line 1575 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ); }
-#line 6391 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 397:
-#line 1577 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-3].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ) ); }
-#line 6397 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 398:
-#line 1582 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = 0; }
-#line 6403 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 399:
-#line 1584 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 6409 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 400:
-#line 1591 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 6415 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 404:
-#line 1599 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6421 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 405:
-#line 1601 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
-#line 6427 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 406:
-#line 1603 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
-#line 6433 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 408:
-#line 1611 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6439 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 409:
-#line 1613 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6445 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 410:
-#line 1615 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-8].decl)->appendList( (yyvsp[-4].decl) )->appendList( (yyvsp[0].decl) ); }
-#line 6451 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 412:
-#line 1621 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6457 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 413:
-#line 1626 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 6463 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 416:
-#line 1633 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
-#line 6469 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 419:
-#line 1640 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6475 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 420:
-#line 1642 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6481 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 422:
-#line 1651 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
-#line 6487 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 423:
-#line 1654 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
-#line 6493 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 424:
-#line 1656 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) )->addQualifiers( (yyvsp[-3].decl) ); }
-#line 6499 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 429:
-#line 1666 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6505 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 431:
-#line 1672 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
-		}
-#line 6514 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 432:
-#line 1677 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
-		}
-#line 6523 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 434:
-#line 1686 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
-#line 6529 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 435:
-#line 1695 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) ); }
-#line 6535 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 436:
-#line 1697 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( DeclarationNode::newName( (yyvsp[0].tok) ) ); }
-#line 6541 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 448:
-#line 1722 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
-#line 6547 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 452:
-#line 1730 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
-#line 6553 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 453:
-#line 1735 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = 0; }
-#line 6559 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 454:
-#line 1737 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = (yyvsp[0].in); }
-#line 6565 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 455:
-#line 1739 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = (yyvsp[0].in)->set_maybeConstructed( false ); }
-#line 6571 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 456:
-#line 1743 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = new InitializerNode( (yyvsp[0].en) ); }
-#line 6577 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 457:
-#line 1744 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = new InitializerNode( (yyvsp[-2].in), true ); }
-#line 6583 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 458:
-#line 1749 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = 0; }
-#line 6589 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 460:
-#line 1751 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ); }
-#line 6595 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 461:
-#line 1752 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = (InitializerNode *)( (yyvsp[-2].in)->set_last( (yyvsp[0].in) ) ); }
-#line 6601 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 462:
-#line 1754 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = (InitializerNode *)( (yyvsp[-3].in)->set_last( (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ) ) ); }
-#line 6607 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 464:
-#line 1770 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[-1].tok) ) ); }
-#line 6613 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 466:
-#line 1776 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)( (yyvsp[-1].en)->set_last( (yyvsp[0].en) ) ); }
-#line 6619 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 467:
-#line 1782 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
-#line 6625 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 468:
-#line 1785 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[-2].en); }
-#line 6631 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 469:
-#line 1787 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[-2].en); }
-#line 6637 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 470:
-#line 1789 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
-#line 6643 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 471:
-#line 1791 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[-2].en); }
-#line 6649 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 473:
-#line 1815 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6655 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 474:
-#line 1817 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6661 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 475:
-#line 1819 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 6667 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 477:
-#line 1825 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6673 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 478:
-#line 1827 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6679 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 479:
-#line 1832 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
-#line 6685 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 481:
-#line 1838 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-1].decl) ); }
-#line 6691 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 482:
-#line 1843 "parser.yy" /* yacc.c:1646  */
-    { typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD ); }
-#line 6697 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 483:
-#line 1845 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[-3].tclass), (yyvsp[-2].tok) )->addAssertions( (yyvsp[0].decl) ); }
-#line 6703 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 485:
-#line 1851 "parser.yy" /* yacc.c:1646  */
-    { (yyval.tclass) = DeclarationNode::Type; }
-#line 6709 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 486:
-#line 1853 "parser.yy" /* yacc.c:1646  */
-    { (yyval.tclass) = DeclarationNode::Ftype; }
-#line 6715 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 487:
-#line 1855 "parser.yy" /* yacc.c:1646  */
-    { (yyval.tclass) = DeclarationNode::Dtype; }
-#line 6721 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 488:
-#line 1860 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 6727 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 489:
-#line 1862 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
-#line 6733 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 490:
-#line 1867 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.openTrait( *(yyvsp[-3].tok) );
-			(yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[-3].tok), (yyvsp[-1].en) );
-		}
-#line 6742 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 491:
-#line 1872 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 6748 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 492:
-#line 1874 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 6754 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 493:
-#line 1879 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ); }
-#line 6760 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 495:
-#line 1882 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ) ) ); }
-#line 6766 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 496:
-#line 1884 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
-#line 6772 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 497:
-#line 1889 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl); }
-#line 6778 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 498:
-#line 1891 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) ); }
-#line 6784 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 499:
-#line 1893 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl)->copyStorageClasses( (yyvsp[-2].decl) ) ); }
-#line 6790 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 500:
-#line 1898 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addAssertions( (yyvsp[0].decl) ); }
-#line 6796 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 501:
-#line 1900 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-3].decl)->addAssertions( (yyvsp[-2].decl) )->addType( (yyvsp[0].decl) ); }
-#line 6802 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 502:
-#line 1905 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
-			(yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[0].tok), 0 );
-		}
-#line 6811 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 503:
-#line 1910 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( *(yyvsp[-5].tok), TypedefTable::TG );
-			(yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[-5].tok), (yyvsp[-2].decl) );
-		}
-#line 6820 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 504:
-#line 1918 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( *(yyvsp[-7].tok), TypedefTable::ID );
-			(yyval.decl) = DeclarationNode::newTrait( (yyvsp[-7].tok), (yyvsp[-4].decl), 0 );
-		}
-#line 6829 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 505:
-#line 1923 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.enterTrait( *(yyvsp[-6].tok) );
-			typedefTable.enterScope();
-		}
-#line 6838 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 506:
-#line 1928 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.leaveTrait();
-			typedefTable.addToEnclosingScope( *(yyvsp[-9].tok), TypedefTable::ID );
-			(yyval.decl) = DeclarationNode::newTrait( (yyvsp[-9].tok), (yyvsp[-6].decl), (yyvsp[-1].decl) );
-		}
-#line 6848 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 508:
-#line 1938 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6854 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 511:
-#line 1948 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope2( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl);
-		}
-#line 6863 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 512:
-#line 1953 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope2( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl);
-		}
-#line 6872 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 513:
-#line 1958 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope2( *(yyvsp[0].tok), TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
-		}
-#line 6881 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 514:
-#line 1966 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope2( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
-		}
-#line 6890 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 515:
-#line 1971 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope2( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) ) );
-		}
-#line 6899 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 516:
-#line 1981 "parser.yy" /* yacc.c:1646  */
-    {}
-#line 6905 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 517:
-#line 1983 "parser.yy" /* yacc.c:1646  */
-    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl);	}
-#line 6911 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 519:
-#line 1989 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl) != nullptr ? (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
-#line 6917 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 520:
-#line 1994 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 6923 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 524:
-#line 2002 "parser.yy" /* yacc.c:1646  */
-    {}
-#line 6929 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 525:
-#line 2004 "parser.yy" /* yacc.c:1646  */
-    {
-			linkageStack.push( linkage );				// handle nested extern "C"/"Cforall"
-			linkage = LinkageSpec::fromString( *(yyvsp[0].tok) );
-		}
-#line 6938 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 526:
-#line 2009 "parser.yy" /* yacc.c:1646  */
-    {
-			linkage = linkageStack.top();
-			linkageStack.pop();
-			(yyval.decl) = (yyvsp[-1].decl);
-		}
-#line 6948 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 527:
-#line 2015 "parser.yy" /* yacc.c:1646  */
-    {	// mark all fields in list
-			for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
-				iter->set_extension( true );
-			(yyval.decl) = (yyvsp[0].decl);
-		}
-#line 6958 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 529:
-#line 2030 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
-		}
-#line 6968 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 530:
-#line 2036 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) );
-		}
-#line 6978 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 531:
-#line 2045 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
-		}
-#line 6988 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 532:
-#line 2051 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-2].decl) );
-		}
-#line 6998 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 533:
-#line 2057 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
-		}
-#line 7008 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 534:
-#line 2063 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
-		}
-#line 7018 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 535:
-#line 2069 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-3].decl) );
-		}
-#line 7028 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 536:
-#line 2077 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-4].decl) );
-		}
-#line 7038 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 537:
-#line 2083 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
-		}
-#line 7048 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 538:
-#line 2091 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
-		}
-#line 7058 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 539:
-#line 2097 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) )->addQualifiers( (yyvsp[-5].decl) );
-		}
-#line 7068 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 543:
-#line 2112 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 7074 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 545:
-#line 2117 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[-2].str); }
-#line 7080 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 546:
-#line 2122 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 7086 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 549:
-#line 2129 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 7092 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 550:
-#line 2135 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 7098 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 555:
-#line 2146 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[-1].en); }
-#line 7104 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 556:
-#line 2150 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[0].tok); }
-#line 7110 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 557:
-#line 2151 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[0].decl); }
-#line 7116 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 558:
-#line 2152 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[0].decl); }
-#line 7122 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 559:
-#line 2153 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[0].decl); }
-#line 7128 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 560:
-#line 2188 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7134 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 562:
-#line 2191 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7140 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 563:
-#line 2193 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7146 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 564:
-#line 2198 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
-			(yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
-		}
-#line 7155 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 565:
-#line 2203 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7161 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 566:
-#line 2208 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7167 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 567:
-#line 2210 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7173 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 568:
-#line 2212 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7179 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 569:
-#line 2217 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7185 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 570:
-#line 2219 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7191 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 571:
-#line 2221 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7197 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 572:
-#line 2223 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7203 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 573:
-#line 2228 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7209 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 574:
-#line 2230 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7215 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 575:
-#line 2239 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7221 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 577:
-#line 2242 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7227 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 578:
-#line 2247 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7233 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 579:
-#line 2249 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7239 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 580:
-#line 2251 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7245 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 581:
-#line 2256 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7251 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 582:
-#line 2258 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7257 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 583:
-#line 2260 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7263 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 584:
-#line 2265 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7269 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 585:
-#line 2267 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7275 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 586:
-#line 2269 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7281 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 590:
-#line 2284 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-3].decl)->addIdList( (yyvsp[-1].decl) ); }
-#line 7287 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 591:
-#line 2286 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->addIdList( (yyvsp[-1].decl) ); }
-#line 7293 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 592:
-#line 2288 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7299 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 593:
-#line 2293 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7305 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 594:
-#line 2295 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7311 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 595:
-#line 2297 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7317 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 596:
-#line 2302 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7323 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 597:
-#line 2304 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7329 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 598:
-#line 2306 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7335 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 599:
-#line 2321 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7341 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 601:
-#line 2324 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7347 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 602:
-#line 2326 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7353 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 604:
-#line 2332 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7359 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 605:
-#line 2337 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7365 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 606:
-#line 2339 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7371 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 607:
-#line 2341 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7377 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 608:
-#line 2346 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7383 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 609:
-#line 2348 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7389 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 610:
-#line 2350 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7395 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 611:
-#line 2352 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7401 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 612:
-#line 2357 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7407 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 613:
-#line 2359 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7413 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 614:
-#line 2361 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7419 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 615:
-#line 2371 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7425 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 617:
-#line 2374 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7431 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 618:
-#line 2376 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7437 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 619:
-#line 2381 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7443 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 620:
-#line 2383 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7449 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 621:
-#line 2385 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7455 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 622:
-#line 2390 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7461 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 623:
-#line 2392 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7467 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 624:
-#line 2394 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7473 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 625:
-#line 2396 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7479 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 626:
-#line 2401 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7485 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 627:
-#line 2403 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7491 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 628:
-#line 2405 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7497 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 629:
-#line 2436 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7503 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 631:
-#line 2439 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7509 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 632:
-#line 2441 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7515 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 633:
-#line 2446 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
-			(yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
-		}
-#line 7524 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 634:
-#line 2451 "parser.yy" /* yacc.c:1646  */
-    {
-			typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
-			(yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
-		}
-#line 7533 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 635:
-#line 2459 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7539 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 636:
-#line 2461 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7545 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 637:
-#line 2463 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7551 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 638:
-#line 2468 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7557 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 639:
-#line 2470 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7563 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 640:
-#line 2475 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7569 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 641:
-#line 2477 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7575 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 643:
-#line 2492 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7581 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 644:
-#line 2494 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7587 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 645:
-#line 2499 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
-#line 7593 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 646:
-#line 2501 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
-#line 7599 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 647:
-#line 2503 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7605 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 648:
-#line 2505 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7611 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 649:
-#line 2507 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7617 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 651:
-#line 2513 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7623 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 652:
-#line 2515 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7629 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 653:
-#line 2517 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7635 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 654:
-#line 2522 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[-2].decl), 0 ); }
-#line 7641 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 655:
-#line 2524 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7647 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 656:
-#line 2526 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7653 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 657:
-#line 2532 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
-#line 7659 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 658:
-#line 2534 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[0].decl) ); }
-#line 7665 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 660:
-#line 2540 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), 0, false ); }
-#line 7671 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 661:
-#line 2542 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
-#line 7677 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 662:
-#line 2544 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newArray( (yyvsp[-2].en), 0, false ) ); }
-#line 7683 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 663:
-#line 2546 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
-#line 7689 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 665:
-#line 2561 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7695 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 666:
-#line 2563 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7701 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 667:
-#line 2568 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
-#line 7707 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 668:
-#line 2570 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
-#line 7713 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 669:
-#line 2572 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7719 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 670:
-#line 2574 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7725 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 671:
-#line 2576 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7731 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 673:
-#line 2582 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7737 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 674:
-#line 2584 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7743 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 675:
-#line 2586 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7749 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 676:
-#line 2591 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[-2].decl), 0 ); }
-#line 7755 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 677:
-#line 2593 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7761 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 678:
-#line 2595 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7767 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 680:
-#line 2602 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7773 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 682:
-#line 2613 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
-#line 7779 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 683:
-#line 2616 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
-#line 7785 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 684:
-#line 2618 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[-2].decl), false ); }
-#line 7791 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 685:
-#line 2621 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
-#line 7797 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 686:
-#line 2623 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
-#line 7803 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 687:
-#line 2625 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-4].decl), true ); }
-#line 7809 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 689:
-#line 2639 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7815 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 690:
-#line 2641 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7821 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 691:
-#line 2646 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
-#line 7827 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 692:
-#line 2648 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
-#line 7833 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 693:
-#line 2650 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7839 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 694:
-#line 2652 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7845 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 695:
-#line 2654 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7851 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 697:
-#line 2660 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7857 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 698:
-#line 2662 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7863 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 699:
-#line 2664 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7869 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 700:
-#line 2669 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7875 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 701:
-#line 2671 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7881 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 704:
-#line 2681 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 7887 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 707:
-#line 2691 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7893 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 708:
-#line 2693 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 7899 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 709:
-#line 2695 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7905 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 710:
-#line 2697 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 7911 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 711:
-#line 2699 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7917 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 712:
-#line 2701 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 7923 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 713:
-#line 2708 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 7929 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 714:
-#line 2710 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 7935 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 715:
-#line 2712 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 7941 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 716:
-#line 2714 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
-#line 7947 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 717:
-#line 2716 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 7953 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 718:
-#line 2718 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 7959 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 719:
-#line 2720 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 7965 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 720:
-#line 2722 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 7971 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 721:
-#line 2724 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
-#line 7977 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 722:
-#line 2726 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 7983 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 723:
-#line 2731 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
-#line 7989 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 724:
-#line 2733 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
-#line 7995 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 725:
-#line 2738 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
-#line 8001 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 726:
-#line 2740 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl)->addQualifiers( (yyvsp[-4].decl) ), true ); }
-#line 8007 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 728:
-#line 2767 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 8013 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 732:
-#line 2778 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 8019 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 733:
-#line 2780 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 8025 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 734:
-#line 2782 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 8031 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 735:
-#line 2784 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 8037 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 736:
-#line 2786 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 8043 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 737:
-#line 2788 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 8049 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 738:
-#line 2795 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 8055 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 739:
-#line 2797 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 8061 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 740:
-#line 2799 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 8067 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 741:
-#line 2801 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 8073 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 742:
-#line 2803 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 8079 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 743:
-#line 2805 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 8085 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 744:
-#line 2810 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
-#line 8091 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 745:
-#line 2815 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[-1].decl), 0 ); }
-#line 8097 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 746:
-#line 2817 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[-5].decl), (yyvsp[-2].decl), 0 ); }
-#line 8103 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 747:
-#line 2819 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[-5].decl), (yyvsp[-2].decl), 0 ); }
-#line 8109 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 750:
-#line 2843 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = 0; }
-#line 8115 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-  case 751:
-#line 2845 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 8121 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-
-#line 8125 "Parser/parser.cc" /* yacc.c:1646  */
-      default: break;
-    }
-  /* User semantic actions sometimes alter yychar, and that requires
-     that yytoken be updated with the new translation.  We take the
-     approach of translating immediately before every use of yytoken.
-     One alternative is translating here after every semantic action,
-     but that translation would be missed if the semantic action invokes
-     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
-     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
-     incorrect destructor might then be invoked immediately.  In the
-     case of YYERROR or YYBACKUP, subsequent parser actions might lead
-     to an incorrect destructor call or verbose syntax error message
-     before the lookahead is translated.  */
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
-
-  YYPOPSTACK (yylen);
-  yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
-
-  *++yyvsp = yyval;
-
-  /* Now 'shift' the result of the reduction.  Determine what state
-     that goes to, based on the state we popped back to and the rule
-     number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
-
-  goto yynewstate;
-
-
-/*--------------------------------------.
-| yyerrlab -- here on detecting error.  |
-`--------------------------------------*/
-yyerrlab:
-  /* Make sure we have latest lookahead translation.  See comments at
-     user semantic actions for why this is necessary.  */
-  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-
-  /* If not already recovering from an error, report this error.  */
-  if (!yyerrstatus)
-    {
-      ++yynerrs;
-#if ! YYERROR_VERBOSE
-      yyerror (YY_("syntax error"));
-#else
-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
-                                        yyssp, yytoken)
-      {
-        char const *yymsgp = YY_("syntax error");
-        int yysyntax_error_status;
-        yysyntax_error_status = YYSYNTAX_ERROR;
-        if (yysyntax_error_status == 0)
-          yymsgp = yymsg;
-        else if (yysyntax_error_status == 1)
-          {
-            if (yymsg != yymsgbuf)
-              YYSTACK_FREE (yymsg);
-            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
-            if (!yymsg)
-              {
-                yymsg = yymsgbuf;
-                yymsg_alloc = sizeof yymsgbuf;
-                yysyntax_error_status = 2;
-              }
-            else
-              {
-                yysyntax_error_status = YYSYNTAX_ERROR;
-                yymsgp = yymsg;
-              }
-          }
-        yyerror (yymsgp);
-        if (yysyntax_error_status == 2)
-          goto yyexhaustedlab;
-      }
-# undef YYSYNTAX_ERROR
-#endif
-    }
-
-
-
-  if (yyerrstatus == 3)
-    {
-      /* If just tried and failed to reuse lookahead token after an
-         error, discard it.  */
-
-      if (yychar <= YYEOF)
-        {
-          /* Return failure if at end of input.  */
-          if (yychar == YYEOF)
-            YYABORT;
-        }
-      else
-        {
-          yydestruct ("Error: discarding",
-                      yytoken, &yylval);
-          yychar = YYEMPTY;
-        }
-    }
-
-  /* Else will try to reuse lookahead token after shifting the error
-     token.  */
-  goto yyerrlab1;
-
-
-/*---------------------------------------------------.
-| yyerrorlab -- error raised explicitly by YYERROR.  |
-`---------------------------------------------------*/
-yyerrorlab:
-
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
-
-  /* Do not reclaim the symbols of the rule whose action triggered
-     this YYERROR.  */
-  YYPOPSTACK (yylen);
-  yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
-  yystate = *yyssp;
-  goto yyerrlab1;
-
-
-/*-------------------------------------------------------------.
-| yyerrlab1 -- common code for both syntax error and YYERROR.  |
-`-------------------------------------------------------------*/
-yyerrlab1:
-  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
-
-  for (;;)
-    {
-      yyn = yypact[yystate];
-      if (!yypact_value_is_default (yyn))
-        {
-          yyn += YYTERROR;
-          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-            {
-              yyn = yytable[yyn];
-              if (0 < yyn)
-                break;
-            }
-        }
-
-      /* Pop the current state because it cannot handle the error token.  */
-      if (yyssp == yyss)
-        YYABORT;
-
-
-      yydestruct ("Error: popping",
-                  yystos[yystate], yyvsp);
-      YYPOPSTACK (1);
-      yystate = *yyssp;
-      YY_STACK_PRINT (yyss, yyssp);
-    }
-
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  *++yyvsp = yylval;
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
-
-
-  /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-
-  yystate = yyn;
-  goto yynewstate;
-
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here.  |
-`-------------------------------------*/
-yyacceptlab:
-  yyresult = 0;
-  goto yyreturn;
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here.  |
-`-----------------------------------*/
-yyabortlab:
-  yyresult = 1;
-  goto yyreturn;
-
-#if !defined yyoverflow || YYERROR_VERBOSE
-/*-------------------------------------------------.
-| yyexhaustedlab -- memory exhaustion comes here.  |
-`-------------------------------------------------*/
-yyexhaustedlab:
-  yyerror (YY_("memory exhausted"));
-  yyresult = 2;
-  /* Fall through.  */
-#endif
-
-yyreturn:
-  if (yychar != YYEMPTY)
-    {
-      /* Make sure we have latest lookahead translation.  See comments at
-         user semantic actions for why this is necessary.  */
-      yytoken = YYTRANSLATE (yychar);
-      yydestruct ("Cleanup: discarding lookahead",
-                  yytoken, &yylval);
-    }
-  /* Do not reclaim the symbols of the rule whose action triggered
-     this YYABORT or YYACCEPT.  */
-  YYPOPSTACK (yylen);
-  YY_STACK_PRINT (yyss, yyssp);
-  while (yyssp != yyss)
-    {
-      yydestruct ("Cleanup: popping",
-                  yystos[*yyssp], yyvsp);
-      YYPOPSTACK (1);
-    }
-#ifndef yyoverflow
-  if (yyss != yyssa)
-    YYSTACK_FREE (yyss);
-#endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  return yyresult;
-}
-#line 2848 "parser.yy" /* yacc.c:1906  */
-
-// ----end of grammar----
-
-extern char *yytext;
-
-void yyerror( const char * ) {
-	std::cout << "Error ";
-	if ( yyfilename ) {
-		std::cout << "in file " << yyfilename << " ";
-	} // if
-	std::cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << std::endl;
-}
-
-// Local Variables: //
-// mode: c++ //
-// tab-width: 4 //
-// compile-command: "make install" //
-// End: //
Index: src/Parser/parser.h
===================================================================
--- src/Parser/parser.h	(revision 4ed70597f55cf4d141df0e03cc994430a3b4182c)
+++ src/Parser/parser.h	(revision 101e0bd58a8e0c34b449fd0a68b51abc97b85acc)
@@ -1,18 +1,18 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 2.5.  */
 
 /* Bison interface for Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
-
+   
+      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+   
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
@@ -27,130 +27,122 @@
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-#ifndef YY_YY_PARSER_PARSER_H_INCLUDED
-# define YY_YY_PARSER_PARSER_H_INCLUDED
-/* Debug traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 1
-#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Token type.  */
+
+/* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-  enum yytokentype
-  {
-    TYPEDEF = 258,
-    AUTO = 259,
-    EXTERN = 260,
-    REGISTER = 261,
-    STATIC = 262,
-    INLINE = 263,
-    FORTRAN = 264,
-    CONST = 265,
-    VOLATILE = 266,
-    RESTRICT = 267,
-    FORALL = 268,
-    LVALUE = 269,
-    VOID = 270,
-    CHAR = 271,
-    SHORT = 272,
-    INT = 273,
-    LONG = 274,
-    FLOAT = 275,
-    DOUBLE = 276,
-    SIGNED = 277,
-    UNSIGNED = 278,
-    VALIST = 279,
-    BOOL = 280,
-    COMPLEX = 281,
-    IMAGINARY = 282,
-    TYPEOF = 283,
-    LABEL = 284,
-    ENUM = 285,
-    STRUCT = 286,
-    UNION = 287,
-    OTYPE = 288,
-    FTYPE = 289,
-    DTYPE = 290,
-    TRAIT = 291,
-    SIZEOF = 292,
-    OFFSETOF = 293,
-    ATTRIBUTE = 294,
-    EXTENSION = 295,
-    IF = 296,
-    ELSE = 297,
-    SWITCH = 298,
-    CASE = 299,
-    DEFAULT = 300,
-    DO = 301,
-    WHILE = 302,
-    FOR = 303,
-    BREAK = 304,
-    CONTINUE = 305,
-    GOTO = 306,
-    RETURN = 307,
-    CHOOSE = 308,
-    DISABLE = 309,
-    ENABLE = 310,
-    FALLTHRU = 311,
-    TRY = 312,
-    CATCH = 313,
-    CATCHRESUME = 314,
-    FINALLY = 315,
-    THROW = 316,
-    THROWRESUME = 317,
-    AT = 318,
-    ASM = 319,
-    ALIGNAS = 320,
-    ALIGNOF = 321,
-    ATOMIC = 322,
-    GENERIC = 323,
-    NORETURN = 324,
-    STATICASSERT = 325,
-    THREADLOCAL = 326,
-    IDENTIFIER = 327,
-    QUOTED_IDENTIFIER = 328,
-    TYPEDEFname = 329,
-    TYPEGENname = 330,
-    ATTR_IDENTIFIER = 331,
-    ATTR_TYPEDEFname = 332,
-    ATTR_TYPEGENname = 333,
-    INTEGERconstant = 334,
-    FLOATINGconstant = 335,
-    CHARACTERconstant = 336,
-    STRINGliteral = 337,
-    ZERO = 338,
-    ONE = 339,
-    ARROW = 340,
-    ICR = 341,
-    DECR = 342,
-    LS = 343,
-    RS = 344,
-    LE = 345,
-    GE = 346,
-    EQ = 347,
-    NE = 348,
-    ANDAND = 349,
-    OROR = 350,
-    ELLIPSIS = 351,
-    MULTassign = 352,
-    DIVassign = 353,
-    MODassign = 354,
-    PLUSassign = 355,
-    MINUSassign = 356,
-    LSassign = 357,
-    RSassign = 358,
-    ANDassign = 359,
-    ERassign = 360,
-    ORassign = 361,
-    ATassign = 362,
-    THEN = 363
-  };
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     TYPEDEF = 258,
+     AUTO = 259,
+     EXTERN = 260,
+     REGISTER = 261,
+     STATIC = 262,
+     INLINE = 263,
+     FORTRAN = 264,
+     CONST = 265,
+     VOLATILE = 266,
+     RESTRICT = 267,
+     FORALL = 268,
+     LVALUE = 269,
+     VOID = 270,
+     CHAR = 271,
+     SHORT = 272,
+     INT = 273,
+     LONG = 274,
+     FLOAT = 275,
+     DOUBLE = 276,
+     SIGNED = 277,
+     UNSIGNED = 278,
+     VALIST = 279,
+     BOOL = 280,
+     COMPLEX = 281,
+     IMAGINARY = 282,
+     TYPEOF = 283,
+     LABEL = 284,
+     ENUM = 285,
+     STRUCT = 286,
+     UNION = 287,
+     OTYPE = 288,
+     FTYPE = 289,
+     DTYPE = 290,
+     TRAIT = 291,
+     SIZEOF = 292,
+     OFFSETOF = 293,
+     ATTRIBUTE = 294,
+     EXTENSION = 295,
+     IF = 296,
+     ELSE = 297,
+     SWITCH = 298,
+     CASE = 299,
+     DEFAULT = 300,
+     DO = 301,
+     WHILE = 302,
+     FOR = 303,
+     BREAK = 304,
+     CONTINUE = 305,
+     GOTO = 306,
+     RETURN = 307,
+     CHOOSE = 308,
+     DISABLE = 309,
+     ENABLE = 310,
+     FALLTHRU = 311,
+     TRY = 312,
+     CATCH = 313,
+     CATCHRESUME = 314,
+     FINALLY = 315,
+     THROW = 316,
+     THROWRESUME = 317,
+     AT = 318,
+     ASM = 319,
+     ALIGNAS = 320,
+     ALIGNOF = 321,
+     ATOMIC = 322,
+     GENERIC = 323,
+     NORETURN = 324,
+     STATICASSERT = 325,
+     THREADLOCAL = 326,
+     IDENTIFIER = 327,
+     QUOTED_IDENTIFIER = 328,
+     TYPEDEFname = 329,
+     TYPEGENname = 330,
+     ATTR_IDENTIFIER = 331,
+     ATTR_TYPEDEFname = 332,
+     ATTR_TYPEGENname = 333,
+     INTEGERconstant = 334,
+     FLOATINGconstant = 335,
+     CHARACTERconstant = 336,
+     STRINGliteral = 337,
+     ZERO = 338,
+     ONE = 339,
+     ARROW = 340,
+     ICR = 341,
+     DECR = 342,
+     LS = 343,
+     RS = 344,
+     LE = 345,
+     GE = 346,
+     EQ = 347,
+     NE = 348,
+     ANDAND = 349,
+     OROR = 350,
+     ELLIPSIS = 351,
+     MULTassign = 352,
+     DIVassign = 353,
+     MODassign = 354,
+     PLUSassign = 355,
+     MINUSassign = 356,
+     LSassign = 357,
+     RSassign = 358,
+     ANDassign = 359,
+     ERassign = 360,
+     ORassign = 361,
+     ATassign = 362,
+     THEN = 363
+   };
 #endif
 /* Tokens.  */
@@ -262,10 +254,13 @@
 #define THEN 363
 
-/* Value type.  */
+
+
+
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
-union YYSTYPE
+typedef union YYSTYPE
 {
-#line 115 "parser.yy" /* yacc.c:1909  */
+
+/* Line 2068 of yacc.c  */
+#line 115 "parser.yy"
 
 	Token tok;
@@ -284,14 +279,15 @@
 	bool flag;
 
-#line 287 "Parser/parser.h" /* yacc.c:1909  */
-};
+
+
+/* Line 2068 of yacc.c  */
+#line 285 "Parser/parser.h"
+} YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
-
 extern YYSTYPE yylval;
 
-int yyparse (void);
-
-#endif /* !YY_YY_PARSER_PARSER_H_INCLUDED  */
+
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 4ed70597f55cf4d141df0e03cc994430a3b4182c)
+++ src/Parser/parser.yy	(revision 101e0bd58a8e0c34b449fd0a68b51abc97b85acc)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Aug 26 16:45:44 2016
-// Update Count     : 1964
+// Last Modified On : Mon Sep 12 17:29:45 2016
+// Update Count     : 1969
 //
 
@@ -1363,11 +1363,11 @@
 		{ $$ = DeclarationNode::newBasicType( DeclarationNode::Int ); }
 	| LONG
-		{ $$ = DeclarationNode::newModifier( DeclarationNode::Long ); }
+		{ $$ = DeclarationNode::newLength( DeclarationNode::Long ); }
 	| SHORT
-		{ $$ = DeclarationNode::newModifier( DeclarationNode::Short ); }
+		{ $$ = DeclarationNode::newLength( DeclarationNode::Short ); }
 	| SIGNED
-		{ $$ = DeclarationNode::newModifier( DeclarationNode::Signed ); }
+		{ $$ = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
 	| UNSIGNED
-		{ $$ = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
+		{ $$ = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
 	| VOID
 		{ $$ = DeclarationNode::newBasicType( DeclarationNode::Void ); }
@@ -1375,7 +1375,7 @@
 		{ $$ = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
 	| COMPLEX											// C99
-		{ $$ = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
+		{ $$ = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
 	| IMAGINARY											// C99
-		{ $$ = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
+		{ $$ = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
 	| VALIST											// GCC, __builtin_va_list
 		{ $$ = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
@@ -1849,5 +1849,5 @@
 type_class:												// CFA
 	OTYPE
-		{ $$ = DeclarationNode::Type; }
+		{ $$ = DeclarationNode::Otype; }
 	| DTYPE
 		{ $$ = DeclarationNode::Ftype; }
