Change to use pilex and piyacc with (?E{...}...) style AST generation rather than...
authorNick Downing <nick@ndcode.org>
Thu, 10 Jan 2019 22:11:31 +0000 (09:11 +1100)
committerNick Downing <nick@ndcode.org>
Thu, 10 Jan 2019 22:13:39 +0000 (09:13 +1100)
31 files changed:
.gitignore
Makefile [new file with mode: 0644]
ansi_c.l [new file with mode: 0644]
ansi_c.py [new file with mode: 0755]
ansi_c.y [new file with mode: 0644]
ansi_c_lex.l [deleted file]
ansi_c_lex.xml [deleted file]
ansi_c_tokens.py [deleted file]
ansi_c_yacc.xml [deleted file]
ansi_c_yacc.y [deleted file]
ansi_c_yylex.py [deleted file]
ansi_c_yylex.sh [deleted file]
ansi_c_yyparse.py [deleted file]
ansi_c_yyparse.sh [deleted file]
ast.py
ast.sh
bisect_set.py [deleted file]
dfa.py [deleted file]
element.py
generate_ast.py [moved from generate.py with 94% similarity]
grammar.py [deleted file]
grammar.sh [deleted file]
lex.yy.c [deleted file]
lr1.py [deleted file]
lr1dfa.py [deleted file]
minilex.py [deleted file]
miniyacc.py [deleted file]
nfa.py [deleted file]
regex.py [deleted file]
work.py [deleted file]
wrap_repr.py [deleted file]

index d9555a6..2d3c882 100644 (file)
@@ -1,9 +1,14 @@
 __pycache__
 a.c
 a.i
+a.xml
+ansi_c.l.xml
+ansi_c.y.xml
+lex_yy.py
 tests/*.l.xml
 tests/*.l.new.xml
 tests/*.l.new
 tests/*.y.xml
 tests/*.y.new.xml
 tests/*.y.new
+y_tab.py
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..5316128
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,12 @@
+all: lex_yy.py y_tab.py
+
+lex_yy.py: ansi_c.l
+       ../bootstrap_flex.git/src/flex -o /dev/null $< 2>$<.xml
+       ../pilex.git/pilex.py --element --python $<.xml
+
+y_tab.py: ansi_c.y
+       ../bootstrap_bison.git/src/bison -o /dev/null $< 2>$<.xml
+       ../piyacc.git/piyacc.py --element --python $<.xml
+
+clean:
+       rm -f lex_yy.py y_tab.py *.xml
diff --git a/ansi_c.l b/ansi_c.l
new file mode 100644 (file)
index 0000000..2b121ac
--- /dev/null
+++ b/ansi_c.l
@@ -0,0 +1,185 @@
+%e  1019
+%p  2807
+%n  371
+%k  284
+%a  1213
+%o  1117
+
+O   [0-7]
+D   [0-9]
+NZ  [1-9]
+L   [a-zA-Z_]
+A   [a-zA-Z_0-9]
+H   [a-fA-F0-9]
+HP  (0[xX])
+E   ([Ee][+-]?{D}+)
+P   ([Pp][+-]?{D}+)
+FS  (f|F|l|L)
+IS  (((u|U)(l|L|ll|LL)?)|((l|L|ll|LL)(u|U)?))
+CP  (u|U|L)
+SP  (u8|u|U|L)
+ES  (\\(['"\?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F0-9]+))
+WS  [ \t\v\n\f]
+
+%{
+import ast
+import y_tab
+%}
+
+%%
+
+"/*" {
+  if not skip_comment():
+    return -1
+}
+"//".*                                 # consume //-comment
+
+"auto"                                 return y_tab.AUTO
+"break"                                        return y_tab.BREAK
+"case"                                 return y_tab.CASE
+"char"                                 return y_tab.CHAR
+"const"                                        return y_tab.CONST
+
+"default"                              return y_tab.DEFAULT
+"do"                                   return y_tab.DO
+"double"                               return y_tab.DOUBLE
+"else"                                 return y_tab.ELSE
+"enum"                                 return y_tab.ENUM
+"extern"                               return y_tab.EXTERN
+"float"                                        return y_tab.FLOAT
+"for"                                  return y_tab.FOR
+"goto"                                 return y_tab.GOTO
+"if"                                   return y_tab.IF
+"inline"                               return y_tab.INLINE
+"int"                                  return y_tab.INT
+"long"                                 return y_tab.LONG
+"register"                             return y_tab.REGISTER
+"restrict"                             return y_tab.RESTRICT
+"return"                               return y_tab.RETURN
+"short"                                        return y_tab.SHORT
+"signed"                               return y_tab.SIGNED
+"sizeof"                               return y_tab.SIZEOF
+"static"                               return y_tab.STATIC
+"struct"                               return y_tab.STRUCT
+"switch"                               return y_tab.SWITCH
+"typedef"                              return y_tab.TYPEDEF
+"union"                                        return y_tab.UNION
+"unsigned"                             return y_tab.UNSIGNED
+"void"                                 return y_tab.VOID
+"volatile"                             return y_tab.VOLATILE
+"while"                                        return y_tab.WHILE
+"_Alignas"                             return y_tab.ALIGNAS
+"_Alignof"                             return y_tab.ALIGNOF
+"_Atomic"                              return y_tab.ATOMIC
+"_Bool"                                        return y_tab.BOOL
+"_Complex"                             return y_tab.COMPLEX
+"_Generic"                             return y_tab.GENERIC
+"_Imaginary"                           return y_tab.IMAGINARY
+"_Noreturn"                            return y_tab.NORETURN
+"_Static_assert"                       return y_tab.STATIC_ASSERT
+"_Thread_local"                                return y_tab.THREAD_LOCAL
+"__func__"                             return y_tab.FUNC_NAME
+
+"bool"|"scanflags_t"|"size_t" {
+  # THIS IS A HACK FOR NOW
+  return y_tab.TYPEDEF_NAME
+}
+
+(?E{ast.AST.Identifier}{L}{A}*) {
+  return y_tab.IDENTIFIER
+}
+
+(?E{ast.AST.ExpressionIntLiteral}{HP}{H}+{IS}?) |
+(?E{ast.AST.ExpressionIntLiteral}{NZ}{D}*{IS}?) |
+(?E{ast.AST.ExpressionIntLiteral}"0"{O}*{IS}?) |
+(?E{ast.AST.ExpressionCharConstant}{CP}?"'"([^'\\\n]|{ES})+"'") {
+  return y_tab.I_CONSTANT
+}
+
+(?E{ast.AST.ExpressionFloatLiteral}{D}+{E}{FS}?) |
+(?E{ast.AST.ExpressionFloatLiteral}{D}*"."{D}+{E}?{FS}?) |
+(?E{ast.AST.ExpressionFloatLiteral}{D}+"."{E}?{FS}?) |
+(?E{ast.AST.ExpressionFloatLiteral}{HP}{H}+{P}{FS}?) |
+(?E{ast.AST.ExpressionFloatLiteral}{HP}{H}*"."{H}+{P}{FS}?) |
+(?E{ast.AST.ExpressionFloatLiteral}{HP}{H}+"."{P}{FS}?) {
+  return y_tab.F_CONSTANT
+}
+
+(?E{ast.AST.ExpressionStringLiteral}({SP}?\"(?E{ast.AST.Text}([^"\\\n]|{ES})*)\"{WS}*)+) {
+  return y_tab.STRING_LITERAL
+}
+
+"..."                                  return y_tab.ELLIPSIS
+">>="                                  return y_tab.RIGHT_ASSIGN
+"<<="                                  return y_tab.LEFT_ASSIGN
+"+="                                   return y_tab.ADD_ASSIGN
+"-="                                   return y_tab.SUB_ASSIGN
+"*="                                   return y_tab.MUL_ASSIGN
+"/="                                   return y_tab.DIV_ASSIGN
+"%="                                   return y_tab.MOD_ASSIGN
+"&="                                   return y_tab.AND_ASSIGN
+"^="                                   return y_tab.XOR_ASSIGN
+"|="                                   return y_tab.OR_ASSIGN
+">>"                                   return y_tab.RIGHT_OP
+"<<"                                   return y_tab.LEFT_OP
+"++"                                   return y_tab.INC_OP
+"--"                                   return y_tab.DEC_OP
+"->"                                   return y_tab.PTR_OP
+"&&"                                   return y_tab.AND_OP
+"||"                                   return y_tab.OR_OP
+"<="                                   return y_tab.LE_OP
+">="                                   return y_tab.GE_OP
+"=="                                   return y_tab.EQ_OP
+"!="                                   return y_tab.NE_OP
+";"                                    return ord(';')
+("{"|"<%")                             return ord('{')
+("}"|"%>")                             return ord('}')
+","                                    return ord(',')
+":"                                    return ord(':')
+"="                                    return ord('=')
+"("                                    return ord('(')
+")"                                    return ord(')')
+("["|"<:")                             return ord('[')
+("]"|":>")                             return ord(']')
+"."                                    return ord('.')
+"&"                                    return ord('&')
+"!"                                    return ord('!')
+"~"                                    return ord('~')
+"-"                                    return ord('-')
+"+"                                    return ord('+')
+"*"                                    return ord('*')
+"/"                                    return ord('/')
+"%"                                    return ord('%')
+"<"                                    return ord('<')
+">"                                    return ord('>')
+"^"                                    return ord('^')
+"|"                                    return ord('|')
+"?"                                    return ord('?')
+
+{WS}+                                  # whitespace separates tokens
+.                                      # discard bad characters
+<<EOF>>                                        return 0
+
+%%
+
+def yywrap():  # called at end of input
+  return 1     # terminate now */
+
+def yyerror(s):
+  sys.stdout.flush()
+  sys.stderr.write('*** {0:s}\n'.format(s))
+
+def skip_comment():
+  c = input()
+  while len(c):
+    if c == '*':
+      c = input()
+      while c == '*':
+        c = input()
+      if c == '/':
+        return True;
+      if len(c) == 0:
+        break
+    c = input()
+  yyerror('unterminated comment')
+  return False
diff --git a/ansi_c.py b/ansi_c.py
new file mode 100755 (executable)
index 0000000..b527a8c
--- /dev/null
+++ b/ansi_c.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2018 Nick Downing <nick@ndcode.org>
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# 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; version 2.
+#
+# 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, write to the Free Software Foundation, Inc., 51
+# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+import ast
+import element
+import sys
+import xml.etree.ElementTree
+import y_tab
+
+_ast = y_tab.yyparse(ast.AST)
+element.serialize(_ast, 'a.xml', 'utf-8')
+_ast = element.deserialize('a.xml', ast.factory, 'utf-8')
+xml.etree.ElementTree.dump(_ast)
diff --git a/ansi_c.y b/ansi_c.y
new file mode 100644 (file)
index 0000000..ecec2ad
--- /dev/null
+++ b/ansi_c.y
@@ -0,0 +1,571 @@
+%token IDENTIFIER I_CONSTANT F_CONSTANT STRING_LITERAL FUNC_NAME SIZEOF
+%token PTR_OP INC_OP DEC_OP LEFT_OP RIGHT_OP LE_OP GE_OP EQ_OP NE_OP
+%token AND_OP OR_OP MUL_ASSIGN DIV_ASSIGN MOD_ASSIGN ADD_ASSIGN
+%token SUB_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN
+%token XOR_ASSIGN OR_ASSIGN
+%token TYPEDEF_NAME ENUMERATION_CONSTANT
+
+%token TYPEDEF EXTERN STATIC AUTO REGISTER INLINE
+%token CONST RESTRICT VOLATILE
+%token BOOL CHAR SHORT INT LONG SIGNED UNSIGNED FLOAT DOUBLE VOID
+%token COMPLEX IMAGINARY 
+%token STRUCT UNION ENUM ELLIPSIS
+
+%token CASE DEFAULT IF ELSE SWITCH WHILE DO FOR GOTO CONTINUE BREAK RETURN
+
+%token ALIGNAS ALIGNOF ATOMIC GENERIC NORETURN STATIC_ASSERT THREAD_LOCAL
+
+%start block_item_list_opt
+
+%expect 2
+
+%{
+import ast
+%}
+
+%%
+
+primary_expression
+       : (?E{ast.AST.ExpressionIdentifier}IDENTIFIER)
+       | constant
+       | string
+       | '(' expression ')'
+       | generic_selection
+       ;
+
+constant
+       : I_CONSTANT
+       | F_CONSTANT
+       | ENUMERATION_CONSTANT
+       ;
+
+enumeration_constant
+       : IDENTIFIER
+       ;
+
+string
+       : STRING_LITERAL
+       | (?E{ast.AST.ExpressionFunctionName}FUNC_NAME)
+       ;
+
+generic_selection
+       : (?E{ast.AST.GenericSelection}GENERIC '(' assignment_expression ',' (?E{ast.AST.GenericAssociationList}generic_association_list) ')')
+       ;
+
+generic_association_list
+       : generic_association
+       | generic_association_list ',' generic_association
+       ;
+
+generic_association
+       : (?E{ast.AST.GenericAssociation}type_name_or_default ':' assignment_expression)
+       ;
+
+type_name_or_default
+       : type_name
+       | (?E{ast.AST.DefaultTypeName}DEFAULT)
+       ;
+
+postfix_expression
+       : primary_expression
+       | (?E{ast.AST.ExpressionIndex}postfix_expression '[' expression ']')
+       | (?E{ast.AST.ExpressionCall}postfix_expression '(' (?E{ast.AST.ArgumentExpressionList}argument_expression_list_opt) ')')
+       | (?E{ast.AST.ExpressionField}postfix_expression '.' IDENTIFIER)
+       | (?E{ast.AST.ExpressionFieldDereference}postfix_expression PTR_OP IDENTIFIER)
+       | (?E{ast.AST.ExpressionPostIncrement}postfix_expression INC_OP)
+       | (?E{ast.AST.ExpressionPostDecrement}postfix_expression DEC_OP)
+       | (?E{ast.AST.ExpressionArray}'(' type_name ')' '{' (?E{ast.AST.DesignatorInitializerList}designator_initializer_list_comma_opt) '}')
+       ;
+
+argument_expression_list_opt
+       :
+       | argument_expression_list
+       ;
+
+argument_expression_list
+       : assignment_expression
+       | argument_expression_list ',' assignment_expression
+       ;
+
+unary_expression
+       : postfix_expression
+       | (?E{ast.AST.ExpressionPreIncrement}INC_OP unary_expression)
+       | (?E{ast.AST.ExpressionPreDecrement}DEC_OP unary_expression)
+       | (?E{ast.AST.ExpressionAddressOf}'&' cast_expression)
+       | (?E{ast.AST.ExpressionDereference}'*' cast_expression)
+       | (?E{ast.AST.ExpressionPlus}'+' cast_expression)
+       | (?E{ast.AST.ExpressionMinus}'-' cast_expression)
+       | (?E{ast.AST.ExpressionBitwiseNot}'~' cast_expression)
+       | (?E{ast.AST.ExpressionLogicalNot}'!' cast_expression)
+       | (?E{ast.AST.ExpressionSizeOfExpression}SIZEOF unary_expression)
+       | (?E{ast.AST.ExpressionSizeOfType}SIZEOF '(' type_name ')')
+       | (?E{ast.AST.ExpressionAlignOfType}ALIGNOF '(' type_name ')')
+       ;
+
+cast_expression
+       : unary_expression
+       | (?E{ast.AST.ExpressionCast}'(' type_name ')' cast_expression)
+       ;
+
+multiplicative_expression
+       : cast_expression
+       | (?E{ast.AST.ExpressionMultiply}multiplicative_expression '*' cast_expression)
+       | (?E{ast.AST.ExpressionDivide}multiplicative_expression '/' cast_expression)
+       | (?E{ast.AST.ExpressionModulo}multiplicative_expression '%' cast_expression)
+       ;
+
+additive_expression
+       : multiplicative_expression
+       | (?E{ast.AST.ExpressionAdd}additive_expression '+' multiplicative_expression)
+       | (?E{ast.AST.ExpressionSubtract}additive_expression '-' multiplicative_expression)
+       ;
+
+shift_expression
+       : additive_expression
+       | (?E{ast.AST.ExpressionShiftLeft}shift_expression LEFT_OP additive_expression)
+       | (?E{ast.AST.ExpressionShiftRight}shift_expression RIGHT_OP additive_expression)
+       ;
+
+relational_expression
+       : shift_expression
+       | (?E{ast.AST.ExpressionLessThan}relational_expression '<' shift_expression)
+       | (?E{ast.AST.ExpressionGreaterThan}relational_expression '>' shift_expression)
+       | (?E{ast.AST.ExpressionLessThanOrEqual}relational_expression LE_OP shift_expression)
+       | (?E{ast.AST.ExpressionGreaterThanOrEqual}relational_expression GE_OP shift_expression)
+       ;
+
+equality_expression
+       : relational_expression
+       | (?E{ast.AST.ExpressionEqual}equality_expression EQ_OP relational_expression)
+       | (?E{ast.AST.ExpressionNotEqual}equality_expression NE_OP relational_expression)
+       ;
+
+and_expression
+       : equality_expression
+       | (?E{ast.AST.ExpressionBitwiseAnd}and_expression '&' equality_expression)
+       ;
+
+exclusive_or_expression
+       : and_expression
+       | (?E{ast.AST.ExpressionExclusiveOr}exclusive_or_expression '^' and_expression)
+       ;
+
+inclusive_or_expression
+       : exclusive_or_expression
+       | (?E{ast.AST.ExpressionBitwiseOr}inclusive_or_expression '|' exclusive_or_expression)
+       ;
+
+logical_and_expression
+       : inclusive_or_expression
+       | (?E{ast.AST.ExpressionLogicalAnd}logical_and_expression AND_OP inclusive_or_expression)
+       ;
+
+logical_or_expression
+       : logical_and_expression
+       | (?E{ast.AST.ExpressionLogicalOr}logical_or_expression OR_OP logical_and_expression)
+       ;
+
+conditional_expression
+       : logical_or_expression
+       | (?E{ast.AST.ExpressionConditional}logical_or_expression '?' expression ':' conditional_expression)
+       ;
+
+assignment_expression_or_asterisk_opt
+       : (?E{ast.AST.ExpressionEmpty})
+       | (?E{ast.AST.ExpressionAsterisk}'*')
+       | assignment_expression
+       ;
+
+assignment_expression
+       : conditional_expression
+       | (?E{ast.AST.ExpressionAssignment}unary_expression '=' assignment_expression)
+       | (?E{ast.AST.ExpressionMultiplyAssignment}unary_expression MUL_ASSIGN assignment_expression)
+       | (?E{ast.AST.ExpressionDivideAssignment}unary_expression DIV_ASSIGN assignment_expression)
+       | (?E{ast.AST.ExpressionModuloAssignment}unary_expression MOD_ASSIGN assignment_expression)
+       | (?E{ast.AST.ExpressionAddAssignment}unary_expression ADD_ASSIGN assignment_expression)
+       | (?E{ast.AST.ExpressionSubtractAssignment}unary_expression SUB_ASSIGN assignment_expression)
+       | (?E{ast.AST.ExpressionLeftShiftAssignment}unary_expression LEFT_ASSIGN assignment_expression)
+       | (?E{ast.AST.ExpressionRightShiftAssignment}unary_expression RIGHT_ASSIGN assignment_expression)
+       | (?E{ast.AST.ExpressionBitwiseAndAssignment}unary_expression AND_ASSIGN assignment_expression)
+       | (?E{ast.AST.ExpressionExclusiveOrAssignment}unary_expression XOR_ASSIGN assignment_expression)
+       | (?E{ast.AST.ExpressionBitwiseOrAssignment}unary_expression OR_ASSIGN assignment_expression)
+       ;
+
+expression_opt
+       : (?E{ast.AST.ExpressionEmpty})
+       | expression
+       ;
+
+expression
+       : assignment_expression
+       | (?E{ast.AST.ExpressionComma}expression ',' assignment_expression)
+       ;
+
+equals_constant_expression_opt
+       : (?E{ast.AST.ExpressionEmpty})
+       | '=' constant_expression
+       ;
+
+constant_expression
+       : conditional_expression
+       ;
+
+declaration
+       : (?E{ast.AST.Declaration}(?E{ast.AST.DeclarationSpecifierList}declaration_specifier_list) (?E{ast.AST.InitDeclaratorList}init_declarator_list_opt) ';')
+       | static_assert_declaration
+       ;
+
+declaration_specifier_list
+       : declaration_specifier
+       | declaration_specifier_list declaration_specifier
+       ;
+
+declaration_specifier
+       : storage_class_specifier
+       | type_specifier
+       | type_qualifier
+       | function_specifier
+       | alignment_specifier
+       ;
+
+init_declarator_list_opt
+       :
+       | init_declarator_list
+       ;
+
+init_declarator_list
+       : init_declarator
+       | init_declarator_list ',' init_declarator
+       ;
+
+init_declarator
+       : (?E{ast.AST.InitDeclarator}declarator equals_initializer_opt)
+       ;
+
+storage_class_specifier
+       : (?E{ast.AST.StorageClassSpecifier, n = 0}TYPEDEF)
+       | (?E{ast.AST.StorageClassSpecifier, n = 1}EXTERN)
+       | (?E{ast.AST.StorageClassSpecifier, n = 2}STATIC)
+       | (?E{ast.AST.StorageClassSpecifier, n = 3}THREAD_LOCAL)
+       | (?E{ast.AST.StorageClassSpecifier, n = 4}AUTO)
+       | (?E{ast.AST.StorageClassSpecifier, n = 5}REGISTER)
+       ;
+
+type_specifier
+       : (?E{ast.AST.TypeSpecifier, n = 0}VOID)
+       | (?E{ast.AST.TypeSpecifier, n = 1}CHAR)
+       | (?E{ast.AST.TypeSpecifier, n = 2}SHORT)
+       | (?E{ast.AST.TypeSpecifier, n = 3}INT)
+       | (?E{ast.AST.TypeSpecifier, n = 4}LONG)
+       | (?E{ast.AST.TypeSpecifier, n = 5}FLOAT)
+       | (?E{ast.AST.TypeSpecifier, n = 6}DOUBLE)
+       | (?E{ast.AST.TypeSpecifier, n = 7}SIGNED)
+       | (?E{ast.AST.TypeSpecifier, n = 8}UNSIGNED)
+       | (?E{ast.AST.TypeSpecifier, n = 9}BOOL)
+       | (?E{ast.AST.TypeSpecifier, n = 10}COMPLEX)
+       | (?E{ast.AST.TypeSpecifier, n = 11}IMAGINARY)
+       | atomic_type_specifier
+       | struct_specifier
+       | union_specifier
+       | enum_specifier
+       | TYPEDEF_NAME
+       ;
+
+struct_specifier
+       : (?E{ast.AST.StructSpecifier}STRUCT identifier_opt '{' (?E{ast.AST.StructDeclarationList}struct_declaration_list_opt) '}')
+       | (?E{ast.AST.StructSpecifier}STRUCT IDENTIFIER)
+       ;
+
+union_specifier
+       : (?E{ast.AST.UnionSpecifier}UNION identifier_opt '{' (?E{ast.AST.StructDeclarationList}struct_declaration_list_opt) '}')
+       | (?E{ast.AST.UnionSpecifier}UNION IDENTIFIER)
+       ;
+
+struct_declaration_list_opt
+       :
+       | struct_declaration_list
+       ;
+
+struct_declaration_list
+       : struct_declaration
+       | struct_declaration_list struct_declaration
+       ;
+
+struct_declaration
+       : (?E{ast.AST.StructDeclaration}(?E{ast.AST.SpecifierQualifierList}specifier_qualifier_list) (?E{ast.AST.StructDeclaratorList}struct_declarator_list_opt) ';')
+       | static_assert_declaration
+       ;
+
+specifier_qualifier_list
+       : specifier_qualifier
+       | specifier_qualifier_list specifier_qualifier
+       ;
+
+specifier_qualifier
+       : type_specifier
+       | type_qualifier
+       ;
+
+struct_declarator_list_opt
+       :
+       | struct_declarator_list
+       ;
+
+struct_declarator_list
+       : struct_declarator
+       | struct_declarator_list ',' struct_declarator
+       ;
+
+struct_declarator
+       : (?E{ast.AST.StructDeclarator}declarator_opt ':' constant_expression)
+       | declarator
+       ;
+
+enum_specifier
+       : (?E{ast.AST.EnumSpecifier}ENUM identifier_opt '{' (?E{ast.AST.EnumeratorList}enumerator_list_comma_opt) '}')
+       | (?E{ast.AST.EnumSpecifier}ENUM IDENTIFIER)
+       ;
+
+enumerator_list_comma_opt
+       :
+       | enumerator_list
+       | enumerator_list ','
+       ;
+
+enumerator_list
+       : enumerator
+       | enumerator_list ',' enumerator
+       ;
+
+enumerator
+       : (?E{ast.AST.Enumerator}enumeration_constant equals_constant_expression_opt)
+       ;
+
+atomic_type_specifier
+       : ATOMIC '(' type_name ')'
+       ;
+
+type_qualifier_or_static_list_opt
+       :
+       | type_qualifier_or_static_list
+       ;
+
+type_qualifier_or_static_list
+       : type_qualifier_or_static
+       | type_qualifier_or_static_list type_qualifier_or_static
+       ;
+
+type_qualifier_or_static
+       : type_qualifier
+       | (?E{ast.AST.StorageClassSpecifier, n = 2}STATIC)
+       ;
+
+type_qualifier
+       : (?E{ast.AST.TypeQualifier, n = 0}CONST)
+       | (?E{ast.AST.TypeQualifier, n = 1}RESTRICT)
+       | (?E{ast.AST.TypeQualifier, n = 2}VOLATILE)
+       | (?E{ast.AST.TypeQualifier, n = 3}ATOMIC)
+       ;
+
+function_specifier
+       : (?E{ast.AST.FunctionSpecifier, n = 0}INLINE)
+       | (?E{ast.AST.FunctionSpecifier, n = 1}NORETURN)
+       ;
+
+alignment_specifier
+       : (?E{ast.AST.AlignAsType}ALIGNAS '(' type_name ')')
+       | (?E{ast.AST.AlignAsExpression}ALIGNAS '(' constant_expression ')')
+       ;
+
+declarator_opt
+       : (?E{ast.AST.DeclaratorEmpty})
+       | declarator
+       ;
+
+declarator
+       : direct_declarator
+       | (?E{ast.AST.DeclaratorPointer}'*' (?E{ast.AST.TypeQualifierList}type_qualifier_list_opt) declarator)
+       ;
+
+direct_declarator
+       : (?E{ast.AST.DeclaratorIdentifier}IDENTIFIER)
+       | '(' declarator ')'
+       | (?E{ast.AST.DeclaratorArray}direct_declarator '[' (?E{ast.AST.TypeQualifierOrStaticList}type_qualifier_or_static_list_opt) assignment_expression_or_asterisk_opt ']')
+       | (?E{ast.AST.DeclaratorFunctionOldStyle}direct_declarator '(' (?E{ast.AST.IdentifierList}identifier_list_opt) ')')
+       | (?E{ast.AST.DeclaratorFunction}direct_declarator '(' (?E{ast.AST.ParameterDeclarationList}parameter_declaration_list) comma_ellipsis_opt ')')
+       ;
+
+type_qualifier_list_opt
+       :
+       | type_qualifier_list
+       ;
+
+type_qualifier_list
+       : type_qualifier
+       | type_qualifier_list type_qualifier
+       ;
+
+parameter_declaration_list
+       : parameter_declaration
+       | parameter_declaration_list ',' parameter_declaration
+       ;
+
+parameter_declaration
+       : (?E{ast.AST.ParameterDeclaration}(?E{ast.AST.DeclarationSpecifierList}declaration_specifier_list) declarator)
+       | (?E{ast.AST.ParameterDeclaration}(?E{ast.AST.DeclarationSpecifierList}declaration_specifier_list) abstract_declarator)
+       ;
+
+identifier_list_opt
+       :
+       | identifier_list
+       ;
+
+identifier_list
+       : IDENTIFIER
+       | identifier_list ',' IDENTIFIER
+       ;
+
+type_name
+       : (?E{ast.AST.TypeName}(?E{ast.AST.SpecifierQualifierList}specifier_qualifier_list) abstract_declarator)
+       ;
+
+abstract_declarator
+       : direct_abstract_declarator_opt
+       | (?E{ast.AST.DeclaratorPointer}'*' (?E{ast.AST.TypeQualifierList}type_qualifier_list_opt) abstract_declarator)
+       ;
+
+direct_abstract_declarator_opt
+       : (?E{ast.AST.DeclaratorAbstract})
+       | direct_abstract_declarator
+       ;
+
+/* in the below, ") (" should be ")(", inserted space for now */
+direct_abstract_declarator
+       : '(' direct_abstract_declarator ')'
+       | '(' (?E{ast.AST.DeclaratorPointer}'*' (?E{ast.AST.TypeQualifierList}type_qualifier_list_opt) abstract_declarator) ')'
+       | (?E{ast.AST.DeclaratorArray}(?E{ast.AST.DeclaratorAbstract})'[' (?E{ast.AST.TypeQualifierOrStaticList}type_qualifier_or_static_list_opt) assignment_expression_or_asterisk_opt ']')
+       | (?E{ast.AST.DeclaratorFunction}(?E{ast.AST.DeclaratorAbstract})'('(?E{ast.AST.ParameterDeclarationList}) (?E{ast.AST.CommaEllipsisEmpty}) ')')
+       | (?E{ast.AST.DeclaratorFunction}(?E{ast.AST.DeclaratorAbstract})'(' (?E{ast.AST.ParameterDeclarationList}parameter_declaration_list) comma_ellipsis_opt ')')
+       | (?E{ast.AST.DeclaratorArray}direct_abstract_declarator '[' (?E{ast.AST.TypeQualifierOrStaticList}type_qualifier_or_static_list_opt) assignment_expression_or_asterisk_opt ']')
+       | (?E{ast.AST.DeclaratorFunction}direct_abstract_declarator '('(?E{ast.AST.ParameterDeclarationList}) (?E{ast.AST.CommaEllipsisEmpty}) ')')
+       | (?E{ast.AST.DeclaratorFunction}direct_abstract_declarator '(' (?E{ast.AST.ParameterDeclarationList}parameter_declaration_list) comma_ellipsis_opt ')')
+       ;
+
+equals_initializer_opt
+       : (?E{ast.AST.EqualsInitializerEmpty})
+       | '=' initializer
+       ;
+
+initializer
+       : '{' (?E{ast.AST.DesignatorInitializerList}designator_initializer_list_comma_opt) '}'
+       | assignment_expression
+       ;
+
+designator_initializer_list_comma_opt
+       :
+       | designator_initializer_list
+       | designator_initializer_list ','
+       ;
+
+designator_initializer_list
+       : designator_initializer
+       | designator_initializer_list ',' designator_initializer
+       ;
+
+designator_initializer
+       : (?E{ast.AST.DesignatorInitializer}(?E{ast.AST.DesignatorList}designator_list_equals_opt) initializer)
+       ;
+
+designator_list_equals_opt
+       :
+       | designator_list '='
+       ;
+
+designator_list
+       : designator
+       | designator_list designator
+       ;
+
+designator
+       : (?E{ast.AST.DesignatorIndex}'[' constant_expression ']')
+       | (?E{ast.AST.DesignatorField}'.' IDENTIFIER)
+       ;
+
+static_assert_declaration
+       : (?E{ast.AST.StaticAssertDeclaration}STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL ')' ';')
+       ;
+
+statement
+       : (?E{ast.AST.StatementLabel}IDENTIFIER ':' statement)
+       | (?E{ast.AST.StatementCase}CASE constant_expression ':' statement)
+       | (?E{ast.AST.StatementDefault}DEFAULT ':' statement)
+       | (?E{ast.AST.StatementBlock}'{' (?E{ast.AST.BlockItemList}block_item_list_opt) '}')
+       | (?E{ast.AST.StatementExpression}expression_opt ';')
+       | (?E{ast.AST.StatementIfElse}IF '(' expression ')' statement ELSE statement)
+       | (?E{ast.AST.StatementIf}IF '(' expression ')' statement)
+       | (?E{ast.AST.StatementSwitch}SWITCH '(' expression ')' statement)
+       | (?E{ast.AST.StatementWhile}WHILE '(' expression ')' statement)
+       | (?E{ast.AST.StatementDoWhile}DO statement WHILE '(' expression ')' ';')
+       | (?E{ast.AST.StatementFor}FOR '(' expression_opt ';' expression_opt ';' expression_opt ')' statement)
+       | (?E{ast.AST.StatementFor}FOR '(' declaration expression_opt ';' expression_opt ')' statement)
+       | (?E{ast.AST.StatementGoto}GOTO IDENTIFIER ';')
+       | (?E{ast.AST.StatementContinue}CONTINUE ';')
+       | (?E{ast.AST.StatementBreak}BREAK ';')
+       | (?E{ast.AST.StatementReturn}RETURN expression_opt ';')
+       ;
+
+block_item_list_opt
+       :
+       | block_item_list
+       ;
+
+block_item_list
+       : block_item
+       | block_item_list block_item
+       ;
+
+block_item
+       : declaration
+       | statement
+       ;
+
+/* changed %start to block_item_list_opt rather than translation_list
+translation_unit_opt
+       :
+       | translation_unit
+       ;
+
+translation_unit
+       : external_declaration
+       | translation_unit external_declaration
+       ;
+
+external_declaration
+       : function_definition
+       | declaration
+       ;
+
+function_definition
+       : (?E{ast.AST.FunctionDefinition}(?E{ast.AST.DeclarationSpecifierList}declaration_specifier_list) declarator (?E{ast.AST.DeclarationList}declaration_list_opt) '{' (?E{ast.AST.BlockItemList}block_item_list_opt) '}')
+       ;
+
+declaration_list_opt
+       :
+       | declaration_list
+       ;
+
+declaration_list
+       : declaration
+       | declaration_list declaration
+       ;
+*/
+
+identifier_opt
+       : (?E{ast.AST.IdentifierEmpty})
+       | IDENTIFIER
+       ;
+
+comma_ellipsis_opt
+       : (?E{ast.AST.CommaEllipsisEmpty})
+       | (?E{ast.AST.CommaEllipsis}',' ELLIPSIS)
+       ;
diff --git a/ansi_c_lex.l b/ansi_c_lex.l
deleted file mode 100644 (file)
index 936217e..0000000
+++ /dev/null
@@ -1,868 +0,0 @@
-%e  1019
-%p  2807
-%n  371
-%k  284
-%a  1213
-%o  1117
-
-O   [0-7]
-D   [0-9]
-NZ  [1-9]
-L   [a-zA-Z_]
-A   [a-zA-Z_0-9]
-H   [a-fA-F0-9]
-HP  (0[xX])
-E   ([Ee][+-]?{D}+)
-P   ([Pp][+-]?{D}+)
-FS  (f|F|l|L)
-IS  (((u|U)(l|L|ll|LL)?)|((l|L|ll|LL)(u|U)?))
-CP  (u|U|L)
-SP  (u8|u|U|L)
-ES  (\\(['"\?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F0-9]+))
-WS  [ \t\v\n\f]
-
-%{
-#include "Python.h"
-#include "structmember.h"
-#include <setjmp.h>
-#include <stdbool.h>
-
-#include "yaccmodule.h"
-
-PyDoc_STRVAR(lex_doc_string, \
-"lex is an interface to a flex-generated lexical analyzer.\n");
-
-/* filled in at module initialization time */
-static PyObject *work;
-static PyObject *work_factory;
-
-typedef struct {
-  PyObject_HEAD
-
-  /* filled in by lex.yylex.__init(), no change during iteration */
-  PyObject *root, *mark, *yychunk_iter;
-
-  /* filled in by YY_INPUT() each time we go on to a new chunk */
-  PyObject *YY_INPUT_bytes;
-  Py_ssize_t YY_INPUT_bytes_off, YY_INPUT_bytes_len;
-} lex_yylexObject;
-
-/* filled in by lex.yylex.__next__() each time iterator invoked */
-static lex_yylexObject *yylex_self;
-static jmp_buf yylex_abort;
-static Py_ssize_t yytext_pos, yytext_off, yytext_len;
-
-static void yyerror(const char *); /* prints grammar violation message */
-static bool get_cursor(lex_yylexObject *self, Py_ssize_t i, Py_ssize_t *pos, Py_ssize_t *off);
-static bool set_cursor(lex_yylexObject *self, Py_ssize_t i, Py_ssize_t pos, Py_ssize_t off);
-static bool new_cursor(lex_yylexObject *self, Py_ssize_t i, Py_ssize_t pos, Py_ssize_t off);
-static bool pop_cursors(lex_yylexObject *self, Py_ssize_t i);
-static bool apply_markup(const char *format, ...);
-static bool next_YY_INPUT_chunk(lex_yylexObject *self);
-static bool next_yytext_chunk(lex_yylexObject *self);
-/*static bool skip_yytext_byte(lex_yylexObject *self, int c);*/ /* NO PROTOTYPE, IT'S A MACRO */
-static bool skip_yytext(lex_yylexObject *self);
-static bool skip_comment(lex_yylexObject *self);
-
-#define YY_INPUT(buf, result, max_size) \
-  do { \
- /*printf("YY_INPUT()\n");*/ \
-    if (yylex_self->YY_INPUT_bytes_off >= yylex_self->YY_INPUT_bytes_len && !next_YY_INPUT_chunk(yylex_self)) \
-      longjmp(yylex_abort, 1); \
-    Py_ssize_t len = yylex_self->YY_INPUT_bytes_len - yylex_self->YY_INPUT_bytes_off; \
-    if (len > max_size) \
-      len = max_size; \
-    /* note: don't call PyBytes_AS_STRING on Py_None (possible if len == 0) */ \
-    if (len) { \
-      memcpy(buf, PyBytes_AS_STRING(yylex_self->YY_INPUT_bytes) + yylex_self->YY_INPUT_bytes_off, len); \
-      yylex_self->YY_INPUT_bytes_off += len; \
-    } \
-    result = len; \
- /*printf("YY_INPUT() returns \""); fwrite(buf, result, 1, stdout); printf("\"\n");*/ \
-  } while (0)
-
-#define SKIP() \
-  do { \
-    if (!skip_yytext(yylex_self)) \
-      return -1; \
-  } \
-  while (0)
-
-#define MARK() \
-  do { \
-    if (!new_cursor(yylex_self, -1, yytext_pos, yytext_off)) \
-      return -1; \
-  } \
-  while (0)
-
-#define APPLY(tag) \
-   do { \
-    Py_ssize_t len = PyObject_Length(yylex_self->mark); \
-    if ( \
-      len < 0 || \
-      !apply_markup( \
-        "OOnnOs", \
-        yylex_self->root, \
-        yylex_self->mark, \
-        len - 3, \
-        len - 2, \
-        work_factory, \
-        tag \
-      ) \
-    ) \
-      return -1; \
-  } \
-  while (0)
-
-#define sym_type(self, identifier) IDENTIFIER /* with no symbol table, fake it */
-%}
-
-%%
-"/*"                                   { SKIP(); if (!skip_comment(yylex_self)) return -1; }
-"//".*                                 { SKIP(); /* consume //-comment */ }
-
-"auto"                                 { MARK(); SKIP(); MARK(); return AUTO; }
-"break"                                        { MARK(); SKIP(); MARK(); return BREAK; }
-"case"                                 { MARK(); SKIP(); MARK(); return CASE; }
-"char"                                 { MARK(); SKIP(); MARK(); return CHAR; }
-"const"                                        { MARK(); SKIP(); MARK(); return CONST; }
-"continue"                             { MARK(); SKIP(); MARK(); return CONTINUE; }
-"default"                              { MARK(); SKIP(); MARK(); return DEFAULT; }
-"do"                                   { MARK(); SKIP(); MARK(); return DO; }
-"double"                               { MARK(); SKIP(); MARK(); return DOUBLE; }
-"else"                                 { MARK(); SKIP(); MARK(); return ELSE; }
-"enum"                                 { MARK(); SKIP(); MARK(); return ENUM; }
-"extern"                               { MARK(); SKIP(); MARK(); return EXTERN; }
-"float"                                        { MARK(); SKIP(); MARK(); return FLOAT; }
-"for"                                  { MARK(); SKIP(); MARK(); return FOR; }
-"goto"                                 { MARK(); SKIP(); MARK(); return GOTO; }
-"if"                                   { MARK(); SKIP(); MARK(); return IF; }
-"inline"                               { MARK(); SKIP(); MARK(); return INLINE; }
-"int"                                  { MARK(); SKIP(); MARK(); return INT; }
-"long"                                 { MARK(); SKIP(); MARK(); return LONG; }
-"register"                             { MARK(); SKIP(); MARK(); return REGISTER; }
-"restrict"                             { MARK(); SKIP(); MARK(); return RESTRICT; }
-"return"                               { MARK(); SKIP(); MARK(); return RETURN; }
-"short"                                        { MARK(); SKIP(); MARK(); return SHORT; }
-"signed"                               { MARK(); SKIP(); MARK(); return SIGNED; }
-"sizeof"                               { MARK(); SKIP(); MARK(); return SIZEOF; }
-"static"                               { MARK(); SKIP(); MARK(); return STATIC; }
-"struct"                               { MARK(); SKIP(); MARK(); return STRUCT; }
-"switch"                               { MARK(); SKIP(); MARK(); return SWITCH; }
-"typedef"                              { MARK(); SKIP(); MARK(); return TYPEDEF; }
-"union"                                        { MARK(); SKIP(); MARK(); return UNION; }
-"unsigned"                             { MARK(); SKIP(); MARK(); return UNSIGNED; }
-"void"                                 { MARK(); SKIP(); MARK(); return VOID; }
-"volatile"                             { MARK(); SKIP(); MARK(); return VOLATILE; }
-"while"                                        { MARK(); SKIP(); MARK(); return WHILE; }
-"_Alignas"                             { MARK(); SKIP(); MARK(); return ALIGNAS; }
-"_Alignof"                             { MARK(); SKIP(); MARK(); return ALIGNOF; }
-"_Atomic"                              { MARK(); SKIP(); MARK(); return ATOMIC; }
-"_Bool"                                        { MARK(); SKIP(); MARK(); return BOOL; }
-"_Complex"                             { MARK(); SKIP(); MARK(); return COMPLEX; }
-"_Generic"                             { MARK(); SKIP(); MARK(); return GENERIC; }
-"_Imaginary"                           { MARK(); SKIP(); MARK(); return IMAGINARY; }
-"_Noreturn"                            { MARK(); SKIP(); MARK(); return NORETURN; }
-"_Static_assert"                       { MARK(); SKIP(); MARK(); return STATIC_ASSERT; }
-"_Thread_local"                                { MARK(); SKIP(); MARK(); return THREAD_LOCAL; }
-"__func__"                             { MARK(); SKIP(); MARK(); return FUNC_NAME; }
-"bool"|"scanflags_t"|"size_t"          { MARK(); SKIP(); MARK(); return TYPEDEF_NAME; /* THIS IS A HACK FOR NOW */ }
-
-(?<Identifier>{L}{A}*) {
-  MARK();
-  SKIP();
-  MARK(); 
-  switch (sym_type(self, yytext))
-  {
-  case TYPEDEF_NAME:        /* previously defined */
-    APPLY("TypedefName");
-    return TYPEDEF_NAME;
-  case ENUMERATION_CONSTANT:    /* previously defined */
-    APPLY("EnumerationConstant");
-    return ENUMERATION_CONSTANT;
-  default:              /* includes undefined */
-    APPLY("Identifier");
-    return IDENTIFIER;
-  }
-}
-
-(?<ExpressionIntLiteral>{HP}{H}+{IS}?)                         { MARK(); SKIP(); MARK(); APPLY("ExpressionIntLiteral"); return I_CONSTANT; }
-(?<ExpressionIntLiteral>{NZ}{D}*{IS}?)                         { MARK(); SKIP(); MARK(); APPLY("ExpressionIntLiteral"); return I_CONSTANT; }
-(?<ExpressionIntLiteral>"0"{O}*{IS}?)                          { MARK(); SKIP(); MARK(); APPLY("ExpressionIntLiteral"); return I_CONSTANT; }
-(?<ExpressionCharConstant>{CP}?"'"([^'\\\n]|{ES})+"'")         { MARK(); SKIP(); MARK(); APPLY("ExpressionCharConstant"); return I_CONSTANT; }
-
-(?<ExpressionFloatLiteral>{D}+{E}{FS}?)                                { MARK(); SKIP(); MARK(); APPLY("ExpressionFloatLiteral"); return F_CONSTANT; }
-(?<ExpressionFloatLiteral>{D}*"."{D}+{E}?{FS}?)                        { MARK(); SKIP(); MARK(); APPLY("ExpressionFloatLiteral"); return F_CONSTANT; }
-(?<ExpressionFloatLiteral>{D}+"."{E}?{FS}?)                    { MARK(); SKIP(); MARK(); APPLY("ExpressionFloatLiteral"); return F_CONSTANT; }
-(?<ExpressionFloatLiteral>{HP}{H}+{P}{FS}?)                    { MARK(); SKIP(); MARK(); APPLY("ExpressionFloatLiteral"); return F_CONSTANT; }
-(?<ExpressionFloatLiteral>{HP}{H}*"."{H}+{P}{FS}?)                     { MARK(); SKIP(); MARK(); APPLY("ExpressionFloatLiteral"); return F_CONSTANT; }
-(?<ExpressionFloatLiteral>{HP}{H}+"."{P}{FS}?)                 { MARK(); SKIP(); MARK(); APPLY("ExpressionFloatLiteral"); return F_CONSTANT; }
-
-(?<ExpressionStringLiteral>({SP}?\"(?<Text>([^"\\\n]|{ES})*)\"{WS}*)+) { MARK(); SKIP(); MARK(); APPLY("ExpressionStringLiteral"); return STRING_LITERAL; }
-
-"..."                                  { MARK(); SKIP(); MARK(); return ELLIPSIS; }
-">>="                                  { MARK(); SKIP(); MARK(); return RIGHT_ASSIGN; }
-"<<="                                  { MARK(); SKIP(); MARK(); return LEFT_ASSIGN; }
-"+="                                   { MARK(); SKIP(); MARK(); return ADD_ASSIGN; }
-"-="                                   { MARK(); SKIP(); MARK(); return SUB_ASSIGN; }
-"*="                                   { MARK(); SKIP(); MARK(); return MUL_ASSIGN; }
-"/="                                   { MARK(); SKIP(); MARK(); return DIV_ASSIGN; }
-"%="                                   { MARK(); SKIP(); MARK(); return MOD_ASSIGN; }
-"&="                                   { MARK(); SKIP(); MARK(); return AND_ASSIGN; }
-"^="                                   { MARK(); SKIP(); MARK(); return XOR_ASSIGN; }
-"|="                                   { MARK(); SKIP(); MARK(); return OR_ASSIGN; }
-">>"                                   { MARK(); SKIP(); MARK(); return RIGHT_OP; }
-"<<"                                   { MARK(); SKIP(); MARK(); return LEFT_OP; }
-"++"                                   { MARK(); SKIP(); MARK(); return INC_OP; }
-"--"                                   { MARK(); SKIP(); MARK(); return DEC_OP; }
-"->"                                   { MARK(); SKIP(); MARK(); return PTR_OP; }
-"&&"                                   { MARK(); SKIP(); MARK(); return AND_OP; }
-"||"                                   { MARK(); SKIP(); MARK(); return OR_OP; }
-"<="                                   { MARK(); SKIP(); MARK(); return LE_OP; }
-">="                                   { MARK(); SKIP(); MARK(); return GE_OP; }
-"=="                                   { MARK(); SKIP(); MARK(); return EQ_OP; }
-"!="                                   { MARK(); SKIP(); MARK(); return NE_OP; }
-";"                                    { MARK(); SKIP(); MARK(); return ';'; }
-("{"|"<%")                             { MARK(); SKIP(); MARK(); return '{'; }
-("}"|"%>")                             { MARK(); SKIP(); MARK(); return '}'; }
-","                                    { MARK(); SKIP(); MARK(); return ','; }
-":"                                    { MARK(); SKIP(); MARK(); return ':'; }
-"="                                    { MARK(); SKIP(); MARK(); return '='; }
-"("                                    { MARK(); SKIP(); MARK(); return '('; }
-")"                                    { MARK(); SKIP(); MARK(); return ')'; }
-("["|"<:")                             { MARK(); SKIP(); MARK(); return '['; }
-("]"|":>")                             { MARK(); SKIP(); MARK(); return ']'; }
-"."                                    { MARK(); SKIP(); MARK(); return '.'; }
-"&"                                    { MARK(); SKIP(); MARK(); return '&'; }
-"!"                                    { MARK(); SKIP(); MARK(); return '!'; }
-"~"                                    { MARK(); SKIP(); MARK(); return '~'; }
-"-"                                    { MARK(); SKIP(); MARK(); return '-'; }
-"+"                                    { MARK(); SKIP(); MARK(); return '+'; }
-"*"                                    { MARK(); SKIP(); MARK(); return '*'; }
-"/"                                    { MARK(); SKIP(); MARK(); return '/'; }
-"%"                                    { MARK(); SKIP(); MARK(); return '%'; }
-"<"                                    { MARK(); SKIP(); MARK(); return '<'; }
-">"                                    { MARK(); SKIP(); MARK(); return '>'; }
-"^"                                    { MARK(); SKIP(); MARK(); return '^'; }
-"|"                                    { MARK(); SKIP(); MARK(); return '|'; }
-"?"                                    { MARK(); SKIP(); MARK(); return '?'; }
-
-{WS}+                                  { SKIP(); /* whitespace separates tokens */ }
-.                                      { SKIP(); /* discard bad characters */ }
-<<EOF>>                                        { MARK(); return 0; }
-
-%%
-
-int yywrap(void)    /* called at end of input */
-{
- /*printf("yywrap()\n");*/
-  return 1;       /* terminate now */
-}
-
-static void yyerror(const char *s) {
-  fflush(stdout);
-  fprintf(stderr, "*** %s\n", s);
-}
-
-static bool get_cursor(lex_yylexObject *self, Py_ssize_t i, Py_ssize_t *pos, Py_ssize_t *off) {
- /*printf("get_cursor() %zd\n", i);*/
-  /* (pos, off) = self->mark[index] */
-  PyObject *index = PyLong_FromSsize_t(i);
-  if (index == NULL)
-    goto error0;
-  PyObject *cursor = PyObject_GetItem(self->mark, index);
-  if (cursor == NULL)
-    goto error1;
-  if (!PyArg_ParseTuple(cursor, "nn", pos, off)) {
-    Py_DECREF(cursor);
-  error1:
-    Py_DECREF(index);
-  error0:
-    return false;
-  }
-  Py_DECREF(cursor);
-  Py_DECREF(index);
- /*printf("get_cursor() returns %zd %zd\n", *pos, *off);*/
-  return true;
-}
-
-static bool set_cursor(lex_yylexObject *self, Py_ssize_t i, Py_ssize_t pos, Py_ssize_t off) {
- /*printf("set_cursor() %zd %zd %zd\n", i, pos, off);*/
-  /* self->mark[index] = (pos, off) */
-  PyObject *index = PyLong_FromSsize_t(i);
-  if (index == NULL)
-    goto error0;
-  PyObject *cursor = Py_BuildValue("nn", pos, off);
-  if (cursor == NULL)
-    goto error1;
-  if (PyObject_SetItem(self->mark, index, cursor)) {
-    Py_DECREF(cursor);
-  error1:
-    Py_DECREF(index);
-  error0:
-    return false;
-  }
-  Py_DECREF(cursor);
-  Py_DECREF(index);
-  return true;
-}
-
-static bool new_cursor(lex_yylexObject *self, Py_ssize_t i, Py_ssize_t pos, Py_ssize_t off) {
- /*printf("new_cursor() %zd %zd %zd\n", i, pos, off);*/
-  /* self->mark[i:i] = [(pos, off)] */
-  PyObject *index = PyLong_FromSsize_t(i);
-  if (index == NULL)
-    goto error0;
-  PyObject *slice = PySlice_New(index, index, NULL);
-  if (slice == NULL)
-    goto error1;
-  PyObject *list = PyList_New(1);
-  if (list == NULL)
-    goto error2;
-  PyObject *cursor = Py_BuildValue("nn", pos, off);
-  if (cursor == NULL)
-    goto error3;
-  PyList_SET_ITEM(list, 0, cursor);
-  if (PyObject_SetItem(self->mark, slice, list)) {
-  error3:
-    Py_DECREF(list);
-  error2:
-    Py_DECREF(slice);
-  error1:
-    Py_DECREF(index);
-  error0:
-    return false;
-  }
-  Py_DECREF(list);
-  Py_DECREF(slice);
-  Py_DECREF(index);
-  return true;
-}
-
-static bool pop_cursors(lex_yylexObject *self, Py_ssize_t i) {
- /*printf("pop_cursors() %zd\n", i);*/
-  /* del self->mark[i:] */
-  PyObject *start = PyLong_FromSsize_t(i);
-  if (start == NULL)
-    goto error0;
-  PyObject *slice = PySlice_New(start, NULL, NULL);
-  if (slice == NULL)
-    goto error1;
-  if (PyObject_DelItem(self->mark, slice)) {
-    Py_DECREF(slice);
-  error1:
-    Py_DECREF(start);
-  error0:
-    return false;
-  }
-  Py_DECREF(slice);
-  Py_DECREF(start);
-  return true;
-}
-
-static bool apply_markup(const char *format, ...) {
-  PyObject *apply_markup = PyObject_GetAttrString(work, "apply_markup");
-  if (apply_markup == NULL)
-    goto error0;
-
-  va_list argp;
-  va_start(argp, format);
-  PyObject *args = Py_VaBuildValue(format, argp);
-  va_end(argp);
-  if (args == NULL)
-    goto error1;
-
-  PyObject *result = PyObject_CallObject(apply_markup, args);
-  if (result == NULL) {
-    Py_DECREF(args);
-  error1:
-    Py_DECREF(apply_markup);
-  error0:
-    return false;
-  }
-
-  Py_DECREF(result);
-  Py_DECREF(args);
-  Py_DECREF(apply_markup);
-  return true;
-}
-
-static bool next_YY_INPUT_chunk(lex_yylexObject *self) {
- /*printf("next_YY_INPUT_chunk()\n");*/
-  /* cursor is not cached, since we'd have to re-cache every time we enter */
-  /* iterator, whereas we are only supposed to read new chunks occasionally */
-  Py_ssize_t pos, off, len;
-  if (!get_cursor(self, -1, &pos, &off))
-    goto error0;
-
-  PyObject *tail;
-  while (true) {
-    /* re-check the length, as tail could have got longer in the meantime */
-    tail = PyObject_CallMethod(work, "get_tail", "On", self->root, pos);
-    if (tail == NULL)
-      goto error0;
-    len = PyObject_Length(tail);
-    if (len < 0)
-      goto error1;
-
-    /* see if now need to do more data from the same chunk */
-    if (off < len)
-      break;
-    Py_DECREF(tail);
-    /* if last chunk try to extend it, otherwise go on to next */
-    Py_ssize_t root_len = PyObject_Length(self->root);
-    if (root_len < 0)
-      goto error0;
-    if (pos + 1 >= root_len) {
-      if (self->yychunk_iter != Py_None){
-        PyObject *result = PyObject_CallMethod(self->yychunk_iter, "__next__", "");
-        if (result != NULL) {
-          Py_DECREF(result);
-          continue; /* re-check current chunk, in case extended */
-        }
-        if (!PyErr_ExceptionMatches(PyExc_StopIteration))
-          goto error0;
-        PyErr_Clear();
-      }
-
-      /* it is not an error to run out of data, empty return indicates EOF */
-      Py_INCREF(Py_None);
-      Py_DECREF(self->YY_INPUT_bytes);
-      self->YY_INPUT_bytes = Py_None;
-      self->YY_INPUT_bytes_off = 0;
-      self->YY_INPUT_bytes_len = 0;
-      return true;
-    }
-    ++pos;
-    off = 0;
-  }
-
-  /* got something we can return, advance cursor by unicode length of data */
-  if (!set_cursor(self, -1, pos, off + len))
-    goto error1;
-
-  /* check for less efficient case when caller has appended to the chunk, */
-  /* requires a large copy that caller can avoid by only adding new chunks */
-  if (off >= 0) {
-    PyObject *index = PyLong_FromSsize_t(off);
-    if (index == NULL)
-      goto error1;
-    PyObject *slice = PySlice_New(index, NULL, NULL);
-    if (slice == NULL)
-      goto error2;
-    PyObject *item = PyObject_GetItem(tail, slice);
-    if (item == NULL) {
-      Py_DECREF(slice);
-    error2:
-      Py_DECREF(index);
-      goto error1;
-    }
-    Py_DECREF(tail);
-    tail = item;
-    Py_DECREF(slice);
-    Py_DECREF(index);
-  }
-
-  /* convert entire chunk to UTF-8, then use for multiple YY_INPUT() calls */
-  PyObject *bytes = PyUnicode_AsUTF8String(tail);
-  if (bytes == NULL)
-    goto error1;
-  len = PyObject_Length(bytes);
-  if (len < 0) {
-    Py_DECREF(bytes);
-  error1:
-    Py_DECREF(tail);
-  error0:
-    return false;
-  }
-  Py_DECREF(self->YY_INPUT_bytes);
-  self->YY_INPUT_bytes = bytes;
-  self->YY_INPUT_bytes_off = 0;
-  self->YY_INPUT_bytes_len = len;
-
-  Py_DECREF(tail);
-  return true;
-}
-
-static bool next_yytext_chunk(lex_yylexObject *self) {
-  while (true) {
-    /* re-cache the length, as tail could have got longer in the meantime */
-    PyObject *tail = PyObject_CallMethod(work, "get_tail", "On", self->root, yytext_pos);
-    if (tail == NULL)
-      goto error0;
-    yytext_len = PyObject_Length(tail);
-    if (yytext_len < 0) {
-      Py_DECREF(tail);
-    error0:
-      return false;
-    }
-    Py_DECREF(tail);
-  
-    /* see if now need to do more data from the same chunk */
-    if (yytext_off < yytext_len)
-      break;
-  
-    /* go on to next chunk (note: it can't go past YY_INPUT cursor) */
-    ++yytext_pos;
-    yytext_off = 0;
-  }
-  return true;
-}
-
-#define skip_yytext_byte(self, c) \
-  do { \
-    if ((c & 0xc0) != 0x80) { \
- /*printf("'%c' %ld %ld\n", c, yytext_off, yytext_len);*/ \
-      if (yytext_off >= yytext_len && !next_yytext_chunk(self)) \
-        return false; \
-      ++yytext_off; \
-    } \
-  } while (0)
-
-static bool skip_yytext(lex_yylexObject *self) {
-  int c;
-  for (char *p = yytext; (c = *p) != 0; ++p)
-    skip_yytext_byte(self, c);
-  return true;
-}
-
-static bool skip_comment(lex_yylexObject *self) {
-  int c;
-  while ((c = input()) != 0) {
-    if (c == '*') {
-      skip_yytext_byte(self, '*');
-      while ((c = input()) == '*')
-        skip_yytext_byte(self, '*');
-
-      if (c == '/') {
-        skip_yytext_byte(self, '/');
-        return true;
-      }
-
-      if (c == 0)
-        break;
-    }
-    skip_yytext_byte(self, c);
-  }
-  yyerror("unterminated comment");
-  return true;
-}
-
-static PyObject *lex_yylex_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) {
-  lex_yylexObject *self;
-
-  self = (lex_yylexObject *)type->tp_alloc(type, 0);
-  Py_INCREF(Py_None);
-  self->root = Py_None;
-  Py_INCREF(Py_None);
-  self->mark = Py_None;
-  Py_INCREF(Py_None);
-  self->yychunk_iter = Py_None;
-  Py_INCREF(Py_None);
-  self->YY_INPUT_bytes = Py_None;
-  return (PyObject *)self;
-}
-
-static void lex_yylex_dealloc(lex_yylexObject *self) {
-  Py_DECREF(self->root);
-  Py_DECREF(self->mark);
-  Py_DECREF(self->yychunk_iter);
-  Py_DECREF(self->YY_INPUT_bytes);
-  Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-static int lex_yylex_init(lex_yylexObject *self, PyObject *args, PyObject *kwargs) {
-  PyObject *root, *mark, *yychunk_iter = Py_None;
-  if (!PyArg_ParseTuple(args, "OO|O", &root, &mark, &yychunk_iter))
-    goto error0;
-
-  Py_INCREF(root);
-  Py_DECREF(self->root);
-  self->root = root;
-
-  Py_INCREF(mark);
-  Py_DECREF(self->mark);
-  self->mark = mark;
-
-  if (yychunk_iter == Py_None)
-    Py_INCREF(Py_None);
-  else {
-    yychunk_iter = PyObject_GetIter(yychunk_iter);
-    if (yychunk_iter == NULL)
-      goto error1;
-  }
-  Py_DECREF(self->yychunk_iter);
-  self->yychunk_iter = yychunk_iter;
-
-  /* mark[:] = [(-1, 0), (-1, 0)] */
-  /* the first is the yytext cursor, it will be advanced one unicode code */
-  /* point for each UTF-8 non-continuation character scanned in yytext; */
-  /* the second is the YY_INPUT cursor, it will be advanced by the chunk */
-  /* length in unicode code points each time we convert a chunk to UTF-8; */
-  /* each cursor consists of (pos, off) referring to root[pos].tail[off:], */
-  /* chunks accessed using work.get_tail(), so pos == -1 for root[pos].text */
-  if (!pop_cursors(self, 0) || !new_cursor(self, 0, -1, 0) || !new_cursor(self, 1, -1, 0)) {
-  error1:
-    /* don't keep useless references to user data structures after error */
-    Py_INCREF(Py_None);
-    Py_DECREF(self->root);
-    self->root = Py_None;
-    Py_INCREF(Py_None);
-    Py_DECREF(self->mark);
-    self->mark = Py_None;
-    Py_INCREF(Py_None);
-    Py_DECREF(self->yychunk_iter);
-    self->yychunk_iter = Py_None;
-  error0:
-    return -1;
-  }
-
-  Py_INCREF(Py_None);
-  Py_DECREF(self->YY_INPUT_bytes);
-  self->YY_INPUT_bytes = Py_None;
-  self->YY_INPUT_bytes_off = 0;
-  self->YY_INPUT_bytes_len = 0;
-
-  return 0;
-}
-static PyObject *lex_yylex_iter(PyObject *self) {
-  Py_INCREF(self);
-  return self;
-}
-
-static PyObject *lex_yylex_iternext(lex_yylexObject *self) {
- /*printf("lex_yylex_iternext()\n");*/
-  if (self->root == Py_None || self->mark == Py_None) {
-    PyErr_SetNone(PyExc_StopIteration);
-    goto error0;
-  }
-
-  /* cache yytext_pos, yytext_off, yytext_len for quickly scanning yytext */
-  if (!get_cursor(self, -2, &yytext_pos, &yytext_off))
-    goto error1;
-  PyObject *tail = PyObject_CallMethod(work, "get_tail", "On", self->root, yytext_pos);
-  if (tail == NULL)
-    goto error1;
-  yytext_len = PyObject_Length(tail);
-  if (yytext_len < 0) {
-    Py_DECREF(tail);
-    goto error1;
-  }
-  Py_DECREF(tail);
-
-  yylex_self = self;
-  if (setjmp(yylex_abort))
-    goto error1;
-
-  (void)yyunput; /* fix defined but not used warning */
-  int token = yylex();
-  if (token == -1)
-    goto error1;
-
-  if (token == 0) {
-    /* finished, automatically delete YY_INPUT cursor and drop references */
-    if (!pop_cursors(self, -1)) {
-    error1:
-      /* don't keep useless references to user data structures after error */
-      Py_INCREF(Py_None);
-      Py_DECREF(self->root);
-      self->root = Py_None;
-      Py_INCREF(Py_None);
-      Py_DECREF(self->mark);
-      self->mark = Py_None;
-      Py_INCREF(Py_None);
-      Py_DECREF(self->yychunk_iter);
-      self->yychunk_iter = Py_None;
-    error0:
-      return NULL;
-    }
-    /* don't keep useless references to user data structures after EOF */
-    Py_INCREF(Py_None);
-    Py_DECREF(self->root);
-    self->root = Py_None;
-    Py_INCREF(Py_None);
-    Py_DECREF(self->mark);
-    self->mark = Py_None;
-    Py_INCREF(Py_None);
-    Py_DECREF(self->yychunk_iter);
-    self->yychunk_iter = Py_None;
-  }
-
- /*printf("lex_yylex_iternext() returns %d\n", token);*/
-  return PyLong_FromLong((long)token);
-}
-
-static int lex_yylex_traverse(lex_yylexObject *self, visitproc visit, void *arg)
-{
-  Py_VISIT(self->root);
-  Py_VISIT(self->mark);
-  Py_VISIT(self->yychunk_iter);
-  Py_VISIT(self->YY_INPUT_bytes);
-  return 0;
-}
-
-static int lex_yylex_clear(lex_yylexObject *self)
-{
-  Py_CLEAR(self->root);
-  Py_CLEAR(self->mark);
-  Py_CLEAR(self->yychunk_iter);
-  Py_CLEAR(self->YY_INPUT_bytes);
-  return 0;
-}
-
-static PyMemberDef lex_yylex_members[] = {
-    {
-      "root",
-      T_OBJECT_EX,
-      offsetof(lex_yylexObject,
-      root),
-      0,
-      "root element, stack of sub-elements (treated as characters) and text"
-    },
-    {
-      "mark",
-      T_OBJECT_EX,
-      offsetof(lex_yylexObject,
-      mark),
-      0,
-      "list containing cursors, -2 current position, -1 next read position"
-    },
-    {
-      "yychunk_iter",
-      T_OBJECT_EX,
-      offsetof(lex_yylexObject,
-      yychunk_iter),
-      0,
-      "iterator for new input chunks (or None)"
-    },
-    {
-      "YY_INPUT_bytes",
-      T_OBJECT_EX,
-      offsetof(lex_yylexObject,
-      YY_INPUT_bytes),
-      0,
-      "UTF-8 encoding of current chunk to scan"
-    },
-    {
-      "YY_INPUT_bytes_off",
-      T_PYSSIZET,
-      offsetof(lex_yylexObject,
-      YY_INPUT_bytes_off),
-      0,
-      "current offset in UTF-8 text"
-    },
-    {
-      "YY_INPUT_bytes_len",
-      T_PYSSIZET,
-      offsetof(lex_yylexObject,
-      YY_INPUT_bytes_len),
-      0,
-      "maximum offset in UTF-8 text (inclusive)"
-    },
-    {}
-};
-
-static PyTypeObject lex_yylexType = {
-  PyVarObject_HEAD_INIT(NULL, 0)
-  "lex.yylex",               /* tp_name */
-  sizeof(lex_yylexObject),   /* tp_basicsize */
-  0,                         /* tp_itemsize */
-  (destructor)lex_yylex_dealloc, /* tp_dealloc */
-  0,                         /* tp_print */
-  0,                         /* tp_getattr */
-  0,                         /* tp_setattr */
-  0,                         /* tp_reserved */
-  0,                         /* tp_repr */
-  0,                         /* tp_as_number */
-  0,                         /* tp_as_sequence */
-  0,                         /* tp_as_mapping */
-  0,                         /* tp_hash  */
-  0,                         /* tp_call */
-  0,                         /* tp_str */
-  0,                         /* tp_getattro */
-  0,                         /* tp_setattro */
-  0,                         /* tp_as_buffer */
-  Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, /* tp_flags */
-  "Lexical token iterator",  /* tp_doc */
-  (traverseproc)lex_yylex_traverse, /* tp_traverse */
-  (inquiry)lex_yylex_clear,  /* tp_clear */
-  0,                         /* tp_richcompare */
-  0,                         /* tp_weaklistoffset */
-  (getiterfunc)lex_yylex_iter, /* tp_iter */
-  (iternextfunc)lex_yylex_iternext, /* tp_iternext */
-  0,                         /* tp_methods */
-  lex_yylex_members,         /* tp_members */
-  0,                         /* tp_getset */
-  0,                         /* tp_base */
-  0,                         /* tp_dict */
-  0,                         /* tp_descr_get */
-  0,                         /* tp_descr_set */
-  0,                         /* tp_dictoffset */
-  (initproc)lex_yylex_init,  /* tp_init */
-  0,                         /* tp_alloc */
-  lex_yylex_new              /* tp_new */
-};
-
-static int lex_traverse(PyObject *self, visitproc visit, void *arg)
-{
-  Py_VISIT(work);
-  Py_VISIT(work_factory);
-  return 0;
-}
-
-static int lex_clear(PyObject *self)
-{
-  Py_CLEAR(work);
-  Py_CLEAR(work_factory);
-  return 0;
-}
-
-static struct PyModuleDef lexmodule = {
-  PyModuleDef_HEAD_INIT,
-  "lex",
-  lex_doc_string,
-  -1,
-  NULL,
-  NULL,
-  lex_traverse,
-  lex_clear
-};
-
-PyMODINIT_FUNC PyInit_lex(void)
-{
-  if (work != NULL) {
-    PyErr_SetString(
-      PyExc_RuntimeError,
-      "lex module cannot be re-imported or sub-interpreted\n"
-    );
-    goto error0;
-  }
-
-  PyObject *module = PyModule_Create(&lexmodule);
-  if (module == NULL)
-    goto error0;
-
-  if (
-    PyType_Ready(&lex_yylexType) ||
-    PyModule_AddObject(module, "yylex", (PyObject *)&lex_yylexType)
-  )
-    goto error1;
-  Py_INCREF(&lex_yylexType);
-
-  work = PyImport_ImportModule("work");
-  if (work == NULL)
-    goto error1;
-  work_factory = PyObject_GetAttrString(work, "factory");
-  if (work_factory == NULL) {
-    Py_DECREF(work);
-    work = NULL;
-  error1:
-    Py_DECREF(module);
-  error0:
-    return NULL;
-  }
-
-  return module;
-}
diff --git a/ansi_c_lex.xml b/ansi_c_lex.xml
deleted file mode 100644 (file)
index c75402c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<root>
-  <RegexAnd ref="0"><RegexRepeat count0="-1" count1="-1" non_greedy="false"><RegexCharacterNot character_set="0 256"><RegexCharacter character_set="" /></RegexCharacterNot></RegexRepeat><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexOr><RegexNone /><RegexGroup group_attributes="" group_index="0" group_name="">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="47 48">/</RegexCharacter></RegexSequence><RegexCharacter character_set="42 43">*</RegexCharacter></RegexSequence>"</RegexGroup>                                   </RegexOr><RegexGroup group_attributes="" group_index="1" group_name=""><RegexSequence>"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="47 48">/</RegexCharacter></RegexSequence><RegexCharacter character_set="47 48">/</RegexCharacter></RegexSequence>"<RegexRepeat count0="0" count1="-1" non_greedy="false"><RegexCharacter character_set="0 10 11 256">.</RegexCharacter>*</RegexRepeat></RegexSequence></RegexGroup>                                  </RegexOr><RegexGroup group_attributes="" group_index="2" group_name="AUTO">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="117 118">u</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence>"</RegexGroup>                                     </RegexOr><RegexGroup group_attributes="" group_index="3" group_name="BREAK">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="98 99">b</RegexCharacter></RegexSequence><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="107 108">k</RegexCharacter></RegexSequence>"</RegexGroup>                                     </RegexOr><RegexGroup group_attributes="" group_index="4" group_name="CASE">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="99 100">c</RegexCharacter></RegexSequence><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="5" group_name="CHAR">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="99 100">c</RegexCharacter></RegexSequence><RegexCharacter character_set="104 105">h</RegexCharacter></RegexSequence><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="6" group_name="CONST">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="99 100">c</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence>"</RegexGroup>                                  </RegexOr><RegexGroup group_attributes="" group_index="7" group_name="CONTINUE">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="99 100">c</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="117 118">u</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence>"</RegexGroup>                            </RegexOr><RegexGroup group_attributes="" group_index="8" group_name="DEFAULT">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="100 101">d</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="102 103">f</RegexCharacter></RegexSequence><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="117 118">u</RegexCharacter></RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence>"</RegexGroup>                               </RegexOr><RegexGroup group_attributes="" group_index="9" group_name="DO">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="100 101">d</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence>"</RegexGroup>                                       </RegexOr><RegexGroup group_attributes="" group_index="10" group_name="DOUBLE">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="100 101">d</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="117 118">u</RegexCharacter></RegexSequence><RegexCharacter character_set="98 99">b</RegexCharacter></RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence>"</RegexGroup>                                </RegexOr><RegexGroup group_attributes="" group_index="11" group_name="ELSE">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence>"</RegexGroup>                                  </RegexOr><RegexGroup group_attributes="" group_index="12" group_name="ENUM">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="117 118">u</RegexCharacter></RegexSequence><RegexCharacter character_set="109 110">m</RegexCharacter></RegexSequence>"</RegexGroup>                                  </RegexOr><RegexGroup group_attributes="" group_index="13" group_name="EXTERN">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="120 121">x</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence>"</RegexGroup>                              </RegexOr><RegexGroup group_attributes="" group_index="14" group_name="FLOAT">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="102 103">f</RegexCharacter></RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence>"</RegexGroup>                                  </RegexOr><RegexGroup group_attributes="" group_index="15" group_name="FOR">"<RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="102 103">f</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence>"</RegexGroup>                                    </RegexOr><RegexGroup group_attributes="" group_index="16" group_name="GOTO">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="103 104">g</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence>"</RegexGroup>                                  </RegexOr><RegexGroup group_attributes="" group_index="17" group_name="IF">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="102 103">f</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="18" group_name="INLINE">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence>"</RegexGroup>                              </RegexOr><RegexGroup group_attributes="" group_index="19" group_name="INT">"<RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence>"</RegexGroup>                                    </RegexOr><RegexGroup group_attributes="" group_index="20" group_name="LONG">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="103 104">g</RegexCharacter></RegexSequence>"</RegexGroup>                                  </RegexOr><RegexGroup group_attributes="" group_index="21" group_name="REGISTER">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="103 104">g</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence>"</RegexGroup>                          </RegexOr><RegexGroup group_attributes="" group_index="22" group_name="RESTRICT">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="99 100">c</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence>"</RegexGroup>                           </RegexOr><RegexGroup group_attributes="" group_index="23" group_name="RETURN">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="117 118">u</RegexCharacter></RegexSequence><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence>"</RegexGroup>                              </RegexOr><RegexGroup group_attributes="" group_index="24" group_name="SHORT">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="104 105">h</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence>"</RegexGroup>                                        </RegexOr><RegexGroup group_attributes="" group_index="25" group_name="SIGNED">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="103 104">g</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="100 101">d</RegexCharacter></RegexSequence>"</RegexGroup>                              </RegexOr><RegexGroup group_attributes="" group_index="26" group_name="SIZEOF">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="122 123">z</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="102 103">f</RegexCharacter></RegexSequence>"</RegexGroup>                              </RegexOr><RegexGroup group_attributes="" group_index="27" group_name="STATIC">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="99 100">c</RegexCharacter></RegexSequence>"</RegexGroup>                         </RegexOr><RegexGroup group_attributes="" group_index="28" group_name="STRUCT">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence><RegexCharacter character_set="117 118">u</RegexCharacter></RegexSequence><RegexCharacter character_set="99 100">c</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence>"</RegexGroup>                               </RegexOr><RegexGroup group_attributes="" group_index="29" group_name="SWITCH">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="119 120">w</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="99 100">c</RegexCharacter></RegexSequence><RegexCharacter character_set="104 105">h</RegexCharacter></RegexSequence>"</RegexGroup>                               </RegexOr><RegexGroup group_attributes="" group_index="30" group_name="TYPEDEF">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="121 122">y</RegexCharacter></RegexSequence><RegexCharacter character_set="112 113">p</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="100 101">d</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="102 103">f</RegexCharacter></RegexSequence>"</RegexGroup>                            </RegexOr><RegexGroup group_attributes="" group_index="31" group_name="UNION">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="117 118">u</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence>"</RegexGroup>                                        </RegexOr><RegexGroup group_attributes="" group_index="32" group_name="UNSIGNED">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="117 118">u</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="103 104">g</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="100 101">d</RegexCharacter></RegexSequence>"</RegexGroup>                          </RegexOr><RegexGroup group_attributes="" group_index="33" group_name="VOID">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="118 119">v</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="100 101">d</RegexCharacter></RegexSequence>"</RegexGroup>                                  </RegexOr><RegexGroup group_attributes="" group_index="34" group_name="VOLATILE">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="118 119">v</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence>"</RegexGroup>                            </RegexOr><RegexGroup group_attributes="" group_index="35" group_name="WHILE">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="119 120">w</RegexCharacter></RegexSequence><RegexCharacter character_set="104 105">h</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence>"</RegexGroup>                                        </RegexOr><RegexGroup group_attributes="" group_index="36" group_name="ALIGNAS">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="65 66">A</RegexCharacter></RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="103 104">g</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence>"</RegexGroup>                         </RegexOr><RegexGroup group_attributes="" group_index="37" group_name="ALIGNOF">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="65 66">A</RegexCharacter></RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="103 104">g</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="102 103">f</RegexCharacter></RegexSequence>"</RegexGroup>                               </RegexOr><RegexGroup group_attributes="" group_index="38" group_name="ATOMIC">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="65 66">A</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="109 110">m</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="99 100">c</RegexCharacter></RegexSequence>"</RegexGroup>                          </RegexOr><RegexGroup group_attributes="" group_index="39" group_name="BOOL">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="66 67">B</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence>"</RegexGroup>                                     </RegexOr><RegexGroup group_attributes="" group_index="40" group_name="COMPLEX">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="67 68">C</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="109 110">m</RegexCharacter></RegexSequence><RegexCharacter character_set="112 113">p</RegexCharacter></RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="120 121">x</RegexCharacter></RegexSequence>"</RegexGroup>                               </RegexOr><RegexGroup group_attributes="" group_index="41" group_name="GENERIC">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="71 72">G</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="99 100">c</RegexCharacter></RegexSequence>"</RegexGroup>                                </RegexOr><RegexGroup group_attributes="" group_index="42" group_name="IMAGINARY">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="73 74">I</RegexCharacter></RegexSequence><RegexCharacter character_set="109 110">m</RegexCharacter></RegexSequence><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="103 104">g</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence><RegexCharacter character_set="121 122">y</RegexCharacter></RegexSequence>"</RegexGroup>                               </RegexOr><RegexGroup group_attributes="" group_index="43" group_name="NORETURN">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="78 79">N</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="117 118">u</RegexCharacter></RegexSequence><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence>"</RegexGroup>                             </RegexOr><RegexGroup group_attributes="" group_index="44" group_name="STATIC_ASSERT">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="83 84">S</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="99 100">c</RegexCharacter></RegexSequence><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence>"</RegexGroup>                  </RegexOr><RegexGroup group_attributes="" group_index="45" group_name="THREAD_LOCAL">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="84 85">T</RegexCharacter></RegexSequence><RegexCharacter character_set="104 105">h</RegexCharacter></RegexSequence><RegexCharacter character_set="114 115">r</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="100 101">d</RegexCharacter></RegexSequence><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="99 100">c</RegexCharacter></RegexSequence><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence>"</RegexGroup>                            </RegexOr><RegexGroup group_attributes="" group_index="46" group_name="FUNC_NAME">"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="102 103">f</RegexCharacter></RegexSequence><RegexCharacter character_set="117 118">u</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="99 100">c</RegexCharacter></RegexSequence><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence>"</RegexGroup>                          </RegexOr><RegexGroup group_attributes="" group_index="47" group_name="TYPEDEF_NAME"><RegexOr><RegexOr>"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="98 99">b</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="111 112">o</RegexCharacter></RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence>"|"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="99 100">c</RegexCharacter></RegexSequence><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="110 111">n</RegexCharacter></RegexSequence><RegexCharacter character_set="102 103">f</RegexCharacter></RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence><RegexCharacter character_set="97 98">a</RegexCharacter></RegexSequence><RegexCharacter character_set="103 104">g</RegexCharacter></RegexSequence><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence>"</RegexOr>|"<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="115 116">s</RegexCharacter></RegexSequence><RegexCharacter character_set="105 106">i</RegexCharacter></RegexSequence><RegexCharacter character_set="122 123">z</RegexCharacter></RegexSequence><RegexCharacter character_set="101 102">e</RegexCharacter></RegexSequence><RegexCharacter character_set="95 96">_</RegexCharacter></RegexSequence><RegexCharacter character_set="116 117">t</RegexCharacter></RegexSequence>"</RegexOr></RegexGroup>            </RegexOr><RegexGroup group_attributes="" group_index="48" group_name="IDENTIFIER"><RegexGroup group_attributes="" group_index="49" group_name="Identifier">(?<RegexSequence><RegexGroup group_attributes="" group_index="50" group_name="">([<RegexCharacterOr character_set="65 91 95 96 97 123"><RegexCharacterOr character_set="65 91 97 123"><RegexCharacterOr character_set="97 123"><RegexCharacter character_set="" /><RegexCharacterRange character_set="97 123"><RegexCharacter character_set="97 98">a</RegexCharacter>-<RegexCharacter character_set="122 123">z</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacterRange character_set="65 91"><RegexCharacter character_set="65 66">A</RegexCharacter>-<RegexCharacter character_set="90 91">Z</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacter character_set="95 96">_</RegexCharacter></RegexCharacterOr>])</RegexGroup><RegexRepeat count0="0" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="51" group_name="">([<RegexCharacterOr character_set="48 58 65 91 95 96 97 123"><RegexCharacterOr character_set="65 91 95 96 97 123"><RegexCharacterOr character_set="65 91 97 123"><RegexCharacterOr character_set="97 123"><RegexCharacter character_set="" /><RegexCharacterRange character_set="97 123"><RegexCharacter character_set="97 98">a</RegexCharacter>-<RegexCharacter character_set="122 123">z</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacterRange character_set="65 91"><RegexCharacter character_set="65 66">A</RegexCharacter>-<RegexCharacter character_set="90 91">Z</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacter character_set="95 96">_</RegexCharacter></RegexCharacterOr><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>*</RegexRepeat></RegexSequence>)</RegexGroup></RegexGroup> </RegexOr><RegexGroup group_attributes="" group_index="52" group_name="I_CONSTANT"><RegexGroup group_attributes="" group_index="53" group_name="ExpressionIntLiteral">(?<RegexSequence><RegexSequence><RegexGroup group_attributes="" group_index="54" group_name="">(<RegexGroup group_attributes="" group_index="55" group_name="">(<RegexSequence><RegexCharacter character_set="48 49">0</RegexCharacter>[<RegexCharacterOr character_set="88 89 120 121"><RegexCharacterOr character_set="120 121"><RegexCharacter character_set="" /><RegexCharacter character_set="120 121">x</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="88 89">X</RegexCharacter></RegexCharacterOr>]</RegexSequence>)</RegexGroup>)</RegexGroup><RegexRepeat count0="1" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="56" group_name="">([<RegexCharacterOr character_set="48 58 65 71 97 103"><RegexCharacterOr character_set="65 71 97 103"><RegexCharacterOr character_set="97 103"><RegexCharacter character_set="" /><RegexCharacterRange character_set="97 103"><RegexCharacter character_set="97 98">a</RegexCharacter>-<RegexCharacter character_set="102 103">f</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacterRange character_set="65 71"><RegexCharacter character_set="65 66">A</RegexCharacter>-<RegexCharacter character_set="70 71">F</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>+</RegexRepeat></RegexSequence><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="57" group_name="">(<RegexGroup group_attributes="" group_index="58" group_name="">(<RegexOr><RegexGroup group_attributes="" group_index="59" group_name="">(<RegexSequence><RegexGroup group_attributes="" group_index="60" group_name="">(<RegexOr><RegexCharacter character_set="117 118">u</RegexCharacter>|<RegexCharacter character_set="85 86">U</RegexCharacter></RegexOr>)</RegexGroup><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="61" group_name="">(<RegexOr><RegexOr><RegexOr><RegexCharacter character_set="108 109">l</RegexCharacter>|<RegexCharacter character_set="76 77">L</RegexCharacter></RegexOr>|<RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence></RegexOr>|<RegexSequence><RegexCharacter character_set="76 77">L</RegexCharacter><RegexCharacter character_set="76 77">L</RegexCharacter></RegexSequence></RegexOr>)</RegexGroup>?</RegexRepeat></RegexSequence>)</RegexGroup>|<RegexGroup group_attributes="" group_index="62" group_name="">(<RegexSequence><RegexGroup group_attributes="" group_index="63" group_name="">(<RegexOr><RegexOr><RegexOr><RegexCharacter character_set="108 109">l</RegexCharacter>|<RegexCharacter character_set="76 77">L</RegexCharacter></RegexOr>|<RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence></RegexOr>|<RegexSequence><RegexCharacter character_set="76 77">L</RegexCharacter><RegexCharacter character_set="76 77">L</RegexCharacter></RegexSequence></RegexOr>)</RegexGroup><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="64" group_name="">(<RegexOr><RegexCharacter character_set="117 118">u</RegexCharacter>|<RegexCharacter character_set="85 86">U</RegexCharacter></RegexOr>)</RegexGroup>?</RegexRepeat></RegexSequence>)</RegexGroup></RegexOr>)</RegexGroup>)</RegexGroup>?</RegexRepeat></RegexSequence>)</RegexGroup></RegexGroup>                         </RegexOr><RegexGroup group_attributes="" group_index="65" group_name="I_CONSTANT"><RegexGroup group_attributes="" group_index="66" group_name="ExpressionIntLiteral">(?<RegexSequence><RegexSequence><RegexGroup group_attributes="" group_index="67" group_name="">([<RegexCharacterOr character_set="49 58"><RegexCharacter character_set="" /><RegexCharacterRange character_set="49 58"><RegexCharacter character_set="49 50">1</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup><RegexRepeat count0="0" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="68" group_name="">([<RegexCharacterOr character_set="48 58"><RegexCharacter character_set="" /><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>*</RegexRepeat></RegexSequence><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="69" group_name="">(<RegexGroup group_attributes="" group_index="70" group_name="">(<RegexOr><RegexGroup group_attributes="" group_index="71" group_name="">(<RegexSequence><RegexGroup group_attributes="" group_index="72" group_name="">(<RegexOr><RegexCharacter character_set="117 118">u</RegexCharacter>|<RegexCharacter character_set="85 86">U</RegexCharacter></RegexOr>)</RegexGroup><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="73" group_name="">(<RegexOr><RegexOr><RegexOr><RegexCharacter character_set="108 109">l</RegexCharacter>|<RegexCharacter character_set="76 77">L</RegexCharacter></RegexOr>|<RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence></RegexOr>|<RegexSequence><RegexCharacter character_set="76 77">L</RegexCharacter><RegexCharacter character_set="76 77">L</RegexCharacter></RegexSequence></RegexOr>)</RegexGroup>?</RegexRepeat></RegexSequence>)</RegexGroup>|<RegexGroup group_attributes="" group_index="74" group_name="">(<RegexSequence><RegexGroup group_attributes="" group_index="75" group_name="">(<RegexOr><RegexOr><RegexOr><RegexCharacter character_set="108 109">l</RegexCharacter>|<RegexCharacter character_set="76 77">L</RegexCharacter></RegexOr>|<RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence></RegexOr>|<RegexSequence><RegexCharacter character_set="76 77">L</RegexCharacter><RegexCharacter character_set="76 77">L</RegexCharacter></RegexSequence></RegexOr>)</RegexGroup><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="76" group_name="">(<RegexOr><RegexCharacter character_set="117 118">u</RegexCharacter>|<RegexCharacter character_set="85 86">U</RegexCharacter></RegexOr>)</RegexGroup>?</RegexRepeat></RegexSequence>)</RegexGroup></RegexOr>)</RegexGroup>)</RegexGroup>?</RegexRepeat></RegexSequence>)</RegexGroup></RegexGroup>                            </RegexOr><RegexGroup group_attributes="" group_index="77" group_name="I_CONSTANT"><RegexGroup group_attributes="" group_index="78" group_name="ExpressionIntLiteral">(?<RegexSequence><RegexSequence>"<RegexSequence><RegexEmpty /><RegexCharacter character_set="48 49">0</RegexCharacter></RegexSequence>"<RegexRepeat count0="0" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="79" group_name="">([<RegexCharacterOr character_set="48 56"><RegexCharacter character_set="" /><RegexCharacterRange character_set="48 56"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="55 56">7</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>*</RegexRepeat></RegexSequence><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="80" group_name="">(<RegexGroup group_attributes="" group_index="81" group_name="">(<RegexOr><RegexGroup group_attributes="" group_index="82" group_name="">(<RegexSequence><RegexGroup group_attributes="" group_index="83" group_name="">(<RegexOr><RegexCharacter character_set="117 118">u</RegexCharacter>|<RegexCharacter character_set="85 86">U</RegexCharacter></RegexOr>)</RegexGroup><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="84" group_name="">(<RegexOr><RegexOr><RegexOr><RegexCharacter character_set="108 109">l</RegexCharacter>|<RegexCharacter character_set="76 77">L</RegexCharacter></RegexOr>|<RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence></RegexOr>|<RegexSequence><RegexCharacter character_set="76 77">L</RegexCharacter><RegexCharacter character_set="76 77">L</RegexCharacter></RegexSequence></RegexOr>)</RegexGroup>?</RegexRepeat></RegexSequence>)</RegexGroup>|<RegexGroup group_attributes="" group_index="85" group_name="">(<RegexSequence><RegexGroup group_attributes="" group_index="86" group_name="">(<RegexOr><RegexOr><RegexOr><RegexCharacter character_set="108 109">l</RegexCharacter>|<RegexCharacter character_set="76 77">L</RegexCharacter></RegexOr>|<RegexSequence><RegexCharacter character_set="108 109">l</RegexCharacter><RegexCharacter character_set="108 109">l</RegexCharacter></RegexSequence></RegexOr>|<RegexSequence><RegexCharacter character_set="76 77">L</RegexCharacter><RegexCharacter character_set="76 77">L</RegexCharacter></RegexSequence></RegexOr>)</RegexGroup><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="87" group_name="">(<RegexOr><RegexCharacter character_set="117 118">u</RegexCharacter>|<RegexCharacter character_set="85 86">U</RegexCharacter></RegexOr>)</RegexGroup>?</RegexRepeat></RegexSequence>)</RegexGroup></RegexOr>)</RegexGroup>)</RegexGroup>?</RegexRepeat></RegexSequence>)</RegexGroup></RegexGroup>                             </RegexOr><RegexGroup group_attributes="" group_index="88" group_name="I_CONSTANT"><RegexGroup group_attributes="" group_index="89" group_name="ExpressionCharConstant">(?<RegexSequence><RegexSequence><RegexSequence><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="90" group_name="">(<RegexGroup group_attributes="" group_index="91" group_name="">(<RegexOr><RegexOr><RegexCharacter character_set="117 118">u</RegexCharacter>|<RegexCharacter character_set="85 86">U</RegexCharacter></RegexOr>|<RegexCharacter character_set="76 77">L</RegexCharacter></RegexOr>)</RegexGroup>)</RegexGroup>?</RegexRepeat>"<RegexSequence><RegexEmpty /><RegexCharacter character_set="39 40">'</RegexCharacter></RegexSequence>"</RegexSequence><RegexRepeat count0="1" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="92" group_name="">(<RegexOr>[<RegexCharacterNot character_set="0 10 11 39 40 92 93 256">^<RegexCharacterOr character_set="10 11 39 40 92 93"><RegexCharacterOr character_set="39 40 92 93"><RegexCharacterOr character_set="39 40"><RegexCharacter character_set="" /><RegexCharacter character_set="39 40">'</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="92 93">\\</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="10 11">\n</RegexCharacter></RegexCharacterOr></RegexCharacterNot>]|<RegexGroup group_attributes="" group_index="93" group_name="">(<RegexGroup group_attributes="" group_index="94" group_name="">(<RegexSequence><RegexCharacter character_set="92 93">\\</RegexCharacter><RegexGroup group_attributes="" group_index="95" group_name="">(<RegexOr><RegexOr>[<RegexCharacterOr character_set="34 35 39 40 63 64 92 93 97 99 102 103 110 111 114 115 116 117 118 119"><RegexCharacterOr character_set="34 35 39 40 63 64 92 93 97 99 102 103 110 111 114 115 116 117"><RegexCharacterOr character_set="34 35 39 40 63 64 92 93 97 99 102 103 110 111 114 115"><RegexCharacterOr character_set="34 35 39 40 63 64 92 93 97 99 102 103 110 111"><RegexCharacterOr character_set="34 35 39 40 63 64 92 93 97 99 102 103"><RegexCharacterOr character_set="34 35 39 40 63 64 92 93 97 99"><RegexCharacterOr character_set="34 35 39 40 63 64 92 93 97 98"><RegexCharacterOr character_set="34 35 39 40 63 64 92 93"><RegexCharacterOr character_set="34 35 39 40 63 64"><RegexCharacterOr character_set="34 35 39 40"><RegexCharacterOr character_set="39 40"><RegexCharacter character_set="" /><RegexCharacter character_set="39 40">'</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="34 35">"</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="63 64">\?</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="92 93">\\</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="97 98">a</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="98 99">b</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="102 103">f</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="110 111">n</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="114 115">r</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="116 117">t</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="118 119">v</RegexCharacter></RegexCharacterOr>]|<RegexRepeat count0="1" count1="3" non_greedy="false">[<RegexCharacterOr character_set="48 56"><RegexCharacter character_set="" /><RegexCharacterRange character_set="48 56"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="55 56">7</RegexCharacter></RegexCharacterRange></RegexCharacterOr>]{</RegexRepeat></RegexOr>|<RegexSequence><RegexCharacter character_set="120 121">x</RegexCharacter><RegexRepeat count0="1" count1="-1" non_greedy="false">[<RegexCharacterOr character_set="48 58 65 71 97 103"><RegexCharacterOr character_set="65 71 97 103"><RegexCharacterOr character_set="97 103"><RegexCharacter character_set="" /><RegexCharacterRange character_set="97 103"><RegexCharacter character_set="97 98">a</RegexCharacter>-<RegexCharacter character_set="102 103">f</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacterRange character_set="65 71"><RegexCharacter character_set="65 66">A</RegexCharacter>-<RegexCharacter character_set="70 71">F</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>]+</RegexRepeat></RegexSequence></RegexOr>)</RegexGroup></RegexSequence>)</RegexGroup>)</RegexGroup></RegexOr>)</RegexGroup>+</RegexRepeat></RegexSequence>"<RegexSequence><RegexEmpty /><RegexCharacter character_set="39 40">'</RegexCharacter></RegexSequence>"</RegexSequence>)</RegexGroup></RegexGroup>         </RegexOr><RegexGroup group_attributes="" group_index="96" group_name="F_CONSTANT"><RegexGroup group_attributes="" group_index="97" group_name="ExpressionFloatLiteral">(?<RegexSequence><RegexSequence><RegexRepeat count0="1" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="98" group_name="">([<RegexCharacterOr character_set="48 58"><RegexCharacter character_set="" /><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>+</RegexRepeat><RegexGroup group_attributes="" group_index="99" group_name="">(<RegexGroup group_attributes="" group_index="100" group_name="">(<RegexSequence><RegexSequence>[<RegexCharacterOr character_set="69 70 101 102"><RegexCharacterOr character_set="69 70"><RegexCharacter character_set="" /><RegexCharacter character_set="69 70">E</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="101 102">e</RegexCharacter></RegexCharacterOr>]<RegexRepeat count0="0" count1="1" non_greedy="false">[<RegexCharacterOr character_set="43 44 45 46"><RegexCharacterOr character_set="43 44"><RegexCharacter character_set="" /><RegexCharacter character_set="43 44">+</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="45 46">-</RegexCharacter></RegexCharacterOr>]?</RegexRepeat></RegexSequence><RegexRepeat count0="1" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="101" group_name="">([<RegexCharacterOr character_set="48 58"><RegexCharacter character_set="" /><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>+</RegexRepeat></RegexSequence>)</RegexGroup>)</RegexGroup></RegexSequence><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="102" group_name="">(<RegexGroup group_attributes="" group_index="103" group_name="">(<RegexOr><RegexOr><RegexOr><RegexCharacter character_set="102 103">f</RegexCharacter>|<RegexCharacter character_set="70 71">F</RegexCharacter></RegexOr>|<RegexCharacter character_set="108 109">l</RegexCharacter></RegexOr>|<RegexCharacter character_set="76 77">L</RegexCharacter></RegexOr>)</RegexGroup>)</RegexGroup>?</RegexRepeat></RegexSequence>)</RegexGroup></RegexGroup>                               </RegexOr><RegexGroup group_attributes="" group_index="104" group_name="F_CONSTANT"><RegexGroup group_attributes="" group_index="105" group_name="ExpressionFloatLiteral">(?<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexRepeat count0="0" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="106" group_name="">([<RegexCharacterOr character_set="48 58"><RegexCharacter character_set="" /><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>*</RegexRepeat>"<RegexSequence><RegexEmpty /><RegexCharacter character_set="46 47">.</RegexCharacter></RegexSequence>"</RegexSequence><RegexRepeat count0="1" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="107" group_name="">([<RegexCharacterOr character_set="48 58"><RegexCharacter character_set="" /><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>+</RegexRepeat></RegexSequence><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="108" group_name="">(<RegexGroup group_attributes="" group_index="109" group_name="">(<RegexSequence><RegexSequence>[<RegexCharacterOr character_set="69 70 101 102"><RegexCharacterOr character_set="69 70"><RegexCharacter character_set="" /><RegexCharacter character_set="69 70">E</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="101 102">e</RegexCharacter></RegexCharacterOr>]<RegexRepeat count0="0" count1="1" non_greedy="false">[<RegexCharacterOr character_set="43 44 45 46"><RegexCharacterOr character_set="43 44"><RegexCharacter character_set="" /><RegexCharacter character_set="43 44">+</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="45 46">-</RegexCharacter></RegexCharacterOr>]?</RegexRepeat></RegexSequence><RegexRepeat count0="1" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="110" group_name="">([<RegexCharacterOr character_set="48 58"><RegexCharacter character_set="" /><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>+</RegexRepeat></RegexSequence>)</RegexGroup>)</RegexGroup>?</RegexRepeat></RegexSequence><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="111" group_name="">(<RegexGroup group_attributes="" group_index="112" group_name="">(<RegexOr><RegexOr><RegexOr><RegexCharacter character_set="102 103">f</RegexCharacter>|<RegexCharacter character_set="70 71">F</RegexCharacter></RegexOr>|<RegexCharacter character_set="108 109">l</RegexCharacter></RegexOr>|<RegexCharacter character_set="76 77">L</RegexCharacter></RegexOr>)</RegexGroup>)</RegexGroup>?</RegexRepeat></RegexSequence>)</RegexGroup></RegexGroup>                  </RegexOr><RegexGroup group_attributes="" group_index="113" group_name="F_CONSTANT"><RegexGroup group_attributes="" group_index="114" group_name="ExpressionFloatLiteral">(?<RegexSequence><RegexSequence><RegexSequence><RegexRepeat count0="1" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="115" group_name="">([<RegexCharacterOr character_set="48 58"><RegexCharacter character_set="" /><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>+</RegexRepeat>"<RegexSequence><RegexEmpty /><RegexCharacter character_set="46 47">.</RegexCharacter></RegexSequence>"</RegexSequence><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="116" group_name="">(<RegexGroup group_attributes="" group_index="117" group_name="">(<RegexSequence><RegexSequence>[<RegexCharacterOr character_set="69 70 101 102"><RegexCharacterOr character_set="69 70"><RegexCharacter character_set="" /><RegexCharacter character_set="69 70">E</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="101 102">e</RegexCharacter></RegexCharacterOr>]<RegexRepeat count0="0" count1="1" non_greedy="false">[<RegexCharacterOr character_set="43 44 45 46"><RegexCharacterOr character_set="43 44"><RegexCharacter character_set="" /><RegexCharacter character_set="43 44">+</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="45 46">-</RegexCharacter></RegexCharacterOr>]?</RegexRepeat></RegexSequence><RegexRepeat count0="1" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="118" group_name="">([<RegexCharacterOr character_set="48 58"><RegexCharacter character_set="" /><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>+</RegexRepeat></RegexSequence>)</RegexGroup>)</RegexGroup>?</RegexRepeat></RegexSequence><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="119" group_name="">(<RegexGroup group_attributes="" group_index="120" group_name="">(<RegexOr><RegexOr><RegexOr><RegexCharacter character_set="102 103">f</RegexCharacter>|<RegexCharacter character_set="70 71">F</RegexCharacter></RegexOr>|<RegexCharacter character_set="108 109">l</RegexCharacter></RegexOr>|<RegexCharacter character_set="76 77">L</RegexCharacter></RegexOr>)</RegexGroup>)</RegexGroup>?</RegexRepeat></RegexSequence>)</RegexGroup></RegexGroup>                        </RegexOr><RegexGroup group_attributes="" group_index="121" group_name="F_CONSTANT"><RegexGroup group_attributes="" group_index="122" group_name="ExpressionFloatLiteral">(?<RegexSequence><RegexSequence><RegexSequence><RegexGroup group_attributes="" group_index="123" group_name="">(<RegexGroup group_attributes="" group_index="124" group_name="">(<RegexSequence><RegexCharacter character_set="48 49">0</RegexCharacter>[<RegexCharacterOr character_set="88 89 120 121"><RegexCharacterOr character_set="120 121"><RegexCharacter character_set="" /><RegexCharacter character_set="120 121">x</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="88 89">X</RegexCharacter></RegexCharacterOr>]</RegexSequence>)</RegexGroup>)</RegexGroup><RegexRepeat count0="1" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="125" group_name="">([<RegexCharacterOr character_set="48 58 65 71 97 103"><RegexCharacterOr character_set="65 71 97 103"><RegexCharacterOr character_set="97 103"><RegexCharacter character_set="" /><RegexCharacterRange character_set="97 103"><RegexCharacter character_set="97 98">a</RegexCharacter>-<RegexCharacter character_set="102 103">f</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacterRange character_set="65 71"><RegexCharacter character_set="65 66">A</RegexCharacter>-<RegexCharacter character_set="70 71">F</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>+</RegexRepeat></RegexSequence><RegexGroup group_attributes="" group_index="126" group_name="">(<RegexGroup group_attributes="" group_index="127" group_name="">(<RegexSequence><RegexSequence>[<RegexCharacterOr character_set="80 81 112 113"><RegexCharacterOr character_set="80 81"><RegexCharacter character_set="" /><RegexCharacter character_set="80 81">P</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="112 113">p</RegexCharacter></RegexCharacterOr>]<RegexRepeat count0="0" count1="1" non_greedy="false">[<RegexCharacterOr character_set="43 44 45 46"><RegexCharacterOr character_set="43 44"><RegexCharacter character_set="" /><RegexCharacter character_set="43 44">+</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="45 46">-</RegexCharacter></RegexCharacterOr>]?</RegexRepeat></RegexSequence><RegexRepeat count0="1" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="128" group_name="">([<RegexCharacterOr character_set="48 58"><RegexCharacter character_set="" /><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>+</RegexRepeat></RegexSequence>)</RegexGroup>)</RegexGroup></RegexSequence><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="129" group_name="">(<RegexGroup group_attributes="" group_index="130" group_name="">(<RegexOr><RegexOr><RegexOr><RegexCharacter character_set="102 103">f</RegexCharacter>|<RegexCharacter character_set="70 71">F</RegexCharacter></RegexOr>|<RegexCharacter character_set="108 109">l</RegexCharacter></RegexOr>|<RegexCharacter character_set="76 77">L</RegexCharacter></RegexOr>)</RegexGroup>)</RegexGroup>?</RegexRepeat></RegexSequence>)</RegexGroup></RegexGroup>                      </RegexOr><RegexGroup group_attributes="" group_index="131" group_name="F_CONSTANT"><RegexGroup group_attributes="" group_index="132" group_name="ExpressionFloatLiteral">(?<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexGroup group_attributes="" group_index="133" group_name="">(<RegexGroup group_attributes="" group_index="134" group_name="">(<RegexSequence><RegexCharacter character_set="48 49">0</RegexCharacter>[<RegexCharacterOr character_set="88 89 120 121"><RegexCharacterOr character_set="120 121"><RegexCharacter character_set="" /><RegexCharacter character_set="120 121">x</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="88 89">X</RegexCharacter></RegexCharacterOr>]</RegexSequence>)</RegexGroup>)</RegexGroup><RegexRepeat count0="0" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="135" group_name="">([<RegexCharacterOr character_set="48 58 65 71 97 103"><RegexCharacterOr character_set="65 71 97 103"><RegexCharacterOr character_set="97 103"><RegexCharacter character_set="" /><RegexCharacterRange character_set="97 103"><RegexCharacter character_set="97 98">a</RegexCharacter>-<RegexCharacter character_set="102 103">f</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacterRange character_set="65 71"><RegexCharacter character_set="65 66">A</RegexCharacter>-<RegexCharacter character_set="70 71">F</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>*</RegexRepeat></RegexSequence>"<RegexSequence><RegexEmpty /><RegexCharacter character_set="46 47">.</RegexCharacter></RegexSequence>"</RegexSequence><RegexRepeat count0="1" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="136" group_name="">([<RegexCharacterOr character_set="48 58 65 71 97 103"><RegexCharacterOr character_set="65 71 97 103"><RegexCharacterOr character_set="97 103"><RegexCharacter character_set="" /><RegexCharacterRange character_set="97 103"><RegexCharacter character_set="97 98">a</RegexCharacter>-<RegexCharacter character_set="102 103">f</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacterRange character_set="65 71"><RegexCharacter character_set="65 66">A</RegexCharacter>-<RegexCharacter character_set="70 71">F</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>+</RegexRepeat></RegexSequence><RegexGroup group_attributes="" group_index="137" group_name="">(<RegexGroup group_attributes="" group_index="138" group_name="">(<RegexSequence><RegexSequence>[<RegexCharacterOr character_set="80 81 112 113"><RegexCharacterOr character_set="80 81"><RegexCharacter character_set="" /><RegexCharacter character_set="80 81">P</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="112 113">p</RegexCharacter></RegexCharacterOr>]<RegexRepeat count0="0" count1="1" non_greedy="false">[<RegexCharacterOr character_set="43 44 45 46"><RegexCharacterOr character_set="43 44"><RegexCharacter character_set="" /><RegexCharacter character_set="43 44">+</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="45 46">-</RegexCharacter></RegexCharacterOr>]?</RegexRepeat></RegexSequence><RegexRepeat count0="1" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="139" group_name="">([<RegexCharacterOr character_set="48 58"><RegexCharacter character_set="" /><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>+</RegexRepeat></RegexSequence>)</RegexGroup>)</RegexGroup></RegexSequence><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="140" group_name="">(<RegexGroup group_attributes="" group_index="141" group_name="">(<RegexOr><RegexOr><RegexOr><RegexCharacter character_set="102 103">f</RegexCharacter>|<RegexCharacter character_set="70 71">F</RegexCharacter></RegexOr>|<RegexCharacter character_set="108 109">l</RegexCharacter></RegexOr>|<RegexCharacter character_set="76 77">L</RegexCharacter></RegexOr>)</RegexGroup>)</RegexGroup>?</RegexRepeat></RegexSequence>)</RegexGroup></RegexGroup>                        </RegexOr><RegexGroup group_attributes="" group_index="142" group_name="F_CONSTANT"><RegexGroup group_attributes="" group_index="143" group_name="ExpressionFloatLiteral">(?<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexGroup group_attributes="" group_index="144" group_name="">(<RegexGroup group_attributes="" group_index="145" group_name="">(<RegexSequence><RegexCharacter character_set="48 49">0</RegexCharacter>[<RegexCharacterOr character_set="88 89 120 121"><RegexCharacterOr character_set="120 121"><RegexCharacter character_set="" /><RegexCharacter character_set="120 121">x</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="88 89">X</RegexCharacter></RegexCharacterOr>]</RegexSequence>)</RegexGroup>)</RegexGroup><RegexRepeat count0="1" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="146" group_name="">([<RegexCharacterOr character_set="48 58 65 71 97 103"><RegexCharacterOr character_set="65 71 97 103"><RegexCharacterOr character_set="97 103"><RegexCharacter character_set="" /><RegexCharacterRange character_set="97 103"><RegexCharacter character_set="97 98">a</RegexCharacter>-<RegexCharacter character_set="102 103">f</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacterRange character_set="65 71"><RegexCharacter character_set="65 66">A</RegexCharacter>-<RegexCharacter character_set="70 71">F</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>+</RegexRepeat></RegexSequence>"<RegexSequence><RegexEmpty /><RegexCharacter character_set="46 47">.</RegexCharacter></RegexSequence>"</RegexSequence><RegexGroup group_attributes="" group_index="147" group_name="">(<RegexGroup group_attributes="" group_index="148" group_name="">(<RegexSequence><RegexSequence>[<RegexCharacterOr character_set="80 81 112 113"><RegexCharacterOr character_set="80 81"><RegexCharacter character_set="" /><RegexCharacter character_set="80 81">P</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="112 113">p</RegexCharacter></RegexCharacterOr>]<RegexRepeat count0="0" count1="1" non_greedy="false">[<RegexCharacterOr character_set="43 44 45 46"><RegexCharacterOr character_set="43 44"><RegexCharacter character_set="" /><RegexCharacter character_set="43 44">+</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="45 46">-</RegexCharacter></RegexCharacterOr>]?</RegexRepeat></RegexSequence><RegexRepeat count0="1" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="149" group_name="">([<RegexCharacterOr character_set="48 58"><RegexCharacter character_set="" /><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>])</RegexGroup>+</RegexRepeat></RegexSequence>)</RegexGroup>)</RegexGroup></RegexSequence><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="150" group_name="">(<RegexGroup group_attributes="" group_index="151" group_name="">(<RegexOr><RegexOr><RegexOr><RegexCharacter character_set="102 103">f</RegexCharacter>|<RegexCharacter character_set="70 71">F</RegexCharacter></RegexOr>|<RegexCharacter character_set="108 109">l</RegexCharacter></RegexOr>|<RegexCharacter character_set="76 77">L</RegexCharacter></RegexOr>)</RegexGroup>)</RegexGroup>?</RegexRepeat></RegexSequence>)</RegexGroup></RegexGroup>                        </RegexOr><RegexGroup group_attributes="" group_index="152" group_name="STRING_LITERAL"><RegexGroup group_attributes="" group_index="153" group_name="ExpressionStringLiteral">(?<RegexRepeat count0="1" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="154" group_name="">(<RegexSequence><RegexSequence><RegexSequence><RegexSequence><RegexRepeat count0="0" count1="1" non_greedy="false"><RegexGroup group_attributes="" group_index="155" group_name="">(<RegexGroup group_attributes="" group_index="156" group_name="">(<RegexOr><RegexOr><RegexOr><RegexSequence><RegexCharacter character_set="117 118">u</RegexCharacter><RegexCharacter character_set="56 57">8</RegexCharacter></RegexSequence>|<RegexCharacter character_set="117 118">u</RegexCharacter></RegexOr>|<RegexCharacter character_set="85 86">U</RegexCharacter></RegexOr>|<RegexCharacter character_set="76 77">L</RegexCharacter></RegexOr>)</RegexGroup>)</RegexGroup>?</RegexRepeat><RegexCharacter character_set="34 35">\"</RegexCharacter></RegexSequence><RegexGroup group_attributes="" group_index="157" group_name="Text">(?<RegexRepeat count0="0" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="158" group_name="">(<RegexOr>[<RegexCharacterNot character_set="0 10 11 34 35 92 93 256">^<RegexCharacterOr character_set="10 11 34 35 92 93"><RegexCharacterOr character_set="34 35 92 93"><RegexCharacterOr character_set="34 35"><RegexCharacter character_set="" /><RegexCharacter character_set="34 35">"</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="92 93">\\</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="10 11">\n</RegexCharacter></RegexCharacterOr></RegexCharacterNot>]|<RegexGroup group_attributes="" group_index="159" group_name="">(<RegexGroup group_attributes="" group_index="160" group_name="">(<RegexSequence><RegexCharacter character_set="92 93">\\</RegexCharacter><RegexGroup group_attributes="" group_index="161" group_name="">(<RegexOr><RegexOr>[<RegexCharacterOr character_set="34 35 39 40 63 64 92 93 97 99 102 103 110 111 114 115 116 117 118 119"><RegexCharacterOr character_set="34 35 39 40 63 64 92 93 97 99 102 103 110 111 114 115 116 117"><RegexCharacterOr character_set="34 35 39 40 63 64 92 93 97 99 102 103 110 111 114 115"><RegexCharacterOr character_set="34 35 39 40 63 64 92 93 97 99 102 103 110 111"><RegexCharacterOr character_set="34 35 39 40 63 64 92 93 97 99 102 103"><RegexCharacterOr character_set="34 35 39 40 63 64 92 93 97 99"><RegexCharacterOr character_set="34 35 39 40 63 64 92 93 97 98"><RegexCharacterOr character_set="34 35 39 40 63 64 92 93"><RegexCharacterOr character_set="34 35 39 40 63 64"><RegexCharacterOr character_set="34 35 39 40"><RegexCharacterOr character_set="39 40"><RegexCharacter character_set="" /><RegexCharacter character_set="39 40">'</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="34 35">"</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="63 64">\?</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="92 93">\\</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="97 98">a</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="98 99">b</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="102 103">f</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="110 111">n</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="114 115">r</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="116 117">t</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="118 119">v</RegexCharacter></RegexCharacterOr>]|<RegexRepeat count0="1" count1="3" non_greedy="false">[<RegexCharacterOr character_set="48 56"><RegexCharacter character_set="" /><RegexCharacterRange character_set="48 56"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="55 56">7</RegexCharacter></RegexCharacterRange></RegexCharacterOr>]{</RegexRepeat></RegexOr>|<RegexSequence><RegexCharacter character_set="120 121">x</RegexCharacter><RegexRepeat count0="1" count1="-1" non_greedy="false">[<RegexCharacterOr character_set="48 58 65 71 97 103"><RegexCharacterOr character_set="65 71 97 103"><RegexCharacterOr character_set="97 103"><RegexCharacter character_set="" /><RegexCharacterRange character_set="97 103"><RegexCharacter character_set="97 98">a</RegexCharacter>-<RegexCharacter character_set="102 103">f</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacterRange character_set="65 71"><RegexCharacter character_set="65 66">A</RegexCharacter>-<RegexCharacter character_set="70 71">F</RegexCharacter></RegexCharacterRange></RegexCharacterOr><RegexCharacterRange character_set="48 58"><RegexCharacter character_set="48 49">0</RegexCharacter>-<RegexCharacter character_set="57 58">9</RegexCharacter></RegexCharacterRange></RegexCharacterOr>]+</RegexRepeat></RegexSequence></RegexOr>)</RegexGroup></RegexSequence>)</RegexGroup>)</RegexGroup></RegexOr>)</RegexGroup>*</RegexRepeat>)</RegexGroup></RegexSequence><RegexCharacter character_set="34 35">\"</RegexCharacter></RegexSequence><RegexRepeat count0="0" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="162" group_name="">([<RegexCharacterOr character_set="9 13 32 33"><RegexCharacterOr character_set="9 12 32 33"><RegexCharacterOr character_set="9 10 11 12 32 33"><RegexCharacterOr character_set="9 10 32 33"><RegexCharacterOr character_set="32 33"><RegexCharacter character_set="" /><RegexCharacter character_set="32 33"> </RegexCharacter></RegexCharacterOr><RegexCharacter character_set="9 10">\t</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="11 12">\v</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="10 11">\n</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="12 13">\f</RegexCharacter></RegexCharacterOr>])</RegexGroup>*</RegexRepeat></RegexSequence>)</RegexGroup>+</RegexRepeat>)</RegexGroup></RegexGroup>     </RegexOr><RegexGroup group_attributes="" group_index="163" group_name="ELLIPSIS">"<RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="46 47">.</RegexCharacter></RegexSequence><RegexCharacter character_set="46 47">.</RegexCharacter></RegexSequence><RegexCharacter character_set="46 47">.</RegexCharacter></RegexSequence>"</RegexGroup>                                    </RegexOr><RegexGroup group_attributes="" group_index="164" group_name="RIGHT_ASSIGN">"<RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="62 63">&gt;</RegexCharacter></RegexSequence><RegexCharacter character_set="62 63">&gt;</RegexCharacter></RegexSequence><RegexCharacter character_set="61 62">=</RegexCharacter></RegexSequence>"</RegexGroup>                                  </RegexOr><RegexGroup group_attributes="" group_index="165" group_name="LEFT_ASSIGN">"<RegexSequence><RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="60 61">&lt;</RegexCharacter></RegexSequence><RegexCharacter character_set="60 61">&lt;</RegexCharacter></RegexSequence><RegexCharacter character_set="61 62">=</RegexCharacter></RegexSequence>"</RegexGroup>                                   </RegexOr><RegexGroup group_attributes="" group_index="166" group_name="ADD_ASSIGN">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="43 44">+</RegexCharacter></RegexSequence><RegexCharacter character_set="61 62">=</RegexCharacter></RegexSequence>"</RegexGroup>                                 </RegexOr><RegexGroup group_attributes="" group_index="167" group_name="SUB_ASSIGN">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="45 46">-</RegexCharacter></RegexSequence><RegexCharacter character_set="61 62">=</RegexCharacter></RegexSequence>"</RegexGroup>                                 </RegexOr><RegexGroup group_attributes="" group_index="168" group_name="MUL_ASSIGN">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="42 43">*</RegexCharacter></RegexSequence><RegexCharacter character_set="61 62">=</RegexCharacter></RegexSequence>"</RegexGroup>                                 </RegexOr><RegexGroup group_attributes="" group_index="169" group_name="DIV_ASSIGN">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="47 48">/</RegexCharacter></RegexSequence><RegexCharacter character_set="61 62">=</RegexCharacter></RegexSequence>"</RegexGroup>                                 </RegexOr><RegexGroup group_attributes="" group_index="170" group_name="MOD_ASSIGN">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="37 38">%</RegexCharacter></RegexSequence><RegexCharacter character_set="61 62">=</RegexCharacter></RegexSequence>"</RegexGroup>                                 </RegexOr><RegexGroup group_attributes="" group_index="171" group_name="AND_ASSIGN">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="38 39">&amp;</RegexCharacter></RegexSequence><RegexCharacter character_set="61 62">=</RegexCharacter></RegexSequence>"</RegexGroup>                                     </RegexOr><RegexGroup group_attributes="" group_index="172" group_name="XOR_ASSIGN">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="94 95">^</RegexCharacter></RegexSequence><RegexCharacter character_set="61 62">=</RegexCharacter></RegexSequence>"</RegexGroup>                                 </RegexOr><RegexGroup group_attributes="" group_index="173" group_name="OR_ASSIGN">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="124 125">|</RegexCharacter></RegexSequence><RegexCharacter character_set="61 62">=</RegexCharacter></RegexSequence>"</RegexGroup>                                        </RegexOr><RegexGroup group_attributes="" group_index="174" group_name="RIGHT_OP">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="62 63">&gt;</RegexCharacter></RegexSequence><RegexCharacter character_set="62 63">&gt;</RegexCharacter></RegexSequence>"</RegexGroup>                                     </RegexOr><RegexGroup group_attributes="" group_index="175" group_name="LEFT_OP">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="60 61">&lt;</RegexCharacter></RegexSequence><RegexCharacter character_set="60 61">&lt;</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="176" group_name="INC_OP">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="43 44">+</RegexCharacter></RegexSequence><RegexCharacter character_set="43 44">+</RegexCharacter></RegexSequence>"</RegexGroup>                                     </RegexOr><RegexGroup group_attributes="" group_index="177" group_name="DEC_OP">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="45 46">-</RegexCharacter></RegexSequence><RegexCharacter character_set="45 46">-</RegexCharacter></RegexSequence>"</RegexGroup>                                     </RegexOr><RegexGroup group_attributes="" group_index="178" group_name="PTR_OP">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="45 46">-</RegexCharacter></RegexSequence><RegexCharacter character_set="62 63">&gt;</RegexCharacter></RegexSequence>"</RegexGroup>                                  </RegexOr><RegexGroup group_attributes="" group_index="179" group_name="AND_OP">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="38 39">&amp;</RegexCharacter></RegexSequence><RegexCharacter character_set="38 39">&amp;</RegexCharacter></RegexSequence>"</RegexGroup>                                     </RegexOr><RegexGroup group_attributes="" group_index="180" group_name="OR_OP">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="124 125">|</RegexCharacter></RegexSequence><RegexCharacter character_set="124 125">|</RegexCharacter></RegexSequence>"</RegexGroup>                                  </RegexOr><RegexGroup group_attributes="" group_index="181" group_name="LE_OP">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="60 61">&lt;</RegexCharacter></RegexSequence><RegexCharacter character_set="61 62">=</RegexCharacter></RegexSequence>"</RegexGroup>                                   </RegexOr><RegexGroup group_attributes="" group_index="182" group_name="GE_OP">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="62 63">&gt;</RegexCharacter></RegexSequence><RegexCharacter character_set="61 62">=</RegexCharacter></RegexSequence>"</RegexGroup>                                   </RegexOr><RegexGroup group_attributes="" group_index="183" group_name="EQ_OP">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="61 62">=</RegexCharacter></RegexSequence><RegexCharacter character_set="61 62">=</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="184" group_name="NE_OP">"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="33 34">!</RegexCharacter></RegexSequence><RegexCharacter character_set="61 62">=</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="185" group_name="X_3B">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="59 60">;</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="186" group_name="X_7B"><RegexGroup group_attributes="" group_index="187" group_name="">(<RegexOr>"<RegexSequence><RegexEmpty /><RegexCharacter character_set="123 124">{</RegexCharacter></RegexSequence>"|"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="60 61">&lt;</RegexCharacter></RegexSequence><RegexCharacter character_set="37 38">%</RegexCharacter></RegexSequence>"</RegexOr>)</RegexGroup></RegexGroup>                                </RegexOr><RegexGroup group_attributes="" group_index="188" group_name="X_7D"><RegexGroup group_attributes="" group_index="189" group_name="">(<RegexOr>"<RegexSequence><RegexEmpty /><RegexCharacter character_set="125 126">}</RegexCharacter></RegexSequence>"|"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="37 38">%</RegexCharacter></RegexSequence><RegexCharacter character_set="62 63">&gt;</RegexCharacter></RegexSequence>"</RegexOr>)</RegexGroup></RegexGroup>                                </RegexOr><RegexGroup group_attributes="" group_index="190" group_name="X_2C">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="44 45">,</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="191" group_name="X_3A">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="58 59">:</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="192" group_name="X_3D">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="61 62">=</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="193" group_name="X_28">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="40 41">(</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="194" group_name="X_29">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="41 42">)</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="195" group_name="X_5B"><RegexGroup group_attributes="" group_index="196" group_name="">(<RegexOr>"<RegexSequence><RegexEmpty /><RegexCharacter character_set="91 92">[</RegexCharacter></RegexSequence>"|"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="60 61">&lt;</RegexCharacter></RegexSequence><RegexCharacter character_set="58 59">:</RegexCharacter></RegexSequence>"</RegexOr>)</RegexGroup></RegexGroup>                          </RegexOr><RegexGroup group_attributes="" group_index="197" group_name="X_5D"><RegexGroup group_attributes="" group_index="198" group_name="">(<RegexOr>"<RegexSequence><RegexEmpty /><RegexCharacter character_set="93 94">]</RegexCharacter></RegexSequence>"|"<RegexSequence><RegexSequence><RegexEmpty /><RegexCharacter character_set="58 59">:</RegexCharacter></RegexSequence><RegexCharacter character_set="62 63">&gt;</RegexCharacter></RegexSequence>"</RegexOr>)</RegexGroup></RegexGroup>                          </RegexOr><RegexGroup group_attributes="" group_index="199" group_name="X_2E">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="46 47">.</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="200" group_name="X_26">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="38 39">&amp;</RegexCharacter></RegexSequence>"</RegexGroup>                                  </RegexOr><RegexGroup group_attributes="" group_index="201" group_name="X_21">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="33 34">!</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="202" group_name="X_7E">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="126 127">~</RegexCharacter></RegexSequence>"</RegexGroup>                                    </RegexOr><RegexGroup group_attributes="" group_index="203" group_name="X_2D">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="45 46">-</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="204" group_name="X_2B">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="43 44">+</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="205" group_name="X_2A">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="42 43">*</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="206" group_name="X_2F">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="47 48">/</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="207" group_name="X_25">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="37 38">%</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="208" group_name="X_3C">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="60 61">&lt;</RegexCharacter></RegexSequence>"</RegexGroup>                                   </RegexOr><RegexGroup group_attributes="" group_index="209" group_name="X_3E">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="62 63">&gt;</RegexCharacter></RegexSequence>"</RegexGroup>                                   </RegexOr><RegexGroup group_attributes="" group_index="210" group_name="X_5E">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="94 95">^</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="211" group_name="X_7C">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="124 125">|</RegexCharacter></RegexSequence>"</RegexGroup>                                    </RegexOr><RegexGroup group_attributes="" group_index="212" group_name="X_3F">"<RegexSequence><RegexEmpty /><RegexCharacter character_set="63 64">?</RegexCharacter></RegexSequence>"</RegexGroup>                                      </RegexOr><RegexGroup group_attributes="" group_index="213" group_name=""><RegexRepeat count0="1" count1="-1" non_greedy="false"><RegexGroup group_attributes="" group_index="214" group_name="">([<RegexCharacterOr character_set="9 13 32 33"><RegexCharacterOr character_set="9 12 32 33"><RegexCharacterOr character_set="9 10 11 12 32 33"><RegexCharacterOr character_set="9 10 32 33"><RegexCharacterOr character_set="32 33"><RegexCharacter character_set="" /><RegexCharacter character_set="32 33"> </RegexCharacter></RegexCharacterOr><RegexCharacter character_set="9 10">\t</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="11 12">\v</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="10 11">\n</RegexCharacter></RegexCharacterOr><RegexCharacter character_set="12 13">\f</RegexCharacter></RegexCharacterOr>])</RegexGroup>+</RegexRepeat></RegexGroup>                                   </RegexOr><RegexGroup group_attributes="" group_index="215" group_name=""><RegexCharacter character_set="0 10 11 256">.</RegexCharacter></RegexGroup>                                   </RegexOr></RegexAnd>
-</root>
diff --git a/ansi_c_tokens.py b/ansi_c_tokens.py
deleted file mode 100644 (file)
index 8814643..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-IDENTIFIER = 258
-I_CONSTANT = 259
-F_CONSTANT = 260
-STRING_LITERAL = 261
-FUNC_NAME = 262
-SIZEOF = 263
-PTR_OP = 264
-INC_OP = 265
-DEC_OP = 266
-LEFT_OP = 267
-RIGHT_OP = 268
-LE_OP = 269
-GE_OP = 270
-EQ_OP = 271
-NE_OP = 272
-AND_OP = 273
-OR_OP = 274
-MUL_ASSIGN = 275
-DIV_ASSIGN = 276
-MOD_ASSIGN = 277
-ADD_ASSIGN = 278
-SUB_ASSIGN = 279
-LEFT_ASSIGN = 280
-RIGHT_ASSIGN = 281
-AND_ASSIGN = 282
-XOR_ASSIGN = 283
-OR_ASSIGN = 284
-TYPEDEF_NAME = 285
-ENUMERATION_CONSTANT = 286
-TYPEDEF = 287
-EXTERN = 288
-STATIC = 289
-AUTO = 290
-REGISTER = 291
-INLINE = 292
-CONST = 293
-RESTRICT = 294
-VOLATILE = 295
-BOOL = 296
-CHAR = 297
-SHORT = 298
-INT = 299
-LONG = 300
-SIGNED = 301
-UNSIGNED = 302
-FLOAT = 303
-DOUBLE = 304
-VOID = 305
-COMPLEX = 306
-IMAGINARY = 307
-STRUCT = 308
-UNION = 309
-ENUM = 310
-ELLIPSIS = 311
-CASE = 312
-DEFAULT = 313
-IF = 314
-ELSE = 315
-SWITCH = 316
-WHILE = 317
-DO = 318
-FOR = 319
-GOTO = 320
-CONTINUE = 321
-BREAK = 322
-RETURN = 323
-ALIGNAS = 324
-ALIGNOF = 325
-ATOMIC = 326
-GENERIC = 327
-NORETURN = 328
-STATIC_ASSERT = 329
-THREAD_LOCAL = 330
diff --git a/ansi_c_yacc.xml b/ansi_c_yacc.xml
deleted file mode 100644 (file)
index 3daf1b1..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<root>
-  <Grammar associativities="" eof_terminal="256" n_terminals="331" ref="0"><Grammar_Production lhs_nonterminal="0" precedence="-1"><Grammar_Production_NamedSymbol name="block_item_list_opt" nonterminal_set="243 245" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="1" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionIdentifier"><Grammar_Production_NamedSymbol name="IDENTIFIER" nonterminal_set="" terminal_set="258 259" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="2" precedence="-1"><Grammar_Production_NamedSymbol name="constant" nonterminal_set="6 9" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="3" precedence="-1"><Grammar_Production_NamedSymbol name="string" nonterminal_set="10 12" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="4" precedence="-1"><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="expression" nonterminal_set="91 93" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production><Grammar_Production lhs_nonterminal="5" precedence="-1"><Grammar_Production_NamedSymbol name="generic_selection" nonterminal_set="12 13" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="6" precedence="-1"><Grammar_Production_NamedSymbol name="I_CONSTANT" nonterminal_set="" terminal_set="259 260" /></Grammar_Production><Grammar_Production lhs_nonterminal="7" precedence="-1"><Grammar_Production_NamedSymbol name="F_CONSTANT" nonterminal_set="" terminal_set="260 261" /></Grammar_Production><Grammar_Production lhs_nonterminal="8" precedence="-1"><Grammar_Production_NamedSymbol name="ENUMERATION_CONSTANT" nonterminal_set="" terminal_set="286 287" /></Grammar_Production><Grammar_Production lhs_nonterminal="9" precedence="-1"><Grammar_Production_NamedSymbol name="IDENTIFIER" nonterminal_set="" terminal_set="258 259" /></Grammar_Production><Grammar_Production lhs_nonterminal="10" precedence="-1"><Grammar_Production_NamedSymbol name="STRING_LITERAL" nonterminal_set="" terminal_set="261 262" /></Grammar_Production><Grammar_Production lhs_nonterminal="11" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionFunctionName"><Grammar_Production_NamedSymbol name="FUNC_NAME" nonterminal_set="" terminal_set="262 263" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="12" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="GenericSelection"><Grammar_Production_NamedSymbol name="GENERIC" nonterminal_set="" terminal_set="327 328" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="44 45" /><Grammar_Production_Group attributes="" index="1" name="GenericAssociationList"><Grammar_Production_NamedSymbol name="generic_association_list" nonterminal_set="13 15" terminal_set="" /></Grammar_Production_Group><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="13" precedence="-1"><Grammar_Production_NamedSymbol name="generic_association" nonterminal_set="15 16" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="14" precedence="-1"><Grammar_Production_NamedSymbol name="generic_association_list" nonterminal_set="13 15" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="44 45" /><Grammar_Production_NamedSymbol name="generic_association" nonterminal_set="15 16" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="15" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="GenericAssociation"><Grammar_Production_NamedSymbol name="type_name_or_default" nonterminal_set="16 18" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="58 59" /><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="16" precedence="-1"><Grammar_Production_NamedSymbol name="type_name" nonterminal_set="197 198" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="17" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DefaultTypeName"><Grammar_Production_NamedSymbol name="DEFAULT" nonterminal_set="" terminal_set="313 314" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="18" precedence="-1"><Grammar_Production_NamedSymbol name="primary_expression" nonterminal_set="1 6" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="19" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionIndex"><Grammar_Production_NamedSymbol name="postfix_expression" nonterminal_set="18 26" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="91 92" /><Grammar_Production_NamedSymbol name="expression" nonterminal_set="91 93" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="93 94" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="20" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionCall"><Grammar_Production_NamedSymbol name="postfix_expression" nonterminal_set="18 26" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_Group attributes="" index="1" name="ArgumentExpressionList"><Grammar_Production_NamedSymbol name="argument_expression_list_opt" nonterminal_set="26 28" terminal_set="" /></Grammar_Production_Group><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="21" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionField"><Grammar_Production_NamedSymbol name="postfix_expression" nonterminal_set="18 26" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="46 47" /><Grammar_Production_NamedSymbol name="IDENTIFIER" nonterminal_set="" terminal_set="258 259" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="22" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionFieldDereference"><Grammar_Production_NamedSymbol name="postfix_expression" nonterminal_set="18 26" terminal_set="" /><Grammar_Production_NamedSymbol name="PTR_OP" nonterminal_set="" terminal_set="264 265" /><Grammar_Production_NamedSymbol name="IDENTIFIER" nonterminal_set="" terminal_set="258 259" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="23" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionPostIncrement"><Grammar_Production_NamedSymbol name="postfix_expression" nonterminal_set="18 26" terminal_set="" /><Grammar_Production_NamedSymbol name="INC_OP" nonterminal_set="" terminal_set="265 266" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="24" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionPostDecrement"><Grammar_Production_NamedSymbol name="postfix_expression" nonterminal_set="18 26" terminal_set="" /><Grammar_Production_NamedSymbol name="DEC_OP" nonterminal_set="" terminal_set="266 267" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="25" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionArray"><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="type_name" nonterminal_set="197 198" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="123 124" /><Grammar_Production_Group attributes="" index="1" name="DesignatorInitializerList"><Grammar_Production_NamedSymbol name="designator_initializer_list_comma_opt" nonterminal_set="214 217" terminal_set="" /></Grammar_Production_Group><Grammar_Production_Symbol nonterminal_set="" terminal_set="125 126" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="26" precedence="-1" /><Grammar_Production lhs_nonterminal="27" precedence="-1"><Grammar_Production_NamedSymbol name="argument_expression_list" nonterminal_set="28 30" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="28" precedence="-1"><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="29" precedence="-1"><Grammar_Production_NamedSymbol name="argument_expression_list" nonterminal_set="28 30" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="44 45" /><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="30" precedence="-1"><Grammar_Production_NamedSymbol name="postfix_expression" nonterminal_set="18 26" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="31" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionPreIncrement"><Grammar_Production_NamedSymbol name="INC_OP" nonterminal_set="" terminal_set="265 266" /><Grammar_Production_NamedSymbol name="unary_expression" nonterminal_set="30 42" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="32" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionPreDecrement"><Grammar_Production_NamedSymbol name="DEC_OP" nonterminal_set="" terminal_set="266 267" /><Grammar_Production_NamedSymbol name="unary_expression" nonterminal_set="30 42" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="33" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionAddressOf"><Grammar_Production_Symbol nonterminal_set="" terminal_set="38 39" /><Grammar_Production_NamedSymbol name="cast_expression" nonterminal_set="42 44" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="34" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionDereference"><Grammar_Production_Symbol nonterminal_set="" terminal_set="42 43" /><Grammar_Production_NamedSymbol name="cast_expression" nonterminal_set="42 44" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="35" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionPlus"><Grammar_Production_Symbol nonterminal_set="" terminal_set="43 44" /><Grammar_Production_NamedSymbol name="cast_expression" nonterminal_set="42 44" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="36" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionMinus"><Grammar_Production_Symbol nonterminal_set="" terminal_set="45 46" /><Grammar_Production_NamedSymbol name="cast_expression" nonterminal_set="42 44" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="37" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionBitwiseNot"><Grammar_Production_Symbol nonterminal_set="" terminal_set="126 127" /><Grammar_Production_NamedSymbol name="cast_expression" nonterminal_set="42 44" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="38" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionLogicalNot"><Grammar_Production_Symbol nonterminal_set="" terminal_set="33 34" /><Grammar_Production_NamedSymbol name="cast_expression" nonterminal_set="42 44" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="39" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionSizeOfExpression"><Grammar_Production_NamedSymbol name="SIZEOF" nonterminal_set="" terminal_set="263 264" /><Grammar_Production_NamedSymbol name="unary_expression" nonterminal_set="30 42" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="40" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionSizeOfType"><Grammar_Production_NamedSymbol name="SIZEOF" nonterminal_set="" terminal_set="263 264" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="type_name" nonterminal_set="197 198" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="41" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionAlignOfType"><Grammar_Production_NamedSymbol name="ALIGNOF" nonterminal_set="" terminal_set="325 326" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="type_name" nonterminal_set="197 198" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="42" precedence="-1"><Grammar_Production_NamedSymbol name="unary_expression" nonterminal_set="30 42" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="43" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionCast"><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="type_name" nonterminal_set="197 198" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /><Grammar_Production_NamedSymbol name="cast_expression" nonterminal_set="42 44" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="44" precedence="-1"><Grammar_Production_NamedSymbol name="cast_expression" nonterminal_set="42 44" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="45" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionMultiply"><Grammar_Production_NamedSymbol name="multiplicative_expression" nonterminal_set="44 48" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="42 43" /><Grammar_Production_NamedSymbol name="cast_expression" nonterminal_set="42 44" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="46" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionDivide"><Grammar_Production_NamedSymbol name="multiplicative_expression" nonterminal_set="44 48" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="47 48" /><Grammar_Production_NamedSymbol name="cast_expression" nonterminal_set="42 44" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="47" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionModulo"><Grammar_Production_NamedSymbol name="multiplicative_expression" nonterminal_set="44 48" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="37 38" /><Grammar_Production_NamedSymbol name="cast_expression" nonterminal_set="42 44" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="48" precedence="-1"><Grammar_Production_NamedSymbol name="multiplicative_expression" nonterminal_set="44 48" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="49" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionAdd"><Grammar_Production_NamedSymbol name="additive_expression" nonterminal_set="48 51" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="43 44" /><Grammar_Production_NamedSymbol name="multiplicative_expression" nonterminal_set="44 48" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="50" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionSubtract"><Grammar_Production_NamedSymbol name="additive_expression" nonterminal_set="48 51" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="45 46" /><Grammar_Production_NamedSymbol name="multiplicative_expression" nonterminal_set="44 48" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="51" precedence="-1"><Grammar_Production_NamedSymbol name="additive_expression" nonterminal_set="48 51" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="52" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionShiftLeft"><Grammar_Production_NamedSymbol name="shift_expression" nonterminal_set="51 54" terminal_set="" /><Grammar_Production_NamedSymbol name="LEFT_OP" nonterminal_set="" terminal_set="267 268" /><Grammar_Production_NamedSymbol name="additive_expression" nonterminal_set="48 51" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="53" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionShiftRight"><Grammar_Production_NamedSymbol name="shift_expression" nonterminal_set="51 54" terminal_set="" /><Grammar_Production_NamedSymbol name="RIGHT_OP" nonterminal_set="" terminal_set="268 269" /><Grammar_Production_NamedSymbol name="additive_expression" nonterminal_set="48 51" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="54" precedence="-1"><Grammar_Production_NamedSymbol name="shift_expression" nonterminal_set="51 54" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="55" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionLessThan"><Grammar_Production_NamedSymbol name="relational_expression" nonterminal_set="54 59" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="60 61" /><Grammar_Production_NamedSymbol name="shift_expression" nonterminal_set="51 54" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="56" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionGreaterThan"><Grammar_Production_NamedSymbol name="relational_expression" nonterminal_set="54 59" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="62 63" /><Grammar_Production_NamedSymbol name="shift_expression" nonterminal_set="51 54" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="57" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionLessThanOrEqual"><Grammar_Production_NamedSymbol name="relational_expression" nonterminal_set="54 59" terminal_set="" /><Grammar_Production_NamedSymbol name="LE_OP" nonterminal_set="" terminal_set="269 270" /><Grammar_Production_NamedSymbol name="shift_expression" nonterminal_set="51 54" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="58" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionGreaterThanOrEqual"><Grammar_Production_NamedSymbol name="relational_expression" nonterminal_set="54 59" terminal_set="" /><Grammar_Production_NamedSymbol name="GE_OP" nonterminal_set="" terminal_set="270 271" /><Grammar_Production_NamedSymbol name="shift_expression" nonterminal_set="51 54" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="59" precedence="-1"><Grammar_Production_NamedSymbol name="relational_expression" nonterminal_set="54 59" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="60" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionEqual"><Grammar_Production_NamedSymbol name="equality_expression" nonterminal_set="59 62" terminal_set="" /><Grammar_Production_NamedSymbol name="EQ_OP" nonterminal_set="" terminal_set="271 272" /><Grammar_Production_NamedSymbol name="relational_expression" nonterminal_set="54 59" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="61" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionNotEqual"><Grammar_Production_NamedSymbol name="equality_expression" nonterminal_set="59 62" terminal_set="" /><Grammar_Production_NamedSymbol name="NE_OP" nonterminal_set="" terminal_set="272 273" /><Grammar_Production_NamedSymbol name="relational_expression" nonterminal_set="54 59" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="62" precedence="-1"><Grammar_Production_NamedSymbol name="equality_expression" nonterminal_set="59 62" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="63" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionBitwiseAnd"><Grammar_Production_NamedSymbol name="and_expression" nonterminal_set="62 64" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="38 39" /><Grammar_Production_NamedSymbol name="equality_expression" nonterminal_set="59 62" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="64" precedence="-1"><Grammar_Production_NamedSymbol name="and_expression" nonterminal_set="62 64" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="65" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionExclusiveOr"><Grammar_Production_NamedSymbol name="exclusive_or_expression" nonterminal_set="64 66" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="94 95" /><Grammar_Production_NamedSymbol name="and_expression" nonterminal_set="62 64" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="66" precedence="-1"><Grammar_Production_NamedSymbol name="exclusive_or_expression" nonterminal_set="64 66" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="67" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionBitwiseOr"><Grammar_Production_NamedSymbol name="inclusive_or_expression" nonterminal_set="66 68" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="124 125" /><Grammar_Production_NamedSymbol name="exclusive_or_expression" nonterminal_set="64 66" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="68" precedence="-1"><Grammar_Production_NamedSymbol name="inclusive_or_expression" nonterminal_set="66 68" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="69" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionLogicalAnd"><Grammar_Production_NamedSymbol name="logical_and_expression" nonterminal_set="68 70" terminal_set="" /><Grammar_Production_NamedSymbol name="AND_OP" nonterminal_set="" terminal_set="273 274" /><Grammar_Production_NamedSymbol name="inclusive_or_expression" nonterminal_set="66 68" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="70" precedence="-1"><Grammar_Production_NamedSymbol name="logical_and_expression" nonterminal_set="68 70" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="71" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionLogicalOr"><Grammar_Production_NamedSymbol name="logical_or_expression" nonterminal_set="70 72" terminal_set="" /><Grammar_Production_NamedSymbol name="OR_OP" nonterminal_set="" terminal_set="274 275" /><Grammar_Production_NamedSymbol name="logical_and_expression" nonterminal_set="68 70" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="72" precedence="-1"><Grammar_Production_NamedSymbol name="logical_or_expression" nonterminal_set="70 72" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="73" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionConditional"><Grammar_Production_NamedSymbol name="logical_or_expression" nonterminal_set="70 72" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="63 64" /><Grammar_Production_NamedSymbol name="expression" nonterminal_set="91 93" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="58 59" /><Grammar_Production_NamedSymbol name="conditional_expression" nonterminal_set="72 74" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="74" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionEmpty" /></Grammar_Production><Grammar_Production lhs_nonterminal="75" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionAsterisk"><Grammar_Production_Symbol nonterminal_set="" terminal_set="42 43" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="76" precedence="-1"><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="77" precedence="-1"><Grammar_Production_NamedSymbol name="conditional_expression" nonterminal_set="72 74" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="78" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionAssignment"><Grammar_Production_NamedSymbol name="unary_expression" nonterminal_set="30 42" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="61 62" /><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="79" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionMultiplyAssignment"><Grammar_Production_NamedSymbol name="unary_expression" nonterminal_set="30 42" terminal_set="" /><Grammar_Production_NamedSymbol name="MUL_ASSIGN" nonterminal_set="" terminal_set="275 276" /><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="80" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionDivideAssignment"><Grammar_Production_NamedSymbol name="unary_expression" nonterminal_set="30 42" terminal_set="" /><Grammar_Production_NamedSymbol name="DIV_ASSIGN" nonterminal_set="" terminal_set="276 277" /><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="81" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionModuloAssignment"><Grammar_Production_NamedSymbol name="unary_expression" nonterminal_set="30 42" terminal_set="" /><Grammar_Production_NamedSymbol name="MOD_ASSIGN" nonterminal_set="" terminal_set="277 278" /><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="82" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionAddAssignment"><Grammar_Production_NamedSymbol name="unary_expression" nonterminal_set="30 42" terminal_set="" /><Grammar_Production_NamedSymbol name="ADD_ASSIGN" nonterminal_set="" terminal_set="278 279" /><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="83" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionSubtractAssignment"><Grammar_Production_NamedSymbol name="unary_expression" nonterminal_set="30 42" terminal_set="" /><Grammar_Production_NamedSymbol name="SUB_ASSIGN" nonterminal_set="" terminal_set="279 280" /><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="84" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionLeftShiftAssignment"><Grammar_Production_NamedSymbol name="unary_expression" nonterminal_set="30 42" terminal_set="" /><Grammar_Production_NamedSymbol name="LEFT_ASSIGN" nonterminal_set="" terminal_set="280 281" /><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="85" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionRightShiftAssignment"><Grammar_Production_NamedSymbol name="unary_expression" nonterminal_set="30 42" terminal_set="" /><Grammar_Production_NamedSymbol name="RIGHT_ASSIGN" nonterminal_set="" terminal_set="281 282" /><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="86" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionBitwiseAndAssignment"><Grammar_Production_NamedSymbol name="unary_expression" nonterminal_set="30 42" terminal_set="" /><Grammar_Production_NamedSymbol name="AND_ASSIGN" nonterminal_set="" terminal_set="282 283" /><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="87" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionExclusiveOrAssignment"><Grammar_Production_NamedSymbol name="unary_expression" nonterminal_set="30 42" terminal_set="" /><Grammar_Production_NamedSymbol name="XOR_ASSIGN" nonterminal_set="" terminal_set="283 284" /><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="88" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionBitwiseOrAssignment"><Grammar_Production_NamedSymbol name="unary_expression" nonterminal_set="30 42" terminal_set="" /><Grammar_Production_NamedSymbol name="OR_ASSIGN" nonterminal_set="" terminal_set="284 285" /><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="89" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionEmpty" /></Grammar_Production><Grammar_Production lhs_nonterminal="90" precedence="-1"><Grammar_Production_NamedSymbol name="expression" nonterminal_set="91 93" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="91" precedence="-1"><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="92" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionComma"><Grammar_Production_NamedSymbol name="expression" nonterminal_set="91 93" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="44 45" /><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="93" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ExpressionEmpty" /></Grammar_Production><Grammar_Production lhs_nonterminal="94" precedence="-1"><Grammar_Production_Symbol nonterminal_set="" terminal_set="61 62" /><Grammar_Production_NamedSymbol name="constant_expression" nonterminal_set="95 96" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="95" precedence="-1"><Grammar_Production_NamedSymbol name="conditional_expression" nonterminal_set="72 74" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="96" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="Declaration"><Grammar_Production_Group attributes="" index="1" name="DeclarationSpecifierList"><Grammar_Production_NamedSymbol name="declaration_specifier_list" nonterminal_set="98 100" terminal_set="" /></Grammar_Production_Group><Grammar_Production_Group attributes="" index="2" name="InitDeclaratorList"><Grammar_Production_NamedSymbol name="init_declarator_list_opt" nonterminal_set="105 107" terminal_set="" /></Grammar_Production_Group><Grammar_Production_Symbol nonterminal_set="" terminal_set="59 60" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="97" precedence="-1"><Grammar_Production_NamedSymbol name="static_assert_declaration" nonterminal_set="226 227" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="98" precedence="-1"><Grammar_Production_NamedSymbol name="declaration_specifier" nonterminal_set="100 105" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="99" precedence="-1"><Grammar_Production_NamedSymbol name="declaration_specifier_list" nonterminal_set="98 100" terminal_set="" /><Grammar_Production_NamedSymbol name="declaration_specifier" nonterminal_set="100 105" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="100" precedence="-1"><Grammar_Production_NamedSymbol name="storage_class_specifier" nonterminal_set="110 116" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="101" precedence="-1"><Grammar_Production_NamedSymbol name="type_specifier" nonterminal_set="116 133" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="102" precedence="-1"><Grammar_Production_NamedSymbol name="type_qualifier" nonterminal_set="168 172" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="103" precedence="-1"><Grammar_Production_NamedSymbol name="function_specifier" nonterminal_set="172 174" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="104" precedence="-1"><Grammar_Production_NamedSymbol name="alignment_specifier" nonterminal_set="174 176" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="105" precedence="-1" /><Grammar_Production lhs_nonterminal="106" precedence="-1"><Grammar_Production_NamedSymbol name="init_declarator_list" nonterminal_set="107 109" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="107" precedence="-1"><Grammar_Production_NamedSymbol name="init_declarator" nonterminal_set="109 110" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="108" precedence="-1"><Grammar_Production_NamedSymbol name="init_declarator_list" nonterminal_set="107 109" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="44 45" /><Grammar_Production_NamedSymbol name="init_declarator" nonterminal_set="109 110" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="109" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="InitDeclarator"><Grammar_Production_NamedSymbol name="declarator" nonterminal_set="178 180" terminal_set="" /><Grammar_Production_NamedSymbol name="equals_initializer_opt" nonterminal_set="210 212" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="110" precedence="-1"><Grammar_Production_Group attributes="1" index="0" name="StorageClassSpecifier"><Grammar_Production_NamedSymbol name="TYPEDEF" nonterminal_set="" terminal_set="287 288" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="111" precedence="-1"><Grammar_Production_Group attributes="2" index="0" name="StorageClassSpecifier"><Grammar_Production_NamedSymbol name="EXTERN" nonterminal_set="" terminal_set="288 289" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="112" precedence="-1"><Grammar_Production_Group attributes="3" index="0" name="StorageClassSpecifier"><Grammar_Production_NamedSymbol name="STATIC" nonterminal_set="" terminal_set="289 290" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="113" precedence="-1"><Grammar_Production_Group attributes="4" index="0" name="StorageClassSpecifier"><Grammar_Production_NamedSymbol name="THREAD_LOCAL" nonterminal_set="" terminal_set="330 331" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="114" precedence="-1"><Grammar_Production_Group attributes="5" index="0" name="StorageClassSpecifier"><Grammar_Production_NamedSymbol name="AUTO" nonterminal_set="" terminal_set="290 291" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="115" precedence="-1"><Grammar_Production_Group attributes="6" index="0" name="StorageClassSpecifier"><Grammar_Production_NamedSymbol name="REGISTER" nonterminal_set="" terminal_set="291 292" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="116" precedence="-1"><Grammar_Production_Group attributes="7" index="0" name="TypeSpecifier"><Grammar_Production_NamedSymbol name="VOID" nonterminal_set="" terminal_set="305 306" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="117" precedence="-1"><Grammar_Production_Group attributes="8" index="0" name="TypeSpecifier"><Grammar_Production_NamedSymbol name="CHAR" nonterminal_set="" terminal_set="297 298" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="118" precedence="-1"><Grammar_Production_Group attributes="9" index="0" name="TypeSpecifier"><Grammar_Production_NamedSymbol name="SHORT" nonterminal_set="" terminal_set="298 299" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="119" precedence="-1"><Grammar_Production_Group attributes="10" index="0" name="TypeSpecifier"><Grammar_Production_NamedSymbol name="INT" nonterminal_set="" terminal_set="299 300" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="120" precedence="-1"><Grammar_Production_Group attributes="11" index="0" name="TypeSpecifier"><Grammar_Production_NamedSymbol name="LONG" nonterminal_set="" terminal_set="300 301" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="121" precedence="-1"><Grammar_Production_Group attributes="12" index="0" name="TypeSpecifier"><Grammar_Production_NamedSymbol name="FLOAT" nonterminal_set="" terminal_set="303 304" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="122" precedence="-1"><Grammar_Production_Group attributes="13" index="0" name="TypeSpecifier"><Grammar_Production_NamedSymbol name="DOUBLE" nonterminal_set="" terminal_set="304 305" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="123" precedence="-1"><Grammar_Production_Group attributes="14" index="0" name="TypeSpecifier"><Grammar_Production_NamedSymbol name="SIGNED" nonterminal_set="" terminal_set="301 302" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="124" precedence="-1"><Grammar_Production_Group attributes="15" index="0" name="TypeSpecifier"><Grammar_Production_NamedSymbol name="UNSIGNED" nonterminal_set="" terminal_set="302 303" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="125" precedence="-1"><Grammar_Production_Group attributes="16" index="0" name="TypeSpecifier"><Grammar_Production_NamedSymbol name="BOOL" nonterminal_set="" terminal_set="296 297" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="126" precedence="-1"><Grammar_Production_Group attributes="17" index="0" name="TypeSpecifier"><Grammar_Production_NamedSymbol name="COMPLEX" nonterminal_set="" terminal_set="306 307" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="127" precedence="-1"><Grammar_Production_Group attributes="18" index="0" name="TypeSpecifier"><Grammar_Production_NamedSymbol name="IMAGINARY" nonterminal_set="" terminal_set="307 308" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="128" precedence="-1"><Grammar_Production_NamedSymbol name="atomic_type_specifier" nonterminal_set="161 162" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="129" precedence="-1"><Grammar_Production_NamedSymbol name="struct_specifier" nonterminal_set="133 135" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="130" precedence="-1"><Grammar_Production_NamedSymbol name="union_specifier" nonterminal_set="135 137" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="131" precedence="-1"><Grammar_Production_NamedSymbol name="enum_specifier" nonterminal_set="153 155" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="132" precedence="-1"><Grammar_Production_NamedSymbol name="TYPEDEF_NAME" nonterminal_set="" terminal_set="285 286" /></Grammar_Production><Grammar_Production lhs_nonterminal="133" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StructSpecifier"><Grammar_Production_NamedSymbol name="STRUCT" nonterminal_set="" terminal_set="308 309" /><Grammar_Production_NamedSymbol name="identifier_opt" nonterminal_set="260 262" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="123 124" /><Grammar_Production_Group attributes="" index="1" name="StructDeclarationList"><Grammar_Production_NamedSymbol name="struct_declaration_list_opt" nonterminal_set="137 139" terminal_set="" /></Grammar_Production_Group><Grammar_Production_Symbol nonterminal_set="" terminal_set="125 126" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="134" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StructSpecifier"><Grammar_Production_NamedSymbol name="STRUCT" nonterminal_set="" terminal_set="308 309" /><Grammar_Production_NamedSymbol name="IDENTIFIER" nonterminal_set="" terminal_set="258 259" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="135" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="UnionSpecifier"><Grammar_Production_NamedSymbol name="UNION" nonterminal_set="" terminal_set="309 310" /><Grammar_Production_NamedSymbol name="identifier_opt" nonterminal_set="260 262" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="123 124" /><Grammar_Production_Group attributes="" index="1" name="StructDeclarationList"><Grammar_Production_NamedSymbol name="struct_declaration_list_opt" nonterminal_set="137 139" terminal_set="" /></Grammar_Production_Group><Grammar_Production_Symbol nonterminal_set="" terminal_set="125 126" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="136" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="UnionSpecifier"><Grammar_Production_NamedSymbol name="UNION" nonterminal_set="" terminal_set="309 310" /><Grammar_Production_NamedSymbol name="IDENTIFIER" nonterminal_set="" terminal_set="258 259" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="137" precedence="-1" /><Grammar_Production lhs_nonterminal="138" precedence="-1"><Grammar_Production_NamedSymbol name="struct_declaration_list" nonterminal_set="139 141" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="139" precedence="-1"><Grammar_Production_NamedSymbol name="struct_declaration" nonterminal_set="141 143" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="140" precedence="-1"><Grammar_Production_NamedSymbol name="struct_declaration_list" nonterminal_set="139 141" terminal_set="" /><Grammar_Production_NamedSymbol name="struct_declaration" nonterminal_set="141 143" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="141" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StructDeclaration"><Grammar_Production_Group attributes="" index="1" name="SpecifierQualifierList"><Grammar_Production_NamedSymbol name="specifier_qualifier_list" nonterminal_set="143 145" terminal_set="" /></Grammar_Production_Group><Grammar_Production_Group attributes="" index="2" name="StructDeclaratorList"><Grammar_Production_NamedSymbol name="struct_declarator_list_opt" nonterminal_set="147 149" terminal_set="" /></Grammar_Production_Group><Grammar_Production_Symbol nonterminal_set="" terminal_set="59 60" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="142" precedence="-1"><Grammar_Production_NamedSymbol name="static_assert_declaration" nonterminal_set="226 227" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="143" precedence="-1"><Grammar_Production_NamedSymbol name="specifier_qualifier" nonterminal_set="145 147" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="144" precedence="-1"><Grammar_Production_NamedSymbol name="specifier_qualifier_list" nonterminal_set="143 145" terminal_set="" /><Grammar_Production_NamedSymbol name="specifier_qualifier" nonterminal_set="145 147" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="145" precedence="-1"><Grammar_Production_NamedSymbol name="type_specifier" nonterminal_set="116 133" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="146" precedence="-1"><Grammar_Production_NamedSymbol name="type_qualifier" nonterminal_set="168 172" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="147" precedence="-1" /><Grammar_Production lhs_nonterminal="148" precedence="-1"><Grammar_Production_NamedSymbol name="struct_declarator_list" nonterminal_set="149 151" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="149" precedence="-1"><Grammar_Production_NamedSymbol name="struct_declarator" nonterminal_set="151 153" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="150" precedence="-1"><Grammar_Production_NamedSymbol name="struct_declarator_list" nonterminal_set="149 151" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="44 45" /><Grammar_Production_NamedSymbol name="struct_declarator" nonterminal_set="151 153" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="151" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StructDeclarator"><Grammar_Production_NamedSymbol name="declarator_opt" nonterminal_set="176 178" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="58 59" /><Grammar_Production_NamedSymbol name="constant_expression" nonterminal_set="95 96" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="152" precedence="-1"><Grammar_Production_NamedSymbol name="declarator" nonterminal_set="178 180" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="153" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="EnumSpecifier"><Grammar_Production_NamedSymbol name="ENUM" nonterminal_set="" terminal_set="310 311" /><Grammar_Production_NamedSymbol name="identifier_opt" nonterminal_set="260 262" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="123 124" /><Grammar_Production_Group attributes="" index="1" name="EnumeratorList"><Grammar_Production_NamedSymbol name="enumerator_list_comma_opt" nonterminal_set="155 158" terminal_set="" /></Grammar_Production_Group><Grammar_Production_Symbol nonterminal_set="" terminal_set="125 126" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="154" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="EnumSpecifier"><Grammar_Production_NamedSymbol name="ENUM" nonterminal_set="" terminal_set="310 311" /><Grammar_Production_NamedSymbol name="IDENTIFIER" nonterminal_set="" terminal_set="258 259" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="155" precedence="-1" /><Grammar_Production lhs_nonterminal="156" precedence="-1"><Grammar_Production_NamedSymbol name="enumerator_list" nonterminal_set="158 160" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="157" precedence="-1"><Grammar_Production_NamedSymbol name="enumerator_list" nonterminal_set="158 160" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="44 45" /></Grammar_Production><Grammar_Production lhs_nonterminal="158" precedence="-1"><Grammar_Production_NamedSymbol name="enumerator" nonterminal_set="160 161" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="159" precedence="-1"><Grammar_Production_NamedSymbol name="enumerator_list" nonterminal_set="158 160" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="44 45" /><Grammar_Production_NamedSymbol name="enumerator" nonterminal_set="160 161" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="160" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="Enumerator"><Grammar_Production_NamedSymbol name="enumeration_constant" nonterminal_set="9 10" terminal_set="" /><Grammar_Production_NamedSymbol name="equals_constant_expression_opt" nonterminal_set="93 95" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="161" precedence="-1"><Grammar_Production_NamedSymbol name="ATOMIC" nonterminal_set="" terminal_set="326 327" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="type_name" nonterminal_set="197 198" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production><Grammar_Production lhs_nonterminal="162" precedence="-1" /><Grammar_Production lhs_nonterminal="163" precedence="-1"><Grammar_Production_NamedSymbol name="type_qualifier_or_static_list" nonterminal_set="164 166" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="164" precedence="-1"><Grammar_Production_NamedSymbol name="type_qualifier_or_static" nonterminal_set="166 168" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="165" precedence="-1"><Grammar_Production_NamedSymbol name="type_qualifier_or_static_list" nonterminal_set="164 166" terminal_set="" /><Grammar_Production_NamedSymbol name="type_qualifier_or_static" nonterminal_set="166 168" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="166" precedence="-1"><Grammar_Production_NamedSymbol name="type_qualifier" nonterminal_set="168 172" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="167" precedence="-1"><Grammar_Production_Group attributes="19" index="0" name="StorageClassSpecifier"><Grammar_Production_NamedSymbol name="STATIC" nonterminal_set="" terminal_set="289 290" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="168" precedence="-1"><Grammar_Production_Group attributes="20" index="0" name="TypeQualifier"><Grammar_Production_NamedSymbol name="CONST" nonterminal_set="" terminal_set="293 294" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="169" precedence="-1"><Grammar_Production_Group attributes="21" index="0" name="TypeQualifier"><Grammar_Production_NamedSymbol name="RESTRICT" nonterminal_set="" terminal_set="294 295" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="170" precedence="-1"><Grammar_Production_Group attributes="22" index="0" name="TypeQualifier"><Grammar_Production_NamedSymbol name="VOLATILE" nonterminal_set="" terminal_set="295 296" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="171" precedence="-1"><Grammar_Production_Group attributes="23" index="0" name="TypeQualifier"><Grammar_Production_NamedSymbol name="ATOMIC" nonterminal_set="" terminal_set="326 327" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="172" precedence="-1"><Grammar_Production_Group attributes="24" index="0" name="FunctionSpecifier"><Grammar_Production_NamedSymbol name="INLINE" nonterminal_set="" terminal_set="292 293" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="173" precedence="-1"><Grammar_Production_Group attributes="25" index="0" name="FunctionSpecifier"><Grammar_Production_NamedSymbol name="NORETURN" nonterminal_set="" terminal_set="328 329" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="174" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="AlignAsType"><Grammar_Production_NamedSymbol name="ALIGNAS" nonterminal_set="" terminal_set="324 325" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="type_name" nonterminal_set="197 198" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="175" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="AlignAsExpression"><Grammar_Production_NamedSymbol name="ALIGNAS" nonterminal_set="" terminal_set="324 325" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="constant_expression" nonterminal_set="95 96" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="176" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DeclaratorEmpty" /></Grammar_Production><Grammar_Production lhs_nonterminal="177" precedence="-1"><Grammar_Production_NamedSymbol name="declarator" nonterminal_set="178 180" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="178" precedence="-1"><Grammar_Production_NamedSymbol name="direct_declarator" nonterminal_set="180 185" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="179" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DeclaratorPointer"><Grammar_Production_Symbol nonterminal_set="" terminal_set="42 43" /><Grammar_Production_Group attributes="" index="1" name="TypeQualifierList"><Grammar_Production_NamedSymbol name="type_qualifier_list_opt" nonterminal_set="185 187" terminal_set="" /></Grammar_Production_Group><Grammar_Production_NamedSymbol name="declarator" nonterminal_set="178 180" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="180" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DeclaratorIdentifier"><Grammar_Production_NamedSymbol name="IDENTIFIER" nonterminal_set="" terminal_set="258 259" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="181" precedence="-1"><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="declarator" nonterminal_set="178 180" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production><Grammar_Production lhs_nonterminal="182" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DeclaratorArray"><Grammar_Production_NamedSymbol name="direct_declarator" nonterminal_set="180 185" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="91 92" /><Grammar_Production_Group attributes="" index="1" name="TypeQualifierOrStaticList"><Grammar_Production_NamedSymbol name="type_qualifier_or_static_list_opt" nonterminal_set="162 164" terminal_set="" /></Grammar_Production_Group><Grammar_Production_NamedSymbol name="assignment_expression_or_asterisk_opt" nonterminal_set="74 77" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="93 94" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="183" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DeclaratorFunctionOldStyle"><Grammar_Production_NamedSymbol name="direct_declarator" nonterminal_set="180 185" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_Group attributes="" index="1" name="IdentifierList"><Grammar_Production_NamedSymbol name="identifier_list_opt" nonterminal_set="193 195" terminal_set="" /></Grammar_Production_Group><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="184" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DeclaratorFunction"><Grammar_Production_NamedSymbol name="direct_declarator" nonterminal_set="180 185" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_Group attributes="" index="1" name="ParameterDeclarationList"><Grammar_Production_NamedSymbol name="parameter_declaration_list" nonterminal_set="189 191" terminal_set="" /></Grammar_Production_Group><Grammar_Production_NamedSymbol name="comma_ellipsis_opt" nonterminal_set="262 264" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="185" precedence="-1" /><Grammar_Production lhs_nonterminal="186" precedence="-1"><Grammar_Production_NamedSymbol name="type_qualifier_list" nonterminal_set="187 189" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="187" precedence="-1"><Grammar_Production_NamedSymbol name="type_qualifier" nonterminal_set="168 172" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="188" precedence="-1"><Grammar_Production_NamedSymbol name="type_qualifier_list" nonterminal_set="187 189" terminal_set="" /><Grammar_Production_NamedSymbol name="type_qualifier" nonterminal_set="168 172" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="189" precedence="-1"><Grammar_Production_NamedSymbol name="parameter_declaration" nonterminal_set="191 193" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="190" precedence="-1"><Grammar_Production_NamedSymbol name="parameter_declaration_list" nonterminal_set="189 191" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="44 45" /><Grammar_Production_NamedSymbol name="parameter_declaration" nonterminal_set="191 193" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="191" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ParameterDeclaration"><Grammar_Production_Group attributes="" index="1" name="DeclarationSpecifierList"><Grammar_Production_NamedSymbol name="declaration_specifier_list" nonterminal_set="98 100" terminal_set="" /></Grammar_Production_Group><Grammar_Production_NamedSymbol name="declarator" nonterminal_set="178 180" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="192" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="ParameterDeclaration"><Grammar_Production_Group attributes="" index="1" name="DeclarationSpecifierList"><Grammar_Production_NamedSymbol name="declaration_specifier_list" nonterminal_set="98 100" terminal_set="" /></Grammar_Production_Group><Grammar_Production_NamedSymbol name="abstract_declarator" nonterminal_set="198 200" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="193" precedence="-1" /><Grammar_Production lhs_nonterminal="194" precedence="-1"><Grammar_Production_NamedSymbol name="identifier_list" nonterminal_set="195 197" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="195" precedence="-1"><Grammar_Production_NamedSymbol name="IDENTIFIER" nonterminal_set="" terminal_set="258 259" /></Grammar_Production><Grammar_Production lhs_nonterminal="196" precedence="-1"><Grammar_Production_NamedSymbol name="identifier_list" nonterminal_set="195 197" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="44 45" /><Grammar_Production_NamedSymbol name="IDENTIFIER" nonterminal_set="" terminal_set="258 259" /></Grammar_Production><Grammar_Production lhs_nonterminal="197" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="TypeName"><Grammar_Production_Group attributes="" index="1" name="SpecifierQualifierList"><Grammar_Production_NamedSymbol name="specifier_qualifier_list" nonterminal_set="143 145" terminal_set="" /></Grammar_Production_Group><Grammar_Production_NamedSymbol name="abstract_declarator" nonterminal_set="198 200" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="198" precedence="-1"><Grammar_Production_NamedSymbol name="direct_abstract_declarator_opt" nonterminal_set="200 202" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="199" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DeclaratorPointer"><Grammar_Production_Symbol nonterminal_set="" terminal_set="42 43" /><Grammar_Production_Group attributes="" index="1" name="TypeQualifierList"><Grammar_Production_NamedSymbol name="type_qualifier_list_opt" nonterminal_set="185 187" terminal_set="" /></Grammar_Production_Group><Grammar_Production_NamedSymbol name="abstract_declarator" nonterminal_set="198 200" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="200" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DeclaratorAbstract" /></Grammar_Production><Grammar_Production lhs_nonterminal="201" precedence="-1"><Grammar_Production_NamedSymbol name="direct_abstract_declarator" nonterminal_set="202 210" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="202" precedence="-1"><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="direct_abstract_declarator" nonterminal_set="202 210" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production><Grammar_Production lhs_nonterminal="203" precedence="-1"><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_Group attributes="" index="0" name="DeclaratorPointer"><Grammar_Production_Symbol nonterminal_set="" terminal_set="42 43" /><Grammar_Production_Group attributes="" index="1" name="TypeQualifierList"><Grammar_Production_NamedSymbol name="type_qualifier_list_opt" nonterminal_set="185 187" terminal_set="" /></Grammar_Production_Group><Grammar_Production_NamedSymbol name="abstract_declarator" nonterminal_set="198 200" terminal_set="" /></Grammar_Production_Group><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production><Grammar_Production lhs_nonterminal="204" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DeclaratorArray"><Grammar_Production_Group attributes="" index="1" name="DeclaratorAbstract" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="91 92" /><Grammar_Production_Group attributes="" index="2" name="TypeQualifierOrStaticList"><Grammar_Production_NamedSymbol name="type_qualifier_or_static_list_opt" nonterminal_set="162 164" terminal_set="" /></Grammar_Production_Group><Grammar_Production_NamedSymbol name="assignment_expression_or_asterisk_opt" nonterminal_set="74 77" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="93 94" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="205" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DeclaratorFunction"><Grammar_Production_Group attributes="" index="1" name="DeclaratorAbstract" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_Group attributes="" index="2" name="ParameterDeclarationList" /><Grammar_Production_Group attributes="" index="3" name="CommaEllipsisEmpty" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="206" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DeclaratorFunction"><Grammar_Production_Group attributes="" index="1" name="DeclaratorAbstract" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_Group attributes="" index="2" name="ParameterDeclarationList"><Grammar_Production_NamedSymbol name="parameter_declaration_list" nonterminal_set="189 191" terminal_set="" /></Grammar_Production_Group><Grammar_Production_NamedSymbol name="comma_ellipsis_opt" nonterminal_set="262 264" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="207" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DeclaratorArray"><Grammar_Production_NamedSymbol name="direct_abstract_declarator" nonterminal_set="202 210" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="91 92" /><Grammar_Production_Group attributes="" index="1" name="TypeQualifierOrStaticList"><Grammar_Production_NamedSymbol name="type_qualifier_or_static_list_opt" nonterminal_set="162 164" terminal_set="" /></Grammar_Production_Group><Grammar_Production_NamedSymbol name="assignment_expression_or_asterisk_opt" nonterminal_set="74 77" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="93 94" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="208" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DeclaratorFunction"><Grammar_Production_NamedSymbol name="direct_abstract_declarator" nonterminal_set="202 210" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_Group attributes="" index="1" name="ParameterDeclarationList" /><Grammar_Production_Group attributes="" index="2" name="CommaEllipsisEmpty" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="209" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DeclaratorFunction"><Grammar_Production_NamedSymbol name="direct_abstract_declarator" nonterminal_set="202 210" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_Group attributes="" index="1" name="ParameterDeclarationList"><Grammar_Production_NamedSymbol name="parameter_declaration_list" nonterminal_set="189 191" terminal_set="" /></Grammar_Production_Group><Grammar_Production_NamedSymbol name="comma_ellipsis_opt" nonterminal_set="262 264" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="210" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="EqualsInitializerEmpty" /></Grammar_Production><Grammar_Production lhs_nonterminal="211" precedence="-1"><Grammar_Production_Symbol nonterminal_set="" terminal_set="61 62" /><Grammar_Production_NamedSymbol name="initializer" nonterminal_set="212 214" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="212" precedence="-1"><Grammar_Production_Symbol nonterminal_set="" terminal_set="123 124" /><Grammar_Production_Group attributes="" index="0" name="DesignatorInitializerList"><Grammar_Production_NamedSymbol name="designator_initializer_list_comma_opt" nonterminal_set="214 217" terminal_set="" /></Grammar_Production_Group><Grammar_Production_Symbol nonterminal_set="" terminal_set="125 126" /></Grammar_Production><Grammar_Production lhs_nonterminal="213" precedence="-1"><Grammar_Production_NamedSymbol name="assignment_expression" nonterminal_set="77 89" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="214" precedence="-1" /><Grammar_Production lhs_nonterminal="215" precedence="-1"><Grammar_Production_NamedSymbol name="designator_initializer_list" nonterminal_set="217 219" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="216" precedence="-1"><Grammar_Production_NamedSymbol name="designator_initializer_list" nonterminal_set="217 219" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="44 45" /></Grammar_Production><Grammar_Production lhs_nonterminal="217" precedence="-1"><Grammar_Production_NamedSymbol name="designator_initializer" nonterminal_set="219 220" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="218" precedence="-1"><Grammar_Production_NamedSymbol name="designator_initializer_list" nonterminal_set="217 219" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="44 45" /><Grammar_Production_NamedSymbol name="designator_initializer" nonterminal_set="219 220" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="219" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DesignatorInitializer"><Grammar_Production_Group attributes="" index="1" name="DesignatorList"><Grammar_Production_NamedSymbol name="designator_list_equals_opt" nonterminal_set="220 222" terminal_set="" /></Grammar_Production_Group><Grammar_Production_NamedSymbol name="initializer" nonterminal_set="212 214" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="220" precedence="-1" /><Grammar_Production lhs_nonterminal="221" precedence="-1"><Grammar_Production_NamedSymbol name="designator_list" nonterminal_set="222 224" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="61 62" /></Grammar_Production><Grammar_Production lhs_nonterminal="222" precedence="-1"><Grammar_Production_NamedSymbol name="designator" nonterminal_set="224 226" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="223" precedence="-1"><Grammar_Production_NamedSymbol name="designator_list" nonterminal_set="222 224" terminal_set="" /><Grammar_Production_NamedSymbol name="designator" nonterminal_set="224 226" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="224" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DesignatorIndex"><Grammar_Production_Symbol nonterminal_set="" terminal_set="91 92" /><Grammar_Production_NamedSymbol name="constant_expression" nonterminal_set="95 96" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="93 94" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="225" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="DesignatorField"><Grammar_Production_Symbol nonterminal_set="" terminal_set="46 47" /><Grammar_Production_NamedSymbol name="IDENTIFIER" nonterminal_set="" terminal_set="258 259" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="226" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StaticAssertDeclaration"><Grammar_Production_NamedSymbol name="STATIC_ASSERT" nonterminal_set="" terminal_set="329 330" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="constant_expression" nonterminal_set="95 96" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="44 45" /><Grammar_Production_NamedSymbol name="STRING_LITERAL" nonterminal_set="" terminal_set="261 262" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="59 60" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="227" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StatementLabel"><Grammar_Production_NamedSymbol name="IDENTIFIER" nonterminal_set="" terminal_set="258 259" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="58 59" /><Grammar_Production_NamedSymbol name="statement" nonterminal_set="227 243" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="228" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StatementCase"><Grammar_Production_NamedSymbol name="CASE" nonterminal_set="" terminal_set="312 313" /><Grammar_Production_NamedSymbol name="constant_expression" nonterminal_set="95 96" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="58 59" /><Grammar_Production_NamedSymbol name="statement" nonterminal_set="227 243" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="229" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StatementDefault"><Grammar_Production_NamedSymbol name="DEFAULT" nonterminal_set="" terminal_set="313 314" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="58 59" /><Grammar_Production_NamedSymbol name="statement" nonterminal_set="227 243" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="230" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StatementBlock"><Grammar_Production_Symbol nonterminal_set="" terminal_set="123 124" /><Grammar_Production_Group attributes="" index="1" name="BlockItemList"><Grammar_Production_NamedSymbol name="block_item_list_opt" nonterminal_set="243 245" terminal_set="" /></Grammar_Production_Group><Grammar_Production_Symbol nonterminal_set="" terminal_set="125 126" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="231" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StatementExpression"><Grammar_Production_NamedSymbol name="expression_opt" nonterminal_set="89 91" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="59 60" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="232" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StatementIfElse"><Grammar_Production_NamedSymbol name="IF" nonterminal_set="" terminal_set="314 315" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="expression" nonterminal_set="91 93" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /><Grammar_Production_NamedSymbol name="statement" nonterminal_set="227 243" terminal_set="" /><Grammar_Production_NamedSymbol name="ELSE" nonterminal_set="" terminal_set="315 316" /><Grammar_Production_NamedSymbol name="statement" nonterminal_set="227 243" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="233" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StatementIf"><Grammar_Production_NamedSymbol name="IF" nonterminal_set="" terminal_set="314 315" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="expression" nonterminal_set="91 93" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /><Grammar_Production_NamedSymbol name="statement" nonterminal_set="227 243" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="234" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StatementSwitch"><Grammar_Production_NamedSymbol name="SWITCH" nonterminal_set="" terminal_set="316 317" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="expression" nonterminal_set="91 93" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /><Grammar_Production_NamedSymbol name="statement" nonterminal_set="227 243" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="235" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StatementWhile"><Grammar_Production_NamedSymbol name="WHILE" nonterminal_set="" terminal_set="317 318" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="expression" nonterminal_set="91 93" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /><Grammar_Production_NamedSymbol name="statement" nonterminal_set="227 243" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="236" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StatementDoWhile"><Grammar_Production_NamedSymbol name="DO" nonterminal_set="" terminal_set="318 319" /><Grammar_Production_NamedSymbol name="statement" nonterminal_set="227 243" terminal_set="" /><Grammar_Production_NamedSymbol name="WHILE" nonterminal_set="" terminal_set="317 318" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="expression" nonterminal_set="91 93" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="59 60" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="237" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StatementFor"><Grammar_Production_NamedSymbol name="FOR" nonterminal_set="" terminal_set="319 320" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="expression_opt" nonterminal_set="89 91" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="59 60" /><Grammar_Production_NamedSymbol name="expression_opt" nonterminal_set="89 91" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="59 60" /><Grammar_Production_NamedSymbol name="expression_opt" nonterminal_set="89 91" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /><Grammar_Production_NamedSymbol name="statement" nonterminal_set="227 243" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="238" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StatementFor"><Grammar_Production_NamedSymbol name="FOR" nonterminal_set="" terminal_set="319 320" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="40 41" /><Grammar_Production_NamedSymbol name="declaration" nonterminal_set="96 98" terminal_set="" /><Grammar_Production_NamedSymbol name="expression_opt" nonterminal_set="89 91" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="59 60" /><Grammar_Production_NamedSymbol name="expression_opt" nonterminal_set="89 91" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="41 42" /><Grammar_Production_NamedSymbol name="statement" nonterminal_set="227 243" terminal_set="" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="239" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StatementGoto"><Grammar_Production_NamedSymbol name="GOTO" nonterminal_set="" terminal_set="320 321" /><Grammar_Production_NamedSymbol name="IDENTIFIER" nonterminal_set="" terminal_set="258 259" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="59 60" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="240" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StatementContinue"><Grammar_Production_NamedSymbol name="CONTINUE" nonterminal_set="" terminal_set="321 322" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="59 60" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="241" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StatementBreak"><Grammar_Production_NamedSymbol name="BREAK" nonterminal_set="" terminal_set="322 323" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="59 60" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="242" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="StatementReturn"><Grammar_Production_NamedSymbol name="RETURN" nonterminal_set="" terminal_set="323 324" /><Grammar_Production_NamedSymbol name="expression_opt" nonterminal_set="89 91" terminal_set="" /><Grammar_Production_Symbol nonterminal_set="" terminal_set="59 60" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="243" precedence="-1" /><Grammar_Production lhs_nonterminal="244" precedence="-1"><Grammar_Production_NamedSymbol name="block_item_list" nonterminal_set="245 247" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="245" precedence="-1"><Grammar_Production_NamedSymbol name="block_item" nonterminal_set="247 249" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="246" precedence="-1"><Grammar_Production_NamedSymbol name="block_item_list" nonterminal_set="245 247" terminal_set="" /><Grammar_Production_NamedSymbol name="block_item" nonterminal_set="247 249" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="247" precedence="-1"><Grammar_Production_NamedSymbol name="declaration" nonterminal_set="96 98" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="248" precedence="-1"><Grammar_Production_NamedSymbol name="statement" nonterminal_set="227 243" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="249" precedence="-1" /><Grammar_Production lhs_nonterminal="250" precedence="-1"><Grammar_Production_NamedSymbol name="translation_unit" nonterminal_set="251 253" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="251" precedence="-1"><Grammar_Production_NamedSymbol name="external_declaration" nonterminal_set="253 255" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="252" precedence="-1"><Grammar_Production_NamedSymbol name="translation_unit" nonterminal_set="251 253" terminal_set="" /><Grammar_Production_NamedSymbol name="external_declaration" nonterminal_set="253 255" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="253" precedence="-1"><Grammar_Production_NamedSymbol name="function_definition" nonterminal_set="255 256" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="254" precedence="-1"><Grammar_Production_NamedSymbol name="declaration" nonterminal_set="96 98" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="255" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="FunctionDefinition"><Grammar_Production_Group attributes="" index="1" name="DeclarationSpecifierList"><Grammar_Production_NamedSymbol name="declaration_specifier_list" nonterminal_set="98 100" terminal_set="" /></Grammar_Production_Group><Grammar_Production_NamedSymbol name="declarator" nonterminal_set="178 180" terminal_set="" /><Grammar_Production_Group attributes="" index="2" name="DeclarationList"><Grammar_Production_NamedSymbol name="declaration_list_opt" nonterminal_set="256 258" terminal_set="" /></Grammar_Production_Group><Grammar_Production_Symbol nonterminal_set="" terminal_set="123 124" /><Grammar_Production_Group attributes="" index="3" name="BlockItemList"><Grammar_Production_NamedSymbol name="block_item_list_opt" nonterminal_set="243 245" terminal_set="" /></Grammar_Production_Group><Grammar_Production_Symbol nonterminal_set="" terminal_set="125 126" /></Grammar_Production_Group></Grammar_Production><Grammar_Production lhs_nonterminal="256" precedence="-1" /><Grammar_Production lhs_nonterminal="257" precedence="-1"><Grammar_Production_NamedSymbol name="declaration_list" nonterminal_set="258 260" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="258" precedence="-1"><Grammar_Production_NamedSymbol name="declaration" nonterminal_set="96 98" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="259" precedence="-1"><Grammar_Production_NamedSymbol name="declaration_list" nonterminal_set="258 260" terminal_set="" /><Grammar_Production_NamedSymbol name="declaration" nonterminal_set="96 98" terminal_set="" /></Grammar_Production><Grammar_Production lhs_nonterminal="260" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="IdentifierEmpty" /></Grammar_Production><Grammar_Production lhs_nonterminal="261" precedence="-1"><Grammar_Production_NamedSymbol name="IDENTIFIER" nonterminal_set="" terminal_set="258 259" /></Grammar_Production><Grammar_Production lhs_nonterminal="262" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="CommaEllipsisEmpty" /></Grammar_Production><Grammar_Production lhs_nonterminal="263" precedence="-1"><Grammar_Production_Group attributes="" index="0" name="CommaEllipsis"><Grammar_Production_Symbol nonterminal_set="" terminal_set="44 45" /><Grammar_Production_NamedSymbol name="ELLIPSIS" nonterminal_set="" terminal_set="311 312" /></Grammar_Production_Group></Grammar_Production></Grammar>
-  <Grammar_Production_Group_Attribute name="n" ref="1" value="0" />
-  <Grammar_Production_Group_Attribute name="n" ref="2" value="1" />
-  <Grammar_Production_Group_Attribute name="n" ref="3" value="2" />
-  <Grammar_Production_Group_Attribute name="n" ref="4" value="3" />
-  <Grammar_Production_Group_Attribute name="n" ref="5" value="4" />
-  <Grammar_Production_Group_Attribute name="n" ref="6" value="5" />
-  <Grammar_Production_Group_Attribute name="n" ref="7" value="0" />
-  <Grammar_Production_Group_Attribute name="n" ref="8" value="1" />
-  <Grammar_Production_Group_Attribute name="n" ref="9" value="2" />
-  <Grammar_Production_Group_Attribute name="n" ref="10" value="3" />
-  <Grammar_Production_Group_Attribute name="n" ref="11" value="4" />
-  <Grammar_Production_Group_Attribute name="n" ref="12" value="5" />
-  <Grammar_Production_Group_Attribute name="n" ref="13" value="6" />
-  <Grammar_Production_Group_Attribute name="n" ref="14" value="7" />
-  <Grammar_Production_Group_Attribute name="n" ref="15" value="8" />
-  <Grammar_Production_Group_Attribute name="n" ref="16" value="9" />
-  <Grammar_Production_Group_Attribute name="n" ref="17" value="10" />
-  <Grammar_Production_Group_Attribute name="n" ref="18" value="11" />
-  <Grammar_Production_Group_Attribute name="n" ref="19" value="2" />
-  <Grammar_Production_Group_Attribute name="n" ref="20" value="0" />
-  <Grammar_Production_Group_Attribute name="n" ref="21" value="1" />
-  <Grammar_Production_Group_Attribute name="n" ref="22" value="2" />
-  <Grammar_Production_Group_Attribute name="n" ref="23" value="3" />
-  <Grammar_Production_Group_Attribute name="n" ref="24" value="0" />
-  <Grammar_Production_Group_Attribute name="n" ref="25" value="1" />
-</root>
diff --git a/ansi_c_yacc.y b/ansi_c_yacc.y
deleted file mode 100644 (file)
index cdaa9b2..0000000
+++ /dev/null
@@ -1,563 +0,0 @@
-%token IDENTIFIER I_CONSTANT F_CONSTANT STRING_LITERAL FUNC_NAME SIZEOF
-%token PTR_OP INC_OP DEC_OP LEFT_OP RIGHT_OP LE_OP GE_OP EQ_OP NE_OP
-%token AND_OP OR_OP MUL_ASSIGN DIV_ASSIGN MOD_ASSIGN ADD_ASSIGN
-%token SUB_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN
-%token XOR_ASSIGN OR_ASSIGN
-%token TYPEDEF_NAME ENUMERATION_CONSTANT
-
-%token TYPEDEF EXTERN STATIC AUTO REGISTER INLINE
-%token CONST RESTRICT VOLATILE
-%token BOOL CHAR SHORT INT LONG SIGNED UNSIGNED FLOAT DOUBLE VOID
-%token COMPLEX IMAGINARY 
-%token STRUCT UNION ENUM ELLIPSIS
-
-%token CASE DEFAULT IF ELSE SWITCH WHILE DO FOR GOTO CONTINUE BREAK RETURN
-
-%token ALIGNAS ALIGNOF ATOMIC GENERIC NORETURN STATIC_ASSERT THREAD_LOCAL
-
-%start block_item_list_opt
-
-%%
-
-primary_expression
-       : (?<ExpressionIdentifier>IDENTIFIER)
-       | constant
-       | string
-       | '(' expression ')'
-       | generic_selection
-       ;
-
-constant
-       : I_CONSTANT
-       | F_CONSTANT
-       | ENUMERATION_CONSTANT
-       ;
-
-enumeration_constant
-       : IDENTIFIER
-       ;
-
-string
-       : STRING_LITERAL
-       | (?<ExpressionFunctionName>FUNC_NAME)
-       ;
-
-generic_selection
-       : (?<GenericSelection>GENERIC '(' assignment_expression ',' (?<GenericAssociationList>generic_association_list) ')')
-       ;
-
-generic_association_list
-       : generic_association
-       | generic_association_list ',' generic_association
-       ;
-
-generic_association
-       : (?<GenericAssociation>type_name_or_default ':' assignment_expression)
-       ;
-
-type_name_or_default
-       : type_name
-       | (?<DefaultTypeName>DEFAULT)
-       ;
-
-postfix_expression
-       : primary_expression
-       | (?<ExpressionIndex>postfix_expression '[' expression ']')
-       | (?<ExpressionCall>postfix_expression '(' (?<ArgumentExpressionList>argument_expression_list_opt) ')')
-       | (?<ExpressionField>postfix_expression '.' IDENTIFIER)
-       | (?<ExpressionFieldDereference>postfix_expression PTR_OP IDENTIFIER)
-       | (?<ExpressionPostIncrement>postfix_expression INC_OP)
-       | (?<ExpressionPostDecrement>postfix_expression DEC_OP)
-       | (?<ExpressionArray>'(' type_name ')' '{' (?<DesignatorInitializerList>designator_initializer_list_comma_opt) '}')
-       ;
-
-argument_expression_list_opt
-       :
-       | argument_expression_list
-       ;
-
-argument_expression_list
-       : assignment_expression
-       | argument_expression_list ',' assignment_expression
-       ;
-
-unary_expression
-       : postfix_expression
-       | (?<ExpressionPreIncrement>INC_OP unary_expression)
-       | (?<ExpressionPreDecrement>DEC_OP unary_expression)
-       | (?<ExpressionAddressOf>'&' cast_expression)
-       | (?<ExpressionDereference>'*' cast_expression)
-       | (?<ExpressionPlus>'+' cast_expression)
-       | (?<ExpressionMinus>'-' cast_expression)
-       | (?<ExpressionBitwiseNot>'~' cast_expression)
-       | (?<ExpressionLogicalNot>'!' cast_expression)
-       | (?<ExpressionSizeOfExpression>SIZEOF unary_expression)
-       | (?<ExpressionSizeOfType>SIZEOF '(' type_name ')')
-       | (?<ExpressionAlignOfType>ALIGNOF '(' type_name ')')
-       ;
-
-cast_expression
-       : unary_expression
-       | (?<ExpressionCast>'(' type_name ')' cast_expression)
-       ;
-
-multiplicative_expression
-       : cast_expression
-       | (?<ExpressionMultiply>multiplicative_expression '*' cast_expression)
-       | (?<ExpressionDivide>multiplicative_expression '/' cast_expression)
-       | (?<ExpressionModulo>multiplicative_expression '%' cast_expression)
-       ;
-
-additive_expression
-       : multiplicative_expression
-       | (?<ExpressionAdd>additive_expression '+' multiplicative_expression)
-       | (?<ExpressionSubtract>additive_expression '-' multiplicative_expression)
-       ;
-
-shift_expression
-       : additive_expression
-       | (?<ExpressionShiftLeft>shift_expression LEFT_OP additive_expression)
-       | (?<ExpressionShiftRight>shift_expression RIGHT_OP additive_expression)
-       ;
-
-relational_expression
-       : shift_expression
-       | (?<ExpressionLessThan>relational_expression '<' shift_expression)
-       | (?<ExpressionGreaterThan>relational_expression '>' shift_expression)
-       | (?<ExpressionLessThanOrEqual>relational_expression LE_OP shift_expression)
-       | (?<ExpressionGreaterThanOrEqual>relational_expression GE_OP shift_expression)
-       ;
-
-equality_expression
-       : relational_expression
-       | (?<ExpressionEqual>equality_expression EQ_OP relational_expression)
-       | (?<ExpressionNotEqual>equality_expression NE_OP relational_expression)
-       ;
-
-and_expression
-       : equality_expression
-       | (?<ExpressionBitwiseAnd>and_expression '&' equality_expression)
-       ;
-
-exclusive_or_expression
-       : and_expression
-       | (?<ExpressionExclusiveOr>exclusive_or_expression '^' and_expression)
-       ;
-
-inclusive_or_expression
-       : exclusive_or_expression
-       | (?<ExpressionBitwiseOr>inclusive_or_expression '|' exclusive_or_expression)
-       ;
-
-logical_and_expression
-       : inclusive_or_expression
-       | (?<ExpressionLogicalAnd>logical_and_expression AND_OP inclusive_or_expression)
-       ;
-
-logical_or_expression
-       : logical_and_expression
-       | (?<ExpressionLogicalOr>logical_or_expression OR_OP logical_and_expression)
-       ;
-
-conditional_expression
-       : logical_or_expression
-       | (?<ExpressionConditional>logical_or_expression '?' expression ':' conditional_expression)
-       ;
-
-assignment_expression_or_asterisk_opt
-       : (?<ExpressionEmpty>)
-       | (?<ExpressionAsterisk>'*')
-       | assignment_expression
-       ;
-
-assignment_expression
-       : conditional_expression
-       | (?<ExpressionAssignment>unary_expression '=' assignment_expression)
-       | (?<ExpressionMultiplyAssignment>unary_expression MUL_ASSIGN assignment_expression)
-       | (?<ExpressionDivideAssignment>unary_expression DIV_ASSIGN assignment_expression)
-       | (?<ExpressionModuloAssignment>unary_expression MOD_ASSIGN assignment_expression)
-       | (?<ExpressionAddAssignment>unary_expression ADD_ASSIGN assignment_expression)
-       | (?<ExpressionSubtractAssignment>unary_expression SUB_ASSIGN assignment_expression)
-       | (?<ExpressionLeftShiftAssignment>unary_expression LEFT_ASSIGN assignment_expression)
-       | (?<ExpressionRightShiftAssignment>unary_expression RIGHT_ASSIGN assignment_expression)
-       | (?<ExpressionBitwiseAndAssignment>unary_expression AND_ASSIGN assignment_expression)
-       | (?<ExpressionExclusiveOrAssignment>unary_expression XOR_ASSIGN assignment_expression)
-       | (?<ExpressionBitwiseOrAssignment>unary_expression OR_ASSIGN assignment_expression)
-       ;
-
-expression_opt
-       : (?<ExpressionEmpty>)
-       | expression
-       ;
-
-expression
-       : assignment_expression
-       | (?<ExpressionComma>expression ',' assignment_expression)
-       ;
-
-equals_constant_expression_opt
-       : (?<ExpressionEmpty>)
-       | '=' constant_expression
-       ;
-
-constant_expression
-       : conditional_expression
-       ;
-
-declaration
-       : (?<Declaration>(?<DeclarationSpecifierList>declaration_specifier_list) (?<InitDeclaratorList>init_declarator_list_opt) ';')
-       | static_assert_declaration
-       ;
-
-declaration_specifier_list
-       : declaration_specifier
-       | declaration_specifier_list declaration_specifier
-       ;
-
-declaration_specifier
-       : storage_class_specifier
-       | type_specifier
-       | type_qualifier
-       | function_specifier
-       | alignment_specifier
-       ;
-
-init_declarator_list_opt
-       :
-       | init_declarator_list
-       ;
-
-init_declarator_list
-       : init_declarator
-       | init_declarator_list ',' init_declarator
-       ;
-
-init_declarator
-       : (?<InitDeclarator>declarator equals_initializer_opt)
-       ;
-
-storage_class_specifier
-       : (?<StorageClassSpecifier n="0">TYPEDEF)
-       | (?<StorageClassSpecifier n="1">EXTERN)
-       | (?<StorageClassSpecifier n="2">STATIC)
-       | (?<StorageClassSpecifier n="3">THREAD_LOCAL)
-       | (?<StorageClassSpecifier n="4">AUTO)
-       | (?<StorageClassSpecifier n="5">REGISTER)
-       ;
-
-type_specifier
-       : (?<TypeSpecifier n="0">VOID)
-       | (?<TypeSpecifier n="1">CHAR)
-       | (?<TypeSpecifier n="2">SHORT)
-       | (?<TypeSpecifier n="3">INT)
-       | (?<TypeSpecifier n="4">LONG)
-       | (?<TypeSpecifier n="5">FLOAT)
-       | (?<TypeSpecifier n="6">DOUBLE)
-       | (?<TypeSpecifier n="7">SIGNED)
-       | (?<TypeSpecifier n="8">UNSIGNED)
-       | (?<TypeSpecifier n="9">BOOL)
-       | (?<TypeSpecifier n="10">COMPLEX)
-       | (?<TypeSpecifier n="11">IMAGINARY)
-       | atomic_type_specifier
-       | struct_specifier
-       | union_specifier
-       | enum_specifier
-       | TYPEDEF_NAME
-       ;
-
-struct_specifier
-       : (?<StructSpecifier>STRUCT identifier_opt '{' (?<StructDeclarationList>struct_declaration_list_opt) '}')
-       | (?<StructSpecifier>STRUCT IDENTIFIER)
-       ;
-
-union_specifier
-       : (?<UnionSpecifier>UNION identifier_opt '{' (?<StructDeclarationList>struct_declaration_list_opt) '}')
-       | (?<UnionSpecifier>UNION IDENTIFIER)
-       ;
-
-struct_declaration_list_opt
-       :
-       | struct_declaration_list
-       ;
-
-struct_declaration_list
-       : struct_declaration
-       | struct_declaration_list struct_declaration
-       ;
-
-struct_declaration
-       : (?<StructDeclaration>(?<SpecifierQualifierList>specifier_qualifier_list) (?<StructDeclaratorList>struct_declarator_list_opt) ';')
-       | static_assert_declaration
-       ;
-
-specifier_qualifier_list
-       : specifier_qualifier
-       | specifier_qualifier_list specifier_qualifier
-       ;
-
-specifier_qualifier
-       : type_specifier
-       | type_qualifier
-       ;
-
-struct_declarator_list_opt
-       :
-       | struct_declarator_list
-       ;
-
-struct_declarator_list
-       : struct_declarator
-       | struct_declarator_list ',' struct_declarator
-       ;
-
-struct_declarator
-       : (?<StructDeclarator>declarator_opt ':' constant_expression)
-       | declarator
-       ;
-
-enum_specifier
-       : (?<EnumSpecifier>ENUM identifier_opt '{' (?<EnumeratorList>enumerator_list_comma_opt) '}')
-       | (?<EnumSpecifier>ENUM IDENTIFIER)
-       ;
-
-enumerator_list_comma_opt
-       :
-       | enumerator_list
-       | enumerator_list ','
-       ;
-
-enumerator_list
-       : enumerator
-       | enumerator_list ',' enumerator
-       ;
-
-enumerator
-       : (?<Enumerator>enumeration_constant equals_constant_expression_opt)
-       ;
-
-atomic_type_specifier
-       : ATOMIC '(' type_name ')'
-       ;
-
-type_qualifier_or_static_list_opt
-       :
-       | type_qualifier_or_static_list
-       ;
-
-type_qualifier_or_static_list
-       : type_qualifier_or_static
-       | type_qualifier_or_static_list type_qualifier_or_static
-       ;
-
-type_qualifier_or_static
-       : type_qualifier
-       | (?<StorageClassSpecifier n="2">STATIC)
-       ;
-
-type_qualifier
-       : (?<TypeQualifier n="0">CONST)
-       | (?<TypeQualifier n="1">RESTRICT)
-       | (?<TypeQualifier n="2">VOLATILE)
-       | (?<TypeQualifier n="3">ATOMIC)
-       ;
-
-function_specifier
-       : (?<FunctionSpecifier n="0">INLINE)
-       | (?<FunctionSpecifier n="1">NORETURN)
-       ;
-
-alignment_specifier
-       : (?<AlignAsType>ALIGNAS '(' type_name ')')
-       | (?<AlignAsExpression>ALIGNAS '(' constant_expression ')')
-       ;
-
-declarator_opt
-       : (?<DeclaratorEmpty>)
-       | declarator
-       ;
-
-declarator
-       : direct_declarator
-       | (?<DeclaratorPointer>'*' (?<TypeQualifierList>type_qualifier_list_opt) declarator)
-       ;
-
-direct_declarator
-       : (?<DeclaratorIdentifier>IDENTIFIER)
-       | '(' declarator ')'
-       | (?<DeclaratorArray>direct_declarator '[' (?<TypeQualifierOrStaticList>type_qualifier_or_static_list_opt) assignment_expression_or_asterisk_opt ']')
-       | (?<DeclaratorFunctionOldStyle>direct_declarator '(' (?<IdentifierList>identifier_list_opt) ')')
-       | (?<DeclaratorFunction>direct_declarator '(' (?<ParameterDeclarationList>parameter_declaration_list) comma_ellipsis_opt ')')
-       ;
-
-type_qualifier_list_opt
-       :
-       | type_qualifier_list
-       ;
-
-type_qualifier_list
-       : type_qualifier
-       | type_qualifier_list type_qualifier
-       ;
-
-parameter_declaration_list
-       : parameter_declaration
-       | parameter_declaration_list ',' parameter_declaration
-       ;
-
-parameter_declaration
-       : (?<ParameterDeclaration>(?<DeclarationSpecifierList>declaration_specifier_list) declarator)
-       | (?<ParameterDeclaration>(?<DeclarationSpecifierList>declaration_specifier_list) abstract_declarator)
-       ;
-
-identifier_list_opt
-       :
-       | identifier_list
-       ;
-
-identifier_list
-       : IDENTIFIER
-       | identifier_list ',' IDENTIFIER
-       ;
-
-type_name
-       : (?<TypeName>(?<SpecifierQualifierList>specifier_qualifier_list) abstract_declarator)
-       ;
-
-abstract_declarator
-       : direct_abstract_declarator_opt
-       | (?<DeclaratorPointer>'*' (?<TypeQualifierList>type_qualifier_list_opt) abstract_declarator)
-       ;
-
-direct_abstract_declarator_opt
-       : (?<DeclaratorAbstract>)
-       | direct_abstract_declarator
-       ;
-
-direct_abstract_declarator
-       : '(' direct_abstract_declarator ')'
-       | '(' (?<DeclaratorPointer>'*' (?<TypeQualifierList>type_qualifier_list_opt) abstract_declarator) ')'
-       | (?<DeclaratorArray>(?<DeclaratorAbstract>)'[' (?<TypeQualifierOrStaticList>type_qualifier_or_static_list_opt) assignment_expression_or_asterisk_opt ']')
-       | (?<DeclaratorFunction>(?<DeclaratorAbstract>)'('(?<ParameterDeclarationList>)(?<CommaEllipsisEmpty>) ')')
-       | (?<DeclaratorFunction>(?<DeclaratorAbstract>)'(' (?<ParameterDeclarationList>parameter_declaration_list) comma_ellipsis_opt ')')
-       | (?<DeclaratorArray>direct_abstract_declarator '[' (?<TypeQualifierOrStaticList>type_qualifier_or_static_list_opt) assignment_expression_or_asterisk_opt ']')
-       | (?<DeclaratorFunction>direct_abstract_declarator '('(?<ParameterDeclarationList>)(?<CommaEllipsisEmpty>) ')')
-       | (?<DeclaratorFunction>direct_abstract_declarator '(' (?<ParameterDeclarationList>parameter_declaration_list) comma_ellipsis_opt ')')
-       ;
-
-equals_initializer_opt
-       : (?<EqualsInitializerEmpty>)
-       | '=' initializer
-       ;
-
-initializer
-       : '{' (?<DesignatorInitializerList>designator_initializer_list_comma_opt) '}'
-       | assignment_expression
-       ;
-
-designator_initializer_list_comma_opt
-       :
-       | designator_initializer_list
-       | designator_initializer_list ','
-       ;
-
-designator_initializer_list
-       : designator_initializer
-       | designator_initializer_list ',' designator_initializer
-       ;
-
-designator_initializer
-       : (?<DesignatorInitializer>(?<DesignatorList>designator_list_equals_opt) initializer)
-       ;
-
-designator_list_equals_opt
-       :
-       | designator_list '='
-       ;
-
-designator_list
-       : designator
-       | designator_list designator
-       ;
-
-designator
-       : (?<DesignatorIndex>'[' constant_expression ']')
-       | (?<DesignatorField>'.' IDENTIFIER)
-       ;
-
-static_assert_declaration
-       : (?<StaticAssertDeclaration>STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL ')' ';')
-       ;
-
-statement
-       : (?<StatementLabel>IDENTIFIER ':' statement)
-       | (?<StatementCase>CASE constant_expression ':' statement)
-       | (?<StatementDefault>DEFAULT ':' statement)
-       | (?<StatementBlock>'{' (?<BlockItemList>block_item_list_opt) '}')
-       | (?<StatementExpression>expression_opt ';')
-       | (?<StatementIfElse>IF '(' expression ')' statement ELSE statement)
-       | (?<StatementIf>IF '(' expression ')' statement)
-       | (?<StatementSwitch>SWITCH '(' expression ')' statement)
-       | (?<StatementWhile>WHILE '(' expression ')' statement)
-       | (?<StatementDoWhile>DO statement WHILE '(' expression ')' ';')
-       | (?<StatementFor>FOR '(' expression_opt ';' expression_opt ';' expression_opt ')' statement)
-       | (?<StatementFor>FOR '(' declaration expression_opt ';' expression_opt ')' statement)
-       | (?<StatementGoto>GOTO IDENTIFIER ';')
-       | (?<StatementContinue>CONTINUE ';')
-       | (?<StatementBreak>BREAK ';')
-       | (?<StatementReturn>RETURN expression_opt ';')
-       ;
-
-block_item_list_opt
-       :
-       | block_item_list
-       ;
-
-block_item_list
-       : block_item
-       | block_item_list block_item
-       ;
-
-block_item
-       : declaration
-       | statement
-       ;
-
-translation_unit_opt
-       :
-       | translation_unit
-       ;
-
-translation_unit
-       : external_declaration
-       | translation_unit external_declaration
-       ;
-
-external_declaration
-       : function_definition
-       | declaration
-       ;
-
-function_definition
-       : (?<FunctionDefinition>(?<DeclarationSpecifierList>declaration_specifier_list) declarator (?<DeclarationList>declaration_list_opt) '{' (?<BlockItemList>block_item_list_opt) '}')
-       ;
-
-declaration_list_opt
-       :
-       | declaration_list
-       ;
-
-declaration_list
-       : declaration
-       | declaration_list declaration
-       ;
-
-identifier_opt
-       : (?<IdentifierEmpty>)
-       | IDENTIFIER
-       ;
-
-comma_ellipsis_opt
-       : (?<CommaEllipsisEmpty>)
-       | (?<CommaEllipsis>',' ELLIPSIS)
-       ;
-
diff --git a/ansi_c_yylex.py b/ansi_c_yylex.py
deleted file mode 100644 (file)
index 5fc4fd0..0000000
+++ /dev/null
@@ -1,1932 +0,0 @@
-import dfa
-
-# GENERATE DFA BEGIN
-_dfa = dfa.DFA([('', {}), ('', {}), ('AUTO', {}), ('BREAK', {}), ('CASE', {}),
-('CHAR', {}), ('CONST', {}), ('CONTINUE', {}), ('DEFAULT', {}), ('DO', {}), (
-'DOUBLE', {}), ('ELSE', {}), ('ENUM', {}), ('EXTERN', {}), ('FLOAT', {}), (
-'FOR', {}), ('GOTO', {}), ('IF', {}), ('INLINE', {}), ('INT', {}), ('LONG', {}
-), ('REGISTER', {}), ('RESTRICT', {}), ('RETURN', {}), ('SHORT', {}), (
-'SIGNED', {}), ('SIZEOF', {}), ('STATIC', {}), ('STRUCT', {}), ('SWITCH', {}),
-('TYPEDEF', {}), ('UNION', {}), ('UNSIGNED', {}), ('VOID', {}), ('VOLATILE', {}
-), ('WHILE', {}), ('ALIGNAS', {}), ('ALIGNOF', {}), ('ATOMIC', {}), ('BOOL', {}
-), ('COMPLEX', {}), ('GENERIC', {}), ('IMAGINARY', {}), ('NORETURN', {}), (
-'STATIC_ASSERT', {}), ('THREAD_LOCAL', {}), ('FUNC_NAME', {}), ('TYPEDEF_NAME',
-{}), ('IDENTIFIER', {}), ('Identifier', {}), ('', {}), ('', {}), ('I_CONSTANT',
-{}), ('ExpressionIntLiteral', {}), ('', {}), ('', {}), ('', {}), ('', {}), ('',
-{}), ('', {}), ('', {}), ('', {}), ('', {}), ('', {}), ('', {}), ('I_CONSTANT',
-{}), ('ExpressionIntLiteral', {}), ('', {}), ('', {}), ('', {}), ('', {}), ('',
-{}), ('', {}), ('', {}), ('', {}), ('', {}), ('', {}), ('I_CONSTANT', {}), (
-'ExpressionIntLiteral', {}), ('', {}), ('', {}), ('', {}), ('', {}), ('', {}),
-('', {}), ('', {}), ('', {}), ('', {}), ('I_CONSTANT', {}), (
-'ExpressionCharConstant', {}), ('', {}), ('', {}), ('', {}), ('', {}), ('', {}
-), ('', {}), ('F_CONSTANT', {}), ('ExpressionFloatLiteral', {}), ('', {}), ('',
-{}), ('', {}), ('', {}), ('', {}), ('', {}), ('F_CONSTANT', {}), (
-'ExpressionFloatLiteral', {}), ('', {}), ('', {}), ('', {}), ('', {}), ('', {}
-), ('', {}), ('', {}), ('F_CONSTANT', {}), ('ExpressionFloatLiteral', {}), ('',
-{}), ('', {}), ('', {}), ('', {}), ('', {}), ('', {}), ('F_CONSTANT', {}), (
-'ExpressionFloatLiteral', {}), ('', {}), ('', {}), ('', {}), ('', {}), ('', {}
-), ('', {}), ('', {}), ('', {}), ('F_CONSTANT', {}), ('ExpressionFloatLiteral',
-{}), ('', {}), ('', {}), ('', {}), ('', {}), ('', {}), ('', {}), ('', {}), ('',
-{}), ('', {}), ('F_CONSTANT', {}), ('ExpressionFloatLiteral', {}), ('', {}), (
-'', {}), ('', {}), ('', {}), ('', {}), ('', {}), ('', {}), ('', {}), (
-'STRING_LITERAL', {}), ('ExpressionStringLiteral', {}), ('', {}), ('', {}), (
-'', {}), ('Text', {}), ('', {}), ('', {}), ('', {}), ('', {}), ('', {}), (
-'ELLIPSIS', {}), ('RIGHT_ASSIGN', {}), ('LEFT_ASSIGN', {}), ('ADD_ASSIGN', {}),
-('SUB_ASSIGN', {}), ('MUL_ASSIGN', {}), ('DIV_ASSIGN', {}), ('MOD_ASSIGN', {}),
-('AND_ASSIGN', {}), ('XOR_ASSIGN', {}), ('OR_ASSIGN', {}), ('RIGHT_OP', {}), (
-'LEFT_OP', {}), ('INC_OP', {}), ('DEC_OP', {}), ('PTR_OP', {}), ('AND_OP', {}),
-('OR_OP', {}), ('LE_OP', {}), ('GE_OP', {}), ('EQ_OP', {}), ('NE_OP', {}), (
-'X_3B', {}), ('X_7B', {}), ('', {}), ('X_7D', {}), ('', {}), ('X_2C', {}), (
-'X_3A', {}), ('X_3D', {}), ('X_28', {}), ('X_29', {}), ('X_5B', {}), ('', {}),
-('X_5D', {}), ('', {}), ('X_2E', {}), ('X_26', {}), ('X_21', {}), ('X_7E', {}),
-('X_2D', {}), ('X_2B', {}), ('X_2A', {}), ('X_2F', {}), ('X_25', {}), ('X_3C',
-{}), ('X_3E', {}), ('X_5E', {}), ('X_7C', {}), ('X_3F', {}), ('', {}), ('', {}
-), ('', {})], [([256], [0], 0), ([9, 10, 11, 13, 32, 33, 34, 35, 37, 38, 39,
-40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 58, 59, 60, 61, 62, 63, 64, 65, 76, 77,
-85, 86, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
-108, 109, 114, 115, 116, 117, 118, 119, 120, 123, 124, 125, 126, 127, 256], [2,
-3, 4, 3, 2, 3, 5, 6, 2, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
-21, 22, 23, 24, 25, 2, 26, 27, 26, 28, 26, 29, 2, 30, 31, 32, 2, 33, 34, 35,
-36, 37, 38, 39, 26, 40, 26, 41, 26, 42, 43, 44, 45, 46, 47, 26, 48, 49, 50, 51,
-2], -1), ([9, 13, 32, 33, 256], [52, 53, 52, 53, 52], 1), ([61, 62, 256], [52,
-54, 52], 1), ([10, 11, 34, 35, 92, 93, 256], [55, 56, 55, 57, 55, 58, 55], 3),
-([61, 62, 63, 256], [59, 60, 61, 59], 2), ([38, 39, 61, 62, 256], [59, 62, 59,
-63, 59], 2), ([10, 11, 39, 40, 92, 93, 256], [64, 59, 64, 59, 64, 65, 64], 2),
-([61, 62, 256], [52, 66, 52], 1), ([43, 44, 61, 62, 256], [59, 67, 59, 68, 59],
-2), ([45, 46, 61, 62, 63, 256], [56, 69, 56, 70, 71, 56], 3), ([46, 47, 48, 58,
-256], [59, 72, 59, 73, 59], 2), ([42, 43, 47, 48, 61, 62, 256], [56, 74, 56,
-75, 56, 76, 56], 3), ([46, 47, 48, 56, 58, 69, 70, 76, 77, 85, 86, 88, 89, 101,
-102, 108, 109, 117, 118, 120, 121, 256], [77, 78, 77, 79, 80, 77, 81, 77, 82,
-77, 83, 77, 84, 77, 81, 77, 85, 77, 86, 77, 84, 77], 17), ([46, 47, 48, 58, 69,
-70, 76, 77, 85, 86, 101, 102, 108, 109, 117, 118, 256], [87, 88, 87, 89, 87,
-90, 87, 91, 87, 92, 87, 90, 87, 93, 87, 94, 87], 13), ([62, 63, 256], [52, 95,
-52], 1), ([37, 38, 58, 59, 60, 61, 62, 256], [96, 97, 96, 98, 96, 99, 100, 96],
-5), ([61, 62, 256], [52, 101, 52], 1), ([61, 62, 63, 256], [56, 102, 103, 56],
-3), ([48, 58, 65, 91, 95, 96, 97, 123, 256], [52, 104, 52, 104, 52, 104, 52,
-104, 52], 1), ([34, 35, 39, 40, 48, 58, 65, 91, 95, 96, 97, 123, 256], [56,
-105, 56, 106, 56, 107, 56, 107, 56, 107, 56, 107, 56], 3), ([61, 62, 256], [52,
-108, 52], 1), ([48, 58, 65, 66, 67, 68, 71, 72, 73, 74, 78, 79, 83, 84, 85, 91,
-95, 96, 97, 123, 256], [109, 110, 109, 111, 112, 113, 110, 114, 110, 115, 110,
-116, 110, 117, 118, 110, 109, 119, 109, 110, 109], 12), ([48, 58, 65, 91, 95,
-96, 97, 117, 118, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 121, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 111, 112, 114, 115, 123, 256], [56, 122,
-56, 122, 56, 122, 56, 122, 123, 122, 124, 122, 56], 3), ([48, 58, 65, 91, 95,
-96, 97, 98, 104, 105, 111, 112, 123, 256], [96, 125, 96, 125, 96, 125, 96, 126,
-125, 127, 125, 128, 125, 96], 5), ([48, 58, 65, 91, 95, 96, 97, 101, 102, 111,
-112, 123, 256], [129, 130, 129, 130, 129, 130, 129, 130, 131, 130, 132, 130,
-129], 4), ([48, 58, 65, 91, 95, 96, 97, 108, 109, 110, 111, 120, 121, 123, 256
-], [129, 130, 129, 130, 129, 130, 129, 130, 133, 130, 134, 130, 135, 130, 129],
-4), ([48, 58, 65, 91, 95, 96, 97, 108, 109, 111, 112, 123, 256], [56, 122, 56,
-122, 56, 122, 56, 122, 136, 122, 137, 122, 56], 3), ([48, 58, 65, 91, 95, 96,
-97, 111, 112, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 138, 120, 59], 2
-), ([48, 58, 65, 91, 95, 96, 97, 102, 103, 110, 111, 123, 256], [129, 130, 129,
-130, 129, 130, 129, 130, 139, 130, 140, 130, 129], 4), ([48, 58, 65, 91, 95,
-96, 97, 111, 112, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 141, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 101, 102, 123, 256], [129, 130, 129, 130,
-129, 130, 129, 130, 142, 130, 129], 4), ([48, 58, 65, 91, 95, 96, 97, 99, 100,
-104, 105, 106, 116, 117, 119, 120, 123, 256], [143, 144, 143, 144, 143, 144,
-143, 144, 145, 144, 146, 147, 144, 148, 144, 149, 144, 143], 9), ([48, 58, 65,
-91, 95, 96, 97, 121, 122, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 150,
-120, 59], 2), ([34, 35, 39, 40, 48, 56, 57, 58, 65, 91, 95, 96, 97, 110, 111,
-123, 256], [151, 152, 151, 153, 151, 154, 155, 154, 151, 154, 151, 154, 151,
-154, 156, 154, 151], 6), ([48, 58, 65, 91, 95, 96, 97, 111, 112, 123, 256], [
-56, 122, 56, 122, 56, 122, 56, 122, 157, 122, 56], 3), ([48, 58, 65, 91, 95,
-96, 97, 104, 105, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 158, 120, 59
-], 2), ([61, 62, 124, 125, 256], [59, 159, 59, 160, 59], 2), ([9, 13, 32, 33,
-34, 35, 76, 77, 85, 86, 117, 118, 256], [151, 161, 151, 161, 151, 162, 151,
-163, 151, 164, 151, 165, 151], 6), ([34, 35, 39, 40, 48, 56, 63, 64, 92, 93,
-97, 99, 102, 103, 110, 111, 114, 115, 116, 117, 118, 119, 120, 121, 256], [56,
-166, 56, 166, 56, 167, 56, 166, 56, 166, 56, 166, 56, 166, 56, 166, 56, 166,
-56, 166, 56, 166, 56, 168, 56], 3), ([10, 11, 39, 40, 92, 93, 256], [169, 56,
-169, 170, 169, 171, 169], 3), ([34, 35, 39, 40, 48, 56, 63, 64, 92, 93, 97, 99,
-102, 103, 110, 111, 114, 115, 116, 117, 118, 119, 120, 121, 256], [56, 172, 56,
-172, 56, 173, 56, 172, 56, 172, 56, 172, 56, 172, 56, 172, 56, 172, 56, 172,
-56, 172, 56, 174, 56], 3), ([46, 47, 256], [52, 175, 52], 1), ([48, 58, 69, 70,
-71, 76, 77, 101, 102, 103, 108, 109, 256], [151, 176, 151, 177, 178, 151, 179,
-151, 177, 180, 151, 181, 151], 6), ([10, 11, 256], [182, 52, 182], 1), ([48,
-58, 69, 70, 71, 76, 77, 101, 102, 103, 108, 109, 256], [151, 176, 151, 183,
-184, 151, 185, 151, 183, 186, 151, 187, 151], 6), ([46, 47, 48, 56, 58, 69, 70,
-76, 77, 85, 86, 101, 102, 108, 109, 117, 118, 256], [87, 88, 87, 188, 189, 87,
-90, 87, 190, 87, 191, 87, 90, 87, 192, 87, 193, 87], 13), ([46, 47, 48, 58, 69,
-70, 101, 102, 256], [151, 194, 151, 195, 151, 196, 151, 196, 151], 6), ([43,
-44, 45, 46, 48, 58, 256], [59, 197, 59, 197, 59, 198, 59], 2), ([76, 77, 85,
-86, 117, 118, 256], [56, 199, 56, 200, 56, 201, 56], 3), ([76, 77, 108, 109,
-256], [129, 202, 129, 203, 129], 4), ([46, 47, 48, 58, 65, 71, 97, 103, 256], [
-96, 204, 96, 205, 96, 205, 96, 205, 96], 5), ([85, 86, 108, 109, 117, 118, 256
-], [56, 200, 56, 199, 56, 201, 56], 3), ([76, 77, 85, 86, 117, 118, 256], [56,
-206, 56, 207, 56, 208, 56], 3), ([76, 77, 108, 109, 256], [129, 209, 129, 210,
-129], 4), ([85, 86, 108, 109, 117, 118, 256], [56, 207, 56, 206, 56, 208, 56],
-3), ([61, 62, 256], [52, 211, 52], 1), ([61, 62, 256], [52, 212, 52], 1), ([48,
-58, 65, 91, 95, 96, 97, 108, 109, 116, 117, 123, 256], [129, 130, 129, 130,
-129, 130, 129, 130, 213, 130, 214, 130, 129], 4), ([48, 58, 65, 91, 95, 96, 97,
-111, 112, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 215, 120, 59], 2), ([
-48, 58, 65, 91, 95, 96, 97, 111, 112, 123, 256], [59, 120, 59, 120, 59, 120,
-59, 120, 216, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 101, 102, 123, 256],
-[59, 120, 59, 120, 59, 120, 59, 120, 217, 120, 59], 2), ([48, 58, 65, 91, 95,
-96, 97, 109, 110, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 218, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 111, 112, 123, 256], [59, 120, 59, 120,
-59, 120, 59, 120, 219, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 116, 117,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 220, 120, 59], 2), ([48, 58,
-65, 91, 95, 96, 97, 104, 105, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-221, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 102, 103, 123, 256], [59, 120,
-59, 120, 59, 120, 59, 120, 222, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97,
-116, 117, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 223, 120, 59], 2), ([
-48, 58, 65, 91, 95, 96, 97, 111, 112, 123, 256], [59, 120, 59, 120, 59, 120,
-59, 120, 224, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 101, 102, 123, 256],
-[59, 120, 59, 120, 59, 120, 59, 120, 225, 120, 59], 2), ([48, 58, 65, 91, 95,
-96, 97, 115, 116, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 226, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 98, 123, 256], [59, 120, 59, 120, 59, 120,
-59, 227, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 110, 111, 123, 256], [56,
-122, 56, 122, 56, 122, 56, 122, 228, 122, 56], 3), ([48, 58, 65, 91, 95, 96,
-97, 102, 103, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 229, 120, 59], 2
-), ([48, 58, 65, 91, 95, 96, 97, 117, 118, 123, 256], [59, 120, 59, 120, 59,
-120, 59, 120, 230, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 115, 116, 123,
-256], [59, 120, 59, 120, 59, 120, 59, 120, 231, 120, 59], 2), ([48, 58, 65, 91,
-95, 96, 97, 117, 118, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 232, 120,
-59], 2), ([48, 58, 65, 91, 95, 96, 97, 116, 117, 123, 256], [59, 120, 59, 120,
-59, 120, 59, 120, 233, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 111, 112,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 234, 120, 59], 2), ([48, 58,
-65, 91, 95, 96, 97, 114, 115, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-235, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 116, 117, 123, 256], [59, 120,
-59, 120, 59, 120, 59, 120, 236, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97,
-108, 109, 116, 117, 123, 256], [56, 122, 56, 122, 56, 122, 56, 122, 237, 122,
-238, 122, 56], 3), ([48, 58, 65, 91, 95, 96, 97, 110, 111, 123, 256], [59, 120,
-59, 120, 59, 120, 59, 120, 239, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97,
-103, 104, 115, 116, 117, 123, 256], [129, 130, 129, 130, 129, 130, 129, 130,
-240, 130, 241, 242, 130, 129], 4), ([48, 58, 65, 91, 95, 96, 97, 98, 123, 256],
-[59, 120, 59, 120, 59, 120, 59, 243, 120, 59], 2), ([48, 58, 65, 91, 95, 96,
-97, 111, 112, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 244, 120, 59], 2
-), ([48, 58, 65, 91, 95, 96, 97, 103, 104, 122, 123, 256], [129, 130, 129, 130,
-129, 130, 129, 130, 245, 130, 246, 129], 4), ([48, 58, 65, 91, 95, 96, 97, 98,
-114, 115, 123, 256], [56, 122, 56, 122, 56, 122, 56, 247, 122, 248, 122, 56], 3
-), ([48, 58, 65, 91, 95, 96, 97, 105, 106, 123, 256], [59, 120, 59, 120, 59,
-120, 59, 120, 249, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 112, 113, 123,
-256], [59, 120, 59, 120, 59, 120, 59, 120, 250, 120, 59], 2), ([34, 35, 48, 58,
-65, 91, 95, 96, 97, 123, 256], [59, 251, 59, 252, 59, 252, 59, 252, 59, 252, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 105, 106, 115, 116, 123, 256], [56, 122,
-56, 122, 56, 122, 56, 122, 253, 122, 254, 122, 56], 3), ([48, 58, 65, 91, 95,
-96, 97, 105, 106, 108, 109, 123, 256], [56, 122, 56, 122, 56, 122, 56, 122,
-255, 122, 256, 122, 56], 3), ([48, 58, 65, 91, 95, 96, 97, 105, 106, 123, 256],
-[59, 120, 59, 120, 59, 120, 59, 120, 257, 120, 59], 2), ([10, 11, 34, 35, 92,
-93, 256], [258, 56, 258, 259, 258, 260, 258], 3), ([34, 35, 256], [52, 261, 52
-], 1), ([34, 35, 56, 57, 256], [59, 262, 59, 263, 59], 2), ([10, 11, 34, 35,
-48, 56, 92, 93, 256], [264, 129, 264, 265, 264, 266, 264, 267, 264], 4), ([48,
-58, 65, 71, 97, 103, 256], [52, 268, 52, 268, 52, 268, 52], 1), ([34, 35, 39,
-40, 48, 56, 63, 64, 92, 93, 97, 99, 102, 103, 110, 111, 114, 115, 116, 117,
-118, 119, 120, 121, 256], [56, 172, 56, 172, 56, 269, 56, 172, 56, 172, 56,
-172, 56, 172, 56, 172, 56, 172, 56, 172, 56, 172, 56, 270, 56], 3), ([10, 11,
-39, 40, 48, 56, 92, 93, 256], [271, 129, 271, 272, 271, 273, 271, 274, 271], 4
-), ([48, 58, 65, 71, 97, 103, 256], [52, 275, 52, 275, 52, 275, 52], 1), ([43,
-44, 45, 46, 48, 58, 256], [59, 276, 59, 276, 59, 277, 59], 2), ([43, 44, 45,
-46, 48, 58, 256], [59, 278, 59, 278, 59, 279, 59], 2), ([48, 58, 256], [52,
-280, 52], 1), ([48, 58, 70, 71, 76, 77, 102, 103, 108, 109, 256], [96, 281, 96,
-282, 96, 283, 96, 284, 96, 285, 96], 5), ([85, 86, 117, 118, 256], [59, 286,
-59, 287, 59], 2), ([76, 77, 256], [52, 288, 52], 1), ([108, 109, 256], [52,
-288, 52], 1), ([48, 58, 65, 71, 97, 103, 256], [52, 289, 52, 289, 52, 289, 52],
-1), ([46, 47, 48, 58, 65, 71, 76, 77, 80, 81, 85, 86, 97, 103, 108, 109, 112,
-113, 117, 118, 256], [87, 290, 87, 291, 87, 291, 87, 292, 87, 293, 87, 294, 87,
-291, 87, 295, 87, 293, 87, 296, 87], 13), ([85, 86, 117, 118, 256], [59, 297,
-59, 298, 59], 2), ([76, 77, 256], [52, 299, 52], 1), ([108, 109, 256], [52,
-299, 52], 1), ([48, 58, 65, 91, 95, 96, 97, 105, 106, 123, 256], [56, 122, 56,
-122, 56, 122, 56, 122, 300, 122, 56], 3), ([48, 58, 65, 91, 95, 96, 97, 111,
-112, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 301, 120, 59], 2), ([48,
-58, 65, 91, 95, 96, 97, 111, 112, 123, 256], [59, 120, 59, 120, 59, 120, 59,
-120, 302, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 109, 110, 123, 256], [59,
-120, 59, 120, 59, 120, 59, 120, 303, 120, 59], 2), ([48, 58, 65, 91, 95, 96,
-97, 110, 111, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 304, 120, 59], 2
-), ([48, 58, 65, 91, 95, 96, 97, 98, 123, 256], [59, 120, 59, 120, 59, 120, 59,
-305, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 114, 115, 123, 256], [59, 120,
-59, 120, 59, 120, 59, 120, 306, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 98,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 307, 120, 59], 2), ([48, 58, 65, 91,
-95, 96, 97, 114, 115, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 308, 120,
-59], 2), ([48, 58, 65, 91, 95, 96, 97, 117, 118, 123, 256], [59, 120, 59, 120,
-59, 120, 59, 120, 309, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 111, 112,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 310, 120, 59], 2), ([48, 58,
-65, 91, 95, 96, 97, 108, 109, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-311, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 98, 123, 256], [59, 120, 59,
-120, 59, 120, 59, 312, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 101, 102,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 313, 120, 59], 2), ([48, 58,
-65, 91, 95, 96, 97, 114, 115, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-314, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 115, 116, 117, 123, 256], [56,
-122, 56, 122, 56, 122, 56, 122, 315, 316, 122, 56], 3), ([48, 58, 65, 91, 95,
-96, 97, 98, 123, 256], [59, 120, 59, 120, 59, 120, 59, 317, 120, 59], 2), ([48,
-58, 65, 91, 95, 96, 97, 98, 99, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-318, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 101, 102, 123, 256], [59, 120,
-59, 120, 59, 120, 59, 120, 319, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97,
-109, 110, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 320, 120, 59], 2), ([
-48, 58, 65, 91, 95, 96, 97, 101, 102, 123, 256], [59, 120, 59, 120, 59, 120,
-59, 120, 321, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 98, 123, 256], [59,
-120, 59, 120, 59, 120, 59, 322, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97,
-111, 112, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 323, 120, 59], 2), ([
-48, 58, 65, 91, 95, 96, 97, 105, 106, 123, 256], [59, 120, 59, 120, 59, 120,
-59, 120, 324, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 103, 104, 123, 256],
-[59, 120, 59, 120, 59, 120, 59, 120, 325, 120, 59], 2), ([48, 58, 65, 91, 95,
-96, 97, 105, 106, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 326, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 116, 117, 123, 256], [59, 120, 59, 120,
-59, 120, 59, 120, 327, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 117, 118,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 328, 120, 59], 2), ([48, 58,
-65, 91, 95, 96, 97, 110, 111, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-329, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 114, 115, 123, 256], [59, 120,
-59, 120, 59, 120, 59, 120, 330, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97,
-110, 111, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 331, 120, 59], 2), ([
-48, 58, 65, 91, 95, 96, 97, 101, 102, 123, 256], [56, 122, 56, 122, 56, 122,
-56, 122, 332, 122, 56], 3), ([48, 58, 65, 91, 95, 96, 97, 116, 117, 123, 256],
-[59, 120, 59, 120, 59, 120, 59, 120, 333, 120, 59], 2), ([48, 58, 65, 91, 95,
-96, 97, 117, 118, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 334, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 116, 117, 123, 256], [59, 120, 59, 120,
-59, 120, 59, 120, 335, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 101, 102,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 336, 120, 59], 2), ([48, 58,
-65, 91, 95, 96, 97, 111, 112, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-337, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 105, 106, 123, 256], [59, 120,
-59, 120, 59, 120, 59, 120, 338, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97,
-100, 101, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 339, 120, 59], 2), ([
-48, 58, 65, 91, 95, 96, 97, 98, 123, 256], [59, 120, 59, 120, 59, 120, 59, 340,
-120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 108, 109, 123, 256], [59, 120, 59,
-120, 59, 120, 59, 120, 341, 120, 59], 2), ([9, 13, 32, 33, 34, 35, 76, 77, 85,
-86, 117, 118, 256], [151, 342, 151, 342, 151, 162, 151, 163, 151, 164, 151,
-165, 151], 6), ([34, 35, 39, 40, 48, 56, 63, 64, 92, 93, 97, 99, 102, 103, 110,
-111, 114, 115, 116, 117, 118, 119, 120, 121, 256], [56, 343, 56, 343, 56, 344,
-56, 343, 56, 343, 56, 343, 56, 343, 56, 343, 56, 343, 56, 343, 56, 343, 56,
-345, 56], 3), ([10, 11, 34, 35, 48, 56, 92, 93, 256], [264, 129, 264, 265, 264,
-346, 264, 267, 264], 4), ([10, 11, 34, 35, 48, 58, 65, 71, 92, 93, 97, 103, 256
-], [264, 129, 264, 265, 264, 347, 264, 347, 264, 267, 264, 347, 264], 4), ([10,
-11, 39, 40, 48, 56, 92, 93, 256], [271, 129, 271, 272, 271, 348, 271, 274, 271
-], 4), ([48, 58, 65, 71, 97, 103, 256], [52, 349, 52, 349, 52, 349, 52], 1), ([
-10, 11, 39, 40, 48, 56, 92, 93, 256], [271, 129, 271, 272, 271, 350, 271, 274,
-271], 4), ([10, 11, 39, 40, 48, 58, 65, 71, 92, 93, 97, 103, 256], [271, 129,
-271, 272, 271, 351, 271, 351, 271, 274, 271, 351, 271], 4), ([48, 58, 256], [
-52, 352, 52], 1), ([48, 58, 70, 71, 76, 77, 102, 103, 108, 109, 256], [96, 353,
-96, 354, 96, 355, 96, 356, 96, 357, 96], 5), ([48, 58, 256], [52, 358, 52], 1),
-([48, 58, 70, 71, 76, 77, 102, 103, 108, 109, 256], [96, 359, 96, 360, 96, 361,
-96, 362, 96, 363, 96], 5), ([48, 58, 65, 71, 80, 81, 97, 103, 112, 113, 256], [
-59, 364, 59, 364, 59, 365, 59, 364, 59, 365, 59], 2), ([48, 58, 65, 71, 80, 81,
-97, 103, 112, 113, 256], [59, 364, 59, 364, 59, 366, 59, 364, 59, 366, 59], 2),
-([76, 77, 85, 86, 117, 118, 256], [56, 367, 56, 368, 56, 369, 56], 3), ([43,
-44, 45, 46, 48, 58, 256], [59, 370, 59, 370, 59, 371, 59], 2), ([76, 77, 108,
-109, 256], [129, 372, 129, 373, 129], 4), ([85, 86, 108, 109, 117, 118, 256], [
-56, 368, 56, 367, 56, 369, 56], 3), ([48, 58, 65, 91, 95, 96, 97, 103, 104,
-123, 256], [56, 122, 56, 122, 56, 122, 56, 122, 374, 122, 56], 3), ([48, 58,
-65, 91, 95, 96, 97, 109, 110, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-375, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 108, 109, 123, 256], [59, 120,
-59, 120, 59, 120, 59, 120, 376, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97,
-112, 113, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 377, 120, 59], 2), ([
-48, 58, 65, 91, 95, 96, 97, 101, 102, 123, 256], [59, 120, 59, 120, 59, 120,
-59, 120, 378, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 103, 104, 123, 256],
-[59, 120, 59, 120, 59, 120, 59, 120, 379, 120, 59], 2), ([48, 58, 65, 91, 95,
-96, 97, 101, 102, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 380, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 116, 117, 123, 256], [59, 120, 59, 120,
-59, 120, 59, 120, 381, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 101, 102,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 382, 120, 59], 2), ([48, 58,
-65, 91, 95, 96, 97, 110, 111, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-383, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 107, 108, 123, 256], [59, 120,
-59, 120, 59, 120, 59, 120, 384, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97,
-116, 117, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 385, 120, 59], 2), ([
-48, 58, 65, 91, 95, 96, 97, 105, 106, 123, 256], [59, 120, 59, 120, 59, 120,
-59, 120, 386, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 117, 118, 123, 256],
-[59, 120, 59, 120, 59, 120, 59, 120, 387, 120, 59], 2), ([48, 58, 65, 91, 95,
-96, 97, 108, 109, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 388, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 114, 115, 123, 256], [59, 120, 59, 120,
-59, 120, 59, 120, 389, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 116, 117,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 390, 120, 59], 2), ([48, 58,
-65, 91, 95, 96, 97, 110, 111, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-391, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 115, 116, 123, 256], [59, 120,
-59, 120, 59, 120, 59, 120, 392, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97,
-114, 115, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 393, 120, 59], 2), ([
-48, 58, 65, 91, 95, 96, 97, 114, 115, 123, 256], [59, 120, 59, 120, 59, 120,
-59, 120, 394, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 102, 103, 123, 256],
-[59, 120, 59, 120, 59, 120, 59, 120, 395, 120, 59], 2), ([48, 58, 65, 91, 95,
-96, 97, 116, 117, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 396, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 101, 102, 123, 256], [59, 120, 59, 120,
-59, 120, 59, 120, 397, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 111, 112,
-123, 256], [56, 122, 56, 122, 56, 398, 56, 122, 399, 122, 56], 3), ([48, 58,
-65, 91, 95, 96, 97, 105, 106, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-400, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 99, 100, 123, 256], [59, 120,
-59, 120, 59, 120, 59, 120, 401, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 99,
-100, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 402, 120, 59], 2), ([48,
-58, 65, 91, 95, 96, 97, 100, 101, 123, 256], [59, 120, 59, 120, 59, 120, 59,
-120, 403, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 110, 111, 123, 256], [59,
-120, 59, 120, 59, 120, 59, 120, 404, 120, 59], 2), ([48, 58, 65, 91, 95, 96,
-97, 103, 104, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 405, 120, 59], 2
-), ([48, 58, 65, 91, 95, 96, 97, 116, 117, 123, 256], [59, 120, 59, 120, 59,
-120, 59, 120, 406, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 101, 102, 123,
-256], [59, 120, 59, 120, 59, 120, 59, 120, 407, 120, 59], 2), ([10, 11, 34, 35,
-48, 56, 92, 93, 256], [408, 129, 408, 409, 408, 410, 408, 411, 408], 4), ([48,
-58, 65, 71, 97, 103, 256], [52, 412, 52, 412, 52, 412, 52], 1), ([10, 11, 39,
-40, 48, 56, 92, 93, 256], [271, 129, 271, 272, 271, 350, 271, 274, 271], 4), ([
-10, 11, 39, 40, 48, 58, 65, 71, 92, 93, 97, 103, 256], [271, 129, 271, 272,
-271, 413, 271, 413, 271, 274, 271, 413, 271], 4), ([43, 44, 45, 46, 48, 58, 256
-], [59, 414, 59, 414, 59, 415, 59], 2), ([43, 44, 45, 46, 48, 58, 256], [59,
-416, 59, 416, 59, 417, 59], 2), ([85, 86, 117, 118, 256], [59, 418, 59, 419, 59
-], 2), ([48, 58, 256], [52, 420, 52], 1), ([48, 58, 70, 71, 76, 77, 102, 103,
-108, 109, 256], [96, 421, 96, 422, 96, 423, 96, 424, 96, 425, 96], 5), ([76,
-77, 256], [52, 426, 52], 1), ([108, 109, 256], [52, 426, 52], 1), ([48, 58, 65,
-91, 95, 96, 97, 110, 111, 123, 256], [56, 122, 56, 122, 56, 122, 56, 122, 427,
-122, 56], 3), ([48, 58, 65, 91, 95, 96, 97, 105, 106, 123, 256], [59, 120, 59,
-120, 59, 120, 59, 120, 428, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 108,
-109, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 429, 120, 59], 2), ([48,
-58, 65, 91, 95, 96, 97, 114, 115, 123, 256], [59, 120, 59, 120, 59, 120, 59,
-120, 430, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 105, 106, 123, 256], [59,
-120, 59, 120, 59, 120, 59, 120, 431, 120, 59], 2), ([48, 58, 65, 91, 95, 96,
-97, 116, 117, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 432, 120, 59], 2
-), ([48, 58, 65, 91, 95, 96, 97, 105, 106, 123, 256], [59, 120, 59, 120, 59,
-120, 59, 120, 433, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 98, 123, 256], [
-59, 120, 59, 120, 59, 120, 59, 434, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97,
-99, 100, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 435, 120, 59], 2), ([
-48, 58, 65, 91, 95, 96, 97, 110, 111, 123, 256], [59, 120, 59, 120, 59, 120,
-59, 120, 436, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 108, 109, 123, 256],
-[59, 120, 59, 120, 59, 120, 59, 120, 437, 120, 59], 2), ([48, 58, 65, 91, 95,
-96, 97, 101, 102, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 438, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 110, 111, 123, 256], [59, 120, 59, 120,
-59, 120, 59, 120, 439, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 101, 102,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 440, 120, 59], 2), ([48, 58,
-65, 91, 95, 96, 97, 116, 117, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-441, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 105, 106, 123, 256], [59, 120,
-59, 120, 59, 120, 59, 120, 442, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97,
-110, 111, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 443, 120, 59], 2), ([
-48, 58, 65, 91, 95, 96, 97, 108, 109, 123, 256], [59, 120, 59, 120, 59, 120,
-59, 120, 444, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 100, 101, 123, 256],
-[59, 120, 59, 120, 59, 120, 59, 120, 445, 120, 59], 2), ([48, 58, 65, 91, 95,
-96, 97, 116, 117, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 311, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 102, 103, 123, 256], [59, 120, 59, 120,
-59, 120, 59, 120, 446, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 99, 100,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 447, 120, 59], 2), ([48, 58,
-65, 91, 95, 96, 97, 116, 117, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-448, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 104, 105, 123, 256], [59, 120,
-59, 120, 59, 120, 59, 120, 449, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97,
-101, 102, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 450, 120, 59], 2), ([
-48, 58, 65, 91, 95, 96, 97, 110, 111, 123, 256], [59, 120, 59, 120, 59, 120,
-59, 120, 451, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 105, 106, 123, 256],
-[59, 120, 59, 120, 59, 120, 59, 120, 452, 120, 59], 2), ([10, 11, 34, 35, 48,
-56, 92, 93, 256], [408, 129, 408, 409, 408, 453, 408, 411, 408], 4), ([10, 11,
-34, 35, 48, 58, 65, 71, 92, 93, 97, 103, 256], [408, 129, 408, 409, 408, 454,
-408, 454, 408, 411, 408, 454, 408], 4), ([48, 58, 256], [52, 455, 52], 1), ([
-48, 58, 70, 71, 76, 77, 102, 103, 108, 109, 256], [96, 456, 96, 457, 96, 458,
-96, 459, 96, 460, 96], 5), ([48, 58, 256], [52, 461, 52], 1), ([48, 58, 70, 71,
-76, 77, 102, 103, 108, 109, 256], [96, 462, 96, 463, 96, 464, 96, 465, 96, 466,
-96], 5), ([48, 58, 65, 91, 95, 96, 97, 98, 111, 112, 123, 256], [56, 122, 56,
-122, 56, 122, 56, 467, 122, 468, 122, 56], 3), ([48, 58, 65, 91, 95, 96, 97,
-99, 100, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 469, 120, 59], 2), ([
-48, 58, 65, 91, 95, 96, 97, 101, 102, 123, 256], [59, 120, 59, 120, 59, 120,
-59, 120, 470, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 105, 106, 123, 256],
-[59, 120, 59, 120, 59, 120, 59, 120, 471, 120, 59], 2), ([48, 58, 65, 91, 95,
-96, 97, 110, 111, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 472, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 117, 118, 123, 256], [59, 120, 59, 120,
-59, 120, 59, 120, 473, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 99, 100,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 474, 120, 59], 2), ([48, 58,
-65, 91, 95, 96, 97, 100, 101, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-475, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 123, 256], [59, 120, 59, 120,
-59, 476, 59, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 117, 118, 123, 256], [
-59, 120, 59, 120, 59, 120, 59, 120, 477, 120, 59], 2), ([48, 58, 65, 91, 95,
-96, 97, 116, 117, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 478, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 101, 102, 123, 256], [59, 120, 59, 120,
-59, 120, 59, 120, 479, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 99, 100,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 480, 120, 59], 2), ([48, 58,
-65, 91, 95, 96, 97, 98, 123, 256], [59, 120, 59, 120, 59, 120, 59, 481, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 102, 103, 123, 256], [59, 120, 59, 120,
-59, 120, 59, 120, 482, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 101, 102,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 483, 120, 59], 2), ([48, 58,
-65, 91, 95, 96, 97, 108, 109, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-484, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 115, 116, 123, 256], [59, 120,
-59, 120, 59, 120, 59, 120, 485, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97,
-102, 103, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 486, 120, 59], 2), ([
-48, 58, 65, 91, 95, 96, 97, 120, 121, 123, 256], [59, 120, 59, 120, 59, 120,
-59, 120, 487, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 99, 100, 123, 256], [
-59, 120, 59, 120, 59, 120, 59, 120, 488, 120, 59], 2), ([48, 58, 65, 91, 95,
-96, 97, 98, 123, 256], [59, 120, 59, 120, 59, 120, 59, 489, 120, 59], 2), ([48,
-58, 65, 91, 95, 96, 97, 114, 115, 123, 256], [59, 120, 59, 120, 59, 120, 59,
-120, 490, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 123, 256], [59, 120, 59,
-120, 59, 491, 59, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 123, 256], [59,
-120, 59, 120, 59, 492, 59, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 123, 256
-], [59, 120, 59, 120, 59, 493, 59, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97,
-101, 102, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 494, 120, 59], 2), ([
-48, 58, 65, 91, 95, 96, 97, 114, 115, 123, 256], [59, 120, 59, 120, 59, 120,
-59, 120, 495, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 116, 117, 123, 256],
-[59, 120, 59, 120, 59, 120, 59, 120, 496, 120, 59], 2), ([48, 58, 65, 91, 95,
-96, 97, 103, 104, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 497, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 100, 101, 123, 256], [59, 120, 59, 120,
-59, 120, 59, 120, 498, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 101, 102,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 499, 120, 59], 2), ([48, 58,
-65, 91, 95, 96, 97, 114, 115, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-500, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 110, 111, 123, 256], [59, 120,
-59, 120, 59, 120, 59, 120, 501, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 98,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 502, 120, 59], 2), ([48, 58, 65, 91,
-95, 96, 97, 108, 109, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 503, 120,
-59], 2), ([48, 58, 65, 91, 95, 96, 97, 115, 116, 123, 256], [59, 120, 59, 120,
-59, 120, 59, 120, 504, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 121, 122,
-123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 505, 120, 59], 2), ([48, 58,
-65, 91, 95, 96, 97, 115, 116, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120,
-506, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 111, 112, 123, 256], [59, 120,
-59, 120, 59, 120, 59, 120, 507, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97,
-123, 256], [59, 120, 59, 120, 59, 508, 59, 120, 59], 2), ([48, 58, 65, 91, 95,
-96, 97, 115, 116, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 509, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 99, 100, 123, 256], [59, 120, 59, 120, 59,
-120, 59, 120, 510, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 116, 117, 123,
-256], [59, 120, 59, 120, 59, 120, 59, 120, 311, 120, 59], 2), ([48, 58, 65, 91,
-95, 96, 97, 101, 102, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 511, 120,
-59], 2), ([48, 58, 65, 91, 95, 96, 97, 98, 123, 256], [59, 120, 59, 120, 59,
-120, 59, 512, 120, 59], 2), ([48, 58, 65, 91, 95, 96, 97, 114, 115, 123, 256],
-[59, 120, 59, 120, 59, 120, 59, 120, 513, 120, 59], 2), ([48, 58, 65, 91, 95,
-96, 97, 108, 109, 123, 256], [59, 120, 59, 120, 59, 120, 59, 120, 514, 120, 59
-], 2), ([48, 58, 65, 91, 95, 96, 97, 116, 117, 123, 256], [59, 120, 59, 120,
-59, 120, 59, 120, 515, 120, 59], 2)], [(0, []), (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),
-(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, 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), (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, 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), (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, 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), (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, 1), (2, 1, 0), (3, 1), (2, 1, 2), (3, 1), (
-2, 1, 4), (3, 1), (2, 1, 6), (3, 1), (2, 1, 8), (3, 1), (2, 1, 10), (3, 1), (2,
-1, 12), (3, 1), (2, 1, 14), (3, 1), (2, 1, 16), (3, 1), (2, 1, 18), (3, 1), (2,
-1, 20), (3, 1), (2, 1, 22), (3, 1), (2, 1, 24), (3, 1), (2, 1, 26), (3, 1), (2,
-1, 28), (3, 1), (2, 1, 30), (3, 1), (2, 1, 32), (3, 1), (2, 1, 34), (3, 1), (2,
-1, 36), (3, 1), (2, 1, 38), (3, 1), (2, 1, 40), (3, 1), (2, 1, 42), (3, 1), (2,
-1, 44), (3, 1), (2, 1, 46), (3, 1), (2, 1, 48), (3, 1), (2, 1, 50), (3, 1), (2,
-1, 52), (3, 1), (2, 1, 54), (3, 1), (2, 1, 56), (3, 1), (2, 1, 58), (3, 1), (2,
-1, 60), (3, 1), (2, 1, 62), (3, 1), (2, 1, 64), (3, 1), (2, 1, 66), (3, 1), (2,
-1, 68), (3, 1), (2, 1, 70), (3, 1), (2, 1, 72), (3, 1), (2, 1, 74), (3, 1), (2,
-1, 76), (3, 1), (2, 1, 78), (3, 1), (2, 1, 80), (3, 1), (2, 1, 82), (3, 1), (2,
-1, 84), (3, 1), (2, 1, 86), (3, 1), (2, 1, 88), (3, 1), (2, 1, 90), (3, 1), (2,
-1, 92), (3, 1), (2, 1, 94), (1, 1), (1, 1), (3, 1), (3, 1), (3, 1), (2, 1, 96),
-(2, 1, 98), (2, 1, 100), (3, 1), (2, 1, 104), (2, 1, 106), (2, 1, 108), (2, 1,
-110), (3, 1), (2, 1, 130), (2, 1, 132), (2, 1, 134), (3, 1), (2, 1, 154), (2,
-1, 156), (3, 1), (2, 1, 176), (2, 1, 178), (1, 1), (2, 1, 180), (2, 1, 182), (
-1, 1), (1, 1), (3, 1), (3, 1), (3, 1), (3, 1), (2, 1, 192), (2, 1, 194), (2, 1,
-196), (3, 1), (2, 1, 208), (2, 1, 210), (1, 1), (2, 1, 212), (3, 1), (3, 1), (
-2, 1, 226), (2, 1, 228), (2, 1, 230), (3, 1), (2, 1, 242), (2, 1, 244), (2, 1,
-246), (2, 1, 248), (3, 1), (2, 1, 262), (2, 1, 264), (2, 1, 266), (2, 1, 268),
-(3, 1), (2, 1, 284), (2, 1, 286), (2, 1, 288), (2, 1, 290), (3, 1), (2, 1, 304
-), (2, 1, 306), (2, 1, 308), (1, 1), (2, 1, 310), (2, 1, 312), (1, 1), (1, 1),
-(1, 1), (3, 1), (3, 1), (3, 1), (3, 1), (3, 1), (2, 1, 326), (3, 1), (2, 1, 328
-), (3, 1), (2, 1, 330), (3, 1), (2, 1, 332), (3, 1), (2, 1, 334), (3, 1), (2,
-1, 336), (3, 1), (2, 1, 338), (3, 1), (2, 1, 340), (3, 1), (2, 1, 342), (3, 1),
-(2, 1, 344), (3, 1), (2, 1, 346), (3, 1), (2, 1, 348), (3, 1), (2, 1, 350), (3,
-1), (2, 1, 352), (3, 1), (2, 1, 354), (3, 1), (2, 1, 356), (3, 1), (2, 1, 358),
-(3, 1), (2, 1, 360), (3, 1), (2, 1, 362), (3, 1), (2, 1, 364), (3, 1), (2, 1,
-366), (3, 1), (2, 1, 368), (3, 1), (2, 1, 370), (3, 1), (2, 1, 372), (2, 1, 374
-), (1, 1), (3, 1), (3, 1), (2, 1, 376), (2, 1, 378), (1, 1), (3, 1), (3, 1), (
-2, 1, 380), (3, 1), (2, 1, 382), (3, 1), (2, 1, 384), (3, 1), (2, 1, 386), (3,
-1), (2, 1, 388), (3, 1), (2, 1, 390), (2, 1, 392), (1, 1), (3, 1), (3, 1), (2,
-1, 394), (2, 1, 396), (1, 1), (3, 1), (3, 1), (2, 1, 398), (3, 1), (2, 1, 400),
-(3, 1), (2, 1, 402), (3, 1), (2, 1, 404), (3, 1), (2, 1, 406), (3, 1), (2, 1,
-408), (3, 1), (2, 1, 410), (3, 1), (2, 1, 412), (3, 1), (2, 1, 414), (3, 1), (
-2, 1, 416), (3, 1), (2, 1, 418), (3, 1), (2, 1, 420), (3, 1), (2, 1, 422), (3,
-1), (2, 1, 424), (3, 1), (2, 1, 426), (2, 1, 428), (3, 1), (2, 1, 430), (3, 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), (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, 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),
-(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, 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), (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, 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), (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), (2, 1, 0), (0, 1), (2,
-1, 2), (0, 1), (2, 1, 4), (0, 1), (2, 1, 6), (0, 1), (2, 1, 8), (0, 1), (2, 1,
-10), (0, 1), (2, 1, 12), (0, 1), (2, 1, 14), (0, 1), (2, 1, 16), (0, 1), (2, 1,
-18), (0, 1), (2, 1, 20), (0, 1), (2, 1, 22), (0, 1), (2, 1, 24), (0, 1), (2, 1,
-26), (0, 1), (2, 1, 28), (0, 1), (2, 1, 30), (0, 1), (2, 1, 32), (0, 1), (2, 1,
-34), (0, 1), (2, 1, 36), (0, 1), (2, 1, 38), (0, 1), (2, 1, 40), (0, 1), (2, 1,
-42), (0, 1), (2, 1, 44), (0, 1), (2, 1, 46), (0, 1), (2, 1, 48), (0, 1), (2, 1,
-50), (0, 1), (2, 1, 52), (0, 1), (2, 1, 54), (0, 1), (2, 1, 56), (0, 1), (2, 1,
-58), (0, 1), (2, 1, 60), (0, 1), (2, 1, 62), (0, 1), (2, 1, 64), (0, 1), (2, 1,
-66), (0, 1), (2, 1, 68), (0, 1), (2, 1, 70), (0, 1), (2, 1, 72), (0, 1), (2, 1,
-74), (0, 1), (2, 1, 76), (0, 1), (2, 1, 78), (0, 1), (2, 1, 80), (0, 1), (2, 1,
-82), (0, 1), (2, 1, 84), (0, 1), (2, 1, 86), (0, 1), (2, 1, 88), (0, 1), (2, 1,
-90), (0, 1), (2, 1, 92), (0, 1), (2, 1, 94), (1, 1), (1, 1), (0, 1), (0, 1), (
-0, 1), (2, 1, 96), (2, 1, 98), (2, 1, 100), (0, 1), (2, 1, 104), (2, 1, 106), (
-2, 1, 108), (2, 1, 110), (0, 1), (2, 1, 130), (2, 1, 132), (2, 1, 134), (0, 1),
-(2, 1, 154), (2, 1, 156), (0, 1), (2, 1, 176), (2, 1, 178), (1, 1), (2, 1, 180
-), (2, 1, 182), (1, 1), (1, 1), (0, 1), (0, 1), (0, 1), (0, 1), (2, 1, 192), (
-2, 1, 194), (2, 1, 196), (0, 1), (2, 1, 208), (2, 1, 210), (1, 1), (2, 1, 212),
-(0, 1), (0, 1), (2, 1, 226), (2, 1, 228), (2, 1, 230), (0, 1), (2, 1, 242), (2,
-1, 244), (2, 1, 246), (2, 1, 248), (0, 1), (2, 1, 262), (2, 1, 264), (2, 1, 266
-), (2, 1, 268), (0, 1), (2, 1, 284), (2, 1, 286), (2, 1, 288), (2, 1, 290), (0,
-1), (2, 1, 304), (2, 1, 306), (2, 1, 308), (1, 1), (2, 1, 310), (2, 1, 312), (
-1, 1), (1, 1), (1, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (2, 1, 326), (0,
-1), (2, 1, 328), (0, 1), (2, 1, 330), (0, 1), (2, 1, 332), (0, 1), (2, 1, 334),
-(0, 1), (2, 1, 336), (0, 1), (2, 1, 338), (0, 1), (2, 1, 340), (0, 1), (2, 1,
-342), (0, 1), (2, 1, 344), (0, 1), (2, 1, 346), (0, 1), (2, 1, 348), (0, 1), (
-2, 1, 350), (0, 1), (2, 1, 352), (0, 1), (2, 1, 354), (0, 1), (2, 1, 356), (0,
-1), (2, 1, 358), (0, 1), (2, 1, 360), (0, 1), (2, 1, 362), (0, 1), (2, 1, 364),
-(0, 1), (2, 1, 366), (0, 1), (2, 1, 368), (0, 1), (2, 1, 370), (0, 1), (2, 1,
-372), (2, 1, 374), (1, 1), (0, 1), (0, 1), (2, 1, 376), (2, 1, 378), (1, 1), (
-0, 1), (0, 1), (2, 1, 380), (0, 1), (2, 1, 382), (0, 1), (2, 1, 384), (0, 1), (
-2, 1, 386), (0, 1), (2, 1, 388), (0, 1), (2, 1, 390), (2, 1, 392), (1, 1), (0,
-1), (0, 1), (2, 1, 394), (2, 1, 396), (1, 1), (0, 1), (0, 1), (2, 1, 398), (0,
-1), (2, 1, 400), (0, 1), (2, 1, 402), (0, 1), (2, 1, 404), (0, 1), (2, 1, 406),
-(0, 1), (2, 1, 408), (0, 1), (2, 1, 410), (0, 1), (2, 1, 412), (0, 1), (2, 1,
-414), (0, 1), (2, 1, 416), (0, 1), (2, 1, 418), (0, 1), (2, 1, 420), (0, 1), (
-2, 1, 422), (0, 1), (2, 1, 424), (0, 1), (2, 1, 426), (2, 1, 428), (0, 1), (2,
-1, 430), (0, 1)]), (0, [(1, 122), (0, 121), (2, 1, 431), (0, 122), (2, 1, 431),
-(3, 1)]), (2, [(1, 122), (0, 120), (2, 1, 429), (1, 1), (2, 1, 428), (3, 1), (
-2, 1, 427), (0, 1), (2, 1, 431), (0, 121), (2, 1, 429), (1, 1), (2, 1, 428), (
-0, 1), (2, 1, 427), (3, 1), (2, 1, 431), (0, 1)]), (2, [(1, 122), (0, 120), (2,
-1, 429), (1, 1), (2, 1, 428), (3, 1), (2, 1, 427), (0, 122), (2, 1, 429), (1, 1
-), (2, 1, 428), (0, 1), (2, 1, 427), (3, 1), (0, 1)]), (3, [(1, 122), (0, 91),
-(3, 1), (0, 16), (2, 1, 403), (0, 13), (2, 1, 431), (0, 109), (2, 1, 403), (3,
-1), (0, 12), (2, 1, 431), (0, 1)]), (4, [(1, 122), (0, 69), (2, 1, 314), (1, 1
-), (2, 1, 316), (1, 1), (3, 1), (2, 1, 318), (2, 1, 320), (3, 1), (2, 1, 315),
-(3, 1), (0, 51), (2, 1, 431), (0, 70), (2, 1, 314), (1, 1), (2, 1, 316), (1, 1
-), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1, 315), (0, 52), (2, 1, 431),
-(3, 1)]), (5, [(1, 122), (0, 77), (3, 1), (0, 18), (3, 1), (0, 17), (2, 1, 415
-), (0, 7), (2, 1, 431), (0, 115), (2, 1, 415), (3, 1), (0, 6), (2, 1, 431), (0,
-1)]), (6, [(1, 122), (0, 78), (3, 1), (0, 7), (3, 1), (0, 20), (2, 1, 401), (0,
-14), (2, 1, 431), (0, 108), (2, 1, 401), (3, 1), (0, 13), (2, 1, 431), (0, 1)]
-), (7, [(1, 122), (0, 57), (2, 1, 184), (1, 1), (3, 1), (2, 1, 186), (2, 1, 188
-), (3, 1), (0, 63), (2, 1, 431), (0, 58), (2, 1, 184), (1, 1), (0, 1), (2, 1,
-186), (2, 1, 188), (0, 64), (2, 1, 431), (3, 1)]), (0, [(1, 122), (0, 100), (2,
-1, 387), (0, 21), (2, 1, 431), (0, 101), (2, 1, 387), (3, 1), (0, 20), (2, 1,
-431), (0, 1)]), (0, [(1, 122), (0, 101), (2, 1, 389), (0, 20), (2, 1, 431), (0,
-102), (2, 1, 389), (3, 1), (0, 19), (2, 1, 431), (0, 1)]), (8, [(1, 122), (0,
-75), (3, 1), (0, 36), (2, 1, 411), (0, 9), (2, 1, 431), (0, 113), (2, 1, 411),
-(3, 1), (0, 8), (2, 1, 431), (0, 1)]), (9, [(1, 122), (0, 73), (3, 1), (0, 9),
-(3, 1), (0, 27), (2, 1, 409), (0, 10), (2, 1, 431), (0, 112), (2, 1, 409), (3,
-1), (0, 9), (2, 1, 431), (0, 1)]), (0, [(1, 122), (0, 97), (2, 1, 381), (0, 24
-), (2, 1, 431), (0, 98), (2, 1, 381), (3, 1), (0, 23), (2, 1, 431), (0, 1)]), (
-10, [(1, 122), (0, 74), (3, 1), (0, 9), (3, 2), (0, 24), (2, 1, 407), (0, 11),
-(2, 1, 431), (0, 111), (2, 1, 407), (3, 1), (0, 10), (2, 1, 431), (0, 1)]), (
-11, [(1, 122), (0, 60), (2, 1, 214), (3, 1), (0, 9), (3, 1), (0, 35), (2, 1,
-399), (0, 15), (2, 1, 431), (0, 61), (2, 1, 214), (0, 46), (2, 1, 399), (3, 1),
-(0, 14), (2, 1, 431), (0, 1)]), (12, [(1, 122), (3, 2), (0, 74), (3, 1), (0, 36
-), (2, 1, 413), (0, 8), (2, 1, 431), (0, 114), (2, 1, 413), (3, 1), (0, 7), (2,
-1, 431), (0, 1)]), (13, [(1, 122), (0, 51), (3, 1), (0, 1), (1, 1), (2, 1, 158
-), (3, 1), (1, 1), (2, 1, 160), (2, 1, 162), (1, 1), (2, 1, 164), (2, 1, 166),
-(1, 1), (3, 2), (2, 1, 170), (2, 1, 172), (1, 1), (1, 1), (1, 1), (3, 4), (2,
-1, 157), (2, 1, 155), (0, 5), (2, 1, 197), (1, 1), (2, 1, 196), (3, 1), (2, 1,
-198), (2, 1, 200), (3, 1), (2, 1, 213), (1, 1), (2, 1, 212), (3, 2), (0, 1), (
-2, 1, 231), (1, 1), (2, 1, 230), (3, 5), (0, 56), (2, 1, 431), (0, 54), (1, 1),
-(2, 1, 158), (0, 1), (1, 1), (2, 1, 160), (2, 1, 162), (1, 1), (2, 1, 164), (2,
-1, 166), (1, 1), (0, 2), (2, 1, 170), (2, 1, 172), (1, 1), (1, 1), (1, 1), (0,
-4), (2, 1, 157), (2, 1, 155), (3, 1), (0, 4), (2, 1, 197), (1, 1), (2, 1, 196),
-(0, 1), (2, 1, 198), (2, 1, 200), (0, 1), (2, 1, 213), (1, 1), (2, 1, 212), (0,
-3), (2, 1, 231), (1, 1), (2, 1, 230), (0, 61), (2, 1, 431), (0, 1)]), (14, [(1,
-122), (0, 52), (2, 1, 135), (1, 1), (2, 1, 136), (3, 1), (1, 1), (2, 1, 138), (
-2, 1, 140), (1, 1), (2, 1, 142), (2, 1, 144), (1, 1), (3, 2), (2, 1, 148), (2,
-1, 150), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 133), (2, 1, 131), (0, 6), (2,
-1, 197), (1, 1), (2, 1, 196), (3, 1), (2, 1, 198), (2, 1, 200), (3, 1), (2, 1,
-213), (1, 1), (2, 1, 212), (3, 2), (0, 1), (2, 1, 231), (1, 1), (2, 1, 230), (
-3, 2), (0, 59), (2, 1, 431), (0, 53), (2, 1, 135), (1, 1), (2, 1, 136), (0, 1),
-(1, 1), (2, 1, 138), (2, 1, 140), (1, 1), (2, 1, 142), (2, 1, 144), (1, 1), (0,
-2), (2, 1, 148), (2, 1, 150), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 133), (2,
-1, 131), (3, 1), (0, 5), (2, 1, 197), (1, 1), (2, 1, 196), (0, 1), (2, 1, 198),
-(2, 1, 200), (0, 1), (2, 1, 213), (1, 1), (2, 1, 212), (0, 3), (2, 1, 231), (1,
-1), (2, 1, 230), (0, 61), (2, 1, 431), (0, 1)]), (15, [(1, 122), (0, 98), (2,
-1, 383), (0, 7), (3, 1), (0, 15), (2, 1, 431), (0, 99), (2, 1, 383), (3, 1), (
-0, 22), (2, 1, 431), (0, 1)]), (0, [(1, 122), (0, 92), (2, 1, 371), (0, 29), (
-2, 1, 431), (0, 93), (2, 1, 371), (3, 1), (0, 28), (2, 1, 431), (0, 1)]), (16,
-[(1, 122), (0, 72), (3, 1), (0, 9), (3, 1), (0, 5), (3, 1), (0, 5), (3, 1), (0,
-8), (3, 1), (0, 11), (2, 1, 417), (0, 6), (2, 1, 431), (0, 116), (2, 1, 417), (
-3, 1), (0, 5), (2, 1, 431), (0, 1)]), (17, [(1, 122), (0, 90), (3, 1), (0, 8),
-(2, 1, 385), (0, 22), (2, 1, 431), (0, 100), (2, 1, 385), (3, 1), (0, 21), (2,
-1, 431), (0, 1)]), (18, [(1, 122), (0, 71), (3, 1), (0, 9), (3, 1), (0, 7), (3,
-1), (0, 26), (2, 1, 419), (0, 5), (2, 1, 431), (0, 117), (2, 1, 419), (3, 1), (
-0, 4), (2, 1, 431), (0, 1)]), (0, [(1, 122), (0, 119), (2, 1, 425), (0, 2), (2,
-1, 431), (0, 120), (2, 1, 425), (3, 1), (0, 1), (2, 1, 431), (0, 1)]), (19, [(
-1, 122), (0, 50), (2, 1, 101), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1,
-97), (0, 71), (2, 1, 431), (0, 51), (2, 1, 101), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (3, 1), (0, 70), (2, 1, 431), (0, 1)]), (20, [(1, 122),
-(0, 50), (2, 1, 101), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0,
-6), (2, 1, 183), (2, 1, 181), (3, 1), (0, 11), (2, 1, 313), (2, 1, 311), (3, 1
-), (0, 52), (2, 1, 431), (0, 51), (2, 1, 101), (1, 1), (2, 1, 102), (0, 1), (2,
-1, 99), (2, 1, 97), (3, 1), (0, 5), (2, 1, 183), (2, 1, 181), (0, 12), (2, 1,
-313), (2, 1, 311), (0, 53), (2, 1, 431), (0, 1)]), (20, [(1, 122), (0, 50), (2,
-1, 101), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 5), (2, 1,
-183), (2, 1, 181), (3, 1), (0, 11), (2, 1, 313), (2, 1, 311), (3, 1), (0, 53),
-(2, 1, 431), (0, 51), (2, 1, 101), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2,
-1, 97), (3, 1), (0, 4), (2, 1, 183), (2, 1, 181), (0, 12), (2, 1, 313), (2, 1,
-311), (0, 54), (2, 1, 431), (0, 1)]), (0, [(1, 122), (0, 102), (2, 1, 393), (2,
-1, 391), (0, 19), (2, 1, 431), (0, 103), (2, 1, 393), (2, 1, 391), (3, 1), (0,
-18), (2, 1, 431), (0, 1)]), (0, [(1, 122), (0, 104), (2, 1, 397), (2, 1, 395),
-(0, 17), (2, 1, 431), (0, 105), (2, 1, 397), (2, 1, 395), (3, 1), (0, 16), (2,
-1, 431), (0, 1)]), (21, [(1, 122), (0, 79), (3, 1), (0, 37), (2, 1, 421), (0, 4
-), (2, 1, 431), (0, 118), (2, 1, 421), (3, 1), (0, 3), (2, 1, 431), (0, 1)]), (
-22, [(1, 122), (0, 36), (3, 11), (0, 3), (2, 1, 101), (1, 1), (2, 1, 102), (3,
-1), (2, 1, 99), (2, 1, 97), (0, 71), (2, 1, 431), (0, 51), (2, 1, 101), (1, 1),
-(2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 70), (2, 1, 431), (0,
-1)]), (23, [(1, 122), (0, 2), (3, 1), (0, 47), (2, 1, 101), (1, 1), (2, 1, 102
-), (3, 1), (2, 1, 99), (2, 1, 97), (0, 71), (2, 1, 431), (0, 51), (2, 1, 101),
-(1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 70), (2, 1,
-431), (0, 1)]), (24, [(1, 122), (0, 3), (3, 1), (0, 43), (3, 1), (0, 2), (2, 1,
-101), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 71), (2, 1, 431
-), (0, 51), (2, 1, 101), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-3, 1), (0, 70), (2, 1, 431), (0, 1)]), (25, [(1, 122), (0, 4), (3, 4), (0, 42),
-(2, 1, 101), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 71), (2,
-1, 431), (0, 51), (2, 1, 101), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (3, 1), (0, 70), (2, 1, 431), (0, 1)]), (26, [(1, 122), (0, 8), (3, 3), (
-0, 39), (2, 1, 101), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0,
-71), (2, 1, 431), (0, 51), (2, 1, 101), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99
-), (2, 1, 97), (3, 1), (0, 70), (2, 1, 431), (0, 1)]), (27, [(1, 122), (0, 11),
-(3, 3), (0, 36), (2, 1, 101), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1,
-97), (0, 71), (2, 1, 431), (0, 51), (2, 1, 101), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (3, 1), (0, 70), (2, 1, 431), (0, 1)]), (28, [(1, 122),
-(0, 14), (3, 2), (0, 34), (2, 1, 101), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99),
-(2, 1, 97), (0, 71), (2, 1, 431), (0, 51), (2, 1, 101), (1, 1), (2, 1, 102), (
-0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 70), (2, 1, 431), (0, 1)]), (29, [(
-1, 122), (0, 16), (3, 1), (0, 33), (2, 1, 101), (1, 1), (2, 1, 102), (3, 1), (
-2, 1, 99), (2, 1, 97), (0, 71), (2, 1, 431), (0, 51), (2, 1, 101), (1, 1), (2,
-1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 70), (2, 1, 431), (0, 1)]
-), (30, [(1, 122), (0, 17), (3, 3), (0, 30), (2, 1, 101), (1, 1), (2, 1, 102),
-(3, 1), (2, 1, 99), (2, 1, 97), (0, 71), (2, 1, 431), (0, 51), (2, 1, 101), (1,
-1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 70), (2, 1, 431),
-(0, 1)]), (31, [(1, 122), (0, 20), (3, 1), (0, 29), (2, 1, 101), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 71), (2, 1, 431), (0, 51), (2, 1, 101
-), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 70), (2, 1,
-431), (0, 1)]), (32, [(1, 122), (0, 21), (3, 3), (0, 26), (2, 1, 101), (1, 1),
-(2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 71), (2, 1, 431), (0, 51), (2,
-1, 101), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 70),
-(2, 1, 431), (0, 1)]), (33, [(1, 122), (0, 24), (3, 6), (0, 18), (3, 2), (2, 1,
-101), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 71), (2, 1, 431
-), (0, 51), (2, 1, 101), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-3, 1), (0, 70), (2, 1, 431), (0, 1)]), (34, [(1, 122), (0, 30), (3, 1), (0, 19
-), (2, 1, 101), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 71), (
-2, 1, 431), (0, 51), (2, 1, 101), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2,
-1, 97), (3, 1), (0, 70), (2, 1, 431), (0, 1)]), (35, [(1, 122), (0, 31), (3, 2
-), (0, 17), (2, 1, 101), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 4), (2, 1, 183), (2, 1, 181), (3, 1), (0, 10), (3, 1), (2, 1, 313), (2, 1,
-311), (3, 1), (0, 54), (2, 1, 431), (0, 51), (2, 1, 101), (1, 1), (2, 1, 102),
-(0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 3), (2, 1, 183), (2, 1, 181), (0,
-12), (2, 1, 313), (2, 1, 311), (0, 55), (2, 1, 431), (0, 1)]), (36, [(1, 122),
-(0, 33), (3, 2), (0, 15), (2, 1, 101), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99),
-(2, 1, 97), (0, 71), (2, 1, 431), (0, 51), (2, 1, 101), (1, 1), (2, 1, 102), (
-0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 70), (2, 1, 431), (0, 1)]), (37, [(
-1, 122), (0, 35), (3, 1), (0, 14), (2, 1, 101), (1, 1), (2, 1, 102), (3, 1), (
-2, 1, 99), (2, 1, 97), (0, 71), (2, 1, 431), (0, 51), (2, 1, 101), (1, 1), (2,
-1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 70), (2, 1, 431), (0, 1)]
-), (0, [(1, 122), (0, 93), (2, 1, 375), (2, 1, 373), (0, 28), (2, 1, 431), (0,
-94), (2, 1, 375), (2, 1, 373), (3, 1), (0, 27), (2, 1, 431), (0, 1)]), (38, [(
-1, 122), (0, 80), (3, 1), (0, 6), (3, 1), (0, 30), (2, 1, 423), (0, 3), (2, 1,
-431), (0, 119), (2, 1, 423), (3, 1), (0, 2), (2, 1, 431), (0, 1)]), (0, [(1,
-122), (0, 95), (2, 1, 379), (2, 1, 377), (0, 26), (2, 1, 431), (0, 96), (2, 1,
-379), (2, 1, 377), (3, 1), (0, 25), (2, 1, 431), (0, 1)]), (0, [(1, 122), (0,
-109), (2, 1, 405), (0, 12), (2, 1, 431), (0, 110), (2, 1, 405), (3, 1), (0, 11
-), (2, 1, 431), (0, 1)]), (0, [(1, 1), (0, 2), (3, 1)]), (2, [(1, 1), (2, 1,
-429), (1, 1), (2, 1, 428), (3, 1), (2, 1, 427), (0, 1), (2, 1, 429), (1, 1), (
-2, 1, 428), (0, 1), (2, 1, 427), (3, 1), (0, 1)]), (0, [(1, 1), (2, 1, 369), (
-0, 1), (2, 1, 369), (3, 1), (0, 1)]), (4, [(1, 3), (2, 1, 317), (1, 1), (2, 1,
-316), (1, 1), (3, 1), (2, 1, 318), (2, 1, 320), (3, 1), (2, 1, 315), (3, 1), (
-0, 2), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1,
-320), (0, 1), (2, 1, 315), (0, 3), (3, 1)]), (0, [(1, 3), (0, 6), (3, 1)]), (
-39, [(1, 3), (0, 2), (1, 1), (2, 1, 324), (3, 1), (2, 1, 309), (1, 1), (2, 1,
-308), (1, 1), (2, 1, 310), (2, 1, 312), (1, 1), (1, 1), (1, 1), (3, 5), (2, 1,
-307), (2, 1, 305), (0, 3), (1, 1), (2, 1, 324), (0, 1), (2, 1, 309), (1, 1), (
-2, 1, 308), (1, 1), (2, 1, 310), (2, 1, 312), (1, 1), (1, 1), (1, 1), (0, 5), (
-2, 1, 307), (2, 1, 305), (3, 1), (0, 1)]), (40, [(1, 3), (0, 1), (2, 1, 322), (
-1, 1), (1, 1), (3, 3), (0, 2), (2, 1, 322), (1, 1), (1, 1), (0, 4), (3, 1)]), (
-0, [(1, 2), (0, 4), (3, 1)]), (0, [(1, 2), (2, 1, 341), (0, 2), (2, 1, 341), (
-3, 1), (0, 2)]), (0, [(1, 2), (0, 1), (2, 1, 379), (2, 1, 377), (0, 2), (2, 1,
-379), (2, 1, 377), (3, 1), (0, 1)]), (0, [(1, 2), (0, 1), (2, 1, 359), (0, 2),
-(2, 1, 359), (3, 1), (0, 1)]), (0, [(1, 2), (2, 1, 343), (0, 2), (2, 1, 343), (
-3, 1), (0, 2)]), (41, [(1, 2), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1), (3, 1
-), (2, 1, 186), (2, 1, 188), (3, 2), (0, 1), (2, 1, 185), (1, 1), (2, 1, 184),
-(1, 1), (0, 1), (2, 1, 186), (2, 1, 188), (0, 3), (3, 1)]), (42, [(1, 2), (0, 1
-), (2, 1, 190), (1, 1), (1, 1), (3, 3), (0, 1), (2, 1, 190), (1, 1), (1, 1), (
-0, 3), (3, 1)]), (0, [(1, 1), (2, 1, 337), (0, 1), (2, 1, 337), (3, 1), (0, 1)]
-), (0, [(1, 2), (0, 1), (2, 1, 353), (0, 2), (2, 1, 353), (3, 1), (0, 1)]), (0,
-[(1, 2), (2, 1, 333), (0, 2), (2, 1, 333), (3, 1), (0, 2)]), (0, [(1, 3), (0, 1
-), (2, 1, 355), (0, 3), (2, 1, 355), (3, 1), (0, 2)]), (0, [(1, 3), (2, 1, 335
-), (0, 3), (2, 1, 335), (3, 1), (0, 3)]), (0, [(1, 3), (0, 2), (2, 1, 357), (0,
-3), (2, 1, 357), (3, 1), (0, 1)]), (43, [(1, 2), (0, 1), (3, 1), (0, 2), (3, 1)
-]), (44, [(1, 2), (2, 1, 215), (1, 1), (2, 1, 214), (3, 1), (1, 1), (2, 1, 216
-), (2, 1, 218), (3, 1), (1, 1), (2, 1, 222), (2, 1, 224), (1, 1), (1, 1), (1, 1
-), (3, 4), (2, 1, 211), (2, 1, 209), (0, 2), (2, 1, 215), (1, 1), (2, 1, 214),
-(0, 1), (1, 1), (2, 1, 216), (2, 1, 218), (0, 1), (1, 1), (2, 1, 222), (2, 1,
-224), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 211), (2, 1, 209), (3, 1), (0, 2)]
-), (0, [(1, 3), (2, 1, 1), (0, 3), (2, 1, 1), (3, 1), (0, 3)]), (45, [(1, 3), (
-0, 1), (1, 1), (3, 1), (2, 1, 3), (0, 3), (1, 1), (0, 1), (2, 1, 3), (3, 1), (
-0, 2)]), (0, [(1, 3), (0, 2), (2, 1, 339), (0, 3), (2, 1, 339), (3, 1), (0, 1)]
-), (0, [(1, 17), (0, 34), (3, 1)]), (46, [(1, 17), (0, 11), (2, 1, 214), (3, 1
-), (0, 1), (1, 1), (2, 1, 232), (2, 1, 234), (3, 1), (1, 1), (2, 1, 238), (2,
-1, 240), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 229), (2, 1, 227), (0, 15), (2,
-1, 214), (0, 2), (1, 1), (2, 1, 232), (2, 1, 234), (0, 1), (1, 1), (2, 1, 238),
-(2, 1, 240), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 229), (2, 1, 227), (3, 1),
-(0, 4)]), (47, [(1, 17), (0, 1), (2, 1, 159), (1, 1), (2, 1, 158), (3, 1), (1,
-1), (2, 1, 160), (2, 1, 162), (1, 1), (2, 1, 164), (2, 1, 166), (1, 1), (3, 2),
-(2, 1, 170), (2, 1, 172), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 157), (2, 1,
-155), (0, 7), (2, 1, 197), (1, 1), (2, 1, 196), (3, 1), (2, 1, 198), (2, 1, 200
-), (3, 1), (0, 1), (2, 1, 213), (1, 1), (2, 1, 212), (3, 2), (0, 1), (2, 1, 231
-), (1, 1), (2, 1, 230), (3, 2), (0, 5), (2, 1, 159), (1, 1), (2, 1, 158), (0, 1
-), (1, 1), (2, 1, 160), (2, 1, 162), (1, 1), (2, 1, 164), (2, 1, 166), (1, 1),
-(0, 2), (2, 1, 170), (2, 1, 172), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 157),
-(2, 1, 155), (3, 1), (0, 6), (2, 1, 197), (1, 1), (2, 1, 196), (0, 1), (2, 1,
-198), (2, 1, 200), (0, 2), (2, 1, 213), (1, 1), (2, 1, 212), (0, 3), (2, 1, 231
-), (1, 1), (2, 1, 230), (0, 7)]), (48, [(1, 17), (0, 8), (2, 1, 197), (1, 1), (
-2, 1, 196), (3, 1), (2, 1, 198), (2, 1, 200), (3, 1), (0, 1), (2, 1, 213), (1,
-1), (2, 1, 212), (3, 2), (0, 1), (2, 1, 231), (1, 1), (2, 1, 230), (3, 2), (0,
-12), (2, 1, 197), (1, 1), (2, 1, 196), (0, 1), (2, 1, 198), (2, 1, 200), (0, 2
-), (2, 1, 213), (1, 1), (2, 1, 212), (0, 3), (2, 1, 231), (1, 1), (2, 1, 230),
-(0, 6), (3, 1)]), (49, [(1, 17), (0, 9), (1, 1), (3, 1), (2, 1, 202), (3, 1), (
-0, 16), (1, 1), (0, 1), (2, 1, 202), (0, 8), (3, 1)]), (50, [(1, 17), (0, 5), (
-2, 1, 173), (1, 1), (2, 1, 174), (1, 1), (3, 2), (2, 1, 171), (2, 1, 163), (2,
-1, 161), (2, 1, 157), (2, 1, 155), (0, 2), (3, 1), (0, 14), (2, 1, 173), (1, 1
-), (2, 1, 174), (1, 1), (0, 2), (2, 1, 171), (2, 1, 163), (2, 1, 161), (2, 1,
-157), (2, 1, 155), (3, 1), (0, 12)]), (51, [(1, 17), (0, 3), (2, 1, 167), (1, 1
-), (2, 1, 168), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 165), (2, 1, 163), (2,
-1, 161), (2, 1, 157), (2, 1, 155), (0, 17), (2, 1, 167), (1, 1), (2, 1, 168), (
-1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 165), (2, 1, 163), (2, 1, 161), (2, 1,
-157), (2, 1, 155), (3, 1), (0, 14)]), (52, [(1, 17), (2, 1, 111), (2, 1, 109),
-(2, 1, 112), (3, 1), (0, 13), (2, 1, 249), (2, 1, 247), (2, 1, 250), (3, 1), (
-2, 1, 269), (2, 1, 267), (1, 1), (2, 1, 270), (3, 2), (2, 1, 291), (2, 1, 289),
-(2, 1, 292), (3, 1), (2, 1, 111), (2, 1, 109), (2, 1, 112), (0, 14), (2, 1, 249
-), (2, 1, 247), (2, 1, 250), (0, 1), (2, 1, 269), (2, 1, 267), (1, 1), (2, 1,
-270), (0, 2), (2, 1, 291), (2, 1, 289), (2, 1, 292), (0, 1), (3, 1)]), (53, [(
-1, 17), (0, 4), (2, 1, 173), (1, 1), (2, 1, 174), (1, 1), (3, 2), (2, 1, 171),
-(2, 1, 163), (2, 1, 161), (2, 1, 157), (2, 1, 155), (0, 2), (3, 1), (0, 14), (
-2, 1, 173), (1, 1), (2, 1, 174), (1, 1), (0, 2), (2, 1, 171), (2, 1, 163), (2,
-1, 161), (2, 1, 157), (2, 1, 155), (3, 1), (0, 13)]), (51, [(1, 17), (0, 2), (
-2, 1, 167), (1, 1), (2, 1, 168), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 165), (
-2, 1, 163), (2, 1, 161), (2, 1, 157), (2, 1, 155), (0, 17), (2, 1, 167), (1, 1
-), (2, 1, 168), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 165), (2, 1, 163), (2,
-1, 161), (2, 1, 157), (2, 1, 155), (3, 1), (0, 15)]), (0, [(1, 13), (0, 26), (
-3, 1)]), (46, [(1, 13), (0, 10), (2, 1, 214), (3, 1), (0, 1), (1, 1), (2, 1,
-232), (2, 1, 234), (3, 1), (1, 1), (2, 1, 238), (2, 1, 240), (1, 1), (1, 1), (
-1, 1), (3, 4), (2, 1, 229), (2, 1, 227), (0, 11), (2, 1, 214), (0, 2), (1, 1),
-(2, 1, 232), (2, 1, 234), (0, 1), (1, 1), (2, 1, 238), (2, 1, 240), (1, 1), (1,
-1), (1, 1), (0, 4), (2, 1, 229), (2, 1, 227), (3, 1), (0, 1)]), (14, [(1, 13),
-(2, 1, 137), (1, 1), (2, 1, 136), (3, 1), (1, 1), (2, 1, 138), (2, 1, 140), (1,
-1), (2, 1, 142), (2, 1, 144), (1, 1), (3, 2), (2, 1, 148), (2, 1, 150), (1, 1),
-(1, 1), (1, 1), (3, 4), (2, 1, 133), (2, 1, 131), (0, 7), (2, 1, 197), (1, 1),
-(2, 1, 196), (3, 1), (2, 1, 198), (2, 1, 200), (3, 1), (0, 1), (2, 1, 213), (1,
-1), (2, 1, 212), (3, 2), (0, 1), (2, 1, 231), (1, 1), (2, 1, 230), (3, 2), (0,
-1), (2, 1, 137), (1, 1), (2, 1, 136), (0, 1), (1, 1), (2, 1, 138), (2, 1, 140),
-(1, 1), (2, 1, 142), (2, 1, 144), (1, 1), (0, 2), (2, 1, 148), (2, 1, 150), (1,
-1), (1, 1), (1, 1), (0, 4), (2, 1, 133), (2, 1, 131), (3, 1), (0, 6), (2, 1,
-197), (1, 1), (2, 1, 196), (0, 1), (2, 1, 198), (2, 1, 200), (0, 2), (2, 1, 213
-), (1, 1), (2, 1, 212), (0, 3), (2, 1, 231), (1, 1), (2, 1, 230), (0, 4)]), (
-49, [(1, 13), (0, 8), (1, 1), (3, 1), (2, 1, 202), (3, 1), (0, 12), (1, 1), (0,
-1), (2, 1, 202), (0, 5), (3, 1)]), (54, [(1, 13), (0, 4), (2, 1, 151), (1, 1),
-(2, 1, 152), (1, 1), (3, 2), (2, 1, 149), (2, 1, 141), (2, 1, 139), (2, 1, 133
-), (2, 1, 131), (0, 2), (3, 1), (0, 10), (2, 1, 151), (1, 1), (2, 1, 152), (1,
-1), (0, 2), (2, 1, 149), (2, 1, 141), (2, 1, 139), (2, 1, 133), (2, 1, 131), (
-3, 1), (0, 9)]), (55, [(1, 13), (0, 2), (2, 1, 145), (1, 1), (2, 1, 146), (1, 1
-), (1, 1), (1, 1), (3, 4), (2, 1, 143), (2, 1, 141), (2, 1, 139), (2, 1, 133),
-(2, 1, 131), (0, 13), (2, 1, 145), (1, 1), (2, 1, 146), (1, 1), (1, 1), (1, 1),
-(0, 4), (2, 1, 143), (2, 1, 141), (2, 1, 139), (2, 1, 133), (2, 1, 131), (3, 1
-), (0, 11)]), (56, [(1, 13), (0, 3), (2, 1, 151), (1, 1), (2, 1, 152), (1, 1),
-(3, 2), (2, 1, 149), (2, 1, 141), (2, 1, 139), (2, 1, 133), (2, 1, 131), (0, 2
-), (3, 1), (0, 10), (2, 1, 151), (1, 1), (2, 1, 152), (1, 1), (0, 2), (2, 1,
-149), (2, 1, 141), (2, 1, 139), (2, 1, 133), (2, 1, 131), (3, 1), (0, 10)]), (
-55, [(1, 13), (0, 1), (2, 1, 145), (1, 1), (2, 1, 146), (1, 1), (1, 1), (1, 1),
-(3, 4), (2, 1, 143), (2, 1, 141), (2, 1, 139), (2, 1, 133), (2, 1, 131), (0, 13
-), (2, 1, 145), (1, 1), (2, 1, 146), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 143
-), (2, 1, 141), (2, 1, 139), (2, 1, 133), (2, 1, 131), (3, 1), (0, 12)]), (0, [
-(1, 1), (2, 1, 397), (2, 1, 395), (0, 1), (2, 1, 397), (2, 1, 395), (3, 1), (0,
-1)]), (0, [(1, 5), (0, 10), (3, 1)]), (0, [(1, 5), (0, 3), (2, 1, 375), (2, 1,
-373), (0, 5), (2, 1, 375), (2, 1, 373), (3, 1), (0, 2)]), (0, [(1, 5), (0, 4),
-(2, 1, 393), (2, 1, 391), (0, 5), (2, 1, 393), (2, 1, 391), (3, 1), (0, 1)]), (
-57, [(1, 5), (3, 1), (2, 1, 351), (0, 5), (2, 1, 351), (3, 1), (0, 4)]), (0, [(
-1, 5), (0, 2), (2, 1, 363), (0, 5), (2, 1, 363), (3, 1), (0, 3)]), (0, [(1, 1),
-(2, 1, 367), (0, 1), (2, 1, 367), (3, 1), (0, 1)]), (0, [(1, 3), (0, 2), (2, 1,
-365), (0, 3), (2, 1, 365), (3, 1), (0, 1)]), (58, [(1, 3), (3, 1), (2, 1, 349),
-(0, 3), (2, 1, 349), (3, 1), (0, 2)]), (19, [(1, 1), (2, 1, 103), (1, 1), (2,
-1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 103), (1, 1), (2, 1,
-102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (4, [(1, 3), (0, 2), (
-2, 1, 314), (1, 1), (2, 1, 316), (1, 1), (3, 1), (2, 1, 318), (2, 1, 320), (3,
-1), (2, 1, 315), (3, 1), (0, 2), (2, 1, 314), (1, 1), (2, 1, 316), (1, 1), (0,
-1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1, 315), (0, 1), (3, 1)]), (7, [(1, 3
-), (0, 1), (2, 1, 184), (1, 1), (3, 1), (2, 1, 186), (2, 1, 188), (3, 1), (0, 2
-), (2, 1, 184), (1, 1), (0, 1), (2, 1, 186), (2, 1, 188), (0, 2), (3, 1)]), (
-19, [(1, 3), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97),
-(0, 3), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1
-), (0, 3)]), (0, [(1, 1), (2, 1, 345), (0, 1), (2, 1, 345), (3, 1), (0, 1)]), (
-0, [(1, 12), (0, 24), (3, 1)]), (19, [(1, 12), (0, 11), (2, 1, 103), (1, 1), (
-2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 12), (2, 1, 103), (1, 1), (2,
-1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (59, [(1, 12), (3, 3
-), (0, 8), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 12), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1
-), (0, 1)]), (60, [(1, 12), (0, 3), (3, 1), (0, 7), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 12), (2, 1, 103), (1, 1), (2, 1, 102
-), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (61, [(1, 12), (0, 4), (3,
-1), (0, 6), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 12), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1
-), (0, 1)]), (62, [(1, 12), (0, 5), (3, 1), (0, 5), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 12), (2, 1, 103), (1, 1), (2, 1, 102
-), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (63, [(1, 12), (0, 6), (3,
-1), (0, 4), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 12), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1
-), (0, 1)]), (64, [(1, 12), (0, 7), (3, 1), (0, 3), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 12), (2, 1, 103), (1, 1), (2, 1, 102
-), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (65, [(1, 12), (0, 8), (3,
-1), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 12), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1
-), (0, 1)]), (66, [(1, 12), (0, 9), (3, 1), (0, 1), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 12), (2, 1, 103), (1, 1), (2, 1, 102
-), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (67, [(1, 12), (0, 10), (
-3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 12
-), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (
-0, 1)]), (19, [(1, 2), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1,
-99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99),
-(2, 1, 97), (3, 1), (0, 1)]), (68, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102),
-(0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 3), (0, 2), (2, 1,
-103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 3), (2, 1, 103),
-(1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (69, [(
-1, 3), (0, 1), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (
-2, 1, 97), (0, 3), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (3, 1), (0, 1)]), (70, [(1, 3), (3, 1), (0, 1), (2, 1, 103), (1, 1), (2,
-1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 3), (2, 1, 103), (1, 1), (2, 1,
-102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 5), (0, 4), (
-2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 5), (2, 1,
-103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (
-71, [(1, 5), (3, 1), (0, 3), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1,
-99), (2, 1, 97), (0, 5), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99),
-(2, 1, 97), (3, 1), (0, 1)]), (72, [(1, 5), (0, 1), (3, 1), (0, 2), (2, 1, 103
-), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 5), (2, 1, 103), (
-1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (73, [(1,
-5), (0, 2), (3, 2), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2,
-1, 97), (0, 5), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97
-), (3, 1), (0, 1)]), (0, [(1, 4), (0, 8), (3, 1)]), (19, [(1, 4), (0, 3), (2,
-1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 4), (2, 1,
-103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (
-74, [(1, 4), (3, 1), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1,
-99), (2, 1, 97), (0, 4), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99),
-(2, 1, 97), (3, 1), (0, 1)]), (75, [(1, 4), (0, 1), (2, 1, 19), (0, 1), (3, 1),
-(2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2,
-1, 19), (3, 1), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (
-2, 1, 97), (0, 2)]), (76, [(1, 4), (3, 1), (0, 2), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 4), (2, 1, 103), (1, 1), (2, 1, 102),
-(0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (77, [(1, 4), (0, 1), (3, 1),
-(0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 4
-), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (
-0, 1)]), (78, [(1, 4), (0, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1
-), (2, 1, 99), (2, 1, 97), (0, 4), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (79, [(1, 3), (3, 1), (0, 1), (2, 1,
-103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 3), (2, 1, 103),
-(1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (80, [(
-1, 3), (0, 1), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (
-2, 1, 97), (0, 3), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (3, 1), (0, 1)]), (81, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102),
-(3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1
-), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 4), (2, 1, 35), (0, 3),
-(2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2,
-1, 35), (3, 1), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (
-2, 1, 97), (0, 2)]), (82, [(1, 4), (0, 1), (3, 2), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 4), (2, 1, 103), (1, 1), (2, 1, 102),
-(0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (83, [(1, 2), (3, 1), (2, 1,
-103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103),
-(1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (84, [(
-1, 4), (3, 3), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97
-), (0, 4), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-3, 1), (0, 1)]), (0, [(1, 9), (0, 18), (3, 1)]), (19, [(1, 9), (0, 8), (2, 1,
-103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 9), (2, 1, 103),
-(1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (85, [(
-1, 9), (0, 6), (3, 1), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1,
-99), (2, 1, 97), (0, 9), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99),
-(2, 1, 97), (3, 1), (0, 1)]), (86, [(1, 9), (3, 1), (0, 7), (2, 1, 103), (1, 1
-), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 9), (2, 1, 103), (1, 1), (
-2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (87, [(1, 9), (0,
-1), (3, 2), (0, 4), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99
-), (2, 1, 97), (0, 9), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (
-2, 1, 97), (3, 1), (0, 1)]), (88, [(1, 9), (0, 3), (3, 2), (0, 3), (2, 1, 103),
-(1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 9), (2, 1, 103), (1, 1
-), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (89, [(1, 9),
-(0, 5), (3, 1), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (
-2, 1, 97), (0, 9), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (3, 1), (0, 1)]), (90, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102),
-(3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1
-), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (0, [(1, 6), (0, 12), (3, 1)]), (
-4, [(1, 6), (0, 5), (2, 1, 314), (1, 1), (2, 1, 316), (1, 1), (3, 1), (2, 1,
-318), (2, 1, 320), (3, 1), (2, 1, 315), (3, 1), (0, 5), (2, 1, 314), (1, 1), (
-2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1, 315), (0,
-1), (3, 1)]), (7, [(1, 6), (0, 3), (2, 1, 184), (1, 1), (3, 1), (2, 1, 186), (
-2, 1, 188), (3, 1), (0, 5), (2, 1, 184), (1, 1), (0, 1), (2, 1, 186), (2, 1,
-188), (0, 3), (3, 1)]), (19, [(1, 6), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102),
-(3, 1), (2, 1, 99), (2, 1, 97), (0, 6), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1
-), (2, 1, 99), (2, 1, 97), (3, 1), (0, 4)]), (91, [(1, 6), (0, 2), (2, 1, 103),
-(1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 313), (2,
-1, 311), (3, 1), (0, 3), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99),
-(2, 1, 97), (3, 1), (0, 1), (2, 1, 313), (2, 1, 311), (0, 3)]), (92, [(1, 6), (
-3, 2), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 6
-), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (
-0, 4)]), (93, [(1, 3), (3, 2), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1,
-99), (2, 1, 97), (0, 3), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99),
-(2, 1, 97), (3, 1), (0, 1)]), (94, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102),
-(0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (0, [(1, 2), (2, 1, 347), (0,
-2), (2, 1, 347), (3, 1), (0, 2)]), (0, [(1, 2), (0, 1), (2, 1, 361), (0, 2), (
-2, 1, 361), (3, 1), (0, 1)]), (39, [(1, 6), (2, 1, 325), (1, 1), (2, 1, 324), (
-3, 1), (2, 1, 309), (1, 1), (2, 1, 308), (1, 1), (2, 1, 310), (2, 1, 312), (1,
-1), (1, 1), (1, 1), (3, 5), (2, 1, 307), (2, 1, 305), (0, 6), (2, 1, 325), (1,
-1), (2, 1, 324), (0, 1), (2, 1, 309), (1, 1), (2, 1, 308), (1, 1), (2, 1, 310),
-(2, 1, 312), (1, 1), (1, 1), (1, 1), (0, 5), (2, 1, 307), (2, 1, 305), (3, 1),
-(0, 6)]), (95, [(1, 6), (0, 5), (2, 1, 314), (1, 1), (2, 1, 316), (1, 1), (3, 1
-), (2, 1, 318), (2, 1, 320), (3, 1), (2, 1, 315), (3, 1), (0, 5), (2, 1, 314),
-(1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1,
-315), (0, 1), (3, 1)]), (96, [(1, 6), (0, 4), (2, 1, 313), (2, 1, 311), (3, 1),
-(0, 5), (2, 1, 313), (2, 1, 311), (0, 2), (3, 1)]), (96, [(1, 6), (0, 3), (2,
-1, 313), (2, 1, 311), (3, 1), (0, 5), (2, 1, 313), (2, 1, 311), (0, 3), (3, 1)]
-), (97, [(1, 6), (0, 1), (3, 1), (2, 1, 313), (2, 1, 311), (3, 1), (0, 5), (2,
-1, 313), (2, 1, 311), (0, 4), (3, 1)]), (4, [(1, 3), (2, 1, 323), (2, 1, 321),
-(2, 1, 319), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (3, 1), (2, 1, 318), (2,
-1, 320), (3, 1), (2, 1, 315), (3, 1), (0, 2), (2, 1, 323), (2, 1, 321), (2, 1,
-319), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320
-), (0, 1), (2, 1, 315), (0, 3), (3, 1)]), (98, [(1, 3), (0, 1), (1, 1), (3, 1),
-(2, 1, 323), (2, 1, 321), (2, 1, 319), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1
-), (3, 1), (2, 1, 318), (2, 1, 320), (3, 1), (2, 1, 315), (3, 1), (0, 2), (1, 1
-), (0, 1), (2, 1, 323), (2, 1, 321), (2, 1, 319), (2, 1, 317), (1, 1), (2, 1,
-316), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1, 315), (0, 2), (
-3, 1)]), (99, [(1, 3), (0, 2), (3, 1), (0, 3), (3, 1)]), (41, [(1, 3), (2, 1,
-185), (1, 1), (2, 1, 184), (1, 1), (3, 1), (2, 1, 186), (2, 1, 188), (3, 2), (
-0, 2), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1), (0, 1), (2, 1, 186), (2, 1,
-188), (0, 4), (3, 1)]), (0, [(1, 3), (0, 2), (2, 1, 179), (2, 1, 177), (0, 3),
-(2, 1, 179), (2, 1, 177), (3, 1), (0, 1)]), (100, [(1, 3), (0, 1), (2, 1, 190),
-(1, 1), (1, 1), (3, 3), (0, 2), (2, 1, 190), (1, 1), (1, 1), (0, 4), (3, 1)]),
-(41, [(1, 3), (2, 1, 191), (2, 1, 189), (2, 1, 187), (2, 1, 185), (1, 1), (2,
-1, 184), (1, 1), (3, 1), (2, 1, 186), (2, 1, 188), (3, 2), (0, 2), (2, 1, 191),
-(2, 1, 189), (2, 1, 187), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1), (0, 1), (2,
-1, 186), (2, 1, 188), (0, 4), (3, 1)]), (101, [(1, 3), (0, 1), (1, 1), (3, 1),
-(2, 1, 191), (2, 1, 189), (2, 1, 187), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1
-), (3, 1), (2, 1, 186), (2, 1, 188), (3, 2), (0, 2), (1, 1), (0, 1), (2, 1, 191
-), (2, 1, 189), (2, 1, 187), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1), (0, 1),
-(2, 1, 186), (2, 1, 188), (0, 3), (3, 1)]), (102, [(1, 3), (0, 2), (3, 1), (0,
-3), (3, 1)]), (0, [(1, 1), (2, 1, 327), (0, 1), (2, 1, 327), (3, 1), (0, 1)]),
-(44, [(1, 6), (2, 1, 215), (1, 1), (2, 1, 214), (3, 1), (1, 1), (2, 1, 216), (
-2, 1, 218), (3, 1), (1, 1), (2, 1, 222), (2, 1, 224), (1, 1), (1, 1), (1, 1), (
-3, 4), (2, 1, 211), (2, 1, 209), (0, 6), (2, 1, 215), (1, 1), (2, 1, 214), (0,
-1), (1, 1), (2, 1, 216), (2, 1, 218), (0, 1), (1, 1), (2, 1, 222), (2, 1, 224),
-(1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 211), (2, 1, 209), (3, 1), (0, 6)]), (
-103, [(1, 6), (0, 1), (1, 1), (3, 1), (2, 1, 220), (3, 1), (0, 5), (1, 1), (0,
-1), (2, 1, 220), (0, 5), (3, 1)]), (0, [(1, 6), (0, 3), (2, 1, 225), (2, 1, 223
-), (2, 1, 211), (2, 1, 209), (0, 6), (2, 1, 225), (2, 1, 223), (2, 1, 211), (2,
-1, 209), (3, 1), (0, 3)]), (0, [(1, 6), (0, 5), (2, 1, 225), (2, 1, 223), (2,
-1, 211), (2, 1, 209), (0, 6), (2, 1, 225), (2, 1, 223), (2, 1, 211), (2, 1, 209
-), (3, 1), (0, 1)]), (0, [(1, 6), (0, 2), (2, 1, 225), (2, 1, 223), (2, 1, 211
-), (2, 1, 209), (0, 6), (2, 1, 225), (2, 1, 223), (2, 1, 211), (2, 1, 209), (3,
-1), (0, 4)]), (0, [(1, 6), (0, 4), (2, 1, 225), (2, 1, 223), (2, 1, 211), (2,
-1, 209), (0, 6), (2, 1, 225), (2, 1, 223), (2, 1, 211), (2, 1, 209), (3, 1), (
-0, 2)]), (45, [(1, 1), (1, 1), (3, 1), (2, 1, 3), (0, 1), (1, 1), (0, 1), (2,
-1, 3), (3, 1), (0, 1)]), (104, [(1, 6), (0, 1), (1, 1), (3, 1), (2, 1, 236), (
-3, 1), (0, 5), (1, 1), (0, 1), (2, 1, 236), (0, 5), (3, 1)]), (0, [(1, 6), (0,
-3), (2, 1, 241), (2, 1, 239), (2, 1, 229), (2, 1, 227), (0, 6), (2, 1, 241), (
-2, 1, 239), (2, 1, 229), (2, 1, 227), (3, 1), (0, 3)]), (0, [(1, 6), (0, 5), (
-2, 1, 241), (2, 1, 239), (2, 1, 229), (2, 1, 227), (0, 6), (2, 1, 241), (2, 1,
-239), (2, 1, 229), (2, 1, 227), (3, 1), (0, 1)]), (0, [(1, 6), (0, 2), (2, 1,
-241), (2, 1, 239), (2, 1, 229), (2, 1, 227), (0, 6), (2, 1, 241), (2, 1, 239),
-(2, 1, 229), (2, 1, 227), (3, 1), (0, 4)]), (0, [(1, 6), (0, 4), (2, 1, 241), (
-2, 1, 239), (2, 1, 229), (2, 1, 227), (0, 6), (2, 1, 241), (2, 1, 239), (2, 1,
-229), (2, 1, 227), (3, 1), (0, 2)]), (47, [(1, 13), (2, 1, 159), (1, 1), (2, 1,
-158), (3, 1), (1, 1), (2, 1, 160), (2, 1, 162), (1, 1), (2, 1, 164), (2, 1, 166
-), (1, 1), (3, 2), (2, 1, 170), (2, 1, 172), (1, 1), (1, 1), (1, 1), (3, 4), (
-2, 1, 157), (2, 1, 155), (0, 7), (2, 1, 197), (1, 1), (2, 1, 196), (3, 1), (2,
-1, 198), (2, 1, 200), (3, 1), (0, 1), (2, 1, 213), (1, 1), (2, 1, 212), (3, 2),
-(0, 1), (2, 1, 231), (1, 1), (2, 1, 230), (3, 2), (0, 1), (2, 1, 159), (1, 1),
-(2, 1, 158), (0, 1), (1, 1), (2, 1, 160), (2, 1, 162), (1, 1), (2, 1, 164), (2,
-1, 166), (1, 1), (0, 2), (2, 1, 170), (2, 1, 172), (1, 1), (1, 1), (1, 1), (0,
-4), (2, 1, 157), (2, 1, 155), (3, 1), (0, 6), (2, 1, 197), (1, 1), (2, 1, 196),
-(0, 1), (2, 1, 198), (2, 1, 200), (0, 2), (2, 1, 213), (1, 1), (2, 1, 212), (0,
-3), (2, 1, 231), (1, 1), (2, 1, 230), (0, 4)]), (48, [(1, 13), (0, 7), (2, 1,
-197), (1, 1), (2, 1, 196), (3, 1), (2, 1, 198), (2, 1, 200), (3, 1), (0, 1), (
-2, 1, 213), (1, 1), (2, 1, 212), (3, 2), (0, 1), (2, 1, 231), (1, 1), (2, 1,
-230), (3, 2), (0, 8), (2, 1, 197), (1, 1), (2, 1, 196), (0, 1), (2, 1, 198), (
-2, 1, 200), (0, 2), (2, 1, 213), (1, 1), (2, 1, 212), (0, 3), (2, 1, 231), (1,
-1), (2, 1, 230), (0, 3), (3, 1)]), (50, [(1, 13), (0, 4), (2, 1, 173), (1, 1),
-(2, 1, 174), (1, 1), (3, 2), (2, 1, 171), (2, 1, 163), (2, 1, 161), (2, 1, 157
-), (2, 1, 155), (0, 2), (3, 1), (0, 10), (2, 1, 173), (1, 1), (2, 1, 174), (1,
-1), (0, 2), (2, 1, 171), (2, 1, 163), (2, 1, 161), (2, 1, 157), (2, 1, 155), (
-3, 1), (0, 9)]), (51, [(1, 13), (0, 2), (2, 1, 167), (1, 1), (2, 1, 168), (1, 1
-), (1, 1), (1, 1), (3, 4), (2, 1, 165), (2, 1, 163), (2, 1, 161), (2, 1, 157),
-(2, 1, 155), (0, 13), (2, 1, 167), (1, 1), (2, 1, 168), (1, 1), (1, 1), (1, 1),
-(0, 4), (2, 1, 165), (2, 1, 163), (2, 1, 161), (2, 1, 157), (2, 1, 155), (3, 1
-), (0, 11)]), (53, [(1, 13), (0, 3), (2, 1, 173), (1, 1), (2, 1, 174), (1, 1),
-(3, 2), (2, 1, 171), (2, 1, 163), (2, 1, 161), (2, 1, 157), (2, 1, 155), (0, 2
-), (3, 1), (0, 10), (2, 1, 173), (1, 1), (2, 1, 174), (1, 1), (0, 2), (2, 1,
-171), (2, 1, 163), (2, 1, 161), (2, 1, 157), (2, 1, 155), (3, 1), (0, 10)]), (
-51, [(1, 13), (0, 1), (2, 1, 167), (1, 1), (2, 1, 168), (1, 1), (1, 1), (1, 1),
-(3, 4), (2, 1, 165), (2, 1, 163), (2, 1, 161), (2, 1, 157), (2, 1, 155), (0, 13
-), (2, 1, 167), (1, 1), (2, 1, 168), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 165
-), (2, 1, 163), (2, 1, 161), (2, 1, 157), (2, 1, 155), (3, 1), (0, 12)]), (46,
-[(1, 6), (0, 3), (2, 1, 214), (3, 1), (0, 1), (1, 1), (2, 1, 232), (2, 1, 234),
-(3, 1), (1, 1), (2, 1, 238), (2, 1, 240), (1, 1), (1, 1), (1, 1), (3, 4), (2,
-1, 229), (2, 1, 227), (0, 4), (2, 1, 214), (0, 2), (1, 1), (2, 1, 232), (2, 1,
-234), (0, 1), (1, 1), (2, 1, 238), (2, 1, 240), (1, 1), (1, 1), (1, 1), (0, 4),
-(2, 1, 229), (2, 1, 227), (3, 1), (0, 1)]), (48, [(1, 6), (2, 1, 197), (1, 1),
-(2, 1, 196), (3, 1), (2, 1, 198), (2, 1, 200), (3, 1), (0, 1), (2, 1, 213), (1,
-1), (2, 1, 212), (3, 2), (0, 1), (2, 1, 231), (1, 1), (2, 1, 230), (3, 2), (0,
-1), (2, 1, 197), (1, 1), (2, 1, 196), (0, 1), (2, 1, 198), (2, 1, 200), (0, 2),
-(2, 1, 213), (1, 1), (2, 1, 212), (0, 3), (2, 1, 231), (1, 1), (2, 1, 230), (0,
-3), (3, 1)]), (49, [(1, 6), (0, 1), (1, 1), (3, 1), (2, 1, 202), (3, 1), (0, 5
-), (1, 1), (0, 1), (2, 1, 202), (0, 5), (3, 1)]), (105, [(1, 2), (2, 1, 202), (
-3, 1), (0, 1), (2, 1, 202), (0, 2), (3, 1)]), (106, [(1, 2), (0, 1), (2, 1, 203
-), (1, 1), (2, 1, 202), (3, 1), (2, 1, 201), (2, 1, 199), (1, 1), (2, 1, 204),
-(2, 1, 206), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 195), (2, 1, 193), (0, 2),
-(2, 1, 203), (1, 1), (2, 1, 202), (0, 1), (2, 1, 201), (2, 1, 199), (1, 1), (2,
-1, 204), (2, 1, 206), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 195), (2, 1, 193),
-(3, 1), (0, 1)]), (107, [(1, 3), (0, 2), (2, 1, 173), (1, 1), (2, 1, 174), (1,
-1), (3, 2), (2, 1, 171), (2, 1, 163), (2, 1, 161), (2, 1, 157), (2, 1, 155), (
-0, 3), (2, 1, 173), (1, 1), (2, 1, 174), (1, 1), (0, 2), (2, 1, 171), (2, 1,
-163), (2, 1, 161), (2, 1, 157), (2, 1, 155), (3, 1), (0, 1)]), (0, [(1, 3), (0,
-1), (2, 1, 175), (2, 1, 171), (2, 1, 163), (2, 1, 161), (2, 1, 157), (2, 1, 155
-), (0, 3), (2, 1, 175), (2, 1, 171), (2, 1, 163), (2, 1, 161), (2, 1, 157), (2,
-1, 155), (3, 1), (0, 2)]), (0, [(1, 3), (2, 1, 175), (2, 1, 171), (2, 1, 163),
-(2, 1, 161), (2, 1, 157), (2, 1, 155), (0, 3), (2, 1, 175), (2, 1, 171), (2, 1,
-163), (2, 1, 161), (2, 1, 157), (2, 1, 155), (3, 1), (0, 3)]), (108, [(1, 4), (
-0, 1), (2, 1, 169), (2, 1, 165), (2, 1, 163), (2, 1, 161), (2, 1, 157), (2, 1,
-155), (0, 2), (3, 1), (0, 1), (2, 1, 169), (2, 1, 165), (2, 1, 163), (2, 1, 161
-), (2, 1, 157), (2, 1, 155), (3, 1), (0, 3)]), (109, [(1, 4), (2, 1, 169), (2,
-1, 165), (2, 1, 163), (2, 1, 161), (2, 1, 157), (2, 1, 155), (0, 2), (3, 1), (
-0, 1), (2, 1, 169), (2, 1, 165), (2, 1, 163), (2, 1, 161), (2, 1, 157), (2, 1,
-155), (3, 1), (0, 4)]), (110, [(1, 5), (0, 3), (2, 1, 272), (3, 1), (0, 4), (2,
-1, 272), (0, 2), (3, 1)]), (111, [(1, 5), (2, 1, 113), (1, 1), (2, 1, 112), (3,
-1), (1, 1), (2, 1, 114), (2, 1, 116), (1, 1), (2, 1, 118), (2, 1, 120), (1, 1),
-(3, 2), (2, 1, 124), (2, 1, 126), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 107),
-(2, 1, 105), (0, 1), (2, 1, 251), (1, 1), (2, 1, 250), (3, 1), (2, 1, 252), (2,
-1, 254), (3, 1), (2, 1, 271), (1, 1), (2, 1, 270), (3, 2), (0, 1), (2, 1, 293),
-(1, 1), (2, 1, 292), (3, 2), (2, 1, 113), (1, 1), (2, 1, 112), (0, 1), (1, 1),
-(2, 1, 114), (2, 1, 116), (1, 1), (2, 1, 118), (2, 1, 120), (1, 1), (0, 2), (2,
-1, 124), (2, 1, 126), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 107), (2, 1, 105),
-(3, 1), (2, 1, 251), (1, 1), (2, 1, 250), (0, 1), (2, 1, 252), (2, 1, 254), (0,
-1), (2, 1, 271), (1, 1), (2, 1, 270), (0, 3), (2, 1, 293), (1, 1), (2, 1, 292),
-(0, 3)]), (112, [(1, 3), (0, 2), (2, 1, 151), (1, 1), (2, 1, 152), (1, 1), (3,
-2), (2, 1, 149), (2, 1, 141), (2, 1, 139), (2, 1, 133), (2, 1, 131), (0, 3), (
-2, 1, 151), (1, 1), (2, 1, 152), (1, 1), (0, 2), (2, 1, 149), (2, 1, 141), (2,
-1, 139), (2, 1, 133), (2, 1, 131), (3, 1), (0, 1)]), (0, [(1, 3), (0, 1), (2,
-1, 153), (2, 1, 149), (2, 1, 141), (2, 1, 139), (2, 1, 133), (2, 1, 131), (0, 3
-), (2, 1, 153), (2, 1, 149), (2, 1, 141), (2, 1, 139), (2, 1, 133), (2, 1, 131
-), (3, 1), (0, 2)]), (0, [(1, 3), (2, 1, 153), (2, 1, 149), (2, 1, 141), (2, 1,
-139), (2, 1, 133), (2, 1, 131), (0, 3), (2, 1, 153), (2, 1, 149), (2, 1, 141),
-(2, 1, 139), (2, 1, 133), (2, 1, 131), (3, 1), (0, 3)]), (113, [(1, 4), (0, 1),
-(2, 1, 147), (2, 1, 143), (2, 1, 141), (2, 1, 139), (2, 1, 133), (2, 1, 131), (
-0, 2), (3, 1), (0, 1), (2, 1, 147), (2, 1, 143), (2, 1, 141), (2, 1, 139), (2,
-1, 133), (2, 1, 131), (3, 1), (0, 3)]), (114, [(1, 4), (2, 1, 147), (2, 1, 143
-), (2, 1, 141), (2, 1, 139), (2, 1, 133), (2, 1, 131), (0, 2), (3, 1), (0, 1),
-(2, 1, 147), (2, 1, 143), (2, 1, 141), (2, 1, 139), (2, 1, 133), (2, 1, 131), (
-3, 1), (0, 4)]), (0, [(1, 1), (2, 1, 331), (0, 1), (2, 1, 331), (3, 1), (0, 1)]
-), (0, [(1, 1), (2, 1, 329), (0, 1), (2, 1, 329), (3, 1), (0, 1)]), (115, [(1,
-4), (3, 2), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2,
-1, 97), (0, 4), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97
-), (3, 1), (0, 1)]), (116, [(1, 4), (0, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 4), (2, 1, 103), (1, 1), (2, 1, 102),
-(0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (117, [(1, 2), (3, 1), (2, 1,
-103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103),
-(1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (118, [(
-1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97
-), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-3, 1), (0, 1)]), (119, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1
-), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (120, [(1, 2), (3, 1), (2, 1, 103), (
-1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1
-), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (121, [(1, 2
-), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1
-), (0, 1)]), (122, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (
-2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1,
-99), (2, 1, 97), (3, 1), (0, 1)]), (123, [(1, 2), (3, 1), (2, 1, 103), (1, 1),
-(2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2,
-1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (124, [(1, 2), (3, 1
-), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (
-2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)
-]), (125, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99
-), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (
-2, 1, 97), (3, 1), (0, 1)]), (126, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102),
-(0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (127, [(1, 2), (3, 1), (2, 1,
-103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103),
-(1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (128, [(
-1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97
-), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-3, 1), (0, 1)]), (129, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1
-), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (130, [(1, 3), (3, 2), (2, 1, 103), (
-1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 3), (2, 1, 103), (1, 1
-), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (131, [(1, 2
-), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1
-), (0, 1)]), (132, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (
-2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1,
-99), (2, 1, 97), (3, 1), (0, 1)]), (133, [(1, 2), (3, 1), (2, 1, 103), (1, 1),
-(2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2,
-1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (134, [(1, 2), (3, 1
-), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (
-2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)
-]), (135, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99
-), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (
-2, 1, 97), (3, 1), (0, 1)]), (136, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102),
-(0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2), (2, 1, 31), (0,
-1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (
-2, 1, 31), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (0, 2)]), (137, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1),
-(2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2,
-1, 99), (2, 1, 97), (3, 1), (0, 1)]), (138, [(1, 3), (3, 1), (0, 1), (2, 1, 103
-), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 3), (2, 1, 103), (
-1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1,
-3), (0, 1), (2, 1, 39), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2,
-1, 99), (2, 1, 97), (0, 2), (2, 1, 39), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102
-), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]), (139, [(1, 2), (3, 1), (2, 1, 103
-), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (
-1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (140, [(
-1, 4), (3, 1), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (
-2, 1, 97), (0, 4), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (3, 1), (0, 1)]), (141, [(1, 4), (0, 1), (3, 1), (0, 1), (2, 1, 103), (1,
-1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 4), (2, 1, 103), (1, 1), (
-2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (142, [(1, 4), (
-0, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97
-), (0, 4), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-3, 1), (0, 1)]), (143, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1
-), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (144, [(1, 2), (3, 1), (2, 1, 103), (
-1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1
-), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (145, [(1, 4
-), (3, 1), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1,
-97), (0, 4), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97),
-(3, 1), (0, 1)]), (146, [(1, 4), (0, 1), (3, 2), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 4), (2, 1, 103), (1, 1), (2, 1, 102),
-(0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (147, [(1, 3), (3, 1), (0, 1
-), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 3), (
-2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)
-]), (148, [(1, 3), (0, 1), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (
-2, 1, 99), (2, 1, 97), (0, 3), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1,
-99), (2, 1, 97), (3, 1), (0, 1)]), (149, [(1, 2), (3, 1), (2, 1, 103), (1, 1),
-(2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2,
-1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (150, [(1, 2), (3, 1
-), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (
-2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)
-]), (4, [(1, 2), (0, 1), (2, 1, 314), (1, 1), (2, 1, 316), (1, 1), (3, 1), (2,
-1, 318), (2, 1, 320), (3, 1), (2, 1, 315), (3, 1), (0, 1), (2, 1, 314), (1, 1),
-(2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1, 315), (0,
-1), (3, 1)]), (19, [(1, 2), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99
-), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (
-2, 1, 97), (3, 1), (0, 2)]), (151, [(1, 3), (3, 1), (0, 1), (2, 1, 103), (1, 1
-), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 3), (2, 1, 103), (1, 1), (
-2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (152, [(1, 3), (
-0, 1), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97
-), (0, 3), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-3, 1), (0, 1)]), (153, [(1, 3), (3, 1), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102
-), (3, 1), (2, 1, 99), (2, 1, 97), (0, 3), (2, 1, 103), (1, 1), (2, 1, 102), (
-0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (154, [(1, 3), (0, 1), (3, 1),
-(2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 3), (2,
-1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]),
-(155, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (
-2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (3, 1), (0, 1)]), (95, [(1, 3), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1),
-(3, 1), (2, 1, 318), (2, 1, 320), (3, 1), (2, 1, 315), (3, 1), (0, 2), (2, 1,
-317), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (
-2, 1, 315), (0, 3), (3, 1)]), (156, [(1, 3), (0, 2), (1, 1), (2, 1, 324), (3, 1
-), (2, 1, 309), (1, 1), (2, 1, 308), (1, 1), (2, 1, 310), (2, 1, 312), (1, 1),
-(1, 1), (1, 1), (3, 5), (2, 1, 307), (2, 1, 305), (0, 3), (1, 1), (2, 1, 324),
-(0, 1), (2, 1, 309), (1, 1), (2, 1, 308), (1, 1), (2, 1, 310), (2, 1, 312), (1,
-1), (1, 1), (1, 1), (0, 5), (2, 1, 307), (2, 1, 305), (3, 1), (0, 1)]), (157, [
-(1, 3), (0, 1), (2, 1, 322), (1, 1), (1, 1), (3, 3), (0, 2), (2, 1, 322), (1, 1
-), (1, 1), (0, 4), (3, 1)]), (95, [(1, 1), (2, 1, 314), (1, 1), (2, 1, 316), (
-1, 1), (3, 1), (2, 1, 318), (2, 1, 320), (3, 1), (2, 1, 315), (3, 1), (2, 1,
-314), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (
-2, 1, 315), (0, 1), (3, 1)]), (95, [(1, 2), (0, 1), (2, 1, 314), (1, 1), (2, 1,
-316), (1, 1), (3, 1), (2, 1, 318), (2, 1, 320), (3, 1), (2, 1, 315), (3, 1), (
-0, 1), (2, 1, 314), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1,
-320), (0, 1), (2, 1, 315), (0, 1), (3, 1)]), (96, [(1, 2), (2, 1, 313), (2, 1,
-311), (3, 1), (0, 1), (2, 1, 313), (2, 1, 311), (0, 2), (3, 1)]), (4, [(1, 4),
-(0, 1), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (3, 1), (2, 1, 318), (2, 1,
-320), (3, 1), (2, 1, 315), (3, 1), (0, 3), (2, 1, 317), (1, 1), (2, 1, 316), (
-1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1, 315), (0, 3), (3, 1)]),
-(39, [(1, 4), (0, 3), (1, 1), (2, 1, 324), (3, 1), (2, 1, 309), (1, 1), (2, 1,
-308), (1, 1), (2, 1, 310), (2, 1, 312), (1, 1), (1, 1), (1, 1), (3, 5), (2, 1,
-307), (2, 1, 305), (0, 4), (1, 1), (2, 1, 324), (0, 1), (2, 1, 309), (1, 1), (
-2, 1, 308), (1, 1), (2, 1, 310), (2, 1, 312), (1, 1), (1, 1), (1, 1), (0, 5), (
-2, 1, 307), (2, 1, 305), (3, 1), (0, 1)]), (158, [(1, 4), (1, 1), (3, 1), (2,
-1, 323), (2, 1, 321), (2, 1, 319), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (
-3, 1), (2, 1, 318), (2, 1, 320), (3, 1), (2, 1, 315), (3, 1), (2, 1, 317), (1,
-1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1, 315),
-(0, 3), (1, 1), (0, 1), (2, 1, 323), (2, 1, 321), (2, 1, 319), (2, 1, 317), (1,
-1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1, 315),
-(0, 1), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1,
-320), (0, 1), (2, 1, 315), (0, 3), (3, 1)]), (40, [(1, 4), (0, 2), (2, 1, 322),
-(1, 1), (1, 1), (3, 3), (0, 3), (2, 1, 322), (1, 1), (1, 1), (0, 4), (3, 1)]),
-(159, [(1, 1), (1, 1), (3, 1), (2, 1, 323), (2, 1, 321), (2, 1, 319), (2, 1,
-317), (1, 1), (2, 1, 316), (1, 1), (3, 1), (2, 1, 318), (2, 1, 320), (3, 1), (
-2, 1, 315), (3, 1), (1, 1), (0, 1), (2, 1, 323), (2, 1, 321), (2, 1, 319), (2,
-1, 317), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1),
-(2, 1, 315), (0, 1), (3, 1)]), (160, [(1, 3), (0, 1), (1, 1), (3, 1), (2, 1,
-191), (2, 1, 189), (2, 1, 187), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1), (3, 1
-), (2, 1, 186), (2, 1, 188), (3, 2), (0, 2), (1, 1), (0, 1), (2, 1, 191), (2,
-1, 189), (2, 1, 187), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1), (0, 1), (2, 1,
-186), (2, 1, 188), (0, 3), (3, 1)]), (161, [(1, 3), (0, 2), (3, 1), (0, 3), (3,
-1)]), (41, [(1, 4), (0, 1), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1), (3, 1), (
-2, 1, 186), (2, 1, 188), (3, 2), (0, 3), (2, 1, 185), (1, 1), (2, 1, 184), (1,
-1), (0, 1), (2, 1, 186), (2, 1, 188), (0, 4), (3, 1)]), (0, [(1, 4), (0, 3), (
-2, 1, 179), (2, 1, 177), (0, 4), (2, 1, 179), (2, 1, 177), (3, 1), (0, 1)]), (
-162, [(1, 4), (1, 1), (3, 1), (2, 1, 191), (2, 1, 189), (2, 1, 187), (2, 1, 185
-), (1, 1), (2, 1, 184), (1, 1), (3, 1), (2, 1, 186), (2, 1, 188), (3, 2), (2,
-1, 185), (1, 1), (2, 1, 184), (1, 1), (0, 1), (2, 1, 186), (2, 1, 188), (0, 4),
-(1, 1), (0, 1), (2, 1, 191), (2, 1, 189), (2, 1, 187), (2, 1, 185), (1, 1), (2,
-1, 184), (1, 1), (0, 1), (2, 1, 186), (2, 1, 188), (0, 2), (2, 1, 185), (1, 1),
-(2, 1, 184), (1, 1), (0, 1), (2, 1, 186), (2, 1, 188), (0, 4), (3, 1)]), (100,
-[(1, 4), (0, 2), (2, 1, 190), (1, 1), (1, 1), (3, 3), (0, 3), (2, 1, 190), (1,
-1), (1, 1), (0, 4), (3, 1)]), (163, [(1, 1), (1, 1), (3, 1), (2, 1, 191), (2,
-1, 189), (2, 1, 187), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1), (3, 1), (2, 1,
-186), (2, 1, 188), (3, 2), (1, 1), (0, 1), (2, 1, 191), (2, 1, 189), (2, 1, 187
-), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1), (0, 1), (2, 1, 186), (2, 1, 188),
-(0, 2), (3, 1)]), (164, [(1, 2), (2, 1, 220), (3, 1), (0, 1), (2, 1, 220), (0,
-2), (3, 1)]), (165, [(1, 2), (0, 1), (2, 1, 221), (1, 1), (2, 1, 220), (3, 1),
-(2, 1, 219), (2, 1, 217), (1, 1), (2, 1, 222), (2, 1, 224), (1, 1), (1, 1), (1,
-1), (3, 4), (2, 1, 211), (2, 1, 209), (0, 2), (2, 1, 221), (1, 1), (2, 1, 220),
-(0, 1), (2, 1, 219), (2, 1, 217), (1, 1), (2, 1, 222), (2, 1, 224), (1, 1), (1,
-1), (1, 1), (0, 4), (2, 1, 211), (2, 1, 209), (3, 1), (0, 1)]), (166, [(1, 2),
-(2, 1, 236), (3, 1), (0, 1), (2, 1, 236), (0, 2), (3, 1)]), (167, [(1, 2), (0,
-1), (2, 1, 237), (1, 1), (2, 1, 236), (3, 1), (2, 1, 235), (2, 1, 233), (1, 1),
-(2, 1, 238), (2, 1, 240), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 229), (2, 1,
-227), (0, 2), (2, 1, 237), (1, 1), (2, 1, 236), (0, 1), (2, 1, 235), (2, 1, 233
-), (1, 1), (2, 1, 238), (2, 1, 240), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 229
-), (2, 1, 227), (3, 1), (0, 1)]), (106, [(1, 1), (2, 1, 203), (1, 1), (2, 1,
-202), (3, 1), (2, 1, 201), (2, 1, 199), (1, 1), (2, 1, 204), (2, 1, 206), (1, 1
-), (1, 1), (1, 1), (3, 4), (2, 1, 195), (2, 1, 193), (0, 1), (2, 1, 203), (1, 1
-), (2, 1, 202), (0, 1), (2, 1, 201), (2, 1, 199), (1, 1), (2, 1, 204), (2, 1,
-206), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 195), (2, 1, 193), (3, 1), (0, 1)]
-), (106, [(1, 5), (2, 1, 203), (1, 1), (2, 1, 202), (3, 1), (2, 1, 201), (2, 1,
-199), (1, 1), (2, 1, 204), (2, 1, 206), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1,
-195), (2, 1, 193), (0, 5), (2, 1, 203), (1, 1), (2, 1, 202), (0, 1), (2, 1, 201
-), (2, 1, 199), (1, 1), (2, 1, 204), (2, 1, 206), (1, 1), (1, 1), (1, 1), (0, 4
-), (2, 1, 195), (2, 1, 193), (3, 1), (0, 5)]), (0, [(1, 5), (0, 2), (2, 1, 207
-), (2, 1, 205), (2, 1, 195), (2, 1, 193), (0, 5), (2, 1, 207), (2, 1, 205), (2,
-1, 195), (2, 1, 193), (3, 1), (0, 3)]), (0, [(1, 5), (0, 4), (2, 1, 207), (2,
-1, 205), (2, 1, 195), (2, 1, 193), (0, 5), (2, 1, 207), (2, 1, 205), (2, 1, 195
-), (2, 1, 193), (3, 1), (0, 1)]), (0, [(1, 5), (0, 1), (2, 1, 207), (2, 1, 205
-), (2, 1, 195), (2, 1, 193), (0, 5), (2, 1, 207), (2, 1, 205), (2, 1, 195), (2,
-1, 193), (3, 1), (0, 4)]), (0, [(1, 5), (0, 3), (2, 1, 207), (2, 1, 205), (2,
-1, 195), (2, 1, 193), (0, 5), (2, 1, 207), (2, 1, 205), (2, 1, 195), (2, 1, 193
-), (3, 1), (0, 2)]), (0, [(1, 2), (0, 1), (2, 1, 175), (2, 1, 171), (2, 1, 163
-), (2, 1, 161), (2, 1, 157), (2, 1, 155), (0, 2), (2, 1, 175), (2, 1, 171), (2,
-1, 163), (2, 1, 161), (2, 1, 157), (2, 1, 155), (3, 1), (0, 1)]), (0, [(1, 2),
-(2, 1, 175), (2, 1, 171), (2, 1, 163), (2, 1, 161), (2, 1, 157), (2, 1, 155), (
-0, 2), (2, 1, 175), (2, 1, 171), (2, 1, 163), (2, 1, 161), (2, 1, 157), (2, 1,
-155), (3, 1), (0, 2)]), (0, [(1, 1), (2, 1, 169), (2, 1, 165), (2, 1, 163), (2,
-1, 161), (2, 1, 157), (2, 1, 155), (0, 1), (2, 1, 169), (2, 1, 165), (2, 1, 163
-), (2, 1, 161), (2, 1, 157), (2, 1, 155), (3, 1), (0, 1)]), (168, [(1, 1), (2,
-1, 273), (1, 1), (2, 1, 272), (3, 1), (2, 1, 274), (2, 1, 276), (3, 1), (2, 1,
-273), (1, 1), (2, 1, 272), (0, 1), (2, 1, 274), (2, 1, 276), (0, 1), (3, 1)]),
-(169, [(1, 13), (0, 10), (2, 1, 272), (3, 1), (0, 1), (2, 1, 294), (2, 1, 296),
-(3, 1), (0, 10), (2, 1, 272), (0, 2), (2, 1, 294), (2, 1, 296), (0, 1), (3, 1)]
-), (111, [(1, 13), (2, 1, 113), (1, 1), (2, 1, 112), (3, 1), (1, 1), (2, 1, 114
-), (2, 1, 116), (1, 1), (2, 1, 118), (2, 1, 120), (1, 1), (3, 2), (2, 1, 124),
-(2, 1, 126), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 107), (2, 1, 105), (0, 7),
-(2, 1, 251), (1, 1), (2, 1, 250), (3, 1), (2, 1, 252), (2, 1, 254), (3, 1), (0,
-1), (2, 1, 271), (1, 1), (2, 1, 270), (3, 2), (0, 1), (2, 1, 293), (1, 1), (2,
-1, 292), (3, 2), (0, 1), (2, 1, 113), (1, 1), (2, 1, 112), (0, 1), (1, 1), (2,
-1, 114), (2, 1, 116), (1, 1), (2, 1, 118), (2, 1, 120), (1, 1), (0, 2), (2, 1,
-124), (2, 1, 126), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 107), (2, 1, 105), (
-3, 1), (0, 6), (2, 1, 251), (1, 1), (2, 1, 250), (0, 1), (2, 1, 252), (2, 1,
-254), (0, 2), (2, 1, 271), (1, 1), (2, 1, 270), (0, 3), (2, 1, 293), (1, 1), (
-2, 1, 292), (0, 4)]), (170, [(1, 13), (0, 4), (2, 1, 127), (1, 1), (2, 1, 128),
-(1, 1), (3, 2), (2, 1, 125), (2, 1, 117), (2, 1, 115), (2, 1, 107), (2, 1, 105
-), (0, 2), (3, 1), (0, 10), (2, 1, 127), (1, 1), (2, 1, 128), (1, 1), (0, 2), (
-2, 1, 125), (2, 1, 117), (2, 1, 115), (2, 1, 107), (2, 1, 105), (3, 1), (0, 9)]
-), (171, [(1, 13), (0, 8), (1, 1), (3, 1), (2, 1, 256), (3, 1), (0, 12), (1, 1
-), (0, 1), (2, 1, 256), (0, 5), (3, 1)]), (172, [(1, 13), (0, 2), (2, 1, 121),
-(1, 1), (2, 1, 122), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 119), (2, 1, 117),
-(2, 1, 115), (2, 1, 107), (2, 1, 105), (0, 13), (2, 1, 121), (1, 1), (2, 1, 122
-), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 119), (2, 1, 117), (2, 1, 115), (2,
-1, 107), (2, 1, 105), (3, 1), (0, 11)]), (173, [(1, 13), (0, 3), (2, 1, 127), (
-1, 1), (2, 1, 128), (1, 1), (3, 2), (2, 1, 125), (2, 1, 117), (2, 1, 115), (2,
-1, 107), (2, 1, 105), (0, 2), (3, 1), (0, 10), (2, 1, 127), (1, 1), (2, 1, 128
-), (1, 1), (0, 2), (2, 1, 125), (2, 1, 117), (2, 1, 115), (2, 1, 107), (2, 1,
-105), (3, 1), (0, 10)]), (172, [(1, 13), (0, 1), (2, 1, 121), (1, 1), (2, 1,
-122), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 119), (2, 1, 117), (2, 1, 115), (
-2, 1, 107), (2, 1, 105), (0, 13), (2, 1, 121), (1, 1), (2, 1, 122), (1, 1), (1,
-1), (1, 1), (0, 4), (2, 1, 119), (2, 1, 117), (2, 1, 115), (2, 1, 107), (2, 1,
-105), (3, 1), (0, 12)]), (0, [(1, 2), (0, 1), (2, 1, 153), (2, 1, 149), (2, 1,
-141), (2, 1, 139), (2, 1, 133), (2, 1, 131), (0, 2), (2, 1, 153), (2, 1, 149),
-(2, 1, 141), (2, 1, 139), (2, 1, 133), (2, 1, 131), (3, 1), (0, 1)]), (0, [(1,
-2), (2, 1, 153), (2, 1, 149), (2, 1, 141), (2, 1, 139), (2, 1, 133), (2, 1, 131
-), (0, 2), (2, 1, 153), (2, 1, 149), (2, 1, 141), (2, 1, 139), (2, 1, 133), (2,
-1, 131), (3, 1), (0, 2)]), (0, [(1, 1), (2, 1, 147), (2, 1, 143), (2, 1, 141),
-(2, 1, 139), (2, 1, 133), (2, 1, 131), (0, 1), (2, 1, 147), (2, 1, 143), (2, 1,
-141), (2, 1, 139), (2, 1, 133), (2, 1, 131), (3, 1), (0, 1)]), (174, [(1, 3), (
-3, 2), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 3
-), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (
-0, 1)]), (175, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2,
-1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99
-), (2, 1, 97), (3, 1), (0, 1)]), (176, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (
-2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1,
-102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (177, [(1, 2), (3, 1),
-(2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2,
-1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]),
-(178, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (
-2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (3, 1), (0, 1)]), (179, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102),
-(3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1
-), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (180, [(1, 2), (3, 1), (2, 1, 103
-), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (
-1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (181, [(
-1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97
-), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-3, 1), (0, 1)]), (182, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1
-), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (183, [(1, 2), (3, 1), (2, 1, 103), (
-1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1
-), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2),
-(2, 1, 5), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1,
-97), (0, 1), (2, 1, 5), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2,
-1, 99), (2, 1, 97), (0, 2)]), (19, [(1, 2), (2, 1, 95), (0, 1), (2, 1, 103), (
-1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 95), (3, 1),
-(2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]), (
-184, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2,
-1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97
-), (3, 1), (0, 1)]), (19, [(1, 2), (2, 1, 9), (0, 1), (2, 1, 103), (1, 1), (2,
-1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 9), (3, 1), (2, 1, 103
-), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]), (19, [(1, 2),
-(2, 1, 11), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2,
-1, 97), (0, 1), (2, 1, 11), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (0, 2)]), (185, [(1, 3), (3, 1), (0, 1), (2, 1, 103), (
-1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 3), (2, 1, 103), (1, 1
-), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (186, [(1, 3
-), (0, 1), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1,
-97), (0, 3), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97),
-(3, 1), (0, 1)]), (187, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3,
-1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (188, [(1, 2), (3, 1), (2, 1, 103), (
-1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1
-), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2),
-(2, 1, 23), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2,
-1, 97), (0, 1), (2, 1, 23), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (0, 2)]), (19, [(1, 2), (2, 1, 25), (0, 1), (2, 1, 103),
-(1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 25), (3, 1
-), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]),
-(189, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (
-2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (3, 1), (0, 1)]), (190, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102),
-(3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1
-), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2), (2, 1, 33), (0, 1),
-(2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2,
-1, 33), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97
-), (0, 2)]), (191, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (
-2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1,
-99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2), (2, 1, 41), (0, 1), (2, 1, 103
-), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 41), (3,
-1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]),
-(192, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (
-2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (3, 1), (0, 1)]), (193, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102),
-(3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1
-), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (194, [(1, 2), (3, 1), (2, 1, 103
-), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (
-1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (195, [(
-1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97
-), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-3, 1), (0, 1)]), (196, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1
-), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (197, [(1, 2), (3, 1), (2, 1, 103), (
-1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1
-), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (198, [(1, 3
-), (3, 2), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 3), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1
-), (0, 1)]), (199, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (
-2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1,
-99), (2, 1, 97), (3, 1), (0, 1)]), (200, [(1, 2), (3, 1), (2, 1, 103), (1, 1),
-(2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2,
-1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (201, [(1, 2), (3, 1
-), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (
-2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)
-]), (202, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99
-), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (
-2, 1, 97), (3, 1), (0, 1)]), (203, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102),
-(0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (204, [(1, 2), (3, 1), (2, 1,
-103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103),
-(1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(
-1, 2), (2, 1, 67), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99
-), (2, 1, 97), (0, 1), (2, 1, 67), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (
-0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]), (205, [(1, 2), (3, 1), (2, 1, 103), (
-1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1
-), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (206, [(1, 2
-), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1
-), (0, 1)]), (156, [(1, 6), (2, 1, 325), (1, 1), (2, 1, 324), (3, 1), (2, 1,
-309), (1, 1), (2, 1, 308), (1, 1), (2, 1, 310), (2, 1, 312), (1, 1), (1, 1), (
-1, 1), (3, 5), (2, 1, 307), (2, 1, 305), (0, 6), (2, 1, 325), (1, 1), (2, 1,
-324), (0, 1), (2, 1, 309), (1, 1), (2, 1, 308), (1, 1), (2, 1, 310), (2, 1, 312
-), (1, 1), (1, 1), (1, 1), (0, 5), (2, 1, 307), (2, 1, 305), (3, 1), (0, 6)]),
-(95, [(1, 3), (2, 1, 323), (2, 1, 321), (2, 1, 319), (2, 1, 317), (1, 1), (2,
-1, 316), (1, 1), (3, 1), (2, 1, 318), (2, 1, 320), (3, 1), (2, 1, 315), (3, 1),
-(0, 2), (2, 1, 323), (2, 1, 321), (2, 1, 319), (2, 1, 317), (1, 1), (2, 1, 316
-), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1, 315), (0, 3), (3, 1
-)]), (207, [(1, 3), (0, 1), (1, 1), (3, 1), (2, 1, 323), (2, 1, 321), (2, 1,
-319), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (3, 1), (2, 1, 318), (2, 1, 320
-), (3, 1), (2, 1, 315), (3, 1), (0, 2), (1, 1), (0, 1), (2, 1, 323), (2, 1, 321
-), (2, 1, 319), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318),
-(2, 1, 320), (0, 1), (2, 1, 315), (0, 2), (3, 1)]), (208, [(1, 3), (0, 2), (3,
-1), (0, 3), (3, 1)]), (4, [(1, 4), (2, 1, 323), (2, 1, 321), (2, 1, 319), (2,
-1, 317), (1, 1), (2, 1, 316), (1, 1), (3, 1), (2, 1, 318), (2, 1, 320), (3, 1),
-(2, 1, 315), (3, 1), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1,
-318), (2, 1, 320), (0, 1), (2, 1, 315), (0, 3), (2, 1, 323), (2, 1, 321), (2,
-1, 319), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1,
-320), (0, 1), (2, 1, 315), (0, 1), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (
-0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1, 315), (0, 3), (3, 1)]), (159, [
-(1, 4), (1, 1), (3, 1), (2, 1, 323), (2, 1, 321), (2, 1, 319), (2, 1, 317), (1,
-1), (2, 1, 316), (1, 1), (3, 1), (2, 1, 318), (2, 1, 320), (3, 1), (2, 1, 315),
-(3, 1), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1,
-320), (0, 1), (2, 1, 315), (0, 3), (1, 1), (0, 1), (2, 1, 323), (2, 1, 321), (
-2, 1, 319), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2,
-1, 320), (0, 1), (2, 1, 315), (0, 1), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1),
-(0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1, 315), (0, 3), (3, 1)]), (209,
-[(1, 4), (1, 1), (3, 1), (2, 1, 191), (2, 1, 189), (2, 1, 187), (2, 1, 185), (
-1, 1), (2, 1, 184), (1, 1), (3, 1), (2, 1, 186), (2, 1, 188), (3, 2), (2, 1,
-185), (1, 1), (2, 1, 184), (1, 1), (0, 1), (2, 1, 186), (2, 1, 188), (0, 4), (
-1, 1), (0, 1), (2, 1, 191), (2, 1, 189), (2, 1, 187), (2, 1, 185), (1, 1), (2,
-1, 184), (1, 1), (0, 1), (2, 1, 186), (2, 1, 188), (0, 2), (2, 1, 185), (1, 1),
-(2, 1, 184), (1, 1), (0, 1), (2, 1, 186), (2, 1, 188), (0, 4), (3, 1)]), (210,
-[(1, 1), (1, 1), (3, 1), (2, 1, 191), (2, 1, 189), (2, 1, 187), (2, 1, 185), (
-1, 1), (2, 1, 184), (1, 1), (3, 1), (2, 1, 186), (2, 1, 188), (3, 2), (1, 1), (
-0, 1), (2, 1, 191), (2, 1, 189), (2, 1, 187), (2, 1, 185), (1, 1), (2, 1, 184),
-(1, 1), (0, 1), (2, 1, 186), (2, 1, 188), (0, 2), (3, 1)]), (41, [(1, 4), (2,
-1, 191), (2, 1, 189), (2, 1, 187), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1), (
-3, 1), (2, 1, 186), (2, 1, 188), (3, 2), (2, 1, 185), (1, 1), (2, 1, 184), (1,
-1), (0, 1), (2, 1, 186), (2, 1, 188), (0, 4), (2, 1, 191), (2, 1, 189), (2, 1,
-187), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1), (0, 1), (2, 1, 186), (2, 1, 188
-), (0, 2), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1), (0, 1), (2, 1, 186), (2,
-1, 188), (0, 4), (3, 1)]), (163, [(1, 4), (1, 1), (3, 1), (2, 1, 191), (2, 1,
-189), (2, 1, 187), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1), (3, 1), (2, 1, 186
-), (2, 1, 188), (3, 2), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1), (0, 1), (2,
-1, 186), (2, 1, 188), (0, 4), (1, 1), (0, 1), (2, 1, 191), (2, 1, 189), (2, 1,
-187), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1), (0, 1), (2, 1, 186), (2, 1, 188
-), (0, 2), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1), (0, 1), (2, 1, 186), (2,
-1, 188), (0, 4), (3, 1)]), (165, [(1, 1), (2, 1, 221), (1, 1), (2, 1, 220), (3,
-1), (2, 1, 219), (2, 1, 217), (1, 1), (2, 1, 222), (2, 1, 224), (1, 1), (1, 1),
-(1, 1), (3, 4), (2, 1, 211), (2, 1, 209), (0, 1), (2, 1, 221), (1, 1), (2, 1,
-220), (0, 1), (2, 1, 219), (2, 1, 217), (1, 1), (2, 1, 222), (2, 1, 224), (1, 1
-), (1, 1), (1, 1), (0, 4), (2, 1, 211), (2, 1, 209), (3, 1), (0, 1)]), (165, [(
-1, 5), (2, 1, 221), (1, 1), (2, 1, 220), (3, 1), (2, 1, 219), (2, 1, 217), (1,
-1), (2, 1, 222), (2, 1, 224), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 211), (2,
-1, 209), (0, 5), (2, 1, 221), (1, 1), (2, 1, 220), (0, 1), (2, 1, 219), (2, 1,
-217), (1, 1), (2, 1, 222), (2, 1, 224), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1,
-211), (2, 1, 209), (3, 1), (0, 5)]), (0, [(1, 5), (0, 2), (2, 1, 225), (2, 1,
-223), (2, 1, 211), (2, 1, 209), (0, 5), (2, 1, 225), (2, 1, 223), (2, 1, 211),
-(2, 1, 209), (3, 1), (0, 3)]), (0, [(1, 5), (0, 4), (2, 1, 225), (2, 1, 223), (
-2, 1, 211), (2, 1, 209), (0, 5), (2, 1, 225), (2, 1, 223), (2, 1, 211), (2, 1,
-209), (3, 1), (0, 1)]), (0, [(1, 5), (0, 1), (2, 1, 225), (2, 1, 223), (2, 1,
-211), (2, 1, 209), (0, 5), (2, 1, 225), (2, 1, 223), (2, 1, 211), (2, 1, 209),
-(3, 1), (0, 4)]), (0, [(1, 5), (0, 3), (2, 1, 225), (2, 1, 223), (2, 1, 211), (
-2, 1, 209), (0, 5), (2, 1, 225), (2, 1, 223), (2, 1, 211), (2, 1, 209), (3, 1),
-(0, 2)]), (167, [(1, 1), (2, 1, 237), (1, 1), (2, 1, 236), (3, 1), (2, 1, 235),
-(2, 1, 233), (1, 1), (2, 1, 238), (2, 1, 240), (1, 1), (1, 1), (1, 1), (3, 4),
-(2, 1, 229), (2, 1, 227), (0, 1), (2, 1, 237), (1, 1), (2, 1, 236), (0, 1), (2,
-1, 235), (2, 1, 233), (1, 1), (2, 1, 238), (2, 1, 240), (1, 1), (1, 1), (1, 1),
-(0, 4), (2, 1, 229), (2, 1, 227), (3, 1), (0, 1)]), (167, [(1, 5), (2, 1, 237),
-(1, 1), (2, 1, 236), (3, 1), (2, 1, 235), (2, 1, 233), (1, 1), (2, 1, 238), (2,
-1, 240), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 229), (2, 1, 227), (0, 5), (2,
-1, 237), (1, 1), (2, 1, 236), (0, 1), (2, 1, 235), (2, 1, 233), (1, 1), (2, 1,
-238), (2, 1, 240), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 229), (2, 1, 227), (
-3, 1), (0, 5)]), (0, [(1, 5), (0, 2), (2, 1, 241), (2, 1, 239), (2, 1, 229), (
-2, 1, 227), (0, 5), (2, 1, 241), (2, 1, 239), (2, 1, 229), (2, 1, 227), (3, 1),
-(0, 3)]), (0, [(1, 5), (0, 4), (2, 1, 241), (2, 1, 239), (2, 1, 229), (2, 1,
-227), (0, 5), (2, 1, 241), (2, 1, 239), (2, 1, 229), (2, 1, 227), (3, 1), (0, 1
-)]), (0, [(1, 5), (0, 1), (2, 1, 241), (2, 1, 239), (2, 1, 229), (2, 1, 227), (
-0, 5), (2, 1, 241), (2, 1, 239), (2, 1, 229), (2, 1, 227), (3, 1), (0, 4)]), (
-0, [(1, 5), (0, 3), (2, 1, 241), (2, 1, 239), (2, 1, 229), (2, 1, 227), (0, 5),
-(2, 1, 241), (2, 1, 239), (2, 1, 229), (2, 1, 227), (3, 1), (0, 2)]), (168, [(
-1, 2), (2, 1, 273), (1, 1), (2, 1, 272), (3, 1), (2, 1, 274), (2, 1, 276), (3,
-1), (0, 1), (2, 1, 273), (1, 1), (2, 1, 272), (0, 1), (2, 1, 274), (2, 1, 276),
-(0, 2), (3, 1)]), (211, [(1, 2), (0, 1), (1, 1), (3, 1), (2, 1, 278), (3, 1), (
-0, 1), (1, 1), (0, 1), (2, 1, 278), (0, 1), (3, 1)]), (212, [(1, 2), (0, 1), (
-1, 1), (3, 1), (2, 1, 298), (3, 1), (0, 1), (1, 1), (0, 1), (2, 1, 298), (0, 1
-), (3, 1)]), (213, [(1, 3), (0, 2), (2, 1, 127), (1, 1), (2, 1, 128), (1, 1), (
-3, 2), (2, 1, 125), (2, 1, 117), (2, 1, 115), (2, 1, 107), (2, 1, 105), (0, 3),
-(2, 1, 127), (1, 1), (2, 1, 128), (1, 1), (0, 2), (2, 1, 125), (2, 1, 117), (2,
-1, 115), (2, 1, 107), (2, 1, 105), (3, 1), (0, 1)]), (0, [(1, 3), (0, 1), (2,
-1, 129), (2, 1, 125), (2, 1, 117), (2, 1, 115), (2, 1, 107), (2, 1, 105), (0, 3
-), (2, 1, 129), (2, 1, 125), (2, 1, 117), (2, 1, 115), (2, 1, 107), (2, 1, 105
-), (3, 1), (0, 2)]), (0, [(1, 3), (2, 1, 129), (2, 1, 125), (2, 1, 117), (2, 1,
-115), (2, 1, 107), (2, 1, 105), (0, 3), (2, 1, 129), (2, 1, 125), (2, 1, 117),
-(2, 1, 115), (2, 1, 107), (2, 1, 105), (3, 1), (0, 3)]), (214, [(1, 2), (2, 1,
-256), (3, 1), (0, 1), (2, 1, 256), (0, 2), (3, 1)]), (215, [(1, 2), (0, 1), (2,
-1, 257), (1, 1), (2, 1, 256), (3, 1), (2, 1, 255), (2, 1, 253), (1, 1), (2, 1,
-258), (2, 1, 260), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 245), (2, 1, 243), (
-0, 2), (2, 1, 257), (1, 1), (2, 1, 256), (0, 1), (2, 1, 255), (2, 1, 253), (1,
-1), (2, 1, 258), (2, 1, 260), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 245), (2,
-1, 243), (3, 1), (0, 1)]), (216, [(1, 4), (0, 1), (2, 1, 123), (2, 1, 119), (2,
-1, 117), (2, 1, 115), (2, 1, 107), (2, 1, 105), (0, 2), (3, 1), (0, 1), (2, 1,
-123), (2, 1, 119), (2, 1, 117), (2, 1, 115), (2, 1, 107), (2, 1, 105), (3, 1),
-(0, 3)]), (217, [(1, 4), (2, 1, 123), (2, 1, 119), (2, 1, 117), (2, 1, 115), (
-2, 1, 107), (2, 1, 105), (0, 2), (3, 1), (0, 1), (2, 1, 123), (2, 1, 119), (2,
-1, 117), (2, 1, 115), (2, 1, 107), (2, 1, 105), (3, 1), (0, 4)]), (218, [(1, 3
-), (3, 2), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 3), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1
-), (0, 1)]), (219, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (
-2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1,
-99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2), (2, 1, 79), (0, 1), (2, 1, 103
-), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 79), (3,
-1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]),
-(220, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (
-2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (3, 1), (0, 1)]), (221, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102),
-(3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1
-), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (222, [(1, 2), (3, 1), (2, 1, 103
-), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (
-1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (223, [(
-1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97
-), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-3, 1), (0, 1)]), (224, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1
-), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (225, [(1, 2), (3, 1), (2, 1, 103), (
-1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1
-), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (226, [(1, 2
-), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1
-), (0, 1)]), (19, [(1, 2), (2, 1, 7), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102),
-(3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 7), (3, 1), (2, 1, 103), (1, 1),
-(2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]), (19, [(1, 2), (2, 1, 13
-), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 1), (2, 1, 13), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99
-), (2, 1, 97), (0, 2)]), (227, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102
-), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (
-0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (228, [(1, 2), (3, 1), (2, 1,
-103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103),
-(1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (229, [(
-1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97
-), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-3, 1), (0, 1)]), (230, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1
-), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2), (2, 1, 29), (0, 1), (2,
-1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 29
-), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-0, 2)]), (231, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2,
-1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99
-), (2, 1, 97), (3, 1), (0, 1)]), (232, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (
-2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1,
-102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (233, [(1, 2), (3, 1),
-(2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2,
-1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]),
-(234, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (
-2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (3, 1), (0, 1)]), (235, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102),
-(3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1
-), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2), (2, 1, 49), (0, 1),
-(2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2,
-1, 49), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97
-), (0, 2)]), (236, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (
-2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1,
-99), (2, 1, 97), (3, 1), (0, 1)]), (237, [(1, 3), (0, 1), (3, 1), (2, 1, 103),
-(1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 3), (2, 1, 103), (1, 1
-), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (238, [(1, 3
-), (3, 1), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1,
-97), (0, 3), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97),
-(3, 1), (0, 1)]), (239, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3,
-1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (240, [(1, 2), (3, 1), (2, 1, 103), (
-1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1
-), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (241, [(1, 2
-), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1
-), (0, 1)]), (242, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (
-2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1,
-99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2), (2, 1, 63), (0, 1), (2, 1, 103
-), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 63), (3,
-1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]),
-(243, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (
-2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (3, 1), (0, 1)]), (244, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102),
-(3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1
-), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2), (2, 1, 71), (0, 1),
-(2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2,
-1, 71), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97
-), (0, 2)]), (95, [(1, 4), (0, 1), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (
-3, 1), (2, 1, 318), (2, 1, 320), (3, 1), (2, 1, 315), (3, 1), (0, 3), (2, 1,
-317), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (
-2, 1, 315), (0, 3), (3, 1)]), (156, [(1, 4), (0, 3), (1, 1), (2, 1, 324), (3, 1
-), (2, 1, 309), (1, 1), (2, 1, 308), (1, 1), (2, 1, 310), (2, 1, 312), (1, 1),
-(1, 1), (1, 1), (3, 5), (2, 1, 307), (2, 1, 305), (0, 4), (1, 1), (2, 1, 324),
-(0, 1), (2, 1, 309), (1, 1), (2, 1, 308), (1, 1), (2, 1, 310), (2, 1, 312), (1,
-1), (1, 1), (1, 1), (0, 5), (2, 1, 307), (2, 1, 305), (3, 1), (0, 1)]), (245, [
-(1, 4), (1, 1), (3, 1), (2, 1, 323), (2, 1, 321), (2, 1, 319), (2, 1, 317), (1,
-1), (2, 1, 316), (1, 1), (3, 1), (2, 1, 318), (2, 1, 320), (3, 1), (2, 1, 315),
-(3, 1), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1,
-320), (0, 1), (2, 1, 315), (0, 3), (1, 1), (0, 1), (2, 1, 323), (2, 1, 321), (
-2, 1, 319), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2,
-1, 320), (0, 1), (2, 1, 315), (0, 1), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1),
-(0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1, 315), (0, 3), (3, 1)]), (157,
-[(1, 4), (0, 2), (2, 1, 322), (1, 1), (1, 1), (3, 3), (0, 3), (2, 1, 322), (1,
-1), (1, 1), (0, 4), (3, 1)]), (246, [(1, 1), (1, 1), (3, 1), (2, 1, 323), (2,
-1, 321), (2, 1, 319), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (3, 1), (2, 1,
-318), (2, 1, 320), (3, 1), (2, 1, 315), (3, 1), (1, 1), (0, 1), (2, 1, 323), (
-2, 1, 321), (2, 1, 319), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2,
-1, 318), (2, 1, 320), (0, 1), (2, 1, 315), (0, 1), (3, 1)]), (210, [(1, 4), (1,
-1), (3, 1), (2, 1, 191), (2, 1, 189), (2, 1, 187), (2, 1, 185), (1, 1), (2, 1,
-184), (1, 1), (3, 1), (2, 1, 186), (2, 1, 188), (3, 2), (2, 1, 185), (1, 1), (
-2, 1, 184), (1, 1), (0, 1), (2, 1, 186), (2, 1, 188), (0, 4), (1, 1), (0, 1), (
-2, 1, 191), (2, 1, 189), (2, 1, 187), (2, 1, 185), (1, 1), (2, 1, 184), (1, 1),
-(0, 1), (2, 1, 186), (2, 1, 188), (0, 2), (2, 1, 185), (1, 1), (2, 1, 184), (1,
-1), (0, 1), (2, 1, 186), (2, 1, 188), (0, 4), (3, 1)]), (247, [(1, 2), (2, 1,
-278), (3, 1), (0, 1), (2, 1, 278), (0, 2), (3, 1)]), (248, [(1, 2), (0, 1), (2,
-1, 279), (1, 1), (2, 1, 278), (3, 1), (2, 1, 277), (2, 1, 275), (1, 1), (2, 1,
-280), (2, 1, 282), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 265), (2, 1, 263), (
-0, 2), (2, 1, 279), (1, 1), (2, 1, 278), (0, 1), (2, 1, 277), (2, 1, 275), (1,
-1), (2, 1, 280), (2, 1, 282), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 265), (2,
-1, 263), (3, 1), (0, 1)]), (249, [(1, 2), (2, 1, 298), (3, 1), (0, 1), (2, 1,
-298), (0, 2), (3, 1)]), (250, [(1, 2), (0, 1), (2, 1, 299), (1, 1), (2, 1, 298
-), (3, 1), (2, 1, 297), (2, 1, 295), (1, 1), (2, 1, 300), (2, 1, 302), (1, 1),
-(1, 1), (1, 1), (3, 4), (2, 1, 287), (2, 1, 285), (0, 2), (2, 1, 299), (1, 1),
-(2, 1, 298), (0, 1), (2, 1, 297), (2, 1, 295), (1, 1), (2, 1, 300), (2, 1, 302
-), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 287), (2, 1, 285), (3, 1), (0, 1)]),
-(0, [(1, 2), (0, 1), (2, 1, 129), (2, 1, 125), (2, 1, 117), (2, 1, 115), (2, 1,
-107), (2, 1, 105), (0, 2), (2, 1, 129), (2, 1, 125), (2, 1, 117), (2, 1, 115),
-(2, 1, 107), (2, 1, 105), (3, 1), (0, 1)]), (0, [(1, 2), (2, 1, 129), (2, 1,
-125), (2, 1, 117), (2, 1, 115), (2, 1, 107), (2, 1, 105), (0, 2), (2, 1, 129),
-(2, 1, 125), (2, 1, 117), (2, 1, 115), (2, 1, 107), (2, 1, 105), (3, 1), (0, 2)
-]), (215, [(1, 1), (2, 1, 257), (1, 1), (2, 1, 256), (3, 1), (2, 1, 255), (2,
-1, 253), (1, 1), (2, 1, 258), (2, 1, 260), (1, 1), (1, 1), (1, 1), (3, 4), (2,
-1, 245), (2, 1, 243), (0, 1), (2, 1, 257), (1, 1), (2, 1, 256), (0, 1), (2, 1,
-255), (2, 1, 253), (1, 1), (2, 1, 258), (2, 1, 260), (1, 1), (1, 1), (1, 1), (
-0, 4), (2, 1, 245), (2, 1, 243), (3, 1), (0, 1)]), (215, [(1, 5), (2, 1, 257),
-(1, 1), (2, 1, 256), (3, 1), (2, 1, 255), (2, 1, 253), (1, 1), (2, 1, 258), (2,
-1, 260), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 245), (2, 1, 243), (0, 5), (2,
-1, 257), (1, 1), (2, 1, 256), (0, 1), (2, 1, 255), (2, 1, 253), (1, 1), (2, 1,
-258), (2, 1, 260), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 245), (2, 1, 243), (
-3, 1), (0, 5)]), (0, [(1, 5), (0, 2), (2, 1, 261), (2, 1, 259), (2, 1, 245), (
-2, 1, 243), (0, 5), (2, 1, 261), (2, 1, 259), (2, 1, 245), (2, 1, 243), (3, 1),
-(0, 3)]), (0, [(1, 5), (0, 4), (2, 1, 261), (2, 1, 259), (2, 1, 245), (2, 1,
-243), (0, 5), (2, 1, 261), (2, 1, 259), (2, 1, 245), (2, 1, 243), (3, 1), (0, 1
-)]), (0, [(1, 5), (0, 1), (2, 1, 261), (2, 1, 259), (2, 1, 245), (2, 1, 243), (
-0, 5), (2, 1, 261), (2, 1, 259), (2, 1, 245), (2, 1, 243), (3, 1), (0, 4)]), (
-0, [(1, 5), (0, 3), (2, 1, 261), (2, 1, 259), (2, 1, 245), (2, 1, 243), (0, 5),
-(2, 1, 261), (2, 1, 259), (2, 1, 245), (2, 1, 243), (3, 1), (0, 2)]), (0, [(1,
-1), (2, 1, 123), (2, 1, 119), (2, 1, 117), (2, 1, 115), (2, 1, 107), (2, 1, 105
-), (0, 1), (2, 1, 123), (2, 1, 119), (2, 1, 117), (2, 1, 115), (2, 1, 107), (2,
-1, 105), (3, 1), (0, 1)]), (251, [(1, 3), (3, 2), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 3), (2, 1, 103), (1, 1), (2, 1, 102),
-(0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (252, [(1, 2), (3, 1), (2, 1,
-103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103),
-(1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (253, [(
-1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97
-), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-3, 1), (0, 1)]), (254, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1
-), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (255, [(1, 2), (3, 1), (2, 1, 103), (
-1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1
-), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (256, [(1, 2
-), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1
-), (0, 1)]), (257, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (
-2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1,
-99), (2, 1, 97), (3, 1), (0, 1)]), (258, [(1, 2), (3, 1), (2, 1, 103), (1, 1),
-(2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2,
-1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (259, [(1, 2), (3, 1
-), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (
-2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)
-]), (260, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99
-), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (
-2, 1, 97), (3, 1), (0, 1)]), (261, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102),
-(0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2), (2, 1, 21), (0,
-1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (
-2, 1, 21), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (0, 2)]), (19, [(1, 2), (2, 1, 27), (0, 1), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 27), (3, 1), (2, 1, 103),
-(1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]), (19, [(1, 2), (
-2, 1, 37), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1,
-97), (0, 1), (2, 1, 37), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2,
-1, 99), (2, 1, 97), (0, 2)]), (262, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2,
-1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1,
-102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (263, [(1, 2), (3, 1),
-(2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2,
-1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]),
-(19, [(1, 2), (2, 1, 47), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2,
-1, 99), (2, 1, 97), (0, 1), (2, 1, 47), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102
-), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]), (264, [(1, 2), (3, 1), (2, 1, 103
-), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (
-1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1,
-2), (2, 1, 51), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (
-2, 1, 97), (0, 1), (2, 1, 51), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1
-), (2, 1, 99), (2, 1, 97), (0, 2)]), (19, [(1, 2), (2, 1, 53), (0, 1), (2, 1,
-103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 53),
-(3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2
-)]), (19, [(1, 2), (2, 1, 55), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1
-), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 55), (3, 1), (2, 1, 103), (1, 1), (2,
-1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]), (19, [(1, 2), (2, 1, 57), (
-0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1
-), (2, 1, 57), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (
-2, 1, 97), (0, 2)]), (19, [(1, 2), (2, 1, 59), (0, 1), (2, 1, 103), (1, 1), (2,
-1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 59), (3, 1), (2, 1, 103
-), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]), (265, [(1, 2
-), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1
-), (0, 1)]), (266, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (
-2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1,
-99), (2, 1, 97), (3, 1), (0, 1)]), (267, [(1, 2), (3, 1), (2, 1, 103), (1, 1),
-(2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2,
-1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (95, [(1, 4), (2, 1,
-323), (2, 1, 321), (2, 1, 319), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (3, 1
-), (2, 1, 318), (2, 1, 320), (3, 1), (2, 1, 315), (3, 1), (2, 1, 317), (1, 1),
-(2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1, 315), (0,
-3), (2, 1, 323), (2, 1, 321), (2, 1, 319), (2, 1, 317), (1, 1), (2, 1, 316), (
-1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1, 315), (0, 1), (2, 1,
-317), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (
-2, 1, 315), (0, 3), (3, 1)]), (246, [(1, 4), (1, 1), (3, 1), (2, 1, 323), (2,
-1, 321), (2, 1, 319), (2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (3, 1), (2, 1,
-318), (2, 1, 320), (3, 1), (2, 1, 315), (3, 1), (2, 1, 317), (1, 1), (2, 1, 316
-), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1, 315), (0, 3), (1, 1
-), (0, 1), (2, 1, 323), (2, 1, 321), (2, 1, 319), (2, 1, 317), (1, 1), (2, 1,
-316), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0, 1), (2, 1, 315), (0, 1), (
-2, 1, 317), (1, 1), (2, 1, 316), (1, 1), (0, 1), (2, 1, 318), (2, 1, 320), (0,
-1), (2, 1, 315), (0, 3), (3, 1)]), (248, [(1, 1), (2, 1, 279), (1, 1), (2, 1,
-278), (3, 1), (2, 1, 277), (2, 1, 275), (1, 1), (2, 1, 280), (2, 1, 282), (1, 1
-), (1, 1), (1, 1), (3, 4), (2, 1, 265), (2, 1, 263), (0, 1), (2, 1, 279), (1, 1
-), (2, 1, 278), (0, 1), (2, 1, 277), (2, 1, 275), (1, 1), (2, 1, 280), (2, 1,
-282), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 265), (2, 1, 263), (3, 1), (0, 1)]
-), (248, [(1, 5), (2, 1, 279), (1, 1), (2, 1, 278), (3, 1), (2, 1, 277), (2, 1,
-275), (1, 1), (2, 1, 280), (2, 1, 282), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1,
-265), (2, 1, 263), (0, 5), (2, 1, 279), (1, 1), (2, 1, 278), (0, 1), (2, 1, 277
-), (2, 1, 275), (1, 1), (2, 1, 280), (2, 1, 282), (1, 1), (1, 1), (1, 1), (0, 4
-), (2, 1, 265), (2, 1, 263), (3, 1), (0, 5)]), (0, [(1, 5), (0, 2), (2, 1, 283
-), (2, 1, 281), (2, 1, 265), (2, 1, 263), (0, 5), (2, 1, 283), (2, 1, 281), (2,
-1, 265), (2, 1, 263), (3, 1), (0, 3)]), (0, [(1, 5), (0, 4), (2, 1, 283), (2,
-1, 281), (2, 1, 265), (2, 1, 263), (0, 5), (2, 1, 283), (2, 1, 281), (2, 1, 265
-), (2, 1, 263), (3, 1), (0, 1)]), (0, [(1, 5), (0, 1), (2, 1, 283), (2, 1, 281
-), (2, 1, 265), (2, 1, 263), (0, 5), (2, 1, 283), (2, 1, 281), (2, 1, 265), (2,
-1, 263), (3, 1), (0, 4)]), (0, [(1, 5), (0, 3), (2, 1, 283), (2, 1, 281), (2,
-1, 265), (2, 1, 263), (0, 5), (2, 1, 283), (2, 1, 281), (2, 1, 265), (2, 1, 263
-), (3, 1), (0, 2)]), (250, [(1, 1), (2, 1, 299), (1, 1), (2, 1, 298), (3, 1), (
-2, 1, 297), (2, 1, 295), (1, 1), (2, 1, 300), (2, 1, 302), (1, 1), (1, 1), (1,
-1), (3, 4), (2, 1, 287), (2, 1, 285), (0, 1), (2, 1, 299), (1, 1), (2, 1, 298),
-(0, 1), (2, 1, 297), (2, 1, 295), (1, 1), (2, 1, 300), (2, 1, 302), (1, 1), (1,
-1), (1, 1), (0, 4), (2, 1, 287), (2, 1, 285), (3, 1), (0, 1)]), (250, [(1, 5),
-(2, 1, 299), (1, 1), (2, 1, 298), (3, 1), (2, 1, 297), (2, 1, 295), (1, 1), (2,
-1, 300), (2, 1, 302), (1, 1), (1, 1), (1, 1), (3, 4), (2, 1, 287), (2, 1, 285),
-(0, 5), (2, 1, 299), (1, 1), (2, 1, 298), (0, 1), (2, 1, 297), (2, 1, 295), (1,
-1), (2, 1, 300), (2, 1, 302), (1, 1), (1, 1), (1, 1), (0, 4), (2, 1, 287), (2,
-1, 285), (3, 1), (0, 5)]), (0, [(1, 5), (0, 2), (2, 1, 303), (2, 1, 301), (2,
-1, 287), (2, 1, 285), (0, 5), (2, 1, 303), (2, 1, 301), (2, 1, 287), (2, 1, 285
-), (3, 1), (0, 3)]), (0, [(1, 5), (0, 4), (2, 1, 303), (2, 1, 301), (2, 1, 287
-), (2, 1, 285), (0, 5), (2, 1, 303), (2, 1, 301), (2, 1, 287), (2, 1, 285), (3,
-1), (0, 1)]), (0, [(1, 5), (0, 1), (2, 1, 303), (2, 1, 301), (2, 1, 287), (2,
-1, 285), (0, 5), (2, 1, 303), (2, 1, 301), (2, 1, 287), (2, 1, 285), (3, 1), (
-0, 4)]), (0, [(1, 5), (0, 3), (2, 1, 303), (2, 1, 301), (2, 1, 287), (2, 1, 285
-), (0, 5), (2, 1, 303), (2, 1, 301), (2, 1, 287), (2, 1, 285), (3, 1), (0, 2)]
-), (268, [(1, 3), (3, 1), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2,
-1, 99), (2, 1, 97), (0, 3), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99
-), (2, 1, 97), (3, 1), (0, 1)]), (269, [(1, 3), (0, 1), (3, 1), (2, 1, 103), (
-1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 3), (2, 1, 103), (1, 1
-), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2),
-(2, 1, 77), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2,
-1, 97), (0, 1), (2, 1, 77), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (0, 2)]), (270, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (
-2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1,
-102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (271, [(1, 2), (3, 1),
-(2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2,
-1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]),
-(272, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (
-2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (3, 1), (0, 1)]), (273, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102),
-(3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1
-), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (274, [(1, 2), (3, 1), (2, 1, 103
-), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (
-1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (275, [(
-1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97
-), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-3, 1), (0, 1)]), (276, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1
-), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (277, [(1, 2), (3, 1), (2, 1, 103), (
-1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1
-), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2),
-(2, 1, 17), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2,
-1, 97), (0, 1), (2, 1, 17), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (0, 2)]), (278, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (
-2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1,
-102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (279, [(1, 2), (3, 1),
-(2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2,
-1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]),
-(280, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (
-2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (3, 1), (0, 1)]), (19, [(1, 2), (2, 1, 61), (0, 1), (2, 1, 103), (1, 1), (
-2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 61), (3, 1), (2, 1,
-103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]), (281, [(1,
-2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1
-), (0, 1)]), (282, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (
-2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1,
-99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2), (2, 1, 73), (0, 1), (2, 1, 103
-), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 73), (3,
-1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]),
-(19, [(1, 2), (2, 1, 75), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2,
-1, 99), (2, 1, 97), (0, 1), (2, 1, 75), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102
-), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]), (19, [(1, 2), (2, 1, 81), (0, 1),
-(2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2,
-1, 81), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97
-), (0, 2)]), (19, [(1, 2), (2, 1, 83), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102
-), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 83), (3, 1), (2, 1, 103), (1,
-1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]), (283, [(1, 2), (3, 1
-), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (
-2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)
-]), (284, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99
-), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (
-2, 1, 97), (3, 1), (0, 1)]), (285, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102),
-(0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (286, [(1, 2), (3, 1), (2, 1,
-103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103),
-(1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(
-1, 2), (2, 1, 93), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99
-), (2, 1, 97), (0, 1), (2, 1, 93), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (
-0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]), (19, [(1, 2), (2, 1, 15), (0, 1), (2,
-1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 15
-), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-0, 2)]), (19, [(1, 2), (2, 1, 43), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (
-3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 43), (3, 1), (2, 1, 103), (1, 1),
-(2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]), (19, [(1, 2), (2, 1, 45
-), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (
-0, 1), (2, 1, 45), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99
-), (2, 1, 97), (0, 2)]), (287, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102
-), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (
-0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2), (2, 1, 65), (0,
-1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (
-2, 1, 65), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1,
-97), (0, 2)]), (19, [(1, 2), (2, 1, 69), (0, 1), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 69), (3, 1), (2, 1, 103),
-(1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]), (288, [(1, 2), (
-3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2
-), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (
-0, 1)]), (19, [(1, 2), (2, 1, 87), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (
-3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 87), (3, 1), (2, 1, 103), (1, 1),
-(2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)]), (289, [(1, 2), (3, 1), (
-2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1,
-103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (
-290, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2,
-1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97
-), (3, 1), (0, 1)]), (291, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (
-3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1
-), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2), (2, 1, 85), (0, 1),
-(2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2,
-1, 85), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97
-), (0, 2)]), (292, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (
-2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1,
-99), (2, 1, 97), (3, 1), (0, 1)]), (293, [(1, 2), (3, 1), (2, 1, 103), (1, 1),
-(2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2,
-1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (294, [(1, 2), (3, 1
-), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (
-2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)
-]), (295, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99
-), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (
-2, 1, 97), (3, 1), (0, 1)]), (296, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1,
-102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102),
-(0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (297, [(1, 2), (3, 1), (2, 1,
-103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103),
-(1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (298, [(
-1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97
-), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-3, 1), (0, 1)]), (299, [(1, 2), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (3, 1
-), (2, 1, 99), (2, 1, 97), (0, 2), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (
-2, 1, 99), (2, 1, 97), (3, 1), (0, 1)]), (19, [(1, 2), (2, 1, 91), (0, 1), (2,
-1, 103), (1, 1), (2, 1, 102), (3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 91
-), (3, 1), (2, 1, 103), (1, 1), (2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (
-0, 2)]), (19, [(1, 2), (2, 1, 89), (0, 1), (2, 1, 103), (1, 1), (2, 1, 102), (
-3, 1), (2, 1, 99), (2, 1, 97), (0, 1), (2, 1, 89), (3, 1), (2, 1, 103), (1, 1),
-(2, 1, 102), (0, 1), (2, 1, 99), (2, 1, 97), (0, 2)])], [1])
-# GENERATE END
-
-# GENERATE TOKENS BEGIN
-tokens = [-1, -1, 290, 322, 312, 297, 293, 321, 313, 318, 304, 315, 310, 288,
-303, 319, 320, 314, 292, 299, 300, 291, 294, 323, 298, 301, 263, 289, 308, 316,
-287, 309, 302, 305, 295, 317, 324, 325, 326, 296, 306, 327, 307, 328, 329, 330,
-262, 285, 258, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1,
--1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, -1, -1, -1, -1,
--1, 260, -1, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, -1, -1, -1, -1, -1, 260,
--1, -1, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, -1, -1, -1, -1, -1, -1, -1,
--1, 260, -1, -1, -1, -1, -1, -1, -1, -1, -1, 261, -1, -1, -1, -1, -1, -1, -1,
--1, -1, -1, 311, 281, 280, 278, 279, 275, 276, 277, 282, 283, 284, 268, 267,
-265, 266, 264, 273, 274, 269, 270, 271, 272, 59, 123, -1, 125, -1, 44, 58, 61,
-40, 41, 91, -1, 93, -1, 46, 38, 33, 126, 45, 43, 42, 47, 37, 60, 62, 94, 124,
-63, -1, -1, -1]
-# GENERATE END
-
-def yylex(root, pos, off, factory, yychunk_iter):
-  for end_pos, end_off, group_index in (
-    _dfa.yylex(root, pos, off, factory, yychunk_iter)
-  ):
-    token = tokens[group_index]
-    #print('end_pos', end_pos, 'end_off', end_off, 'group_index', group_index, 'token', token)
-    if token != -1:
-      yield end_pos, end_off, token
-
-if __name__ == '__main__':
-  import ast
-  import element
-  import sys
-  import work
-  import xml.etree.ElementTree
-
-  root = element.Element('root')
-  pos = 0
-  off = 0
-  for end_pos, end_off, group_index in _dfa.yylex(
-    root,
-    pos,
-    off,
-    ast.factory,
-    work.yychunk_line(root, sys.stdin)
-  ):
-    tag, kwargs = _dfa.groups[group_index]
-    if tag != '':
-      work.apply_markup(
-        root,
-        pos,
-        off,
-        end_pos,
-        end_off,
-        ast.factory,
-        tag,
-        **kwargs
-      )
-    pos, off = element.to_start_relative(root, end_pos, end_off)
-  xml.etree.ElementTree.dump(root)
diff --git a/ansi_c_yylex.sh b/ansi_c_yylex.sh
deleted file mode 100755 (executable)
index 57a7185..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-if ../plex.git/plex.py ansi_c_lex.l ansi_c_tokens.py <ansi_c_yylex.py >ansi_c_yylex.py.new && ! diff -q ansi_c_yylex.py ansi_c_yylex.py.new
- then
-  mv ansi_c_yylex.py.new ansi_c_yylex.py
-else
-  rm -f ansi_c_yylex.py.new
-fi
diff --git a/ansi_c_yyparse.py b/ansi_c_yyparse.py
deleted file mode 100644 (file)
index 5642fb6..0000000
+++ /dev/null
@@ -1,1369 +0,0 @@
-import lr1dfa
-
-# GENERATE LALR1 BEGIN
-lalr1 = lr1dfa.LR1DFA([([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 59, 60,
-123, 124, 126, 127, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
-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], [
--1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 179, -1, 14, -1, 16, -1, 487, -1,
-18, 20, 22, 24, 26, 28, -1, 30, 32, -1, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52,
-54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, -1, 86, 88, 90,
--1, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120], [1,
-6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72,
-74, 77, 89, 91, 93, 96, 98, 100, 105, 110, 116, 133, 135, 137, 153, 155, 161,
-162, 168, 172, 174, 176, 226, 227, 243, 245, 247, 249, 264], [-1, 61, 62, -1,
-63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 79,
-80, 81, -1, 82, 83, 84, -1, 85, 86, 87, 88, -1, 89, -1, 90, -1, 91, 92, 93, -1,
-94, 95, 96, 97, 98, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126,
-127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327,
-328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22,
-24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13,
-18, 26, 30, 42, 44, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 101, -1]),
-([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261,
-262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1,
-4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32,
--1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 264],
-[-1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 102, -1]), ([33, 34, 38, 39, 40, 41,
-42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
-285, 286, 287, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
-306, 307, 308, 309, 310, 311, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6,
--1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 34, 36,
--1, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, -1,
-110, 112, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59,
-62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93, 116, 133, 135, 137, 143, 145, 147,
-153, 155, 161, 162, 168, 172, 197, 198, 264], [-1, 61, 62, -1, 63, 64, -1, 65,
--1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 79, -1, 103, -1,
-104, 87, 88, -1, 105, 106, -1, 89, -1, 90, -1, 107, -1, 108, -1]), ([33, 34,
-38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261, 262, 263,
-264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6,
--1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1,
-110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 264], [-1, 61, 62,
--1, 63, 64, -1, 65, -1, 100, 109, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44,
-45, 46, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287,
-325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1,
-198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9,
-10, 12, 13, 18, 26, 30, 42, 44, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100,
-110, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259,
-260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [
--1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28,
--1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30,
-42, 44, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 111, -1]), ([33, 34,
-38, 39, 40, 41, 42, 43, 44, 45, 46, 59, 60, 123, 124, 125, 126, 127, 258, 259,
-260, 261, 262, 263, 264, 265, 266, 267, 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], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12,
--1, 179, -1, 14, -1, 487, 16, -1, 18, 20, 22, 24, 26, 28, -1, 30, 32, -1, 34,
-36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74,
-76, 78, 80, 82, 84, -1, 86, 88, 90, -1, 92, 94, 96, 98, 100, 102, 104, 106,
-108, 110, 112, 114, 116, 118, 120], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44,
-48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93, 96, 98, 100, 105,
-110, 116, 133, 135, 137, 153, 155, 161, 162, 168, 172, 174, 176, 226, 227, 243,
-245, 247, 249, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70,
-71, 72, 73, 74, 75, 76, 77, 78, -1, 79, 80, 81, -1, 82, 83, 84, -1, 85, 86, 87,
-88, -1, 89, -1, 90, -1, 91, 92, 93, -1, 94, 95, 112, 97, 98, -1]), ([33, 34,
-38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261, 262, 263,
-264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6,
--1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1,
-110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 264], [-1, 61, 62,
--1, 63, 64, -1, 65, -1, 100, 113, -1]), ([37, 39, 40, 41, 42, 48, 58, 59, 64,
-91, 92, 94, 95, 124, 125, 264, 285, 331], [-1, 3, -1, 3, -1, 3, -1, 228, 3, -1,
-3, -1, 3, -1, 3, -1, 3, -1], [264], [-1]), ([37, 39, 40, 48, 58, 64, 91, 92,
-93, 95, 124, 126, 264, 285, 331], [-1, 13, -1, 13, -1, 13, -1, 13, -1, 13, -1,
-13, -1, 13, -1], [264], [-1]), ([37, 39, 40, 48, 58, 64, 91, 92, 93, 95, 124,
-126, 264, 285, 331], [-1, 15, -1, 15, -1, 15, -1, 15, -1, 15, -1, 15, -1, 15,
--1], [264], [-1]), ([37, 39, 40, 48, 58, 64, 91, 92, 93, 95, 124, 126, 264,
-285, 331], [-1, 21, -1, 21, -1, 21, -1, 21, -1, 21, -1, 21, -1, 21, -1], [264],
-[-1]), ([37, 39, 40, 48, 58, 64, 91, 92, 93, 95, 124, 126, 264, 285, 331], [-1,
-23, -1, 23, -1, 23, -1, 23, -1, 23, -1, 23, -1, 23, -1], [264], [-1]), ([33,
-34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261, 262, 263,
-264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 230,
--1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1,
-110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 264], [-1, 61, 62, -1,
-63, 64, -1, 65, -1, 116, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46,
-126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326,
-327, 328, 331], [-1, 2, -1, 4, -1, 234, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20,
-22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12,
-13, 18, 26, 30, 42, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 118, -1]), ([33,
-34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261, 262, 263,
-264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 234,
--1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1,
-110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 264], [-1, 61, 62, -1,
-63, 64, -1, 65, -1, 119, -1]), ([40, 43, 44, 45, 58, 60, 91, 92, 258, 259, 285,
-286, 287, 311, 324, 325, 326, 327, 328, 329, 330, 331], [-1, 265, -1, 265, -1,
-265, -1, 265, -1, 265, -1, 265, -1, 265, -1, 265, -1, 265, -1, 265, -1, 265], [
-264], [-1]), ([37, 39, 40, 48, 58, 64, 91, 92, 93, 95, 124, 126, 264, 285, 331
-], [-1, 17, -1, 17, -1, 17, -1, 17, -1, 17, -1, 17, -1, 17, -1], [264], [-1]),
-([40, 43, 44, 45, 59, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324, 325, 326,
-327, 328, 329, 330, 331], [-1, 221, -1, 221, -1, 221, -1, 221, -1, 221, -1,
-221, -1, 221, -1, 221, -1, 221, -1, 221, -1, 221], [264], [-1]), ([40, 43, 44,
-45, 59, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324, 325, 326, 327, 328, 329,
-330, 331], [-1, 223, -1, 223, -1, 223, -1, 223, -1, 223, -1, 223, -1, 223, -1,
-223, -1, 223, -1, 223, -1, 223], [264], [-1]), ([40, 43, 44, 45, 59, 60, 91,
-92, 258, 259, 285, 286, 287, 311, 324, 325, 326, 327, 328, 329, 330, 331], [-1,
-225, -1, 225, -1, 225, -1, 225, -1, 225, -1, 225, -1, 225, -1, 225, -1, 225,
--1, 225, -1, 225], [264], [-1]), ([40, 43, 44, 45, 59, 60, 91, 92, 258, 259,
-285, 286, 287, 311, 324, 325, 326, 327, 328, 329, 330, 331], [-1, 229, -1, 229,
--1, 229, -1, 229, -1, 229, -1, 229, -1, 229, -1, 229, -1, 229, -1, 229, -1, 229
-], [264], [-1]), ([40, 43, 44, 45, 59, 60, 91, 92, 258, 259, 285, 286, 287,
-311, 324, 325, 326, 327, 328, 329, 330, 331], [-1, 231, -1, 231, -1, 231, -1,
-231, -1, 231, -1, 231, -1, 231, -1, 231, -1, 231, -1, 231, -1, 231], [264], [-1
-]), ([40, 43, 44, 45, 59, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324, 325,
-326, 327, 328, 329, 330, 331], [-1, 345, -1, 345, -1, 345, -1, 345, -1, 345,
--1, 345, -1, 345, -1, 345, -1, 345, -1, 345, -1, 345], [264], [-1]), ([33, 34,
-38, 39, 40, 46, 58, 60, 91, 92, 93, 94, 126, 127, 258, 264, 265, 267, 285, 311,
-324, 329, 330, 331], [-1, 337, -1, 337, -1, 337, -1, 337, -1, 337, -1, 337, -1,
-337, -1, 337, -1, 337, -1, 337, -1, 337, -1, 337], [264], [-1]), ([33, 34, 38,
-39, 40, 46, 58, 60, 91, 92, 93, 94, 126, 127, 258, 264, 265, 267, 285, 311,
-324, 329, 330, 331], [-1, 339, -1, 339, -1, 339, -1, 339, -1, 339, -1, 339, -1,
-339, -1, 339, -1, 339, -1, 339, -1, 339, -1, 339], [264], [-1]), ([33, 34, 38,
-39, 40, 46, 58, 60, 91, 92, 93, 94, 126, 127, 258, 264, 265, 267, 285, 311,
-324, 329, 330, 331], [-1, 341, -1, 341, -1, 341, -1, 341, -1, 341, -1, 341, -1,
-341, -1, 341, -1, 341, -1, 341, -1, 341, -1, 341], [264], [-1]), ([40, 43, 44,
-45, 58, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324, 325, 326, 327, 328, 329,
-330, 331], [-1, 251, -1, 251, -1, 251, -1, 251, -1, 251, -1, 251, -1, 251, -1,
-251, -1, 251, -1, 251, -1, 251], [264], [-1]), ([40, 43, 44, 45, 58, 60, 91,
-92, 258, 259, 285, 286, 287, 311, 324, 325, 326, 327, 328, 329, 330, 331], [-1,
-235, -1, 235, -1, 235, -1, 235, -1, 235, -1, 235, -1, 235, -1, 235, -1, 235,
--1, 235, -1, 235], [264], [-1]), ([40, 43, 44, 45, 58, 60, 91, 92, 258, 259,
-285, 286, 287, 311, 324, 325, 326, 327, 328, 329, 330, 331], [-1, 237, -1, 237,
--1, 237, -1, 237, -1, 237, -1, 237, -1, 237, -1, 237, -1, 237, -1, 237, -1, 237
-], [264], [-1]), ([40, 43, 44, 45, 58, 60, 91, 92, 258, 259, 285, 286, 287,
-311, 324, 325, 326, 327, 328, 329, 330, 331], [-1, 239, -1, 239, -1, 239, -1,
-239, -1, 239, -1, 239, -1, 239, -1, 239, -1, 239, -1, 239, -1, 239], [264], [-1
-]), ([40, 43, 44, 45, 58, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324, 325,
-326, 327, 328, 329, 330, 331], [-1, 241, -1, 241, -1, 241, -1, 241, -1, 241,
--1, 241, -1, 241, -1, 241, -1, 241, -1, 241, -1, 241], [264], [-1]), ([40, 43,
-44, 45, 58, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324, 325, 326, 327, 328,
-329, 330, 331], [-1, 247, -1, 247, -1, 247, -1, 247, -1, 247, -1, 247, -1, 247,
--1, 247, -1, 247, -1, 247, -1, 247], [264], [-1]), ([40, 43, 44, 45, 58, 60,
-91, 92, 258, 259, 285, 286, 287, 311, 324, 325, 326, 327, 328, 329, 330, 331],
-[-1, 249, -1, 249, -1, 249, -1, 249, -1, 249, -1, 249, -1, 249, -1, 249, -1,
-249, -1, 249, -1, 249], [264], [-1]), ([40, 43, 44, 45, 58, 60, 91, 92, 258,
-259, 285, 286, 287, 311, 324, 325, 326, 327, 328, 329, 330, 331], [-1, 243, -1,
-243, -1, 243, -1, 243, -1, 243, -1, 243, -1, 243, -1, 243, -1, 243, -1, 243,
--1, 243], [264], [-1]), ([40, 43, 44, 45, 58, 60, 91, 92, 258, 259, 285, 286,
-287, 311, 324, 325, 326, 327, 328, 329, 330, 331], [-1, 245, -1, 245, -1, 245,
--1, 245, -1, 245, -1, 245, -1, 245, -1, 245, -1, 245, -1, 245, -1, 245], [264],
-[-1]), ([40, 43, 44, 45, 58, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324,
-325, 326, 327, 328, 329, 330, 331], [-1, 233, -1, 233, -1, 233, -1, 233, -1,
-233, -1, 233, -1, 233, -1, 233, -1, 233, -1, 233, -1, 233], [264], [-1]), ([40,
-43, 44, 45, 58, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324, 325, 326, 327,
-328, 329, 330, 331], [-1, 253, -1, 253, -1, 253, -1, 253, -1, 253, -1, 253, -1,
-253, -1, 253, -1, 253, -1, 253, -1, 253], [264], [-1]), ([40, 43, 44, 45, 58,
-60, 91, 92, 258, 259, 285, 286, 287, 311, 324, 325, 326, 327, 328, 329, 330,
-331], [-1, 255, -1, 255, -1, 255, -1, 255, -1, 255, -1, 255, -1, 255, -1, 255,
--1, 255, -1, 255, -1, 255], [264], [-1]), ([123, 124, 258, 259, 331], [-1, 521,
--1, 240, -1], [260, 262, 264], [-1, 121, -1]), ([123, 124, 258, 259, 331], [-1,
-521, -1, 244, -1], [260, 262, 264], [-1, 123, -1]), ([123, 124, 258, 259, 331],
-[-1, 521, -1, 248, -1], [260, 262, 264], [-1, 125, -1]), ([33, 34, 38, 39, 40,
-41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266,
-267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1,
-12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114,
--1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68,
-70, 72, 74, 95, 96, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 67, 68, 69,
-70, 71, 72, 73, 74, 75, 76, 77, 126, -1, 127, -1]), ([58, 59, 331], [-1, 256,
--1], [264], [-1]), ([40, 41, 331], [-1, 258, -1], [264], [-1]), ([40, 41, 331],
-[-1, 260, -1], [264], [-1]), ([40, 41, 331], [-1, 262, -1], [264], [-1]), ([33,
-34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 59, 60, 123, 124, 126, 127, 258, 259,
-260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 312, 313, 314, 315, 316, 317,
-318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1,
-6, -1, 8, 10, -1, 12, -1, 179, -1, 14, -1, 16, -1, 18, 20, 22, 24, 26, 28, -1,
-30, 32, -1, 36, -1, 86, 88, 90, -1, 92, 94, 96, 98, 100, 102, 104, 106, -1,
-110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59,
-62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93, 227, 243, 264], [-1, 61, 62, -1,
-63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 79,
-80, 81, -1, 132, -1]), ([40, 41, 331], [-1, 266, -1], [264], [-1]), ([258, 259,
-331], [-1, 268, -1], [264], [-1]), ([59, 60, 331], [-1, 270, -1], [264], [-1]),
-([59, 60, 331], [-1, 272, -1], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 43,
-44, 45, 46, 59, 60, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
-286, 287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12,
--1, 179, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1,
-114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66,
-68, 70, 72, 74, 77, 89, 91, 93, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 66,
-67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 79, 137, 81, -1]), ([40,
-41, 331], [-1, 276, -1], [264], [-1]), ([40, 41, 331], [-1, 278, -1], [264], [
--1]), ([40, 41, 43, 44, 45, 58, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324,
-325, 326, 327, 328, 329, 330, 331], [-1, 280, 343, -1, 343, -1, 343, -1, 343,
--1, 343, -1, 343, -1, 343, -1, 343, -1, 343, -1, 343, -1, 343], [264], [-1]), (
-[40, 41, 331], [-1, 282, -1], [264], [-1]), ([40, 43, 44, 45, 59, 60, 91, 92,
-258, 259, 285, 286, 287, 311, 324, 325, 326, 327, 328, 329, 330, 331], [-1,
-347, -1, 347, -1, 347, -1, 347, -1, 347, -1, 347, -1, 347, -1, 347, -1, 347,
--1, 347, -1, 347], [264], [-1]), ([40, 41, 331], [-1, 284, -1], [264], [-1]), (
-[40, 43, 44, 45, 59, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324, 325, 326,
-327, 328, 329, 330, 331], [-1, 227, -1, 227, -1, 227, -1, 227, -1, 227, -1,
-227, -1, 227, -1, 227, -1, 227, -1, 227, -1, 227], [264], [-1]), ([37, 39, 40,
-48, 58, 64, 91, 92, 93, 95, 124, 126, 264, 285, 331], [-1, 37, -1, 37, -1, 37,
--1, 37, -1, 37, -1, 37, -1, 37, -1], [264], [-1]), ([37, 39, 40, 48, 58, 64,
-91, 92, 93, 95, 124, 126, 264, 285, 331], [-1, 5, -1, 5, -1, 5, -1, 5, -1, 5,
--1, 5, -1, 5, -1], [264], [-1]), ([37, 39, 40, 48, 58, 64, 91, 92, 93, 95, 124,
-126, 264, 285, 331], [-1, 7, -1, 7, -1, 7, -1, 7, -1, 7, -1, 7, -1, 7, -1], [
-264], [-1]), ([37, 39, 40, 48, 58, 64, 91, 92, 93, 95, 124, 126, 264, 285, 331
-], [-1, 11, -1, 11, -1, 11, -1, 11, -1, 11, -1, 11, -1, 11, -1], [264], [-1]),
-([37, 39, 40, 41, 46, 47, 48, 58, 64, 91, 92, 93, 95, 124, 126, 264, 265, 266,
-267, 285, 331], [-1, 61, -1, 286, 61, 288, 61, -1, 61, -1, 290, -1, 61, -1, 61,
--1, 292, 294, 296, 61, -1], [264], [-1]), ([37, 39, 41, 46, 47, 48, 58, 61, 62,
-64, 93, 95, 124, 126, 267, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
-285, 331], [-1, 85, -1, 85, -1, 85, -1, 85, 298, 85, -1, 85, -1, 85, -1, 85,
-300, 302, 304, 306, 308, 310, 312, 314, 316, 318, -1], [264], [-1]), ([37, 39,
-41, 46, 47, 48, 58, 61, 62, 64, 93, 95, 124, 126, 267, 275, 331], [-1, 89, -1,
-89, -1, 89, -1, 89, -1, 89, -1, 89, -1, 89, -1, 89, -1], [264], [-1]), ([37,
-38, 39, 41, 42, 43, 46, 47, 48, 58, 61, 62, 64, 93, 95, 124, 126, 267, 275, 331
-], [-1, 320, 97, -1, 97, 322, 97, -1, 324, -1, 97, -1, 97, -1, 97, -1, 97, -1,
-97, -1], [264], [-1]), ([38, 39, 41, 42, 43, 44, 45, 46, 58, 61, 62, 64, 93,
-95, 124, 126, 267, 275, 331], [-1, 103, -1, 103, -1, 326, 103, 328, -1, 103,
--1, 103, -1, 103, -1, 103, -1, 103, -1], [264], [-1]), ([38, 39, 41, 42, 44,
-45, 58, 61, 62, 64, 93, 95, 124, 126, 267, 268, 269, 275, 331], [-1, 109, -1,
-109, -1, 109, -1, 109, -1, 109, -1, 109, -1, 109, -1, 330, 332, 109, -1], [264
-], [-1]), ([38, 39, 41, 42, 44, 45, 58, 60, 61, 62, 63, 64, 93, 95, 124, 126,
-269, 270, 271, 275, 331], [-1, 119, -1, 119, -1, 119, -1, 119, 334, -1, 336,
-119, -1, 119, -1, 119, -1, 338, 340, 119, -1], [264], [-1]), ([38, 39, 41, 42,
-44, 45, 58, 60, 63, 64, 93, 95, 124, 126, 271, 272, 273, 275, 331], [-1, 125,
--1, 125, -1, 125, -1, 125, -1, 125, -1, 125, -1, 125, -1, 342, 344, 125, -1], [
-264], [-1]), ([38, 39, 41, 42, 44, 45, 58, 60, 63, 64, 93, 95, 124, 126, 273,
-275, 331], [-1, 346, -1, 129, -1, 129, -1, 129, -1, 129, -1, 129, -1, 129, -1,
-129, -1], [264], [-1]), ([41, 42, 44, 45, 58, 60, 63, 64, 93, 94, 95, 124, 126,
-273, 275, 331], [-1, 133, -1, 133, -1, 133, -1, 133, -1, 133, 348, -1, 133, -1,
-133, -1], [264], [-1]), ([41, 42, 44, 45, 58, 60, 63, 64, 93, 94, 124, 125,
-126, 273, 275, 331], [-1, 137, -1, 137, -1, 137, -1, 137, -1, 137, -1, 350,
-137, -1, 137, -1], [264], [-1]), ([41, 42, 44, 45, 58, 60, 63, 64, 93, 94, 125,
-126, 273, 274, 275, 331], [-1, 141, -1, 141, -1, 141, -1, 141, -1, 141, -1,
-141, -1, 352, 141, -1], [264], [-1]), ([41, 42, 44, 45, 58, 60, 63, 64, 93, 94,
-125, 126, 274, 275, 331], [-1, 145, -1, 145, -1, 145, -1, 354, -1, 145, -1,
-145, -1, 356, -1], [264], [-1]), ([41, 42, 44, 45, 58, 60, 93, 94, 125, 126,
-331], [-1, 155, -1, 155, -1, 155, -1, 155, -1, 155, -1], [264], [-1]), ([41,
-42, 44, 45, 58, 60, 93, 94, 331], [-1, 183, -1, 183, -1, 183, -1, 183, -1], [
-264], [-1]), ([59, 60, 331], [-1, 358, -1], [264], [-1]), ([41, 42, 44, 45, 59,
-60, 331], [-1, 181, -1, 360, -1, 181, -1], [264], [-1]), ([33, 34, 38, 39, 40,
-41, 42, 44, 45, 46, 59, 60, 123, 124, 125, 127, 256, 257, 258, 264, 265, 267,
-285, 311, 312, 315, 316, 331], [-1, 495, -1, 495, -1, 495, -1, 495, -1, 495,
--1, 495, -1, 495, -1, 495, -1, 495, -1, 495, -1, 495, -1, 495, -1, 495, -1, 495
-], [264], [-1]), ([40, 41, 42, 43, 59, 60, 258, 259, 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, 324, 325, 326, 327, 328, 329, 330, 331], [-1,
-362, -1, 364, -1, 211, -1, 366, -1, 34, -1, 38, 40, 42, 44, 46, 48, 50, 52, 54,
-56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, -1, 108, -1, 112,
--1, 116, -1, 120], [100, 105, 107, 109, 110, 116, 133, 135, 137, 153, 155, 161,
-162, 168, 172, 174, 176, 178, 180, 185, 264], [-1, 184, 185, 186, 187, 85, 86,
-87, 88, -1, 89, -1, 90, -1, 91, 92, 93, -1, 188, 189, -1]), ([40, 43, 44, 45,
-59, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324, 325, 326, 327, 328, 329,
-330, 331], [-1, 197, -1, 197, -1, 197, -1, 197, -1, 197, -1, 197, -1, 197, -1,
-197, -1, 197, -1, 197, -1, 197], [264], [-1]), ([40, 43, 44, 45, 59, 60, 91,
-92, 258, 259, 285, 286, 287, 311, 324, 325, 326, 327, 328, 329, 330, 331], [-1,
-201, -1, 201, -1, 201, -1, 201, -1, 201, -1, 201, -1, 201, -1, 201, -1, 201,
--1, 201, -1, 201], [264], [-1]), ([40, 43, 44, 45, 59, 60, 91, 92, 258, 259,
-285, 286, 287, 311, 324, 325, 326, 327, 328, 329, 330, 331], [-1, 203, -1, 203,
--1, 203, -1, 203, -1, 203, -1, 203, -1, 203, -1, 203, -1, 203, -1, 203, -1, 203
-], [264], [-1]), ([40, 43, 44, 45, 58, 60, 91, 92, 258, 259, 285, 286, 287,
-311, 324, 325, 326, 327, 328, 329, 330, 331], [-1, 259, -1, 259, -1, 259, -1,
-259, -1, 259, -1, 259, -1, 259, -1, 259, -1, 259, -1, 259, -1, 259], [264], [-1
-]), ([40, 43, 44, 45, 58, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324, 325,
-326, 327, 328, 329, 330, 331], [-1, 261, -1, 261, -1, 261, -1, 261, -1, 261,
--1, 261, -1, 261, -1, 261, -1, 261, -1, 261, -1, 261], [264], [-1]), ([40, 43,
-44, 45, 58, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324, 325, 326, 327, 328,
-329, 330, 331], [-1, 263, -1, 263, -1, 263, -1, 263, -1, 263, -1, 263, -1, 263,
--1, 263, -1, 263, -1, 263, -1, 263], [264], [-1]), ([40, 43, 44, 45, 58, 60,
-91, 92, 258, 259, 285, 286, 287, 311, 324, 325, 326, 327, 328, 329, 330, 331],
-[-1, 257, -1, 257, -1, 257, -1, 257, -1, 257, -1, 257, -1, 257, -1, 257, -1,
-257, -1, 257, -1, 257], [264], [-1]), ([40, 43, 44, 45, 59, 60, 91, 92, 258,
-259, 285, 286, 287, 311, 324, 325, 326, 327, 328, 329, 330, 331], [-1, 205, -1,
-205, -1, 205, -1, 205, -1, 205, -1, 205, -1, 205, -1, 205, -1, 205, -1, 205,
--1, 205], [264], [-1]), ([40, 43, 44, 45, 59, 60, 91, 92, 258, 259, 285, 286,
-287, 311, 324, 325, 326, 327, 328, 329, 330, 331], [-1, 207, -1, 207, -1, 207,
--1, 207, -1, 207, -1, 207, -1, 207, -1, 207, -1, 207, -1, 207, -1, 207], [264],
-[-1]), ([40, 43, 44, 45, 59, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324,
-325, 326, 327, 328, 329, 330, 331], [-1, 209, -1, 209, -1, 209, -1, 209, -1,
-209, -1, 209, -1, 209, -1, 209, -1, 209, -1, 209, -1, 209], [264], [-1]), ([33,
-34, 38, 39, 40, 41, 42, 44, 45, 46, 59, 60, 123, 124, 125, 127, 256, 257, 258,
-264, 265, 267, 285, 311, 312, 315, 316, 331], [-1, 195, -1, 195, -1, 195, -1,
-195, -1, 195, -1, 195, -1, 195, -1, 195, -1, 195, -1, 195, -1, 195, -1, 195,
--1, 195, -1, 195], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45, 46, 59,
-60, 123, 124, 125, 127, 256, 257, 258, 264, 265, 267, 285, 311, 312, 315, 316,
-331], [-1, 497, -1, 497, -1, 497, -1, 497, -1, 497, -1, 497, -1, 497, -1, 497,
--1, 497, -1, 497, -1, 497, -1, 497, -1, 497, -1, 497], [264], [-1]), ([256,
-257, 331], [-1, 1, -1], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45,
-46, 59, 60, 123, 124, 125, 126, 127, 256, 257, 258, 259, 260, 261, 262, 263,
-264, 265, 266, 267, 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], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 179, -1, 14, -1,
-489, 16, -1, 489, -1, 18, 20, 22, 24, 26, 28, -1, 30, 32, -1, 34, 36, 38, 40,
-42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80,
-82, 84, -1, 86, 88, 90, -1, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112,
-114, 116, 118, 120], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59,
-62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93, 96, 98, 100, 105, 110, 116, 133,
-135, 137, 153, 155, 161, 162, 168, 172, 174, 176, 226, 227, 243, 247, 249, 264
-], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
-76, 77, 78, -1, 79, 80, 81, -1, 82, 83, 84, -1, 85, 86, 87, 88, -1, 89, -1, 90,
--1, 91, 92, 93, -1, 94, 95, -1, 190, -1]), ([33, 34, 38, 39, 40, 41, 42, 44,
-45, 46, 59, 60, 123, 124, 125, 127, 256, 257, 258, 264, 265, 267, 285, 311,
-312, 315, 316, 331], [-1, 491, -1, 491, -1, 491, -1, 491, -1, 491, -1, 491, -1,
-491, -1, 491, -1, 491, -1, 491, -1, 491, -1, 491, -1, 491, -1, 491], [264], [-1
-]), ([37, 39, 40, 48, 58, 64, 91, 92, 93, 95, 124, 126, 264, 285, 331], [-1, 3,
--1, 3, -1, 3, -1, 3, -1, 3, -1, 3, -1, 3, -1], [264], [-1]), ([37, 39, 41, 46,
-47, 48, 58, 64, 93, 95, 124, 126, 267, 285, 331], [-1, 85, -1, 85, -1, 85, -1,
-85, -1, 85, -1, 85, -1, 85, -1], [264], [-1]), ([37, 39, 41, 46, 47, 48, 58,
-64, 93, 95, 124, 126, 267, 285, 331], [-1, 77, -1, 77, -1, 77, -1, 77, -1, 77,
--1, 77, -1, 77, -1], [264], [-1]), ([37, 39, 41, 46, 47, 48, 58, 64, 93, 95,
-124, 126, 267, 285, 331], [-1, 67, -1, 67, -1, 67, -1, 67, -1, 67, -1, 67, -1,
-67, -1], [264], [-1]), ([41, 42, 44, 45, 331], [-1, 382, -1, 360, -1], [264], [
--1]), ([40, 43, 58, 60, 91, 92, 258, 259, 285, 286, 293, 311, 326, 327, 331], [
--1, 291, -1, 291, -1, 291, -1, 291, -1, 291, -1, 291, -1, 291, -1], [264], [-1]
-), ([40, 41, 42, 43, 58, 59, 91, 92, 285, 286, 293, 294, 295, 296, 297, 298,
-299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 326, 327, 331
-], [-1, 384, 401, 386, -1, 401, -1, 388, -1, 34, -1, 50, 52, 54, 56, 58, 60,
-62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, -1, 112, -1], [116, 133, 135,
-137, 145, 147, 153, 155, 161, 162, 168, 172, 198, 200, 202, 210, 264], [-1,
-104, 87, 88, -1, 195, -1, 89, -1, 90, -1, 107, -1, 196, 197, 198, -1]), ([40,
-43, 58, 60, 91, 92, 258, 259, 285, 286, 293, 311, 326, 327, 331], [-1, 287, -1,
-287, -1, 287, -1, 287, -1, 287, -1, 287, -1, 287, -1], [264], [-1]), ([40, 43,
-58, 60, 91, 92, 258, 259, 285, 286, 293, 311, 326, 327, 331], [-1, 293, -1,
-293, -1, 293, -1, 293, -1, 293, -1, 293, -1, 293, -1], [264], [-1]), ([41, 42,
-331], [-1, 398, -1], [264], [-1]), ([37, 39, 41, 46, 47, 48, 58, 64, 93, 95,
-124, 126, 267, 285, 331], [-1, 69, -1, 69, -1, 69, -1, 69, -1, 69, -1, 69, -1,
-69, -1], [264], [-1]), ([37, 39, 41, 46, 47, 48, 58, 64, 93, 95, 124, 126, 267,
-285, 331], [-1, 71, -1, 71, -1, 71, -1, 71, -1, 71, -1, 71, -1, 71, -1], [264],
-[-1]), ([37, 39, 41, 46, 47, 48, 58, 64, 93, 95, 124, 126, 267, 285, 331], [-1,
-73, -1, 73, -1, 73, -1, 73, -1, 73, -1, 73, -1, 73, -1], [264], [-1]), ([125,
-126, 331], [-1, 400, -1], [264], [-1]), ([37, 39, 41, 46, 47, 48, 58, 64, 93,
-95, 124, 126, 267, 285, 331], [-1, 75, -1, 75, -1, 75, -1, 75, -1, 75, -1, 75,
--1, 75, -1], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 59,
-60, 123, 124, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286,
-287, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
-327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 179, -1, 14, -1,
-16, -1, 18, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 86, 88, 90, -1, 92, 94,
-96, 98, 100, 102, 104, 106, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18,
-26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93,
-227, 243, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71,
-72, 73, 74, 75, 76, 77, 78, -1, 79, 80, 81, -1, 201, -1]), ([33, 34, 38, 39,
-40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265,
-266, 267, 285, 286, 287, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
-304, 305, 306, 307, 308, 309, 310, 311, 325, 326, 327, 328, 331], [-1, 2, -1,
-4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32,
--1, 34, 36, -1, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80,
-82, 84, -1, 110, 112, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48,
-51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93, 116, 133, 135, 137,
-143, 145, 147, 153, 155, 161, 162, 168, 172, 197, 198, 264], [-1, 61, 62, -1,
-63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 79,
--1, 103, -1, 104, 87, 88, -1, 105, 106, -1, 89, -1, 90, -1, 107, -1, 202, -1]),
-([37, 39, 41, 46, 47, 48, 58, 64, 93, 95, 124, 126, 267, 285, 331], [-1, 79,
--1, 79, -1, 79, -1, 79, -1, 79, -1, 79, -1, 79, -1], [264], [-1]), ([33, 34,
-38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261, 262, 263,
-264, 265, 266, 267, 285, 286, 287, 293, 294, 295, 296, 297, 298, 299, 300, 301,
-302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 325, 326, 327, 328, 331], [
--1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28,
--1, 30, 32, -1, 34, 36, -1, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74,
-76, 78, 80, 82, 84, -1, 110, 112, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30,
-42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93, 116, 133,
-135, 137, 143, 145, 147, 153, 155, 161, 162, 168, 172, 197, 198, 264], [-1, 61,
-62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
--1, 79, -1, 103, -1, 104, 87, 88, -1, 105, 106, -1, 89, -1, 90, -1, 107, -1,
-203, -1]), ([37, 39, 41, 46, 47, 48, 58, 64, 93, 95, 124, 126, 267, 285, 331],
-[-1, 63, -1, 63, -1, 63, -1, 63, -1, 63, -1, 63, -1, 63, -1], [264], [-1]), ([
-37, 39, 41, 46, 47, 48, 58, 64, 93, 95, 124, 126, 267, 285, 331], [-1, 65, -1,
-65, -1, 65, -1, 65, -1, 65, -1, 65, -1, 65, -1], [264], [-1]), ([40, 43, 44,
-45, 58, 60, 91, 92, 123, 124, 258, 259, 285, 286, 287, 311, 324, 325, 326, 327,
-328, 329, 330, 331], [-1, 269, -1, 269, -1, 269, -1, 269, -1, 523, -1, 269, -1,
-269, -1, 269, -1, 269, -1, 269, -1, 269, -1, 269], [264], [-1]), ([123, 124,
-331], [-1, 408, -1], [264], [-1]), ([40, 43, 44, 45, 58, 60, 91, 92, 123, 124,
-258, 259, 285, 286, 287, 311, 324, 325, 326, 327, 328, 329, 330, 331], [-1,
-273, -1, 273, -1, 273, -1, 273, -1, 523, -1, 273, -1, 273, -1, 273, -1, 273,
--1, 273, -1, 273, -1, 273], [264], [-1]), ([123, 124, 331], [-1, 410, -1], [264
-], [-1]), ([40, 43, 44, 45, 58, 60, 91, 92, 123, 124, 258, 259, 285, 286, 287,
-311, 324, 325, 326, 327, 328, 329, 330, 331], [-1, 309, -1, 309, -1, 309, -1,
-309, -1, 523, -1, 309, -1, 309, -1, 309, -1, 309, -1, 309, -1, 309, -1, 309], [
-264], [-1]), ([123, 124, 331], [-1, 412, -1], [264], [-1]), ([41, 42, 44, 45,
-58, 60, 93, 94, 125, 126, 331], [-1, 191, -1, 191, -1, 191, -1, 191, -1, 191,
--1], [264], [-1]), ([58, 59, 331], [-1, 414, -1], [264], [-1]), ([33, 34, 38,
-39, 40, 41, 42, 43, 44, 45, 46, 59, 60, 123, 124, 126, 127, 258, 259, 260, 261,
-262, 263, 264, 265, 266, 267, 286, 287, 312, 313, 314, 315, 316, 317, 318, 319,
-320, 321, 322, 323, 324, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8,
-10, -1, 12, -1, 179, -1, 14, -1, 16, -1, 18, 20, 22, 24, 26, 28, -1, 30, 32,
--1, 36, -1, 86, 88, 90, -1, 92, 94, 96, 98, 100, 102, 104, 106, -1, 110, -1,
-114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66,
-68, 70, 72, 74, 77, 89, 91, 93, 227, 243, 264], [-1, 61, 62, -1, 63, 64, -1,
-65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 79, 80, 81, -1,
-208, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259,
-260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [
--1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28,
--1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30,
-42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93, 264], [-1,
-61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
-78, -1, 79, -1, 209, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126,
-127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327,
-328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22,
-24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13,
-18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93,
-264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74,
-75, 76, 77, 78, -1, 79, -1, 210, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44,
-45, 46, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287,
-325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1,
-198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9,
-10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77,
-89, 91, 93, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71,
-72, 73, 74, 75, 76, 77, 78, -1, 79, -1, 211, -1]), ([317, 318, 331], [-1, 424,
--1], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 59, 60, 126,
-127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 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, 324, 325, 326, 327, 328, 329, 330, 331], [-1, 2,
--1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 179, -1, 16, -1, 198, 20, 22, 24, 26, 28,
--1, 30, 32, -1, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64,
-66, 68, 70, 72, 74, 76, 78, 80, 82, 84, -1, 108, 110, 112, 114, 116, 118, 120],
-[1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70,
-72, 74, 77, 89, 91, 93, 96, 98, 100, 105, 110, 116, 133, 135, 137, 153, 155,
-161, 162, 168, 172, 174, 176, 226, 227, 264], [-1, 61, 62, -1, 63, 64, -1, 65,
--1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 79, 213, 81, -1,
-214, 83, 84, -1, 85, 86, 87, 88, -1, 89, -1, 90, -1, 91, 92, 93, -1, 94, -1]),
-([59, 60, 331], [-1, 430, -1], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 44,
-45, 46, 59, 60, 123, 124, 125, 127, 256, 257, 258, 264, 265, 267, 285, 311,
-312, 331], [-1, 481, -1, 481, -1, 481, -1, 481, -1, 481, -1, 481, -1, 481, -1,
-481, -1, 481, -1, 481, -1, 481, -1, 481, -1, 481], [264], [-1]), ([33, 34, 38,
-39, 40, 41, 42, 44, 45, 46, 59, 60, 123, 124, 125, 127, 256, 257, 258, 264,
-265, 267, 285, 311, 312, 331], [-1, 483, -1, 483, -1, 483, -1, 483, -1, 483,
--1, 483, -1, 483, -1, 483, -1, 483, -1, 483, -1, 483, -1, 483, -1, 483], [264],
-[-1]), ([59, 60, 331], [-1, 432, -1], [264], [-1]), ([33, 34, 38, 39, 40, 41,
-42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
-285, 286, 287, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
-306, 307, 308, 309, 310, 311, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6,
--1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 34, 36,
--1, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, -1,
-110, 112, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59,
-62, 64, 66, 68, 70, 72, 74, 95, 96, 116, 133, 135, 137, 143, 145, 147, 153,
-155, 161, 162, 168, 172, 197, 198, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1,
-100, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 126, -1, 217, -1, 104, 87, 88,
--1, 105, 106, -1, 89, -1, 90, -1, 107, -1, 218, -1]), ([285, 286, 293, 294,
-295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
-311, 326, 327, 331], [-1, 34, -1, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70,
-72, 74, 76, 78, 80, 82, 84, -1, 112, -1], [116, 133, 135, 137, 143, 145, 147,
-153, 155, 161, 162, 168, 172, 197, 198, 264], [-1, 104, 87, 88, -1, 105, 106,
--1, 89, -1, 90, -1, 107, -1, 219, -1]), ([285, 286, 293, 294, 295, 296, 297,
-298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 326, 327,
-331], [-1, 34, -1, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78,
-80, 82, 84, -1, 112, -1], [116, 133, 135, 137, 143, 145, 147, 153, 155, 161,
-162, 168, 172, 197, 198, 264], [-1, 104, 87, 88, -1, 105, 106, -1, 89, -1, 90,
--1, 107, -1, 220, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127,
-258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328,
-331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [-1, 61,
-62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
--1, 221, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258,
-259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331
-], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 95, 96, 264], [-1, 61,
-62, -1, 63, 64, -1, 65, -1, 100, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
-126, -1, 222, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127,
-258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328,
-331], [-1, 2, -1, 4, -1, 6, 53, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-28, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [-1,
-61, 62, -1, 63, 64, -1, 65, 223, 224, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
-76, 77, 78, -1, 225, -1]), ([258, 259, 331], [-1, 452, -1], [264], [-1]), ([33,
-34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261, 262, 263,
-264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6,
--1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1,
-110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59,
-62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93, 264], [-1, 61, 62, -1, 63, 64, -1,
-65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 79, -1, 227, -1
-]), ([258, 259, 331], [-1, 456, -1], [264], [-1]), ([37, 39, 40, 48, 58, 64,
-91, 92, 93, 95, 124, 126, 264, 285, 331], [-1, 47, -1, 47, -1, 47, -1, 47, -1,
-47, -1, 47, -1, 47, -1], [264], [-1]), ([37, 39, 40, 48, 58, 64, 91, 92, 93,
-95, 124, 126, 264, 285, 331], [-1, 49, -1, 49, -1, 49, -1, 49, -1, 49, -1, 49,
--1, 49, -1], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126,
-127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327,
-328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22,
-24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13,
-18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [
--1, 61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
-77, 78, -1, 229, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127,
-258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328,
-331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [-1, 61,
-62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
--1, 230, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258,
-259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331
-], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [-1, 61,
-62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
--1, 231, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258,
-259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331
-], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [-1, 61,
-62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
--1, 232, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258,
-259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331
-], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [-1, 61,
-62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
--1, 233, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258,
-259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331
-], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [-1, 61,
-62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
--1, 234, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258,
-259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331
-], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [-1, 61,
-62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
--1, 235, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258,
-259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331
-], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [-1, 61,
-62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
--1, 236, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258,
-259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331
-], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [-1, 61,
-62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
--1, 237, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258,
-259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331
-], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [-1, 61,
-62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
--1, 238, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258,
-259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331
-], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [-1, 61,
-62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
--1, 239, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258,
-259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331
-], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 240, -1]), ([33,
-34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261, 262, 263,
-264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6,
--1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1,
-110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 264], [-1, 61, 62,
--1, 63, 64, -1, 65, -1, 100, 241, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44,
-45, 46, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287,
-325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1,
-198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9,
-10, 12, 13, 18, 26, 30, 42, 44, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100,
-242, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259,
-260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [
--1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28,
--1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30,
-42, 44, 48, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 67, 243, -1]), ([
-33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261, 262,
-263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1,
-6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36,
--1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 264], [-1,
-61, 62, -1, 63, 64, -1, 65, -1, 100, 67, 244, -1]), ([33, 34, 38, 39, 40, 41,
-42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
-286, 287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12,
--1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1],
-[1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 264], [-1, 61, 62, -1, 63,
-64, -1, 65, -1, 100, 67, 68, 245, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44,
-45, 46, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287,
-325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1,
-198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9,
-10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 264], [-1, 61, 62, -1, 63, 64, -1, 65,
--1, 100, 67, 68, 246, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126,
-127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327,
-328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22,
-24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13,
-18, 26, 30, 42, 44, 48, 51, 54, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100,
-67, 68, 69, 247, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127,
-258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328,
-331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 67, 68,
-69, 248, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258,
-259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331
-], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 67, 68,
-69, 249, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258,
-259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331
-], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 67, 68,
-69, 250, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258,
-259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331
-], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 67,
-68, 69, 70, 251, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127,
-258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328,
-331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 67,
-68, 69, 70, 252, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127,
-258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328,
-331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 62, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100,
-67, 68, 69, 70, 71, 253, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46,
-126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326,
-327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20,
-22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12,
-13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 264], [-1, 61, 62, -1, 63, 64,
--1, 65, -1, 100, 67, 68, 69, 70, 71, 72, 254, -1]), ([33, 34, 38, 39, 40, 41,
-42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
-286, 287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12,
--1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1],
-[1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 264], [
--1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 67, 68, 69, 70, 71, 72, 73, 255, -1]),
-([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261,
-262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1,
-4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32,
--1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48,
-51, 54, 59, 62, 64, 66, 68, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 67,
-68, 69, 70, 71, 72, 73, 74, 256, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44,
-45, 46, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287,
-325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1,
-198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9,
-10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77,
-89, 91, 93, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71,
-72, 73, 74, 75, 76, 77, 78, -1, 79, -1, 257, -1]), ([33, 34, 38, 39, 40, 41,
-42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
-286, 287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12,
--1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1],
-[1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70,
-264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 67, 68, 69, 70, 71, 72, 73, 74,
-75, 258, -1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45, 46, 59, 60, 123, 124, 125,
-127, 256, 257, 258, 264, 265, 267, 285, 311, 312, 331], [-1, 463, -1, 463, -1,
-463, -1, 463, -1, 463, -1, 463, -1, 463, -1, 463, -1, 463, -1, 463, -1, 463,
--1, 463, -1, 463], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46,
-126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326,
-327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20,
-22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12,
-13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264
-], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
-76, 77, 78, -1, 259, -1]), ([40, 41, 42, 43, 258, 259, 331], [-1, 362, -1, 364,
--1, 366, -1], [178, 180, 185, 264], [-1, 260, 189, -1]), ([40, 41, 42, 43, 258,
-259, 293, 294, 295, 296, 326, 327, 331], [-1, 371, -1, 371, -1, 371, -1, 50,
-52, 54, -1, 522, -1], [168, 172, 185, 187, 189, 264], [-1, 262, -1, 263, 264,
--1]), ([40, 42, 44, 45, 58, 60, 61, 62, 91, 92, 331], [-1, 361, -1, 361, -1,
-361, -1, 361, -1, 361, -1], [264], [-1]), ([40, 43, 44, 45, 59, 60, 91, 92,
-258, 259, 285, 286, 287, 311, 324, 325, 326, 327, 328, 329, 330, 331], [-1,
-199, -1, 199, -1, 199, -1, 199, -1, 199, -1, 199, -1, 199, -1, 199, -1, 199,
--1, 199, -1, 199], [264], [-1]), ([59, 60, 331], [-1, 530, -1], [264], [-1]), (
-[44, 45, 59, 60, 331], [-1, 532, -1, 213, -1], [264], [-1]), ([44, 45, 59, 60,
-331], [-1, 215, -1, 215, -1], [264], [-1]), ([44, 45, 59, 60, 61, 62, 331], [
--1, 421, -1, 421, -1, 534, -1], [210, 212, 264], [-1, 268, -1]), ([40, 41, 42,
-44, 45, 58, 60, 61, 62, 91, 92, 331], [-1, 538, 357, -1, 357, -1, 357, -1, 357,
--1, 540, -1], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45, 46, 59, 60,
-123, 124, 125, 127, 256, 257, 258, 264, 265, 267, 285, 311, 312, 315, 316, 331
-], [-1, 493, -1, 493, -1, 493, -1, 493, -1, 493, -1, 493, -1, 493, -1, 493, -1,
-493, -1, 493, -1, 493, -1, 493, -1, 493, -1, 493], [264], [-1]), ([37, 39, 40,
-48, 58, 64, 91, 92, 93, 95, 124, 126, 264, 285, 331], [-1, 9, -1, 9, -1, 9, -1,
-9, -1, 9, -1, 9, -1, 9, -1], [264], [-1]), ([40, 41, 42, 43, 91, 92, 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, 324, 325, 326, 327, 328, 329, 330,
-331], [-1, 384, 542, 544, -1, 388, -1, 34, -1, 38, 40, 42, 44, 46, 48, 50, 52,
-54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, -1, 108, -1,
-112, -1, 116, -1, 120], [98, 100, 105, 110, 116, 133, 135, 137, 153, 155, 161,
-162, 168, 172, 174, 176, 189, 191, 193, 202, 210, 264], [-1, 273, 84, -1, 85,
-86, 87, 88, -1, 89, -1, 90, -1, 91, 92, 93, -1, 274, 275, -1, 276, -1]), ([40,
-43, 58, 59, 91, 92, 293, 294, 295, 296, 326, 327, 331], [-1, 371, -1, 371, -1,
-371, -1, 50, 52, 54, -1, 522, -1], [168, 172, 185, 187, 189, 264], [-1, 262,
--1, 277, 264, -1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45, 46, 93, 94, 126, 127,
-258, 264, 265, 267, 286, 287, 289, 290, 293, 294, 295, 296, 325, 326, 327, 328,
-331], [-1, 325, -1, 325, -1, 325, -1, 325, -1, 325, -1, 325, -1, 325, -1, 325,
--1, 325, -1, 325, -1, 556, -1, 50, 52, 54, -1, 325, 522, 325, -1], [162, 164,
-166, 168, 172, 264], [-1, 279, 280, 281, 282, -1]), ([40, 43, 58, 60, 91, 92,
-258, 259, 285, 286, 293, 311, 326, 327, 331], [-1, 289, -1, 289, -1, 289, -1,
-289, -1, 289, -1, 289, -1, 289, -1], [264], [-1]), ([41, 42, 58, 59, 331], [-1,
-395, -1, 395, -1], [264], [-1]), ([41, 42, 44, 45, 58, 59, 331], [-1, 397, -1,
-397, -1, 397, -1], [264], [-1]), ([40, 41, 42, 44, 45, 58, 59, 91, 92, 331], [
--1, 566, 403, -1, 403, -1, 403, -1, 568, -1], [264], [-1]), ([33, 34, 38, 39,
-40, 41, 42, 43, 44, 45, 46, 123, 124, 126, 127, 258, 259, 260, 261, 262, 263,
-264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6,
--1, 8, 10, -1, 12, -1, 570, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32,
--1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 264],
-[-1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 286, -1]), ([33, 34, 38, 39, 40, 41,
-42, 44, 45, 46, 59, 60, 123, 124, 125, 127, 256, 257, 258, 264, 265, 267, 285,
-311, 312, 331], [-1, 461, -1, 461, -1, 461, -1, 461, -1, 461, -1, 461, -1, 461,
--1, 461, -1, 461, -1, 461, -1, 461, -1, 461, -1, 461], [264], [-1]), ([33, 34,
-38, 39, 40, 41, 42, 44, 45, 46, 59, 60, 123, 124, 125, 127, 256, 257, 258, 264,
-265, 267, 285, 311, 312, 331], [-1, 455, -1, 455, -1, 455, -1, 455, -1, 455,
--1, 455, -1, 455, -1, 455, -1, 455, -1, 455, -1, 455, -1, 455, -1, 455], [264],
-[-1]), ([41, 42, 331], [-1, 574, -1], [264], [-1]), ([41, 42, 331], [-1, 576,
--1], [264], [-1]), ([125, 126, 285, 286, 293, 294, 295, 296, 297, 298, 299,
-300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 326, 327, 329, 330,
-331], [-1, 275, -1, 34, -1, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74,
-76, 78, 80, 82, 84, -1, 112, -1, 118, -1], [116, 133, 135, 137, 139, 141, 143,
-145, 147, 153, 155, 161, 162, 168, 172, 226, 227, 264], [-1, 104, 87, 88, 289,
-290, 291, 292, 106, -1, 89, -1, 90, -1, 107, -1, 293, -1]), ([125, 126, 285,
-286, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
-308, 309, 310, 311, 326, 327, 329, 330, 331], [-1, 275, -1, 34, -1, 50, 52, 54,
-56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, -1, 112, -1, 118,
--1], [116, 133, 135, 137, 139, 141, 143, 145, 147, 153, 155, 161, 162, 168,
-172, 226, 227, 264], [-1, 104, 87, 88, 294, 290, 291, 292, 106, -1, 89, -1, 90,
--1, 107, -1, 293, -1]), ([125, 126, 258, 259, 331], [-1, 311, -1, 590, -1], [9,
-10, 155, 158, 160, 161, 264], [-1, 296, -1, 297, 298, 299, -1]), ([33, 34, 38,
-39, 40, 41, 42, 43, 44, 45, 46, 59, 60, 123, 124, 126, 127, 258, 259, 260, 261,
-262, 263, 264, 265, 266, 267, 286, 287, 312, 313, 314, 315, 316, 317, 318, 319,
-320, 321, 322, 323, 324, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8,
-10, -1, 12, -1, 179, -1, 14, -1, 16, -1, 18, 20, 22, 24, 26, 28, -1, 30, 32,
--1, 36, -1, 86, 88, 90, -1, 92, 94, 96, 98, 100, 102, 104, 106, -1, 110, -1,
-114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66,
-68, 70, 72, 74, 77, 89, 91, 93, 227, 243, 264], [-1, 61, 62, -1, 63, 64, -1,
-65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 79, 80, 81, -1,
-300, -1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45, 46, 59, 60, 123, 124, 125,
-127, 256, 257, 258, 264, 265, 267, 285, 311, 312, 331], [-1, 459, -1, 459, -1,
-459, -1, 459, -1, 459, -1, 459, -1, 459, -1, 459, -1, 459, -1, 459, -1, 459,
--1, 459, -1, 459], [264], [-1]), ([41, 42, 44, 45, 331], [-1, 602, -1, 360, -1
-], [264], [-1]), ([41, 42, 44, 45, 331], [-1, 604, -1, 360, -1], [264], [-1]),
-([41, 42, 44, 45, 331], [-1, 606, -1, 360, -1], [264], [-1]), ([40, 41, 331], [
--1, 608, -1], [264], [-1]), ([59, 60, 331], [-1, 610, -1], [264], [-1]), ([33,
-34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 59, 60, 126, 127, 258, 259, 260, 261,
-262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1,
-4, -1, 6, -1, 8, 10, -1, 12, -1, 179, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1,
-30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42,
-44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93, 264], [-1, 61,
-62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
--1, 79, 306, 81, -1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45, 46, 59, 60, 123,
-124, 125, 127, 256, 257, 258, 264, 265, 267, 285, 311, 312, 331], [-1, 479, -1,
-479, -1, 479, -1, 479, -1, 479, -1, 479, -1, 479, -1, 479, -1, 479, -1, 479,
--1, 479, -1, 479, -1, 479], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45,
-46, 59, 60, 123, 124, 125, 127, 256, 257, 258, 264, 265, 267, 285, 311, 312,
-331], [-1, 485, -1, 485, -1, 485, -1, 485, -1, 485, -1, 485, -1, 485, -1, 485,
--1, 485, -1, 485, -1, 485, -1, 485, -1, 485], [264], [-1]), ([41, 42, 331], [
--1, 614, -1], [264], [-1]), ([41, 42, 331], [-1, 616, -1], [264], [-1]), ([41,
-42, 331], [-1, 618, -1], [264], [-1]), ([41, 42, 331], [-1, 620, -1], [264], [
--1]), ([44, 45, 331], [-1, 622, -1], [264], [-1]), ([44, 45, 331], [-1, 624, -1
-], [264], [-1]), ([41, 42, 331], [-1, 626, -1], [264], [-1]), ([41, 42, 44, 45,
-331], [-1, 55, -1, 628, -1], [264], [-1]), ([41, 42, 44, 45, 331], [-1, 57, -1,
-57, -1], [264], [-1]), ([37, 39, 40, 48, 58, 64, 91, 92, 93, 95, 124, 126, 264,
-285, 331], [-1, 43, -1, 43, -1, 43, -1, 43, -1, 43, -1, 43, -1, 43, -1], [264],
-[-1]), ([44, 45, 93, 94, 331], [-1, 360, -1, 630, -1], [264], [-1]), ([37, 39,
-40, 48, 58, 64, 91, 92, 93, 95, 124, 126, 264, 285, 331], [-1, 45, -1, 45, -1,
-45, -1, 45, -1, 45, -1, 45, -1, 45, -1], [264], [-1]), ([41, 42, 44, 45, 58,
-60, 93, 94, 125, 126, 331], [-1, 157, -1, 157, -1, 157, -1, 157, -1, 157, -1],
-[264], [-1]), ([41, 42, 44, 45, 58, 60, 93, 94, 125, 126, 331], [-1, 159, -1,
-159, -1, 159, -1, 159, -1, 159, -1], [264], [-1]), ([41, 42, 44, 45, 58, 60,
-93, 94, 125, 126, 331], [-1, 161, -1, 161, -1, 161, -1, 161, -1, 161, -1], [264
-], [-1]), ([41, 42, 44, 45, 58, 60, 93, 94, 125, 126, 331], [-1, 163, -1, 163,
--1, 163, -1, 163, -1, 163, -1], [264], [-1]), ([41, 42, 44, 45, 58, 60, 93, 94,
-125, 126, 331], [-1, 165, -1, 165, -1, 165, -1, 165, -1, 165, -1], [264], [-1]
-), ([41, 42, 44, 45, 58, 60, 93, 94, 125, 126, 331], [-1, 167, -1, 167, -1,
-167, -1, 167, -1, 167, -1], [264], [-1]), ([41, 42, 44, 45, 58, 60, 93, 94,
-125, 126, 331], [-1, 169, -1, 169, -1, 169, -1, 169, -1, 169, -1], [264], [-1]
-), ([41, 42, 44, 45, 58, 60, 93, 94, 125, 126, 331], [-1, 171, -1, 171, -1,
-171, -1, 171, -1, 171, -1], [264], [-1]), ([41, 42, 44, 45, 58, 60, 93, 94,
-125, 126, 331], [-1, 173, -1, 173, -1, 173, -1, 173, -1, 173, -1], [264], [-1]
-), ([41, 42, 44, 45, 58, 60, 93, 94, 125, 126, 331], [-1, 175, -1, 175, -1,
-175, -1, 175, -1, 175, -1], [264], [-1]), ([41, 42, 44, 45, 58, 60, 93, 94,
-125, 126, 331], [-1, 177, -1, 177, -1, 177, -1, 177, -1, 177, -1], [264], [-1]
-), ([37, 39, 41, 46, 47, 48, 58, 61, 62, 64, 93, 95, 124, 126, 267, 275, 331],
-[-1, 95, -1, 95, -1, 95, -1, 95, -1, 95, -1, 95, -1, 95, -1, 95, -1], [264], [
--1]), ([37, 39, 41, 46, 47, 48, 58, 61, 62, 64, 93, 95, 124, 126, 267, 275, 331
-], [-1, 91, -1, 91, -1, 91, -1, 91, -1, 91, -1, 91, -1, 91, -1, 91, -1], [264],
-[-1]), ([37, 39, 41, 46, 47, 48, 58, 61, 62, 64, 93, 95, 124, 126, 267, 275,
-331], [-1, 93, -1, 93, -1, 93, -1, 93, -1, 93, -1, 93, -1, 93, -1, 93, -1], [
-264], [-1]), ([37, 38, 39, 41, 42, 43, 46, 47, 48, 58, 61, 62, 64, 93, 95, 124,
-126, 267, 275, 331], [-1, 320, 99, -1, 99, 322, 99, -1, 324, -1, 99, -1, 99,
--1, 99, -1, 99, -1, 99, -1], [264], [-1]), ([37, 38, 39, 41, 42, 43, 46, 47,
-48, 58, 61, 62, 64, 93, 95, 124, 126, 267, 275, 331], [-1, 320, 101, -1, 101,
-322, 101, -1, 324, -1, 101, -1, 101, -1, 101, -1, 101, -1, 101, -1], [264], [-1
-]), ([38, 39, 41, 42, 43, 44, 45, 46, 58, 61, 62, 64, 93, 95, 124, 126, 267,
-275, 331], [-1, 105, -1, 105, -1, 326, 105, 328, -1, 105, -1, 105, -1, 105, -1,
-105, -1, 105, -1], [264], [-1]), ([38, 39, 41, 42, 43, 44, 45, 46, 58, 61, 62,
-64, 93, 95, 124, 126, 267, 275, 331], [-1, 107, -1, 107, -1, 326, 107, 328, -1,
-107, -1, 107, -1, 107, -1, 107, -1, 107, -1], [264], [-1]), ([38, 39, 41, 42,
-44, 45, 58, 61, 62, 64, 93, 95, 124, 126, 267, 268, 269, 275, 331], [-1, 111,
--1, 111, -1, 111, -1, 111, -1, 111, -1, 111, -1, 111, -1, 330, 332, 111, -1], [
-264], [-1]), ([38, 39, 41, 42, 44, 45, 58, 61, 62, 64, 93, 95, 124, 126, 267,
-268, 269, 275, 331], [-1, 113, -1, 113, -1, 113, -1, 113, -1, 113, -1, 113, -1,
-113, -1, 330, 332, 113, -1], [264], [-1]), ([38, 39, 41, 42, 44, 45, 58, 61,
-62, 64, 93, 95, 124, 126, 267, 268, 269, 275, 331], [-1, 115, -1, 115, -1, 115,
--1, 115, -1, 115, -1, 115, -1, 115, -1, 330, 332, 115, -1], [264], [-1]), ([38,
-39, 41, 42, 44, 45, 58, 61, 62, 64, 93, 95, 124, 126, 267, 268, 269, 275, 331],
-[-1, 117, -1, 117, -1, 117, -1, 117, -1, 117, -1, 117, -1, 117, -1, 330, 332,
-117, -1], [264], [-1]), ([38, 39, 41, 42, 44, 45, 58, 60, 61, 62, 63, 64, 93,
-95, 124, 126, 269, 270, 271, 275, 331], [-1, 121, -1, 121, -1, 121, -1, 121,
-334, -1, 336, 121, -1, 121, -1, 121, -1, 338, 340, 121, -1], [264], [-1]), ([
-38, 39, 41, 42, 44, 45, 58, 60, 61, 62, 63, 64, 93, 95, 124, 126, 269, 270,
-271, 275, 331], [-1, 123, -1, 123, -1, 123, -1, 123, 334, -1, 336, 123, -1,
-123, -1, 123, -1, 338, 340, 123, -1], [264], [-1]), ([38, 39, 41, 42, 44, 45,
-58, 60, 63, 64, 93, 95, 124, 126, 271, 272, 273, 275, 331], [-1, 127, -1, 127,
--1, 127, -1, 127, -1, 127, -1, 127, -1, 127, -1, 342, 344, 127, -1], [264], [-1
-]), ([38, 39, 41, 42, 44, 45, 58, 60, 63, 64, 93, 95, 124, 126, 273, 275, 331],
-[-1, 346, -1, 131, -1, 131, -1, 131, -1, 131, -1, 131, -1, 131, -1, 131, -1], [
-264], [-1]), ([41, 42, 44, 45, 58, 60, 63, 64, 93, 94, 95, 124, 126, 273, 275,
-331], [-1, 135, -1, 135, -1, 135, -1, 135, -1, 135, 348, -1, 135, -1, 135, -1],
-[264], [-1]), ([41, 42, 44, 45, 58, 60, 63, 64, 93, 94, 124, 125, 126, 273,
-275, 331], [-1, 139, -1, 139, -1, 139, -1, 139, -1, 139, -1, 350, 139, -1, 139,
--1], [264], [-1]), ([44, 45, 58, 59, 331], [-1, 360, -1, 632, -1], [264], [-1]
-), ([41, 42, 44, 45, 58, 60, 63, 64, 93, 94, 125, 126, 273, 274, 275, 331], [
--1, 143, -1, 143, -1, 143, -1, 143, -1, 143, -1, 143, -1, 352, 143, -1], [264],
-[-1]), ([41, 42, 44, 45, 58, 60, 93, 94, 331], [-1, 185, -1, 185, -1, 185, -1,
-185, -1], [264], [-1]), ([41, 42, 331], [-1, 634, -1], [264], [-1]), ([33, 34,
-38, 39, 40, 46, 58, 59, 91, 92, 93, 94, 126, 127, 258, 264, 265, 267, 286, 287,
-289, 290, 293, 296, 325, 328, 331], [-1, 343, -1, 343, -1, 343, -1, 343, -1,
-343, -1, 343, -1, 343, -1, 343, -1, 343, -1, 343, -1, 343, -1, 343, -1, 343, -1
-], [264], [-1]), ([40, 43, 44, 45, 58, 59, 91, 92, 258, 259, 293, 296, 326,
-327, 331], [-1, 375, -1, 375, -1, 375, -1, 375, -1, 375, -1, 375, -1, 375, -1],
-[264], [-1]), ([40, 41, 42, 43, 258, 259, 331], [-1, 362, -1, 364, -1, 366, -1
-], [178, 180, 185, 264], [-1, 318, 189, -1]), ([40, 43, 44, 45, 58, 59, 91, 92,
-258, 259, 293, 294, 295, 296, 326, 327, 331], [-1, 373, -1, 373, -1, 373, -1,
-373, -1, 373, -1, 50, 52, 54, -1, 522, -1], [168, 172, 264], [-1, 319, -1]), ([
-33, 34, 38, 39, 40, 41, 42, 44, 45, 46, 59, 60, 123, 124, 125, 127, 256, 257,
-258, 264, 265, 267, 285, 311, 312, 315, 316, 331], [-1, 193, -1, 193, -1, 193,
--1, 193, -1, 193, -1, 193, -1, 193, -1, 193, -1, 193, -1, 193, -1, 193, -1,
-193, -1, 193, -1, 193], [264], [-1]), ([40, 41, 42, 43, 258, 259, 331], [-1,
-362, -1, 364, -1, 366, -1], [109, 110, 178, 180, 185, 264], [-1, 320, -1, 188,
-189, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 123, 124, 126, 127,
-258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328,
-331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 642, -1, 16, -1, 198, 20,
-22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12,
-13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89,
-212, 214, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71,
-72, 73, 74, 75, 76, 77, 78, -1, 322, -1, 323, -1]), ([44, 45, 59, 60, 331], [
--1, 219, -1, 219, -1], [264], [-1]), ([41, 42, 258, 259, 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, 324, 325, 326, 327, 328, 329, 330, 331], [
--1, 387, -1, 648, -1, 34, -1, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60,
-62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, -1, 108, -1, 112, -1, 116, -1,
-120], [98, 100, 105, 110, 116, 133, 135, 137, 153, 155, 161, 162, 168, 172,
-174, 176, 189, 191, 193, 195, 197, 264], [-1, 273, 84, -1, 85, 86, 87, 88, -1,
-89, -1, 90, -1, 91, 92, 93, -1, 325, 275, 326, 327, -1]), ([33, 34, 38, 39, 40,
-41, 42, 44, 45, 46, 93, 94, 126, 127, 258, 264, 265, 267, 286, 287, 289, 290,
-293, 294, 295, 296, 325, 326, 327, 328, 331], [-1, 325, -1, 325, -1, 325, -1,
-325, -1, 325, -1, 325, -1, 325, -1, 325, -1, 325, -1, 325, -1, 556, -1, 50, 52,
-54, -1, 325, 522, 325, -1], [162, 164, 166, 168, 172, 264], [-1, 328, 280, 281,
-282, -1]), ([40, 42, 44, 45, 58, 59, 91, 92, 331], [-1, 411, -1, 411, -1, 411,
--1, 411, -1], [264], [-1]), ([40, 43, 91, 92, 293, 294, 295, 296, 326, 327, 331
-], [-1, 371, -1, 371, -1, 50, 52, 54, -1, 522, -1], [168, 172, 185, 187, 189,
-264], [-1, 262, -1, 329, 264, -1]), ([40, 41, 42, 43, 44, 45, 91, 92, 258, 259,
-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, 324, 325, 326, 327, 328,
-329, 330, 331], [-1, 660, 401, 662, -1, 401, -1, 388, -1, 366, -1, 34, -1, 38,
-40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78,
-80, 82, 84, -1, 108, -1, 112, -1, 116, -1, 120], [100, 105, 110, 116, 133, 135,
-137, 153, 155, 161, 162, 168, 172, 174, 176, 178, 180, 185, 198, 200, 202, 210,
-264], [-1, 184, -1, 85, 86, 87, 88, -1, 89, -1, 90, -1, 91, 92, 93, -1, 332,
-189, -1, 333, 197, 198, -1]), ([41, 42, 44, 45, 331], [-1, 525, -1, 668, -1], [
-262, 264], [-1, 335]), ([41, 42, 44, 45, 331], [-1, 379, -1, 379, -1], [264], [
--1]), ([40, 41, 42, 91, 92, 331], [-1, 566, 672, -1, 568, -1], [264], [-1]), ([
-40, 41, 42, 43, 58, 59, 91, 92, 331], [-1, 384, 401, 386, -1, 401, -1, 388, -1
-], [198, 200, 202, 210, 264], [-1, 337, 197, 198, -1]), ([33, 34, 38, 39, 40,
-41, 42, 44, 45, 46, 93, 94, 126, 127, 258, 264, 265, 267, 286, 287, 289, 290,
-293, 296, 325, 328, 331], [-1, 335, -1, 335, -1, 335, -1, 335, -1, 335, -1,
-335, -1, 335, -1, 335, -1, 335, -1, 335, -1, 335, -1, 335, -1, 335, -1], [264],
-[-1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 93, 94, 126, 127, 258,
-259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331
-], [-1, 2, -1, 4, -1, 6, -1, 676, 10, -1, 12, -1, 149, -1, 16, -1, 198, 20, 22,
-24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13,
-18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [
--1, 61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
-77, 78, 339, 340, -1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45, 46, 93, 94, 126,
-127, 258, 264, 265, 267, 286, 287, 289, 290, 293, 294, 295, 296, 325, 326, 327,
-328, 331], [-1, 327, -1, 327, -1, 327, -1, 327, -1, 327, -1, 327, -1, 327, -1,
-327, -1, 327, -1, 327, -1, 556, -1, 50, 52, 54, -1, 327, 522, 327, -1], [166,
-168, 172, 264], [-1, 341, 282, -1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45, 46,
-93, 94, 126, 127, 258, 264, 265, 267, 286, 287, 289, 290, 293, 296, 325, 328,
-331], [-1, 329, -1, 329, -1, 329, -1, 329, -1, 329, -1, 329, -1, 329, -1, 329,
--1, 329, -1, 329, -1, 329, -1, 329, -1, 329, -1], [264], [-1]), ([33, 34, 38,
-39, 40, 41, 42, 44, 45, 46, 93, 94, 126, 127, 258, 264, 265, 267, 286, 287,
-289, 290, 293, 296, 325, 328, 331], [-1, 333, -1, 333, -1, 333, -1, 333, -1,
-333, -1, 333, -1, 333, -1, 333, -1, 333, -1, 333, -1, 333, -1, 333, -1, 333, -1
-], [264], [-1]), ([41, 42, 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, 324, 325, 326, 327, 328, 329, 330, 331], [-1, 684, -1, 34, -1, 38, 40, 42,
-44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82,
-84, -1, 108, -1, 112, -1, 116, -1, 120], [98, 100, 105, 110, 116, 133, 135,
-137, 153, 155, 161, 162, 168, 172, 174, 176, 189, 191, 193, 264], [-1, 273, 84,
--1, 85, 86, 87, 88, -1, 89, -1, 90, -1, 91, 92, 93, -1, 343, 275, -1]), ([33,
-34, 38, 39, 40, 41, 42, 44, 45, 46, 93, 94, 126, 127, 258, 264, 265, 267, 286,
-287, 289, 290, 293, 294, 295, 296, 325, 326, 327, 328, 331], [-1, 325, -1, 325,
--1, 325, -1, 325, -1, 325, -1, 325, -1, 325, -1, 325, -1, 325, -1, 325, -1,
-556, -1, 50, 52, 54, -1, 325, 522, 325, -1], [162, 164, 166, 168, 172, 264], [
--1, 344, 280, 281, 282, -1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45, 46, 47, 91,
-92, 123, 124, 125, 126, 127, 258, 264, 265, 267, 286, 287, 325, 326, 327, 328,
-331], [-1, 441, -1, 441, -1, 441, -1, 441, -1, 441, 690, -1, 692, -1, 441, -1,
-429, 441, -1, 441, -1, 441, -1, 441, -1, 441, -1, 441, -1], [214, 217, 219,
-220, 222, 224, 226, 264], [-1, 347, 348, 349, 350, 351, 352, -1]), ([37, 39,
-41, 46, 47, 48, 58, 64, 93, 95, 124, 126, 267, 285, 331], [-1, 87, -1, 87, -1,
-87, -1, 87, -1, 87, -1, 87, -1, 87, -1], [264], [-1]), ([37, 39, 41, 46, 47,
-48, 58, 64, 93, 95, 123, 124, 126, 267, 285, 331], [-1, 81, -1, 81, -1, 81, -1,
-81, -1, 81, -1, 570, 81, -1, 81, -1], [264], [-1]), ([123, 124, 331], [-1, 570,
--1], [264], [-1]), ([125, 126, 331], [-1, 706, -1], [264], [-1]), ([125, 126,
-285, 286, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
-307, 308, 309, 310, 311, 326, 327, 329, 330, 331], [-1, 277, -1, 34, -1, 50,
-52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, -1, 112,
--1, 118, -1], [116, 133, 135, 137, 141, 143, 145, 147, 153, 155, 161, 162, 168,
-172, 226, 227, 264], [-1, 104, 87, 88, -1, 354, 292, 106, -1, 89, -1, 90, -1,
-107, -1, 293, -1]), ([125, 126, 285, 286, 293, 311, 326, 327, 329, 330, 331], [
--1, 279, -1, 279, -1, 279, -1, 279, -1, 279, -1], [264], [-1]), ([40, 41, 42,
-43, 58, 59, 60, 258, 259, 285, 286, 293, 294, 295, 296, 297, 298, 299, 300,
-301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 326, 327, 331], [-1,
-362, -1, 364, -1, 353, 295, -1, 366, -1, 34, -1, 50, 52, 54, 56, 58, 60, 62,
-64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, -1, 112, -1], [116, 133, 135, 137,
-145, 147, 149, 151, 153, 155, 161, 162, 168, 172, 176, 178, 180, 185, 264], [
--1, 104, 87, 88, -1, 195, 355, 356, 357, 89, -1, 90, -1, 107, -1, 358, 359,
-189, -1]), ([125, 126, 285, 286, 293, 311, 326, 327, 329, 330, 331], [-1, 285,
--1, 285, -1, 285, -1, 285, -1, 285, -1], [264], [-1]), ([125, 126, 331], [-1,
-720, -1], [264], [-1]), ([44, 45, 61, 62, 125, 126, 331], [-1, 19, -1, 19, -1,
-19, -1], [264], [-1]), ([44, 45, 61, 62, 125, 126, 331], [-1, 187, -1, 722, -1,
-187, -1], [93, 95, 264], [-1, 362, -1]), ([125, 126, 331], [-1, 726, -1], [264
-], [-1]), ([44, 45, 125, 126, 331], [-1, 728, -1, 313, -1], [264], [-1]), ([44,
-45, 125, 126, 331], [-1, 317, -1, 317, -1], [264], [-1]), ([33, 34, 38, 39, 40,
-41, 42, 44, 45, 46, 59, 60, 123, 124, 125, 127, 256, 257, 258, 264, 265, 267,
-285, 311, 312, 331], [-1, 457, -1, 457, -1, 457, -1, 457, -1, 457, -1, 457, -1,
-457, -1, 457, -1, 457, -1, 457, -1, 457, -1, 457, -1, 457], [264], [-1]), ([33,
-34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 59, 60, 123, 124, 126, 127, 258, 259,
-260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 312, 313, 314, 315, 316, 317,
-318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1,
-6, -1, 8, 10, -1, 12, -1, 179, -1, 14, -1, 16, -1, 18, 20, 22, 24, 26, 28, -1,
-30, 32, -1, 36, -1, 86, 88, 90, -1, 92, 94, 96, 98, 100, 102, 104, 106, -1,
-110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59,
-62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93, 227, 243, 264], [-1, 61, 62, -1,
-63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 79,
-80, 81, -1, 365, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 59, 60,
-123, 124, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287,
-312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
-328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 179, -1, 14, -1, 16,
--1, 18, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 86, 88, 90, -1, 92, 94, 96,
-98, 100, 102, 104, 106, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93, 227,
-243, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73,
-74, 75, 76, 77, 78, -1, 79, 80, 81, -1, 366, -1]), ([33, 34, 38, 39, 40, 41,
-42, 43, 44, 45, 46, 59, 60, 123, 124, 126, 127, 258, 259, 260, 261, 262, 263,
-264, 265, 266, 267, 286, 287, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
-322, 323, 324, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1,
-12, -1, 179, -1, 14, -1, 16, -1, 18, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36,
--1, 86, 88, 90, -1, 92, 94, 96, 98, 100, 102, 104, 106, -1, 110, -1, 114, -1],
-[1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70,
-72, 74, 77, 89, 91, 93, 227, 243, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1,
-66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 79, 80, 81, -1, 367, -1
-]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261,
-262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1,
-4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32,
--1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48,
-51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93, 264], [-1, 61, 62, -1,
-63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 79,
--1, 368, -1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 59, 60, 126, 127,
-258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328,
-331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 179, -1, 16, -1, 198, 20,
-22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12,
-13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 91,
-93, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73,
-74, 75, 76, 77, 78, -1, 79, 369, 81, -1]), ([59, 60, 331], [-1, 740, -1], [264
-], [-1]), ([40, 43, 44, 45, 59, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324,
-325, 326, 327, 328, 329, 330, 331], [-1, 351, -1, 351, -1, 351, -1, 351, -1,
-351, -1, 351, -1, 351, -1, 351, -1, 351, -1, 351, -1, 351], [264], [-1]), ([40,
-43, 44, 45, 59, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324, 325, 326, 327,
-328, 329, 330, 331], [-1, 349, -1, 349, -1, 349, -1, 349, -1, 349, -1, 349, -1,
-349, -1, 349, -1, 349, -1, 349, -1, 349], [264], [-1]), ([37, 39, 41, 46, 47,
-48, 58, 64, 93, 95, 124, 126, 267, 285, 331], [-1, 83, -1, 83, -1, 83, -1, 83,
--1, 83, -1, 83, -1, 83, -1], [264], [-1]), ([40, 43, 44, 45, 58, 60, 91, 92,
-258, 259, 285, 286, 287, 311, 324, 325, 326, 327, 328, 329, 330, 331], [-1,
-323, -1, 323, -1, 323, -1, 323, -1, 323, -1, 323, -1, 323, -1, 323, -1, 323,
--1, 323, -1, 323], [264], [-1]), ([285, 286, 293, 294, 295, 296, 297, 298, 299,
-300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 313, 314, 326, 327,
-331], [-1, 34, -1, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78,
-80, 82, 84, -1, 742, -1, 112, -1], [13, 15, 16, 18, 116, 133, 135, 137, 143,
-145, 147, 153, 155, 161, 162, 168, 172, 197, 198, 264], [-1, 372, 373, 374, -1,
-104, 87, 88, -1, 105, 106, -1, 89, -1, 90, -1, 107, -1, 375, -1]), ([261, 262,
-331], [-1, 752, -1], [264], [-1]), ([37, 39, 40, 48, 58, 64, 91, 92, 93, 95,
-124, 126, 264, 285, 331], [-1, 41, -1, 41, -1, 41, -1, 41, -1, 41, -1, 41, -1,
-41, -1], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127,
-258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328,
-331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26,
-28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26,
-30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [-1, 61,
-62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
--1, 377, -1]), ([37, 39, 40, 48, 58, 64, 91, 92, 93, 95, 124, 126, 264, 285,
-331], [-1, 39, -1, 39, -1, 39, -1, 39, -1, 39, -1, 39, -1, 39, -1], [264], [-1]
-), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261,
-262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1,
-4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32,
--1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48,
-51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 264], [-1, 61, 62, -1, 63, 64, -1, 65,
--1, 100, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 378, -1]), ([40, 42, 44,
-45, 58, 60, 61, 62, 91, 92, 331], [-1, 363, -1, 363, -1, 363, -1, 363, -1, 363,
--1], [264], [-1]), ([41, 42, 44, 45, 58, 60, 61, 62, 331], [-1, 359, -1, 359,
--1, 359, -1, 359, -1], [264], [-1]), ([40, 43, 44, 45, 58, 59, 91, 92, 258,
-259, 293, 296, 326, 327, 331], [-1, 377, -1, 377, -1, 377, -1, 377, -1, 377,
--1, 377, -1, 377, -1], [264], [-1]), ([44, 45, 59, 60, 331], [-1, 217, -1, 217,
--1], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45, 46, 47, 91, 92, 123,
-124, 125, 126, 127, 258, 264, 265, 267, 286, 287, 325, 326, 327, 328, 331], [
--1, 441, -1, 441, -1, 441, -1, 441, -1, 441, 690, -1, 692, -1, 441, -1, 429,
-441, -1, 441, -1, 441, -1, 441, -1, 441, -1, 441, -1], [214, 217, 219, 220,
-222, 224, 226, 264], [-1, 379, 348, 349, 350, 351, 352, -1]), ([44, 45, 59, 60,
-125, 126, 331], [-1, 427, -1, 427, -1, 427, -1], [264], [-1]), ([44, 45, 59,
-60, 331], [-1, 423, -1, 423, -1], [264], [-1]), ([41, 42, 44, 45, 331], [-1,
-391, -1, 391, -1], [264], [-1]), ([41, 42, 44, 45, 331], [-1, 525, -1, 668, -1
-], [262, 264], [-1, 380]), ([41, 42, 331], [-1, 762, -1], [264], [-1]), ([41,
-42, 44, 45, 331], [-1, 389, -1, 764, -1], [264], [-1]), ([33, 34, 38, 39, 40,
-41, 42, 43, 44, 45, 46, 93, 94, 126, 127, 258, 259, 260, 261, 262, 263, 264,
-265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1,
-676, 10, -1, 12, -1, 149, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1,
-36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51,
-54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [-1, 61, 62, -1, 63, 64, -1,
-65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 383, 340, -1]), ([
-40, 41, 42, 43, 91, 92, 331], [-1, 384, 401, 386, -1, 388, -1], [198, 200, 202,
-210, 264], [-1, 384, 197, 198, -1]), ([40, 41, 42, 43, 91, 92, 258, 259, 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, 324, 325, 326, 327, 328, 329,
-330, 331], [-1, 660, 542, 770, -1, 388, -1, 366, -1, 34, -1, 38, 40, 42, 44,
-46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84,
--1, 108, -1, 112, -1, 116, -1, 120], [98, 100, 105, 110, 116, 133, 135, 137,
-153, 155, 161, 162, 168, 172, 174, 176, 178, 180, 185, 189, 191, 193, 202, 210,
-264], [-1, 273, 84, -1, 85, 86, 87, 88, -1, 89, -1, 90, -1, 91, 92, 93, -1,
-260, 189, -1, 274, 275, -1, 276, -1]), ([40, 43, 44, 45, 91, 92, 258, 259, 293,
-294, 295, 296, 326, 327, 331], [-1, 371, -1, 371, -1, 371, -1, 371, -1, 50, 52,
-54, -1, 522, -1], [168, 172, 185, 187, 189, 264], [-1, 262, -1, 386, 264, -1]),
-([41, 42, 44, 45, 331], [-1, 383, -1, 383, -1], [264], [-1]), ([41, 42, 44, 45,
-331], [-1, 385, -1, 385, -1], [264], [-1]), ([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, 324, 325, 326, 327, 328, 329, 330, 331], [-1, 34,
--1, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74,
-76, 78, 80, 82, 84, 774, -1, 108, -1, 112, -1, 116, -1, 120], [98, 100, 105,
-110, 116, 133, 135, 137, 153, 155, 161, 162, 168, 172, 174, 176, 191, 193, 264
-], [-1, 273, 84, -1, 85, 86, 87, 88, -1, 89, -1, 90, -1, 91, 92, 93, -1, 388,
--1]), ([41, 42, 331], [-1, 778, -1], [264], [-1]), ([40, 42, 44, 45, 58, 59,
-91, 92, 331], [-1, 405, -1, 405, -1, 405, -1, 405, -1], [264], [-1]), ([41, 42,
-44, 45, 58, 59, 331], [-1, 399, -1, 399, -1, 399, -1], [264], [-1]), ([33, 34,
-38, 39, 40, 41, 42, 43, 44, 45, 46, 93, 94, 126, 127, 258, 259, 260, 261, 262,
-263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1,
-6, -1, 8, 10, -1, 12, -1, 151, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32,
--1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 264],
-[-1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 109, -1]), ([93, 94, 331], [-1, 780,
--1], [264], [-1]), ([93, 94, 331], [-1, 153, -1], [264], [-1]), ([33, 34, 38,
-39, 40, 41, 42, 44, 45, 46, 93, 94, 126, 127, 258, 264, 265, 267, 286, 287,
-289, 290, 293, 296, 325, 328, 331], [-1, 331, -1, 331, -1, 331, -1, 331, -1,
-331, -1, 331, -1, 331, -1, 331, -1, 331, -1, 331, -1, 331, -1, 331, -1, 331, -1
-], [264], [-1]), ([40, 42, 44, 45, 58, 59, 91, 92, 331], [-1, 417, -1, 417, -1,
-417, -1, 417, -1], [264], [-1]), ([41, 42, 44, 45, 331], [-1, 525, -1, 668, -1
-], [262, 264], [-1, 391]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 93,
-94, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325,
-326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 676, 10, -1, 12, -1, 149, -1,
-16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1,
-6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72,
-74, 77, 89, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71,
-72, 73, 74, 75, 76, 77, 78, 392, 340, -1]), ([258, 259, 331], [-1, 786, -1], [
-264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259,
-260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [
--1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28,
--1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30,
-42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 95, 96, 264], [-1, 61, 62,
--1, 63, 64, -1, 65, -1, 100, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 126,
--1, 394, -1]), ([125, 126, 331], [-1, 790, -1], [264], [-1]), ([44, 45, 125,
-126, 331], [-1, 792, -1, 431, -1], [264], [-1]), ([44, 45, 125, 126, 331], [-1,
-435, -1, 435, -1], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46,
-123, 124, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287,
-325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 642, -1,
-16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1,
-6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72,
-74, 77, 89, 212, 214, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68,
-69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 322, -1, 397, -1]), ([46, 47, 61,
-62, 91, 92, 331], [-1, 690, -1, 796, -1, 692, -1], [224, 226, 264], [-1, 399,
--1]), ([46, 47, 61, 62, 91, 92, 331], [-1, 445, -1, 445, -1, 445, -1], [264], [
--1]), ([40, 43, 44, 45, 58, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324, 325,
-326, 327, 328, 329, 330, 331], [-1, 267, -1, 267, -1, 267, -1, 267, -1, 267,
--1, 267, -1, 267, -1, 267, -1, 267, -1, 267, -1, 267], [264], [-1]), ([125,
-126, 285, 286, 293, 311, 326, 327, 329, 330, 331], [-1, 281, -1, 281, -1, 281,
--1, 281, -1, 281, -1], [264], [-1]), ([59, 60, 331], [-1, 800, -1], [264], [-1]
-), ([44, 45, 59, 60, 331], [-1, 802, -1, 297, -1], [264], [-1]), ([44, 45, 59,
-60, 331], [-1, 299, -1, 299, -1], [264], [-1]), ([58, 59, 331], [-1, 804, -1],
-[264], [-1]), ([44, 45, 58, 59, 60, 331], [-1, 305, -1, 355, 305, -1], [264], [
--1]), ([40, 43, 44, 45, 58, 60, 91, 92, 258, 259, 285, 286, 287, 311, 324, 325,
-326, 327, 328, 329, 330, 331], [-1, 271, -1, 271, -1, 271, -1, 271, -1, 271,
--1, 271, -1, 271, -1, 271, -1, 271, -1, 271, -1, 271], [264], [-1]), ([33, 34,
-38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261, 262, 263,
-264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6,
--1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1,
-110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59,
-62, 64, 66, 68, 70, 72, 74, 95, 96, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1,
-100, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 126, -1, 403, -1]), ([44, 45,
-125, 126, 331], [-1, 321, -1, 321, -1], [264], [-1]), ([40, 43, 44, 45, 58, 60,
-91, 92, 258, 259, 285, 286, 287, 311, 324, 325, 326, 327, 328, 329, 330, 331],
-[-1, 307, -1, 307, -1, 307, -1, 307, -1, 307, -1, 307, -1, 307, -1, 307, -1,
-307, -1, 307, -1, 307], [264], [-1]), ([125, 126, 258, 259, 331], [-1, 315, -1,
-590, -1], [9, 10, 160, 161, 264], [-1, 296, -1, 404, -1]), ([33, 34, 38, 39,
-40, 41, 42, 44, 45, 46, 59, 60, 123, 124, 125, 127, 256, 257, 258, 264, 265,
-267, 285, 311, 312, 315, 316, 331], [-1, 467, -1, 467, -1, 467, -1, 467, -1,
-467, -1, 467, -1, 467, -1, 467, -1, 467, -1, 467, -1, 467, -1, 467, -1, 467,
-810, 467], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45, 46, 59, 60, 123,
-124, 125, 127, 256, 257, 258, 264, 265, 267, 285, 311, 312, 331], [-1, 469, -1,
-469, -1, 469, -1, 469, -1, 469, -1, 469, -1, 469, -1, 469, -1, 469, -1, 469,
--1, 469, -1, 469, -1, 469], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45,
-46, 59, 60, 123, 124, 125, 127, 256, 257, 258, 264, 265, 267, 285, 311, 312,
-331], [-1, 471, -1, 471, -1, 471, -1, 471, -1, 471, -1, 471, -1, 471, -1, 471,
--1, 471, -1, 471, -1, 471, -1, 471, -1, 471], [264], [-1]), ([41, 42, 44, 45,
-331], [-1, 812, -1, 360, -1], [264], [-1]), ([59, 60, 331], [-1, 814, -1], [264
-], [-1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259,
-260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [
--1, 2, -1, 4, -1, 6, 179, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28,
--1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30,
-42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93, 264], [-1,
-61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
-78, -1, 79, 408, 81, -1]), ([58, 59, 331], [-1, 35, -1], [264], [-1]), ([41,
-42, 44, 45, 331], [-1, 818, -1, 820, -1], [264], [-1]), ([41, 42, 44, 45, 331],
-[-1, 27, -1, 27, -1], [264], [-1]), ([58, 59, 331], [-1, 822, -1], [264], [-1]
-), ([58, 59, 331], [-1, 33, -1], [264], [-1]), ([41, 42, 331], [-1, 824, -1], [
-264], [-1]), ([41, 42, 44, 45, 331], [-1, 59, -1, 59, -1], [264], [-1]), ([41,
-42, 44, 45, 58, 60, 93, 94, 125, 126, 331], [-1, 147, -1, 147, -1, 147, -1,
-147, -1, 147, -1], [264], [-1]), ([125, 126, 331], [-1, 826, -1], [264], [-1]),
-([41, 42, 331], [-1, 828, -1], [264], [-1]), ([40, 42, 44, 45, 58, 60, 61, 62,
-91, 92, 331], [-1, 367, -1, 367, -1, 367, -1, 367, -1, 367, -1], [264], [-1]),
-([258, 259, 331], [-1, 830, -1], [264], [-1]), ([93, 94, 331], [-1, 832, -1], [
-264], [-1]), ([41, 42, 331], [-1, 834, -1], [264], [-1]), ([40, 43, 91, 92,
-258, 259, 293, 294, 295, 296, 326, 327, 331], [-1, 371, -1, 371, -1, 371, -1,
-50, 52, 54, -1, 522, -1], [168, 172, 185, 187, 189, 264], [-1, 262, -1, 418,
-264, -1]), ([40, 41, 42, 43, 44, 45, 91, 92, 258, 259, 331], [-1, 660, 401,
-662, -1, 401, -1, 388, -1, 366, -1], [178, 180, 185, 198, 200, 202, 210, 264],
-[-1, 318, 189, -1, 337, 197, 198, -1]), ([41, 42, 331], [-1, 527, -1], [264], [
--1]), ([41, 42, 44, 45, 331], [-1, 381, -1, 381, -1], [264], [-1]), ([40, 42,
-44, 45, 58, 59, 91, 92, 331], [-1, 413, -1, 413, -1, 413, -1, 413, -1], [264],
-[-1]), ([40, 42, 44, 45, 58, 59, 91, 92, 331], [-1, 409, -1, 409, -1, 409, -1,
-409, -1], [264], [-1]), ([41, 42, 331], [-1, 838, -1], [264], [-1]), ([93, 94,
-331], [-1, 840, -1], [264], [-1]), ([46, 47, 61, 62, 91, 92, 331], [-1, 451,
--1, 451, -1, 451, -1], [264], [-1]), ([93, 94, 331], [-1, 842, -1], [264], [-1]
-), ([37, 39, 40, 48, 58, 64, 91, 92, 93, 95, 124, 126, 264, 285, 331], [-1, 51,
--1, 51, -1, 51, -1, 51, -1, 51, -1, 51, -1, 51, -1], [264], [-1]), ([33, 34,
-38, 39, 40, 41, 42, 44, 45, 46, 47, 91, 92, 123, 124, 125, 126, 127, 258, 264,
-265, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 441, -1, 441, -1, 441, -1,
-441, -1, 441, 690, -1, 692, -1, 441, -1, 433, 441, -1, 441, -1, 441, -1, 441,
--1, 441, -1, 441, -1], [219, 220, 222, 224, 226, 264], [-1, 422, 350, 351, 352,
--1]), ([44, 45, 125, 126, 331], [-1, 439, -1, 439, -1], [264], [-1]), ([33, 34,
-38, 39, 40, 41, 42, 44, 45, 46, 123, 124, 126, 127, 258, 264, 265, 267, 286,
-287, 325, 326, 327, 328, 331], [-1, 443, -1, 443, -1, 443, -1, 443, -1, 443,
--1, 443, -1, 443, -1, 443, -1, 443, -1, 443, -1, 443, -1, 443, -1], [264], [-1]
-), ([46, 47, 61, 62, 91, 92, 331], [-1, 447, -1, 447, -1, 447, -1], [264], [-1]
-), ([125, 126, 285, 286, 293, 311, 326, 327, 329, 330, 331], [-1, 283, -1, 283,
--1, 283, -1, 283, -1, 283, -1], [264], [-1]), ([40, 41, 42, 43, 58, 59, 258,
-259, 331], [-1, 362, -1, 364, -1, 353, -1, 366, -1], [151, 153, 176, 178, 180,
-185, 264], [-1, 423, -1, 358, 359, 189, -1]), ([33, 34, 38, 39, 40, 41, 42, 43,
-44, 45, 46, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286,
-287, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 16,
--1, 198, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 110, -1, 114, -1], [1, 6,
-9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74,
-95, 96, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 100, 67, 68, 69, 70, 71, 72,
-73, 74, 75, 76, 77, 126, -1, 424, -1]), ([44, 45, 125, 126, 331], [-1, 189, -1,
-189, -1], [264], [-1]), ([44, 45, 125, 126, 331], [-1, 319, -1, 319, -1], [264
-], [-1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 59, 60, 123, 124, 126,
-127, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 286, 287, 312, 313, 314,
-315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 331], [
--1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 179, -1, 14, -1, 16, -1, 18, 20,
-22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 86, 88, 90, -1, 92, 94, 96, 98, 100,
-102, 104, 106, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44,
-48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93, 227, 243, 264], [
--1, 61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
-77, 78, -1, 79, 80, 81, -1, 425, -1]), ([59, 60, 331], [-1, 852, -1], [264], [
--1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260,
-261, 262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2,
--1, 4, -1, 6, 179, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30,
-32, -1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44,
-48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 91, 93, 264], [-1, 61, 62,
--1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1,
-79, 427, 81, -1]), ([41, 42, 331], [-1, 856, -1], [264], [-1]), ([37, 39, 40,
-48, 58, 64, 91, 92, 93, 95, 124, 126, 264, 285, 331], [-1, 25, -1, 25, -1, 25,
--1, 25, -1, 25, -1, 25, -1, 25, -1], [264], [-1]), ([285, 286, 293, 294, 295,
-296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
-313, 314, 326, 327, 331], [-1, 34, -1, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68,
-70, 72, 74, 76, 78, 80, 82, 84, -1, 742, -1, 112, -1], [15, 16, 18, 116, 133,
-135, 137, 143, 145, 147, 153, 155, 161, 162, 168, 172, 197, 198, 264], [-1,
-429, 374, -1, 104, 87, 88, -1, 105, 106, -1, 89, -1, 90, -1, 107, -1, 375, -1]
-), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45, 46, 126, 127, 258, 259, 260, 261,
-262, 263, 264, 265, 266, 267, 286, 287, 325, 326, 327, 328, 331], [-1, 2, -1,
-4, -1, 6, -1, 8, 10, -1, 12, -1, 16, -1, 198, 20, 22, 24, 26, 28, -1, 30, 32,
--1, 36, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48,
-51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 264], [-1, 61, 62, -1, 63, 64,
--1, 65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 430, -1]),
-([59, 60, 331], [-1, 862, -1], [264], [-1]), ([44, 45, 59, 60, 125, 126, 331],
-[-1, 425, -1, 425, -1, 425, -1], [264], [-1]), ([40, 42, 44, 45, 58, 60, 61,
-62, 91, 92, 331], [-1, 369, -1, 369, -1, 369, -1, 369, -1, 369, -1], [264], [-1
-]), ([41, 42, 44, 45, 331], [-1, 393, -1, 393, -1], [264], [-1]), ([40, 42, 44,
-45, 58, 60, 61, 62, 91, 92, 331], [-1, 365, -1, 365, -1, 365, -1, 365, -1, 365,
--1], [264], [-1]), ([40, 42, 44, 45, 58, 59, 91, 92, 331], [-1, 407, -1, 407,
--1, 407, -1, 407, -1], [264], [-1]), ([40, 41, 42, 43, 91, 92, 258, 259, 331],
-[-1, 660, 401, 662, -1, 388, -1, 366, -1], [178, 180, 185, 198, 200, 202, 210,
-264], [-1, 318, 189, -1, 384, 197, 198, -1]), ([40, 42, 44, 45, 58, 59, 91, 92,
-331], [-1, 419, -1, 419, -1, 419, -1, 419, -1], [264], [-1]), ([40, 42, 44, 45,
-58, 59, 91, 92, 331], [-1, 415, -1, 415, -1, 415, -1, 415, -1], [264], [-1]), (
-[46, 47, 61, 62, 91, 92, 331], [-1, 449, -1, 449, -1, 449, -1], [264], [-1]), (
-[44, 45, 125, 126, 331], [-1, 437, -1, 437, -1], [264], [-1]), ([44, 45, 59,
-60, 331], [-1, 301, -1, 301, -1], [264], [-1]), ([44, 45, 59, 60, 331], [-1,
-303, -1, 303, -1], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45, 46, 59,
-60, 123, 124, 125, 127, 256, 257, 258, 264, 265, 267, 285, 311, 312, 331], [-1,
-465, -1, 465, -1, 465, -1, 465, -1, 465, -1, 465, -1, 465, -1, 465, -1, 465,
--1, 465, -1, 465, -1, 465, -1, 465], [264], [-1]), ([33, 34, 38, 39, 40, 41,
-42, 44, 45, 46, 59, 60, 123, 124, 125, 127, 256, 257, 258, 264, 265, 267, 285,
-311, 312, 331], [-1, 473, -1, 473, -1, 473, -1, 473, -1, 473, -1, 473, -1, 473,
--1, 473, -1, 473, -1, 473, -1, 473, -1, 473, -1, 473], [264], [-1]), ([41, 42,
-331], [-1, 864, -1], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 43, 44, 45,
-46, 59, 60, 123, 124, 126, 127, 258, 259, 260, 261, 262, 263, 264, 265, 266,
-267, 286, 287, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
-325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8, 10, -1, 12, -1, 179, -1,
-14, -1, 16, -1, 18, 20, 22, 24, 26, 28, -1, 30, 32, -1, 36, -1, 86, 88, 90, -1,
-92, 94, 96, 98, 100, 102, 104, 106, -1, 110, -1, 114, -1], [1, 6, 9, 10, 12,
-13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, 77, 89, 91,
-93, 227, 243, 264], [-1, 61, 62, -1, 63, 64, -1, 65, -1, 66, 67, 68, 69, 70,
-71, 72, 73, 74, 75, 76, 77, 78, -1, 79, 80, 81, -1, 433, -1]), ([41, 42, 44,
-45, 331], [-1, 29, -1, 29, -1], [264], [-1]), ([41, 42, 44, 45, 331], [-1, 31,
--1, 31, -1], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45, 46, 59, 60,
-123, 124, 125, 127, 256, 257, 258, 264, 265, 267, 285, 311, 312, 315, 316, 331
-], [-1, 453, -1, 453, -1, 453, -1, 453, -1, 453, -1, 453, -1, 453, -1, 453, -1,
-453, -1, 453, -1, 453, -1, 453, -1, 453, -1, 453], [264], [-1]), ([33, 34, 38,
-39, 40, 41, 42, 43, 44, 45, 46, 59, 60, 123, 124, 126, 127, 258, 259, 260, 261,
-262, 263, 264, 265, 266, 267, 286, 287, 312, 313, 314, 315, 316, 317, 318, 319,
-320, 321, 322, 323, 324, 325, 326, 327, 328, 331], [-1, 2, -1, 4, -1, 6, -1, 8,
-10, -1, 12, -1, 179, -1, 14, -1, 16, -1, 18, 20, 22, 24, 26, 28, -1, 30, 32,
--1, 36, -1, 86, 88, 90, -1, 92, 94, 96, 98, 100, 102, 104, 106, -1, 110, -1,
-114, -1], [1, 6, 9, 10, 12, 13, 18, 26, 30, 42, 44, 48, 51, 54, 59, 62, 64, 66,
-68, 70, 72, 74, 77, 89, 91, 93, 227, 243, 264], [-1, 61, 62, -1, 63, 64, -1,
-65, -1, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 79, 80, 81, -1,
-434, -1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45, 46, 59, 60, 123, 124, 125,
-127, 256, 257, 258, 264, 265, 267, 285, 311, 312, 331], [-1, 477, -1, 477, -1,
-477, -1, 477, -1, 477, -1, 477, -1, 477, -1, 477, -1, 477, -1, 477, -1, 477,
--1, 477, -1, 477], [264], [-1]), ([33, 34, 38, 39, 40, 41, 42, 44, 45, 46, 59,
-60, 123, 124, 125, 127, 256, 257, 258, 264, 265, 267, 285, 311, 312, 331], [-1,
-475, -1, 475, -1, 475, -1, 475, -1, 475, -1, 475, -1, 475, -1, 475, -1, 475,
--1, 475, -1, 475, -1, 475, -1, 475], [264], [-1])], [(1, []), (1, [(0, 1,
-'ExpressionIdentifier', {})]), (1, []), (1, []), (3, []), (1, []), (1, []), (1,
-[]), (1, []), (1, []), (1, []), (1, [(0, 1, 'ExpressionFunctionName', {})]), (
-6, [(0, 6, 'GenericSelection', {}), (4, 1, 'GenericAssociationList', {})]), (1,
-[]), (3, []), (3, [(0, 3, 'GenericAssociation', {})]), (1, []), (1, [(0, 1,
-'DefaultTypeName', {})]), (1, []), (4, [(0, 4, 'ExpressionIndex', {})]), (4, [(
-0, 4, 'ExpressionCall', {}), (2, 1, 'ArgumentExpressionList', {})]), (3, [(0,
-3, 'ExpressionField', {})]), (3, [(0, 3, 'ExpressionFieldDereference', {})]), (
-2, [(0, 2, 'ExpressionPostIncrement', {})]), (2, [(0, 2,
-'ExpressionPostDecrement', {})]), (6, [(0, 6, 'ExpressionArray', {}), (4, 1,
-'DesignatorInitializerList', {})]), (0, []), (1, []), (1, []), (3, []), (1, []
-), (2, [(0, 2, 'ExpressionPreIncrement', {})]), (2, [(0, 2,
-'ExpressionPreDecrement', {})]), (2, [(0, 2, 'ExpressionAddressOf', {})]), (2,
-[(0, 2, 'ExpressionDereference', {})]), (2, [(0, 2, 'ExpressionPlus', {})]), (
-2, [(0, 2, 'ExpressionMinus', {})]), (2, [(0, 2, 'ExpressionBitwiseNot', {})]),
-(2, [(0, 2, 'ExpressionLogicalNot', {})]), (2, [(0, 2,
-'ExpressionSizeOfExpression', {})]), (4, [(0, 4, 'ExpressionSizeOfType', {})]),
-(4, [(0, 4, 'ExpressionAlignOfType', {})]), (1, []), (4, [(0, 4,
-'ExpressionCast', {})]), (1, []), (3, [(0, 3, 'ExpressionMultiply', {})]), (3,
-[(0, 3, 'ExpressionDivide', {})]), (3, [(0, 3, 'ExpressionModulo', {})]), (1, [
-]), (3, [(0, 3, 'ExpressionAdd', {})]), (3, [(0, 3, 'ExpressionSubtract', {})]
-), (1, []), (3, [(0, 3, 'ExpressionShiftLeft', {})]), (3, [(0, 3,
-'ExpressionShiftRight', {})]), (1, []), (3, [(0, 3, 'ExpressionLessThan', {})]
-), (3, [(0, 3, 'ExpressionGreaterThan', {})]), (3, [(0, 3,
-'ExpressionLessThanOrEqual', {})]), (3, [(0, 3, 'ExpressionGreaterThanOrEqual',
-{})]), (1, []), (3, [(0, 3, 'ExpressionEqual', {})]), (3, [(0, 3,
-'ExpressionNotEqual', {})]), (1, []), (3, [(0, 3, 'ExpressionBitwiseAnd', {})]
-), (1, []), (3, [(0, 3, 'ExpressionExclusiveOr', {})]), (1, []), (3, [(0, 3,
-'ExpressionBitwiseOr', {})]), (1, []), (3, [(0, 3, 'ExpressionLogicalAnd', {})]
-), (1, []), (3, [(0, 3, 'ExpressionLogicalOr', {})]), (1, []), (5, [(0, 5,
-'ExpressionConditional', {})]), (0, [(0, 0, 'ExpressionEmpty', {})]), (1, [(0,
-1, 'ExpressionAsterisk', {})]), (1, []), (1, []), (3, [(0, 3,
-'ExpressionAssignment', {})]), (3, [(0, 3, 'ExpressionMultiplyAssignment', {})]
-), (3, [(0, 3, 'ExpressionDivideAssignment', {})]), (3, [(0, 3,
-'ExpressionModuloAssignment', {})]), (3, [(0, 3, 'ExpressionAddAssignment', {})
-]), (3, [(0, 3, 'ExpressionSubtractAssignment', {})]), (3, [(0, 3,
-'ExpressionLeftShiftAssignment', {})]), (3, [(0, 3,
-'ExpressionRightShiftAssignment', {})]), (3, [(0, 3,
-'ExpressionBitwiseAndAssignment', {})]), (3, [(0, 3,
-'ExpressionExclusiveOrAssignment', {})]), (3, [(0, 3,
-'ExpressionBitwiseOrAssignment', {})]), (0, [(0, 0, 'ExpressionEmpty', {})]), (
-1, []), (1, []), (3, [(0, 3, 'ExpressionComma', {})]), (0, [(0, 0,
-'ExpressionEmpty', {})]), (2, []), (1, []), (3, [(0, 3, 'Declaration', {}), (0,
-1, 'DeclarationSpecifierList', {}), (1, 1, 'InitDeclaratorList', {})]), (1, []
-), (1, []), (2, []), (1, []), (1, []), (1, []), (1, []), (1, []), (0, []), (1,
-[]), (1, []), (3, []), (2, [(0, 2, 'InitDeclarator', {})]), (1, [(0, 1,
-'StorageClassSpecifier', {'n': '0'})]), (1, [(0, 1, 'StorageClassSpecifier', {
-'n': '1'})]), (1, [(0, 1, 'StorageClassSpecifier', {'n': '2'})]), (1, [(0, 1,
-'StorageClassSpecifier', {'n': '3'})]), (1, [(0, 1, 'StorageClassSpecifier', {
-'n': '4'})]), (1, [(0, 1, 'StorageClassSpecifier', {'n': '5'})]), (1, [(0, 1,
-'TypeSpecifier', {'n': '0'})]), (1, [(0, 1, 'TypeSpecifier', {'n': '1'})]), (1,
-[(0, 1, 'TypeSpecifier', {'n': '2'})]), (1, [(0, 1, 'TypeSpecifier', {'n': '3'}
-)]), (1, [(0, 1, 'TypeSpecifier', {'n': '4'})]), (1, [(0, 1, 'TypeSpecifier', {
-'n': '5'})]), (1, [(0, 1, 'TypeSpecifier', {'n': '6'})]), (1, [(0, 1,
-'TypeSpecifier', {'n': '7'})]), (1, [(0, 1, 'TypeSpecifier', {'n': '8'})]), (1,
-[(0, 1, 'TypeSpecifier', {'n': '9'})]), (1, [(0, 1, 'TypeSpecifier', {'n': '10'
-})]), (1, [(0, 1, 'TypeSpecifier', {'n': '11'})]), (1, []), (1, []), (1, []), (
-1, []), (1, []), (5, [(0, 5, 'StructSpecifier', {}), (3, 1,
-'StructDeclarationList', {})]), (2, [(0, 2, 'StructSpecifier', {})]), (5, [(0,
-5, 'UnionSpecifier', {}), (3, 1, 'StructDeclarationList', {})]), (2, [(0, 2,
-'UnionSpecifier', {})]), (0, []), (1, []), (1, []), (2, []), (3, [(0, 3,
-'StructDeclaration', {}), (0, 1, 'SpecifierQualifierList', {}), (1, 1,
-'StructDeclaratorList', {})]), (1, []), (1, []), (2, []), (1, []), (1, []), (0,
-[]), (1, []), (1, []), (3, []), (3, [(0, 3, 'StructDeclarator', {})]), (1, []),
-(5, [(0, 5, 'EnumSpecifier', {}), (3, 1, 'EnumeratorList', {})]), (2, [(0, 2,
-'EnumSpecifier', {})]), (0, []), (1, []), (2, []), (1, []), (3, []), (2, [(0,
-2, 'Enumerator', {})]), (4, []), (0, []), (1, []), (1, []), (2, []), (1, []), (
-1, [(0, 1, 'StorageClassSpecifier', {'n': '2'})]), (1, [(0, 1, 'TypeQualifier',
-{'n': '0'})]), (1, [(0, 1, 'TypeQualifier', {'n': '1'})]), (1, [(0, 1,
-'TypeQualifier', {'n': '2'})]), (1, [(0, 1, 'TypeQualifier', {'n': '3'})]), (1,
-[(0, 1, 'FunctionSpecifier', {'n': '0'})]), (1, [(0, 1, 'FunctionSpecifier', {
-'n': '1'})]), (4, [(0, 4, 'AlignAsType', {})]), (4, [(0, 4,
-'AlignAsExpression', {})]), (0, [(0, 0, 'DeclaratorEmpty', {})]), (1, []), (1,
-[]), (3, [(0, 3, 'DeclaratorPointer', {}), (1, 1, 'TypeQualifierList', {})]), (
-1, [(0, 1, 'DeclaratorIdentifier', {})]), (3, []), (5, [(0, 5,
-'DeclaratorArray', {}), (2, 1, 'TypeQualifierOrStaticList', {})]), (4, [(0, 4,
-'DeclaratorFunctionOldStyle', {}), (2, 1, 'IdentifierList', {})]), (5, [(0, 5,
-'DeclaratorFunction', {}), (2, 1, 'ParameterDeclarationList', {})]), (0, []), (
-1, []), (1, []), (2, []), (1, []), (3, []), (2, [(0, 2, 'ParameterDeclaration',
-{}), (0, 1, 'DeclarationSpecifierList', {})]), (2, [(0, 2,
-'ParameterDeclaration', {}), (0, 1, 'DeclarationSpecifierList', {})]), (0, []),
-(1, []), (1, []), (3, []), (2, [(0, 2, 'TypeName', {}), (0, 1,
-'SpecifierQualifierList', {})]), (1, []), (3, [(0, 3, 'DeclaratorPointer', {}),
-(1, 1, 'TypeQualifierList', {})]), (0, [(0, 0, 'DeclaratorAbstract', {})]), (1,
-[]), (3, []), (5, [(1, 3, 'DeclaratorPointer', {}), (2, 1, 'TypeQualifierList',
-{})]), (4, [(0, 5, 'DeclaratorArray', {}), (0, 0, 'DeclaratorAbstract', {}), (
-1, 1, 'TypeQualifierOrStaticList', {})]), (2, [(0, 5, 'DeclaratorFunction', {}
-), (0, 0, 'DeclaratorAbstract', {}), (1, 0, 'ParameterDeclarationList', {}), (
-1, 0, 'CommaEllipsisEmpty', {})]), (4, [(0, 5, 'DeclaratorFunction', {}), (0,
-0, 'DeclaratorAbstract', {}), (1, 1, 'ParameterDeclarationList', {})]), (5, [(
-0, 5, 'DeclaratorArray', {}), (2, 1, 'TypeQualifierOrStaticList', {})]), (3, [(
-0, 5, 'DeclaratorFunction', {}), (2, 0, 'ParameterDeclarationList', {}), (2, 0,
-'CommaEllipsisEmpty', {})]), (5, [(0, 5, 'DeclaratorFunction', {}), (2, 1,
-'ParameterDeclarationList', {})]), (0, [(0, 0, 'EqualsInitializerEmpty', {})]),
-(2, []), (3, [(1, 1, 'DesignatorInitializerList', {})]), (1, []), (0, []), (1,
-[]), (2, []), (1, []), (3, []), (2, [(0, 2, 'DesignatorInitializer', {}), (0,
-1, 'DesignatorList', {})]), (0, []), (2, []), (1, []), (2, []), (3, [(0, 3,
-'DesignatorIndex', {})]), (2, [(0, 2, 'DesignatorField', {})]), (7, [(0, 7,
-'StaticAssertDeclaration', {})]), (3, [(0, 3, 'StatementLabel', {})]), (4, [(0,
-4, 'StatementCase', {})]), (3, [(0, 3, 'StatementDefault', {})]), (3, [(0, 3,
-'StatementBlock', {}), (1, 1, 'BlockItemList', {})]), (2, [(0, 2,
-'StatementExpression', {})]), (7, [(0, 7, 'StatementIfElse', {})]), (5, [(0, 5,
-'StatementIf', {})]), (5, [(0, 5, 'StatementSwitch', {})]), (5, [(0, 5,
-'StatementWhile', {})]), (7, [(0, 7, 'StatementDoWhile', {})]), (9, [(0, 9,
-'StatementFor', {})]), (8, [(0, 8, 'StatementFor', {})]), (3, [(0, 3,
-'StatementGoto', {})]), (2, [(0, 2, 'StatementContinue', {})]), (2, [(0, 2,
-'StatementBreak', {})]), (3, [(0, 3, 'StatementReturn', {})]), (0, []), (1, []
-), (1, []), (2, []), (1, []), (1, []), (0, []), (1, []), (1, []), (2, []), (1,
-[]), (1, []), (6, [(0, 6, 'FunctionDefinition', {}), (0, 1,
-'DeclarationSpecifierList', {}), (2, 1, 'DeclarationList', {}), (4, 1,
-'BlockItemList', {})]), (0, []), (1, []), (1, []), (2, []), (0, [(0, 0,
-'IdentifierEmpty', {})]), (1, []), (0, [(0, 0, 'CommaEllipsisEmpty', {})]), (2,
-[(0, 2, 'CommaEllipsis', {})])], 331, 256)
-# GENERATE END
-
-def yyparse(root, pos, off, factory, yylex_iter):
-  lalr1.yyparse(root, pos, off, factory, yylex_iter)
-
-if __name__ == '__main__':
-  import ast 
-  import ansi_c_yylex
-  import element
-  import work
-  import sys
-  import xml.etree.ElementTree
-
-  root = element.Element('root')
-  yyparse(
-    root,
-    0,
-    0,
-    ast.factory,
-    ansi_c_yylex.yylex(
-      root,
-      0,
-      0,
-      ast.factory,
-      work.yychunk_line(root, sys.stdin)
-    )
-  )
-  xml.etree.ElementTree.dump(root)
diff --git a/ansi_c_yyparse.sh b/ansi_c_yyparse.sh
deleted file mode 100755 (executable)
index ceec2a3..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-if ../pyacc.git/pyacc.py ansi_c_yacc.y ansi_c_tokens.py <ansi_c_yyparse.py >ansi_c_yyparse.py.new && ! diff -q ansi_c_yyparse.py ansi_c_yyparse.py.new
- then
-  mv ansi_c_yyparse.py.new ansi_c_yyparse.py
-else
-  rm -f ansi_c_yyparse.py.new
-fi
diff --git a/ast.py b/ast.py
index e17fb6f..cb04951 100644 (file)
--- a/ast.py
+++ b/ast.py
@@ -19,3996 +19,4024 @@ class Context:
     self.initial = initial # whether to add declared identifiers as 'self.'
     self.translate_identifier = translate_identifier
 
-class Element(element.Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'Element',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    element.Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = element.Element.copy(
-      self,
-      Element if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.Element({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    for i in self:
-      i.translate(context)
-    prev_empty = True
-    for i in range(len(self) + 1):
-      text = element.get_text(self, i).strip()
-      next_empty = (
-        i >= len(self) or
-        (len(self[i]) == 0 and len(element.get_text(self[i], 0)) == 0)
-      )
-      if len(text) == 0:
-        if prev_empty:
-          text = ''
-          prev_empty = next_empty
-        elif next_empty:
-          text = ''
-          prev_empty = False
+class AST(element.Element):
+  class Element(element.Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_Element',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      element.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = element.Element.copy(
+        self,
+        Element if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.Element({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      for i in self:
+        i.translate(context)
+      prev_empty = True
+      for i in range(len(self) + 1):
+        text = element.get_text(self, i).strip()
+        next_empty = (
+          i >= len(self) or
+          (len(self[i]) == 0 and len(element.get_text(self[i], 0)) == 0)
+        )
+        if len(text) == 0:
+          if prev_empty:
+            text = ''
+            prev_empty = next_empty
+          elif next_empty:
+            text = ''
+            prev_empty = False
+          else:
+            text = ' '
         else:
-          text = ' '
-      else:
-        if prev_empty:
-          prev_empty = False
-        elif text[0] not in ',;)}]':
-          text = ' ' + text
-        if next_empty:
-          prev_empty = text[-1] in '({['
-        elif text[0] not in '({[':
-          text = text + ' '
-      element.set_text(self, i, text)
-
-class DeclarationOrStatement(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'DeclarationOrStatement',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      DeclarationOrStatement if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.DeclarationOrStatement({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    Element.translate(self, context)
-    element.set_text(
-      self,
-      0,
-      '{0:s}{1:s}'.format(context.indent, element.get_text(self, 0))
-    )
-    text = element.get_text(self, len(self))
-    if text[-1:] == ';':
-      text = text[:-1]
-    element.set_text(self, len(self), '{0:s}\n'.format(text))
-
-class AlignAsExpression(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'AlignAsExpression',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      AlignAsExpression if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.AlignAsExpression({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class AlignAsType(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'AlignAsType',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      AlignAsType if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.AlignAsType({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ArgumentExpressionList(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ArgumentExpressionList',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      ArgumentExpressionList if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ArgumentExpressionList({0:s})'.format(', '.join(params))
-  # GENERATE END
+          if prev_empty:
+            prev_empty = False
+          elif text[0] not in ',;)}]':
+            text = ' ' + text
+          if next_empty:
+            prev_empty = text[-1] in '({['
+          elif text[0] not in '({[':
+            text = text + ' '
+        element.set_text(self, i, text)
+
+  class DeclarationOrStatement(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_DeclarationOrStatement',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        DeclarationOrStatement if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.DeclarationOrStatement({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      Element.translate(self, context)
+      element.set_text(
+        self,
+        0,
+        '{0:s}{1:s}'.format(context.indent, element.get_text(self, 0))
+      )
+      text = element.get_text(self, len(self))
+      if text[-1:] == ';':
+        text = text[:-1]
+      element.set_text(self, len(self), '{0:s}\n'.format(text))
+
+  class AlignAsExpression(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_AlignAsExpression',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        AlignAsExpression if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.AlignAsExpression({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class AlignAsType(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_AlignAsType',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        AlignAsType if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.AlignAsType({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ArgumentExpressionList(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ArgumentExpressionList',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        ArgumentExpressionList if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ArgumentExpressionList({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class BlockItemList(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_BlockItemList',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        BlockItemList if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.BlockItemList({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      for i in self:
+        i.translate(context)
+      for i in range(len(self) + 1):
+        element.set_text(self, i, '')
+
+  class CommaEllipsis(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_CommaEllipsis',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        CommaEllipsis if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.CommaEllipsis({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class CommaEllipsisEmpty(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_CommaEllipsisEmpty',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        CommaEllipsisEmpty if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.CommaEllipsisEmpty({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class Declaration(DeclarationOrStatement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_Declaration',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.DeclarationOrStatement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.DeclarationOrStatement.copy(
+        self,
+        Declaration if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.Declaration({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class DeclarationList(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_DeclarationList',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        DeclarationList if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.DeclarationList({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class DeclarationSpecifierList(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_DeclarationSpecifierList',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        DeclarationSpecifierList if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.DeclarationSpecifierList({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class Declarator(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_Declarator',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        Declarator if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.Declarator({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class DeclaratorAbstract(Declarator):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_DeclaratorAbstract',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Declarator.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Declarator.copy(
+        self,
+        DeclaratorAbstract if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.DeclaratorAbstract({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class DeclaratorArray(Declarator):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_DeclaratorArray',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Declarator.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Declarator.copy(
+        self,
+        DeclaratorArray if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.DeclaratorArray({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 3
+      self[0].translate(context)
+      self[1].translate(context)
+      self[2].translate(context)
+      element.set_text(self, 0, '')
+      element.set_text(self, 1, '[')
+      element.set_text(
+        self,
+        2,
+        ' ' if len(self[1]) or len(element.get_text(self[1], 0)) else ''
+      )
+      element.set_text(self, 3, ']')
+
+  class DeclaratorEmpty(Declarator):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_DeclaratorEmpty',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Declarator.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Declarator.copy(
+        self,
+        DeclaratorEmpty if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.DeclaratorEmpty({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class DeclaratorFunction(Declarator):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_DeclaratorFunction',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Declarator.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Declarator.copy(
+        self,
+        DeclaratorFunction if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.DeclaratorFunction({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 3
+      self[0].translate(context)
+      initial_save = context.initial
+      context.initial = False
+      self[1].translate(context)
+      self[2].translate(context)
+      context.initial = initial_save
+      element.set_text(self, 0, '')
+      element.set_text(self, 1, '(')
+      element.set_text(self, 2, '')
+      element.set_text(self, 3, ')')
+
+  class DeclaratorFunctionOldStyle(Declarator):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_DeclaratorFunctionOldStyle',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Declarator.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Declarator.copy(
+        self,
+        DeclaratorFunctionOldStyle if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.DeclaratorFunctionOldStyle({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 2
+      self[0].translate(context)
+      initial_save = context.initial
+      context.initial = False
+      self[1].translate(context)
+      context.initial = initial_save
+      element.set_text(self, 0, '')
+      element.set_text(self, 1, '(')
+      element.set_text(self, 2, ')')
+
+  class DeclaratorIdentifier(Declarator):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_DeclaratorIdentifier',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Declarator.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Declarator.copy(
+        self,
+        DeclaratorIdentifier if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.DeclaratorIdentifier({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      if context.initial:
+        text = element.get_text(self[0], 0)
+        assert text not in context.translate_identifier
+        context.translate_identifier[text] = 'self.{0:s}'.format(text)
+      Declarator.translate(self, context)
+
+  class DeclaratorPointer(Declarator):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_DeclaratorPointer',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Declarator.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Declarator.copy(
+        self,
+        DeclaratorPointer if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.DeclaratorPointer({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 2
+      self[0].translate(context)
+      self[1].translate(context)
+      element.set_text(self, 0, '*')
+      element.set_text(
+        self,
+        1,
+        ' ' if len(self[0]) or len(element.get_text(self[0], 0)) else ''
+      )
 
-class BlockItemList(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'BlockItemList',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      BlockItemList if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.BlockItemList({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    for i in self:
-      i.translate(context)
-    for i in range(len(self) + 1):
-      element.set_text(self, i, '')
-class CommaEllipsis(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'CommaEllipsis',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
+  class DefaultTypeName(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
       self,
-      CommaEllipsis if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.CommaEllipsis({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class CommaEllipsisEmpty(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'CommaEllipsisEmpty',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      CommaEllipsisEmpty if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.CommaEllipsisEmpty({0:s})'.format(', '.join(params))
-  # GENERATE END
+      tag = 'AST_DefaultTypeName',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        DefaultTypeName if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.DefaultTypeName({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class DesignatorField(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_DesignatorField',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        DesignatorField if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.DesignatorField({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class DesignatorIndex(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_DesignatorIndex',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        DesignatorIndex if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.DesignatorIndex({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class DesignatorInitializer(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_DesignatorInitializer',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        DesignatorInitializer if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.DesignatorInitializer({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class DesignatorInitializerList(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_DesignatorInitializerList',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        DesignatorInitializerList if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.DesignatorInitializerList({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class DesignatorList(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_DesignatorList',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        DesignatorList if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.DesignatorList({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class EnumSpecifier(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_EnumSpecifier',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        EnumSpecifier if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.EnumSpecifier({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class Enumerator(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_Enumerator',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        Enumerator if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.Enumerator({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class EnumeratorList(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_EnumeratorList',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        EnumeratorList if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.EnumeratorList({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class EqualsInitializerEmpty(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_EqualsInitializerEmpty',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        EqualsInitializerEmpty if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.EqualsInitializerEmpty({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class Expression(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_Expression',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        Expression if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.Expression({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionAdd(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionAdd',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionAdd if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionAdd({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionAddAssignment(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionAddAssignment',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionAddAssignment if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionAddAssignment({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionAddressOf(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionAddressOf',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionAddressOf if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionAddressOf({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 1
+      self[0].translate(context)
+      element.set_text(self, 0, '&')
+      element.set_text(self, 1, '')
+
+  class ExpressionAlignOfType(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionAlignOfType',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionAlignOfType if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionAlignOfType({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionArray(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionArray',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionArray if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionArray({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionAssignment(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionAssignment',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionAssignment if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionAssignment({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionAsterisk(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionAsterisk',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionAsterisk if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionAsterisk({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionBitwiseAnd(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionBitwiseAnd',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionBitwiseAnd if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionBitwiseAnd({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionBitwiseAndAssignment(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionBitwiseAndAssignment',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionBitwiseAndAssignment if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionBitwiseAndAssignment({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionBitwiseNot(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionBitwiseNot',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionBitwiseNot if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionBitwiseNot({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 1
+      self[0].translate(context)
+      element.set_text(self, 0, '~')
+      element.set_text(self, 1, '')
+
+  class ExpressionBitwiseOr(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionBitwiseOr',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionBitwiseOr if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionBitwiseOr({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionBitwiseOrAssignment(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionBitwiseOrAssignment',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionBitwiseOrAssignment if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionBitwiseOrAssignment({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionCall(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionCall',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionCall if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionCall({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 2
+      self[0].translate(context)
+      self[1].translate(context)
+      element.set_text(self, 0, '')
+      element.set_text(self, 1, '(')
+      element.set_text(self, 2, ')')
+
+  class ExpressionCast(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionCast',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionCast if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionCast({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 2
+      self[0].translate(context)
+      self[1].translate(context)
+      element.set_text(self, 0, '')
+      element.set_text(self, 1, '(')
+      element.set_text(self, 2, ')')
+
+  class ExpressionCharConstant(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionCharConstant',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionCharConstant if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionCharConstant({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 0
+      element.set_text(
+        self,
+        0,
+       'ord({0:s})'.format(element.get_text(self, 0).strip())
+      )
 
-class Declaration(DeclarationOrStatement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'Declaration',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    DeclarationOrStatement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = DeclarationOrStatement.copy(
+  class ExpressionComma(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
       self,
-      Declaration if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.Declaration({0:s})'.format(', '.join(params))
-  # GENERATE END
+      tag = 'AST_ExpressionComma',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionComma if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionComma({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionConditional(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionConditional',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionConditional if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionConditional({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      #xml.etree.ElementTree.dump(self)
+      assert len(self) == 3
+      self[0].translate(context)
+      self[1].translate(context)
+      self[2].translate(context)
+      self[0], self[1] = self[1], self[0]
+      element.set_text(self, 0, '')
+      element.set_text(self, 1, ' if ')
+      element.set_text(self, 2, ' else ')
+      element.set_text(self, 3, '')
+
+  class ExpressionDereference(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionDereference',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionDereference if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionDereference({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 1
+      self[0].translate(context)
+      element.set_text(self, 0, '*')
+      element.set_text(self, 1, '')
+
+  class ExpressionDivide(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionDivide',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionDivide if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionDivide({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionDivideAssignment(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionDivideAssignment',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionDivideAssignment if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionDivideAssignment({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionEmpty(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionEmpty',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionEmpty if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionEmpty({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionEqual(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionEqual',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionEqual if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionEqual({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionExclusiveOr(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionExclusiveOr',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionExclusiveOr if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionExclusiveOr({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionExclusiveOrAssignment(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionExclusiveOrAssignment',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionExclusiveOrAssignment if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionExclusiveOrAssignment({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionField(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionField',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionField if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionField({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionFieldDereference(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionFieldDereference',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionFieldDereference if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionFieldDereference({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionFloatLiteral(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionFloatLiteral',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionFloatLiteral if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionFloatLiteral({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionFunctionName(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionFunctionName',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionFunctionName if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionFunctionName({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionGreaterThan(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionGreaterThan',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionGreaterThan if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionGreaterThan({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionGreaterThanOrEqual(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionGreaterThanOrEqual',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionGreaterThanOrEqual if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionGreaterThanOrEqual({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionIdentifier(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionIdentifier',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionIdentifier if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionIdentifier({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionIndex(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionIndex',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionIndex if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionIndex({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 2
+      self[0].translate(context)
+      self[1].translate(context)
+      element.set_text(self, 0, '')
+      element.set_text(self, 1, '[')
+      element.set_text(self, 2, ']')
+
+  class ExpressionIntLiteral(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionIntLiteral',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionIntLiteral if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionIntLiteral({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class Identifier(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_Identifier',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        Identifier if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.Identifier({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 0
+      text = element.get_text(self, 0)
+      element.set_text(
+        self,
+        0,
+        context.translate_identifier.get(text, text)
+      )
 
-class DeclarationList(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'DeclarationList',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
+  class ExpressionLeftShiftAssignment(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
       self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      DeclarationList if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.DeclarationList({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class DeclarationSpecifierList(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'DeclarationSpecifierList',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      DeclarationSpecifierList if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.DeclarationSpecifierList({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class Declarator(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'Declarator',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      Declarator if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.Declarator({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class DeclaratorAbstract(Declarator):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'DeclaratorAbstract',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Declarator.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Declarator.copy(
-      self,
-      DeclaratorAbstract if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.DeclaratorAbstract({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class DeclaratorArray(Declarator):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'DeclaratorArray',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Declarator.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Declarator.copy(
-      self,
-      DeclaratorArray if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.DeclaratorArray({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 3
-    self[0].translate(context)
-    self[1].translate(context)
-    self[2].translate(context)
-    element.set_text(self, 0, '')
-    element.set_text(self, 1, '[')
-    element.set_text(
-      self,
-      2,
-      ' ' if len(self[1]) or len(element.get_text(self[1], 0)) else ''
-    )
-    element.set_text(self, 3, ']')
-
-class DeclaratorEmpty(Declarator):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'DeclaratorEmpty',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Declarator.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Declarator.copy(
-      self,
-      DeclaratorEmpty if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.DeclaratorEmpty({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class DeclaratorFunction(Declarator):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'DeclaratorFunction',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Declarator.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Declarator.copy(
-      self,
-      DeclaratorFunction if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.DeclaratorFunction({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 3
-    self[0].translate(context)
-    initial_save = context.initial
-    context.initial = False
-    self[1].translate(context)
-    self[2].translate(context)
-    context.initial = initial_save
-    element.set_text(self, 0, '')
-    element.set_text(self, 1, '(')
-    element.set_text(self, 2, '')
-    element.set_text(self, 3, ')')
-
-class DeclaratorFunctionOldStyle(Declarator):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'DeclaratorFunctionOldStyle',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Declarator.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Declarator.copy(
-      self,
-      DeclaratorFunctionOldStyle if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.DeclaratorFunctionOldStyle({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 2
-    self[0].translate(context)
-    initial_save = context.initial
-    context.initial = False
-    self[1].translate(context)
-    context.initial = initial_save
-    element.set_text(self, 0, '')
-    element.set_text(self, 1, '(')
-    element.set_text(self, 2, ')')
-
-class DeclaratorIdentifier(Declarator):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'DeclaratorIdentifier',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Declarator.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Declarator.copy(
-      self,
-      DeclaratorIdentifier if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.DeclaratorIdentifier({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    if context.initial:
-      text = element.get_text(self[0], 0)
-      assert text not in context.translate_identifier
-      context.translate_identifier[text] = 'self.{0:s}'.format(text)
-    Declarator.translate(self, context)
-
-class DeclaratorPointer(Declarator):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'DeclaratorPointer',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Declarator.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Declarator.copy(
-      self,
-      DeclaratorPointer if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.DeclaratorPointer({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 2
-    self[0].translate(context)
-    self[1].translate(context)
-    element.set_text(self, 0, '*')
-    element.set_text(
-      self,
-      1,
-      ' ' if len(self[0]) or len(element.get_text(self[0], 0)) else ''
-    )
-
-class DefaultTypeName(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'DefaultTypeName',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      DefaultTypeName if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.DefaultTypeName({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class DesignatorField(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'DesignatorField',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      DesignatorField if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.DesignatorField({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class DesignatorIndex(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'DesignatorIndex',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      DesignatorIndex if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.DesignatorIndex({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class DesignatorInitializer(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'DesignatorInitializer',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      DesignatorInitializer if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.DesignatorInitializer({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class DesignatorInitializerList(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'DesignatorInitializerList',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      DesignatorInitializerList if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.DesignatorInitializerList({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class DesignatorList(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'DesignatorList',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      DesignatorList if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.DesignatorList({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class EnumSpecifier(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'EnumSpecifier',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      EnumSpecifier if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.EnumSpecifier({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class Enumerator(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'Enumerator',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      Enumerator if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.Enumerator({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class EnumeratorList(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'EnumeratorList',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      EnumeratorList if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.EnumeratorList({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class EqualsInitializerEmpty(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'EqualsInitializerEmpty',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      EqualsInitializerEmpty if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.EqualsInitializerEmpty({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class Expression(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'Expression',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      Expression if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.Expression({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionAdd(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionAdd',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionAdd if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionAdd({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionAddAssignment(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionAddAssignment',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionAddAssignment if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionAddAssignment({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionAddressOf(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionAddressOf',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionAddressOf if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionAddressOf({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 1
-    self[0].translate(context)
-    element.set_text(self, 0, '&')
-    element.set_text(self, 1, '')
-
-class ExpressionAlignOfType(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionAlignOfType',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionAlignOfType if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionAlignOfType({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionArray(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionArray',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionArray if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionArray({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionAssignment(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionAssignment',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionAssignment if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionAssignment({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionAsterisk(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionAsterisk',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionAsterisk if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionAsterisk({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionBitwiseAnd(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionBitwiseAnd',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionBitwiseAnd if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionBitwiseAnd({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionBitwiseAndAssignment(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionBitwiseAndAssignment',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionBitwiseAndAssignment if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionBitwiseAndAssignment({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionBitwiseNot(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionBitwiseNot',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionBitwiseNot if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionBitwiseNot({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 1
-    self[0].translate(context)
-    element.set_text(self, 0, '~')
-    element.set_text(self, 1, '')
-
-class ExpressionBitwiseOr(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionBitwiseOr',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionBitwiseOr if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionBitwiseOr({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionBitwiseOrAssignment(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionBitwiseOrAssignment',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionBitwiseOrAssignment if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionBitwiseOrAssignment({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionCall(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionCall',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionCall if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionCall({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 2
-    self[0].translate(context)
-    self[1].translate(context)
-    element.set_text(self, 0, '')
-    element.set_text(self, 1, '(')
-    element.set_text(self, 2, ')')
-
-class ExpressionCast(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionCast',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionCast if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionCast({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 2
-    self[0].translate(context)
-    self[1].translate(context)
-    element.set_text(self, 0, '')
-    element.set_text(self, 1, '(')
-    element.set_text(self, 2, ')')
-
-class ExpressionCharConstant(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionCharConstant',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionCharConstant if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionCharConstant({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 0
-    element.set_text(
-      self,
-      0,
-     'ord({0:s})'.format(element.get_text(self, 0).strip())
-    )
-
-class ExpressionComma(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionComma',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionComma if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionComma({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionConditional(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionConditional',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionConditional if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionConditional({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    #xml.etree.ElementTree.dump(self)
-    assert len(self) == 3
-    self[0].translate(context)
-    self[1].translate(context)
-    self[2].translate(context)
-    self[0], self[1] = self[1], self[0]
-    element.set_text(self, 0, '')
-    element.set_text(self, 1, ' if ')
-    element.set_text(self, 2, ' else ')
-    element.set_text(self, 3, '')
-
-class ExpressionDereference(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionDereference',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionDereference if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionDereference({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 1
-    self[0].translate(context)
-    element.set_text(self, 0, '*')
-    element.set_text(self, 1, '')
-
-class ExpressionDivide(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionDivide',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionDivide if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionDivide({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionDivideAssignment(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionDivideAssignment',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionDivideAssignment if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionDivideAssignment({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionEmpty(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionEmpty',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionEmpty if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionEmpty({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionEqual(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionEqual',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionEqual if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionEqual({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionExclusiveOr(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionExclusiveOr',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionExclusiveOr if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionExclusiveOr({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionExclusiveOrAssignment(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionExclusiveOrAssignment',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionExclusiveOrAssignment if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionExclusiveOrAssignment({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionField(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionField',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionField if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionField({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionFieldDereference(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionFieldDereference',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionFieldDereference if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionFieldDereference({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionFloatLiteral(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionFloatLiteral',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionFloatLiteral if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionFloatLiteral({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionFunctionName(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionFunctionName',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionFunctionName if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionFunctionName({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionGreaterThan(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionGreaterThan',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionGreaterThan if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionGreaterThan({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionGreaterThanOrEqual(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionGreaterThanOrEqual',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionGreaterThanOrEqual if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionGreaterThanOrEqual({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionIdentifier(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionIdentifier',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionIdentifier if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionIdentifier({0:s})'.format(', '.join(params))
-  # GENERATE END
-class ExpressionIndex(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionIndex',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionIndex if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionIndex({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 2
-    self[0].translate(context)
-    self[1].translate(context)
-    element.set_text(self, 0, '')
-    element.set_text(self, 1, '[')
-    element.set_text(self, 2, ']')
-
-class ExpressionIntLiteral(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionIntLiteral',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionIntLiteral if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionIntLiteral({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class Identifier(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'Identifier',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      Identifier if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.Identifier({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 0
-    text = element.get_text(self, 0)
-    element.set_text(
-      self,
-      0,
-      context.translate_identifier.get(text, text)
-    )
-
-class ExpressionLeftShiftAssignment(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionLeftShiftAssignment',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionLeftShiftAssignment if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionLeftShiftAssignment({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionLessThan(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionLessThan',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionLessThan if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionLessThan({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionLessThanOrEqual(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionLessThanOrEqual',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionLessThanOrEqual if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionLessThanOrEqual({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionLogicalAnd(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionLogicalAnd',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionLogicalAnd if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionLogicalAnd({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 2
-    self[0].translate(context)
-    self[1].translate(context)
-    element.set_text(self, 0, '')
-    element.set_text(self, 1, ' and ')
-    element.set_text(self, 2, '')
-class ExpressionLogicalNot(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionLogicalNot',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionLogicalNot if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionLogicalNot({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 1
-    self[0].translate(context)
-    element.set_text(self, 0, 'not ')
-    element.set_text(self, 1, '')
-
-class ExpressionLogicalOr(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionLogicalOr',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionLogicalOr if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionLogicalOr({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 2
-    self[0].translate(context)
-    self[1].translate(context)
-    element.set_text(self, 0, '')
-    element.set_text(self, 1, ' or ')
-    element.set_text(self, 2, '')
-class ExpressionMinus(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionMinus',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionMinus if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionMinus({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 1
-    self[0].translate(context)
-    element.set_text(self, 0, '-')
-    element.set_text(self, 1, '')
-
-class ExpressionModulo(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionModulo',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionModulo if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionModulo({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionModuloAssignment(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionModuloAssignment',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionModuloAssignment if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionModuloAssignment({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionMultiply(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionMultiply',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionMultiply if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionMultiply({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionMultiplyAssignment(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionMultiplyAssignment',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionMultiplyAssignment if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionMultiplyAssignment({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionNotEqual(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionNotEqual',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionNotEqual if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionNotEqual({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionPlus(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionPlus',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionPlus if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionPlus({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 1
-    self[0].translate(context)
-    element.set_text(self, 0, '+')
-    element.set_text(self, 1, '')
-
-class ExpressionPostDecrement(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionPostDecrement',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionPostDecrement if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionPostDecrement({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 1
-    self[0].translate(context)
-    element.set_text(self, 0, '')
-    element.set_text(self, 1, ' -= 1')
-
-class ExpressionPostIncrement(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionPostIncrement',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionPostIncrement if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionPostIncrement({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 1
-    self[0].translate(context)
-    element.set_text(self, 0, '')
-    element.set_text(self, 1, ' += 1')
-
-class ExpressionPreDecrement(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionPreDecrement',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionPreDecrement if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionPreDecrement({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 1
-    self[0].translate(context)
-    element.set_text(self, 0, '')
-    element.set_text(self, 1, ' -= 1')
-
-class ExpressionPreIncrement(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionPreIncrement',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionPreIncrement if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionPreIncrement({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 1
-    self[0].translate(context)
-    element.set_text(self, 0, '')
-    element.set_text(self, 1, ' += 1')
-
-class ExpressionRightShiftAssignment(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionRightShiftAssignment',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionRightShiftAssignment if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionRightShiftAssignment({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionShiftLeft(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionShiftLeft',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionShiftLeft if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionShiftLeft({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionShiftRight(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionShiftRight',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionShiftRight if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionShiftRight({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionSizeOfExpression(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionSizeOfExpression',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionSizeOfExpression if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionSizeOfExpression({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionSizeOfType(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionSizeOfType',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionSizeOfType if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionSizeOfType({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionStringLiteral(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionStringLiteral',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionStringLiteral if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionStringLiteral({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    element.set_text(self, 0, '"')
-    for i in range(1, len(self)):
-      element.set_text(self, i, '')
-    element.set_text(self, len(self), '"')
-
-class ExpressionSubtract(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionSubtract',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionSubtract if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionSubtract({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ExpressionSubtractAssignment(Expression):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ExpressionSubtractAssignment',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Expression.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Expression.copy(
-      self,
-      ExpressionSubtractAssignment if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ExpressionSubtractAssignment({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class FunctionDefinition(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'FunctionDefinition',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      FunctionDefinition if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.FunctionDefinition({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class FunctionSpecifier(Element):
-  # GENERATE ELEMENT(int n) BEGIN
-  def __init__(
-    self,
-    tag = 'FunctionSpecifier',
-    attrib = {},
-    text = '',
-    children = [],
-    n = -1
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-    self.n = (
-      element.deserialize_int(n)
-    if isinstance(n, str) else
-      n
-    )
-  def serialize(self, ref_list):
-    Element.serialize(self, ref_list)
-    self.set('n', element.serialize_int(self.n))
-  def deserialize(self, ref_list):
-    Element.deserialize(self, ref_list)
-    self.n = element.deserialize_int(self.get('n', '-1'))
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      FunctionSpecifier if factory is None else factory
-    )
-    result.n = self.n
-    return result
-  def repr_serialize(self, params):
-    Element.repr_serialize(self, params)
-    if self.n != -1:
-      params.append(
-        'n = {0:s}'.format(repr(self.n))
-      )
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.FunctionSpecifier({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class GenericAssociation(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'GenericAssociation',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      GenericAssociation if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.GenericAssociation({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class GenericAssociationList(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'GenericAssociationList',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      GenericAssociationList if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.GenericAssociationList({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class GenericSelection(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'GenericSelection',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      GenericSelection if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.GenericSelection({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class IdentifierEmpty(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'IdentifierEmpty',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      IdentifierEmpty if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.IdentifierEmpty({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class IdentifierList(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'IdentifierList',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      IdentifierList if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.IdentifierList({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class InitDeclarator(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'InitDeclarator',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      InitDeclarator if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.InitDeclarator({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class InitDeclaratorList(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'InitDeclaratorList',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      InitDeclaratorList if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.InitDeclaratorList({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ParameterDeclaration(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ParameterDeclaration',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      ParameterDeclaration if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ParameterDeclaration({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class ParameterDeclarationList(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'ParameterDeclarationList',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      ParameterDeclarationList if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.ParameterDeclarationList({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class SpecifierQualifierList(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'SpecifierQualifierList',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      SpecifierQualifierList if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.SpecifierQualifierList({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class Statement(DeclarationOrStatement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'Statement',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    DeclarationOrStatement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = DeclarationOrStatement.copy(
-      self,
-      Statement if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.Statement({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class StatementBlock(Statement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StatementBlock',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Statement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Statement.copy(
-      self,
-      StatementBlock if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StatementBlock({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 1
-    self[0].translate(context)
-    element.set_text(self, 0, '')
-    element.set_text(self, 1, '')
-
-class StatementBreak(Statement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StatementBreak',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Statement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Statement.copy(
-      self,
-      StatementBreak if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StatementBreak({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class StatementCase(Statement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StatementCase',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Statement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Statement.copy(
-      self,
-      StatementCase if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StatementCase({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class StatementContinue(Statement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StatementContinue',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Statement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Statement.copy(
-      self,
-      StatementContinue if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StatementContinue({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 0
-    if isinstance(enclosing_loop, StatementDoWhile):
-      self.append(enclosing_loop[1].copy())
-      indent_save = context.indent
-      context.indent += '  '
-      self[0].translate(context)
-      context.indent = indent_save
-      element.set_text(self, 0, '{0:s}if '.format(context.indent))
-      element.set_text(
-        self,
-        0,
-        ':\n{0:s}  continue\n{1:s}break\n'.format(
-          context.indent,
-          context.indent
-        )
-      )
-    elif isinstance(enclosing_loop, StatementFor):
-      self.append(enclosing_loop[2].copy())
-      indent_save = context.indent
-      context.indent += '  '
-      self[0].translate(context)
-      context.indent = indent_save
-      element.set_text(self, 0, '')
-      element.set_text(self, 1, '{0:s}continue\n'.format(context.indent))
-    else:
-      element.set_text(self, 0, '{0:s}continue\n'.format(context.indent))
-
-class StatementDefault(Statement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StatementDefault',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Statement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Statement.copy(
-      self,
-      StatementDefault if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StatementDefault({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class StatementDoWhile(Statement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StatementDoWhile',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Statement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Statement.copy(
-      self,
-      StatementDoWhile if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StatementDoWhile({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 2
-    indent_save = context.indent
-    context.indent += '  '
-    enclosing_loop_save = context.enclosing_loop
-    context.enclosing_loop = self
-    self[0].translate(context)
-    context.enclosing_loop = enclosing_loop_save
-    self[1].translate(context)
-    context.indent = indent_save
-    element.set_text(self, 0, '{0:s}while True:\n'.format(context.indent))
-    element.set_text(self, 1, '{0:s}  if not ('.format(context.indent))
-    element.set_text(self, 2, '):\n{0:s}    break\n'.format(context.indent))
-
-class StatementExpression(Statement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StatementExpression',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Statement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Statement.copy(
-      self,
-      StatementExpression if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StatementExpression({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class StatementFor(Statement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StatementFor',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Statement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Statement.copy(
-      self,
-      StatementFor if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StatementFor({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class StatementGoto(Statement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StatementGoto',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Statement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Statement.copy(
-      self,
-      StatementGoto if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StatementGoto({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class StatementIf(Statement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StatementIf',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Statement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Statement.copy(
-      self,
-      StatementIf if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StatementIf({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 2
-    indent_save = context.indent
-    context.indent += '  '
-    self[0].translate(context)
-    self[1].translate(context)
-    context.indent = indent_save
-    element.set_text(self, 0, '{0:s}if '.format(context.indent))
-    element.set_text(self, 1, ':\n')
-    element.set_text(self, 2, '')
-
-class StatementIfElse(Statement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StatementIfElse',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Statement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Statement.copy(
-      self,
-      StatementIfElse if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StatementIfElse({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 3
-    indent_save = context.indent
-    context.indent += '  '
-    self[0].translate(context)
-    self[1].translate(context)
-    self[2].translate(context)
-    context.indent = indent_save
-    element.set_text(self, 0, '{0:s}if '.format(context.indent))
-    element.set_text(self, 1, ':\n')
-    element.set_text(self, 2, '{0:s}else:\n'.format(context.indent))
-    element.set_text(self, 3, '')
-
-class StatementLabel(Statement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StatementLabel',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Statement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Statement.copy(
-      self,
-      StatementLabel if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StatementLabel({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class StatementReturn(Statement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StatementReturn',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Statement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Statement.copy(
-      self,
-      StatementReturn if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StatementReturn({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class StatementSwitch(Statement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StatementSwitch',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Statement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Statement.copy(
-      self,
-      StatementSwitch if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StatementSwitch({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class StatementWhile(Statement):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StatementWhile',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Statement.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Statement.copy(
-      self,
-      StatementWhile if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StatementWhile({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def translate(self, context):
-    assert len(self) == 2
-    indent_save = context.indent
-    context.indent += '  '
-    self[0].translate(context)
-    enclosing_loop_save = context.enclosing_loop
-    context.enclosing_loop = self
-    self[1].translate(context)
-    context.enclosing_loop = enclosing_loop_save
-    context.indent = indent_save
-    element.set_text(self, 0, '{0:s}while '.format(context.indent))
-    element.set_text(self, 1, ':\n')
-    element.set_text(self, 2, '')
-
-class StaticAssertDeclaration(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StaticAssertDeclaration',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      StaticAssertDeclaration if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StaticAssertDeclaration({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class StorageClassSpecifier(Element):
-  # GENERATE ELEMENT(int n) BEGIN
-  def __init__(
-    self,
-    tag = 'StorageClassSpecifier',
-    attrib = {},
-    text = '',
-    children = [],
-    n = -1
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-    self.n = (
-      element.deserialize_int(n)
-    if isinstance(n, str) else
-      n
-    )
-  def serialize(self, ref_list):
-    Element.serialize(self, ref_list)
-    self.set('n', element.serialize_int(self.n))
-  def deserialize(self, ref_list):
-    Element.deserialize(self, ref_list)
-    self.n = element.deserialize_int(self.get('n', '-1'))
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      StorageClassSpecifier if factory is None else factory
-    )
-    result.n = self.n
-    return result
-  def repr_serialize(self, params):
-    Element.repr_serialize(self, params)
-    if self.n != -1:
-      params.append(
-        'n = {0:s}'.format(repr(self.n))
+      tag = 'AST_ExpressionLeftShiftAssignment',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionLeftShiftAssignment if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionLeftShiftAssignment({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionLessThan(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionLessThan',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionLessThan if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionLessThan({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionLessThanOrEqual(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionLessThanOrEqual',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionLessThanOrEqual if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionLessThanOrEqual({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionLogicalAnd(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionLogicalAnd',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionLogicalAnd if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionLogicalAnd({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 2
+      self[0].translate(context)
+      self[1].translate(context)
+      element.set_text(self, 0, '')
+      element.set_text(self, 1, ' and ')
+      element.set_text(self, 2, '')
+
+  class ExpressionLogicalNot(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionLogicalNot',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionLogicalNot if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionLogicalNot({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 1
+      self[0].translate(context)
+      element.set_text(self, 0, 'not ')
+      element.set_text(self, 1, '')
+
+  class ExpressionLogicalOr(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionLogicalOr',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionLogicalOr if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionLogicalOr({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 2
+      self[0].translate(context)
+      self[1].translate(context)
+      element.set_text(self, 0, '')
+      element.set_text(self, 1, ' or ')
+      element.set_text(self, 2, '')
+
+  class ExpressionMinus(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionMinus',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionMinus if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionMinus({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 1
+      self[0].translate(context)
+      element.set_text(self, 0, '-')
+      element.set_text(self, 1, '')
+
+  class ExpressionModulo(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionModulo',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionModulo if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionModulo({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionModuloAssignment(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionModuloAssignment',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionModuloAssignment if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionModuloAssignment({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionMultiply(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionMultiply',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionMultiply if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionMultiply({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionMultiplyAssignment(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionMultiplyAssignment',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionMultiplyAssignment if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionMultiplyAssignment({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionNotEqual(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionNotEqual',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionNotEqual if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionNotEqual({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionPlus(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionPlus',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionPlus if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionPlus({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 1
+      self[0].translate(context)
+      element.set_text(self, 0, '+')
+      element.set_text(self, 1, '')
+
+  class ExpressionPostDecrement(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionPostDecrement',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionPostDecrement if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionPostDecrement({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 1
+      self[0].translate(context)
+      element.set_text(self, 0, '')
+      element.set_text(self, 1, ' -= 1')
+
+  class ExpressionPostIncrement(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionPostIncrement',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionPostIncrement if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionPostIncrement({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 1
+      self[0].translate(context)
+      element.set_text(self, 0, '')
+      element.set_text(self, 1, ' += 1')
+
+  class ExpressionPreDecrement(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionPreDecrement',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionPreDecrement if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionPreDecrement({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 1
+      self[0].translate(context)
+      element.set_text(self, 0, '')
+      element.set_text(self, 1, ' -= 1')
+
+  class ExpressionPreIncrement(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionPreIncrement',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionPreIncrement if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionPreIncrement({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 1
+      self[0].translate(context)
+      element.set_text(self, 0, '')
+      element.set_text(self, 1, ' += 1')
+
+  class ExpressionRightShiftAssignment(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionRightShiftAssignment',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionRightShiftAssignment if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionRightShiftAssignment({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionShiftLeft(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionShiftLeft',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionShiftLeft if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionShiftLeft({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionShiftRight(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionShiftRight',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionShiftRight if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionShiftRight({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionSizeOfExpression(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionSizeOfExpression',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionSizeOfExpression if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionSizeOfExpression({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionSizeOfType(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionSizeOfType',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionSizeOfType if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionSizeOfType({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionStringLiteral(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionStringLiteral',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionStringLiteral if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionStringLiteral({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      element.set_text(self, 0, '"')
+      for i in range(1, len(self)):
+        element.set_text(self, i, '')
+      element.set_text(self, len(self), '"')
+
+  class ExpressionSubtract(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionSubtract',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionSubtract if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionSubtract({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ExpressionSubtractAssignment(Expression):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ExpressionSubtractAssignment',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Expression.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Expression.copy(
+        self,
+        ExpressionSubtractAssignment if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ExpressionSubtractAssignment({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class FunctionDefinition(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_FunctionDefinition',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        FunctionDefinition if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.FunctionDefinition({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class FunctionSpecifier(Element):
+    # GENERATE ELEMENT(int n) BEGIN
+    def __init__(
+      self,
+      tag = 'AST_FunctionSpecifier',
+      attrib = {},
+      text = '',
+      children = [],
+      n = -1
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+      self.n = (
+        element.deserialize_int(n)
+      if isinstance(n, str) else
+        n
+      )
+    def serialize(self, ref_list):
+      AST.Element.serialize(self, ref_list)
+      self.set('n', element.serialize_int(self.n))
+    def deserialize(self, ref_list):
+      AST.Element.deserialize(self, ref_list)
+      self.n = element.deserialize_int(self.get('n', '-1'))
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        FunctionSpecifier if factory is None else factory
+      )
+      result.n = self.n
+      return result
+    def repr_serialize(self, params):
+      AST.Element.repr_serialize(self, params)
+      if self.n != -1:
+        params.append(
+          'n = {0:s}'.format(repr(self.n))
+        )
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.FunctionSpecifier({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class GenericAssociation(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_GenericAssociation',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        GenericAssociation if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.GenericAssociation({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class GenericAssociationList(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_GenericAssociationList',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        GenericAssociationList if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.GenericAssociationList({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class GenericSelection(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_GenericSelection',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        GenericSelection if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.GenericSelection({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class IdentifierEmpty(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_IdentifierEmpty',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        IdentifierEmpty if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.IdentifierEmpty({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class IdentifierList(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_IdentifierList',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        IdentifierList if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.IdentifierList({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class InitDeclarator(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_InitDeclarator',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        InitDeclarator if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.InitDeclarator({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class InitDeclaratorList(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_InitDeclaratorList',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        InitDeclaratorList if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.InitDeclaratorList({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ParameterDeclaration(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ParameterDeclaration',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        ParameterDeclaration if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ParameterDeclaration({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class ParameterDeclarationList(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_ParameterDeclarationList',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        ParameterDeclarationList if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.ParameterDeclarationList({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class SpecifierQualifierList(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_SpecifierQualifierList',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        SpecifierQualifierList if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.SpecifierQualifierList({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class Statement(DeclarationOrStatement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_Statement',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.DeclarationOrStatement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.DeclarationOrStatement.copy(
+        self,
+        Statement if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.Statement({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class StatementBlock(Statement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StatementBlock',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Statement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Statement.copy(
+        self,
+        StatementBlock if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StatementBlock({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 1
+      self[0].translate(context)
+      element.set_text(self, 0, '')
+      element.set_text(self, 1, '')
+
+  class StatementBreak(Statement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StatementBreak',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Statement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Statement.copy(
+        self,
+        StatementBreak if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StatementBreak({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class StatementCase(Statement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StatementCase',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Statement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Statement.copy(
+        self,
+        StatementCase if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StatementCase({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class StatementContinue(Statement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StatementContinue',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Statement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Statement.copy(
+        self,
+        StatementContinue if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StatementContinue({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 0
+      if isinstance(enclosing_loop, StatementDoWhile):
+        self.append(enclosing_loop[1].copy())
+        indent_save = context.indent
+        context.indent += '  '
+        self[0].translate(context)
+        context.indent = indent_save
+        element.set_text(self, 0, '{0:s}if '.format(context.indent))
+        element.set_text(
+          self,
+          0,
+          ':\n{0:s}  continue\n{1:s}break\n'.format(
+            context.indent,
+            context.indent
+          )
+        )
+      elif isinstance(enclosing_loop, StatementFor):
+        self.append(enclosing_loop[2].copy())
+        indent_save = context.indent
+        context.indent += '  '
+        self[0].translate(context)
+        context.indent = indent_save
+        element.set_text(self, 0, '')
+        element.set_text(self, 1, '{0:s}continue\n'.format(context.indent))
+      else:
+        element.set_text(self, 0, '{0:s}continue\n'.format(context.indent))
+
+  class StatementDefault(Statement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StatementDefault',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Statement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Statement.copy(
+        self,
+        StatementDefault if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StatementDefault({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class StatementDoWhile(Statement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StatementDoWhile',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Statement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Statement.copy(
+        self,
+        StatementDoWhile if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StatementDoWhile({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 2
+      indent_save = context.indent
+      context.indent += '  '
+      enclosing_loop_save = context.enclosing_loop
+      context.enclosing_loop = self
+      self[0].translate(context)
+      context.enclosing_loop = enclosing_loop_save
+      self[1].translate(context)
+      context.indent = indent_save
+      element.set_text(self, 0, '{0:s}while True:\n'.format(context.indent))
+      element.set_text(self, 1, '{0:s}  if not ('.format(context.indent))
+      element.set_text(self, 2, '):\n{0:s}    break\n'.format(context.indent))
+
+  class StatementExpression(Statement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StatementExpression',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Statement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Statement.copy(
+        self,
+        StatementExpression if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StatementExpression({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class StatementFor(Statement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StatementFor',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Statement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Statement.copy(
+        self,
+        StatementFor if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StatementFor({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class StatementGoto(Statement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StatementGoto',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Statement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Statement.copy(
+        self,
+        StatementGoto if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StatementGoto({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class StatementIf(Statement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StatementIf',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Statement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Statement.copy(
+        self,
+        StatementIf if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StatementIf({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 2
+      indent_save = context.indent
+      context.indent += '  '
+      self[0].translate(context)
+      self[1].translate(context)
+      context.indent = indent_save
+      element.set_text(self, 0, '{0:s}if '.format(context.indent))
+      element.set_text(self, 1, ':\n')
+      element.set_text(self, 2, '')
+
+  class StatementIfElse(Statement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StatementIfElse',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Statement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Statement.copy(
+        self,
+        StatementIfElse if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StatementIfElse({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 3
+      indent_save = context.indent
+      context.indent += '  '
+      self[0].translate(context)
+      self[1].translate(context)
+      self[2].translate(context)
+      context.indent = indent_save
+      element.set_text(self, 0, '{0:s}if '.format(context.indent))
+      element.set_text(self, 1, ':\n')
+      element.set_text(self, 2, '{0:s}else:\n'.format(context.indent))
+      element.set_text(self, 3, '')
+
+  class StatementLabel(Statement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StatementLabel',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Statement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Statement.copy(
+        self,
+        StatementLabel if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StatementLabel({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class StatementReturn(Statement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StatementReturn',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Statement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Statement.copy(
+        self,
+        StatementReturn if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StatementReturn({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class StatementSwitch(Statement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StatementSwitch',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Statement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Statement.copy(
+        self,
+        StatementSwitch if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StatementSwitch({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class StatementWhile(Statement):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StatementWhile',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Statement.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Statement.copy(
+        self,
+        StatementWhile if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StatementWhile({0:s})'.format(', '.join(params))
+    # GENERATE END
+    def translate(self, context):
+      assert len(self) == 2
+      indent_save = context.indent
+      context.indent += '  '
+      self[0].translate(context)
+      enclosing_loop_save = context.enclosing_loop
+      context.enclosing_loop = self
+      self[1].translate(context)
+      context.enclosing_loop = enclosing_loop_save
+      context.indent = indent_save
+      element.set_text(self, 0, '{0:s}while '.format(context.indent))
+      element.set_text(self, 1, ':\n')
+      element.set_text(self, 2, '')
+
+  class StaticAssertDeclaration(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StaticAssertDeclaration',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        StaticAssertDeclaration if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StaticAssertDeclaration({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class StorageClassSpecifier(Element):
+    # GENERATE ELEMENT(int n) BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StorageClassSpecifier',
+      attrib = {},
+      text = '',
+      children = [],
+      n = -1
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+      self.n = (
+        element.deserialize_int(n)
+      if isinstance(n, str) else
+        n
+      )
+    def serialize(self, ref_list):
+      AST.Element.serialize(self, ref_list)
+      self.set('n', element.serialize_int(self.n))
+    def deserialize(self, ref_list):
+      AST.Element.deserialize(self, ref_list)
+      self.n = element.deserialize_int(self.get('n', '-1'))
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        StorageClassSpecifier if factory is None else factory
+      )
+      result.n = self.n
+      return result
+    def repr_serialize(self, params):
+      AST.Element.repr_serialize(self, params)
+      if self.n != -1:
+        params.append(
+          'n = {0:s}'.format(repr(self.n))
+        )
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StorageClassSpecifier({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class StructDeclaration(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StructDeclaration',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        StructDeclaration if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StructDeclaration({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class StructDeclarationList(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StructDeclarationList',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        StructDeclarationList if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StructDeclarationList({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class StructDeclarator(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StructDeclarator',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        StructDeclarator if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StructDeclarator({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class StructDeclaratorList(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StructDeclaratorList',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
       )
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StorageClassSpecifier({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class StructDeclaration(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StructDeclaration',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      StructDeclaration if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StructDeclaration({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class StructDeclarationList(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StructDeclarationList',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      StructDeclarationList if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StructDeclarationList({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class StructDeclarator(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StructDeclarator',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      StructDeclarator if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StructDeclarator({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class StructDeclaratorList(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StructDeclaratorList',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      StructDeclaratorList if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StructDeclaratorList({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class StructSpecifier(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'StructSpecifier',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      StructSpecifier if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.StructSpecifier({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class TypeName(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'TypeName',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      TypeName if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.TypeName({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class TypeQualifier(Element):
-  # GENERATE ELEMENT(int n) BEGIN
-  def __init__(
-    self,
-    tag = 'TypeQualifier',
-    attrib = {},
-    text = '',
-    children = [],
-    n = -1
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-    self.n = (
-      element.deserialize_int(n)
-    if isinstance(n, str) else
-      n
-    )
-  def serialize(self, ref_list):
-    Element.serialize(self, ref_list)
-    self.set('n', element.serialize_int(self.n))
-  def deserialize(self, ref_list):
-    Element.deserialize(self, ref_list)
-    self.n = element.deserialize_int(self.get('n', '-1'))
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      TypeQualifier if factory is None else factory
-    )
-    result.n = self.n
-    return result
-  def repr_serialize(self, params):
-    Element.repr_serialize(self, params)
-    if self.n != -1:
-      params.append(
-        'n = {0:s}'.format(repr(self.n))
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        StructDeclaratorList if factory is None else factory
       )
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.TypeQualifier({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class TypeQualifierList(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'TypeQualifierList',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      TypeQualifierList if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.TypeQualifierList({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class TypeQualifierOrStaticList(Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'TypeQualifierOrStaticList',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      TypeQualifierOrStaticList if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.TypeQualifierOrStaticList({0:s})'.format(', '.join(params))
-  # GENERATE END
-
-class TypeSpecifier(Element):
-  # GENERATE ELEMENT(int n) BEGIN
-  def __init__(
-    self,
-    tag = 'TypeSpecifier',
-    attrib = {},
-    text = '',
-    children = [],
-    n = -1
-  ):
-    Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-    self.n = (
-      element.deserialize_int(n)
-    if isinstance(n, str) else
-      n
-    )
-  def serialize(self, ref_list):
-    Element.serialize(self, ref_list)
-    self.set('n', element.serialize_int(self.n))
-  def deserialize(self, ref_list):
-    Element.deserialize(self, ref_list)
-    self.n = element.deserialize_int(self.get('n', '-1'))
-  def copy(self, factory = None):
-    result = Element.copy(
-      self,
-      TypeSpecifier if factory is None else factory
-    )
-    result.n = self.n
-    return result
-  def repr_serialize(self, params):
-    Element.repr_serialize(self, params)
-    if self.n != -1:
-      params.append(
-        'n = {0:s}'.format(repr(self.n))
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StructDeclaratorList({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class StructSpecifier(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_StructSpecifier',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
       )
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'ast.TypeSpecifier({0:s})'.format(', '.join(params))
-  # GENERATE END
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        StructSpecifier if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.StructSpecifier({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class TypeName(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_TypeName',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        TypeName if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.TypeName({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class TypeQualifier(Element):
+    # GENERATE ELEMENT(int n) BEGIN
+    def __init__(
+      self,
+      tag = 'AST_TypeQualifier',
+      attrib = {},
+      text = '',
+      children = [],
+      n = -1
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+      self.n = (
+        element.deserialize_int(n)
+      if isinstance(n, str) else
+        n
+      )
+    def serialize(self, ref_list):
+      AST.Element.serialize(self, ref_list)
+      self.set('n', element.serialize_int(self.n))
+    def deserialize(self, ref_list):
+      AST.Element.deserialize(self, ref_list)
+      self.n = element.deserialize_int(self.get('n', '-1'))
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        TypeQualifier if factory is None else factory
+      )
+      result.n = self.n
+      return result
+    def repr_serialize(self, params):
+      AST.Element.repr_serialize(self, params)
+      if self.n != -1:
+        params.append(
+          'n = {0:s}'.format(repr(self.n))
+        )
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.TypeQualifier({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class TypeQualifierList(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_TypeQualifierList',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        TypeQualifierList if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.TypeQualifierList({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class TypeQualifierOrStaticList(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_TypeQualifierOrStaticList',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        TypeQualifierOrStaticList if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.TypeQualifierOrStaticList({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class TypeSpecifier(Element):
+    # GENERATE ELEMENT(int n) BEGIN
+    def __init__(
+      self,
+      tag = 'AST_TypeSpecifier',
+      attrib = {},
+      text = '',
+      children = [],
+      n = -1
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+      self.n = (
+        element.deserialize_int(n)
+      if isinstance(n, str) else
+        n
+      )
+    def serialize(self, ref_list):
+      AST.Element.serialize(self, ref_list)
+      self.set('n', element.serialize_int(self.n))
+    def deserialize(self, ref_list):
+      AST.Element.deserialize(self, ref_list)
+      self.n = element.deserialize_int(self.get('n', '-1'))
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        TypeSpecifier if factory is None else factory
+      )
+      result.n = self.n
+      return result
+    def repr_serialize(self, params):
+      AST.Element.repr_serialize(self, params)
+      if self.n != -1:
+        params.append(
+          'n = {0:s}'.format(repr(self.n))
+        )
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.TypeSpecifier({0:s})'.format(', '.join(params))
+    # GENERATE END
+
+  class UnionSpecifier(Element):
+    # GENERATE ELEMENT() BEGIN
+    def __init__(
+      self,
+      tag = 'AST_UnionSpecifier',
+      attrib = {},
+      text = '',
+      children = []
+    ):
+      AST.Element.__init__(
+        self,
+        tag,
+        attrib,
+        text,
+        children
+      )
+    def copy(self, factory = None):
+      result = AST.Element.copy(
+        self,
+        UnionSpecifier if factory is None else factory
+      )
+      return result
+    def __repr__(self):
+      params = []
+      self.repr_serialize(params)
+      return 'ast.AST.UnionSpecifier({0:s})'.format(', '.join(params))
+    # GENERATE END
 
-class UnionSpecifier(Element):
   # GENERATE ELEMENT() BEGIN
   def __init__(
     self,
-    tag = 'UnionSpecifier',
+    tag = 'AST',
     attrib = {},
     text = '',
     children = []
   ):
-    Element.__init__(
+    element.Element.__init__(
       self,
       tag,
       attrib,
@@ -4016,149 +4044,150 @@ class UnionSpecifier(Element):
       children
     )
   def copy(self, factory = None):
-    result = Element.copy(
+    result = element.Element.copy(
       self,
-      UnionSpecifier if factory is None else factory
+      AST if factory is None else factory
     )
     return result
   def __repr__(self):
     params = []
     self.repr_serialize(params)
-    return 'ast.UnionSpecifier({0:s})'.format(', '.join(params))
+    return 'ast.AST({0:s})'.format(', '.join(params))
   # GENERATE END
 
 # GENERATE FACTORY(element.Element) BEGIN
 tag_to_class = {
-  'Element': Element,
-  'DeclarationOrStatement': DeclarationOrStatement,
-  'AlignAsExpression': AlignAsExpression,
-  'AlignAsType': AlignAsType,
-  'ArgumentExpressionList': ArgumentExpressionList,
-  'BlockItemList': BlockItemList,
-  'CommaEllipsis': CommaEllipsis,
-  'CommaEllipsisEmpty': CommaEllipsisEmpty,
-  'Declaration': Declaration,
-  'DeclarationList': DeclarationList,
-  'DeclarationSpecifierList': DeclarationSpecifierList,
-  'Declarator': Declarator,
-  'DeclaratorAbstract': DeclaratorAbstract,
-  'DeclaratorArray': DeclaratorArray,
-  'DeclaratorEmpty': DeclaratorEmpty,
-  'DeclaratorFunction': DeclaratorFunction,
-  'DeclaratorFunctionOldStyle': DeclaratorFunctionOldStyle,
-  'DeclaratorIdentifier': DeclaratorIdentifier,
-  'DeclaratorPointer': DeclaratorPointer,
-  'DefaultTypeName': DefaultTypeName,
-  'DesignatorField': DesignatorField,
-  'DesignatorIndex': DesignatorIndex,
-  'DesignatorInitializer': DesignatorInitializer,
-  'DesignatorInitializerList': DesignatorInitializerList,
-  'DesignatorList': DesignatorList,
-  'EnumSpecifier': EnumSpecifier,
-  'Enumerator': Enumerator,
-  'EnumeratorList': EnumeratorList,
-  'EqualsInitializerEmpty': EqualsInitializerEmpty,
-  'Expression': Expression,
-  'ExpressionAdd': ExpressionAdd,
-  'ExpressionAddAssignment': ExpressionAddAssignment,
-  'ExpressionAddressOf': ExpressionAddressOf,
-  'ExpressionAlignOfType': ExpressionAlignOfType,
-  'ExpressionArray': ExpressionArray,
-  'ExpressionAssignment': ExpressionAssignment,
-  'ExpressionAsterisk': ExpressionAsterisk,
-  'ExpressionBitwiseAnd': ExpressionBitwiseAnd,
-  'ExpressionBitwiseAndAssignment': ExpressionBitwiseAndAssignment,
-  'ExpressionBitwiseNot': ExpressionBitwiseNot,
-  'ExpressionBitwiseOr': ExpressionBitwiseOr,
-  'ExpressionBitwiseOrAssignment': ExpressionBitwiseOrAssignment,
-  'ExpressionCall': ExpressionCall,
-  'ExpressionCast': ExpressionCast,
-  'ExpressionCharConstant': ExpressionCharConstant,
-  'ExpressionComma': ExpressionComma,
-  'ExpressionConditional': ExpressionConditional,
-  'ExpressionDereference': ExpressionDereference,
-  'ExpressionDivide': ExpressionDivide,
-  'ExpressionDivideAssignment': ExpressionDivideAssignment,
-  'ExpressionEmpty': ExpressionEmpty,
-  'ExpressionEqual': ExpressionEqual,
-  'ExpressionExclusiveOr': ExpressionExclusiveOr,
-  'ExpressionExclusiveOrAssignment': ExpressionExclusiveOrAssignment,
-  'ExpressionField': ExpressionField,
-  'ExpressionFieldDereference': ExpressionFieldDereference,
-  'ExpressionFloatLiteral': ExpressionFloatLiteral,
-  'ExpressionFunctionName': ExpressionFunctionName,
-  'ExpressionGreaterThan': ExpressionGreaterThan,
-  'ExpressionGreaterThanOrEqual': ExpressionGreaterThanOrEqual,
-  'ExpressionIdentifier': ExpressionIdentifier,
-  'ExpressionIndex': ExpressionIndex,
-  'ExpressionIntLiteral': ExpressionIntLiteral,
-  'Identifier': Identifier,
-  'ExpressionLeftShiftAssignment': ExpressionLeftShiftAssignment,
-  'ExpressionLessThan': ExpressionLessThan,
-  'ExpressionLessThanOrEqual': ExpressionLessThanOrEqual,
-  'ExpressionLogicalAnd': ExpressionLogicalAnd,
-  'ExpressionLogicalNot': ExpressionLogicalNot,
-  'ExpressionLogicalOr': ExpressionLogicalOr,
-  'ExpressionMinus': ExpressionMinus,
-  'ExpressionModulo': ExpressionModulo,
-  'ExpressionModuloAssignment': ExpressionModuloAssignment,
-  'ExpressionMultiply': ExpressionMultiply,
-  'ExpressionMultiplyAssignment': ExpressionMultiplyAssignment,
-  'ExpressionNotEqual': ExpressionNotEqual,
-  'ExpressionPlus': ExpressionPlus,
-  'ExpressionPostDecrement': ExpressionPostDecrement,
-  'ExpressionPostIncrement': ExpressionPostIncrement,
-  'ExpressionPreDecrement': ExpressionPreDecrement,
-  'ExpressionPreIncrement': ExpressionPreIncrement,
-  'ExpressionRightShiftAssignment': ExpressionRightShiftAssignment,
-  'ExpressionShiftLeft': ExpressionShiftLeft,
-  'ExpressionShiftRight': ExpressionShiftRight,
-  'ExpressionSizeOfExpression': ExpressionSizeOfExpression,
-  'ExpressionSizeOfType': ExpressionSizeOfType,
-  'ExpressionStringLiteral': ExpressionStringLiteral,
-  'ExpressionSubtract': ExpressionSubtract,
-  'ExpressionSubtractAssignment': ExpressionSubtractAssignment,
-  'FunctionDefinition': FunctionDefinition,
-  'FunctionSpecifier': FunctionSpecifier,
-  'GenericAssociation': GenericAssociation,
-  'GenericAssociationList': GenericAssociationList,
-  'GenericSelection': GenericSelection,
-  'IdentifierEmpty': IdentifierEmpty,
-  'IdentifierList': IdentifierList,
-  'InitDeclarator': InitDeclarator,
-  'InitDeclaratorList': InitDeclaratorList,
-  'ParameterDeclaration': ParameterDeclaration,
-  'ParameterDeclarationList': ParameterDeclarationList,
-  'SpecifierQualifierList': SpecifierQualifierList,
-  'Statement': Statement,
-  'StatementBlock': StatementBlock,
-  'StatementBreak': StatementBreak,
-  'StatementCase': StatementCase,
-  'StatementContinue': StatementContinue,
-  'StatementDefault': StatementDefault,
-  'StatementDoWhile': StatementDoWhile,
-  'StatementExpression': StatementExpression,
-  'StatementFor': StatementFor,
-  'StatementGoto': StatementGoto,
-  'StatementIf': StatementIf,
-  'StatementIfElse': StatementIfElse,
-  'StatementLabel': StatementLabel,
-  'StatementReturn': StatementReturn,
-  'StatementSwitch': StatementSwitch,
-  'StatementWhile': StatementWhile,
-  'StaticAssertDeclaration': StaticAssertDeclaration,
-  'StorageClassSpecifier': StorageClassSpecifier,
-  'StructDeclaration': StructDeclaration,
-  'StructDeclarationList': StructDeclarationList,
-  'StructDeclarator': StructDeclarator,
-  'StructDeclaratorList': StructDeclaratorList,
-  'StructSpecifier': StructSpecifier,
-  'TypeName': TypeName,
-  'TypeQualifier': TypeQualifier,
-  'TypeQualifierList': TypeQualifierList,
-  'TypeQualifierOrStaticList': TypeQualifierOrStaticList,
-  'TypeSpecifier': TypeSpecifier,
-  'UnionSpecifier': UnionSpecifier
+  'AST': AST,
+  'AST_Element': AST.Element,
+  'AST_DeclarationOrStatement': AST.DeclarationOrStatement,
+  'AST_AlignAsExpression': AST.AlignAsExpression,
+  'AST_AlignAsType': AST.AlignAsType,
+  'AST_ArgumentExpressionList': AST.ArgumentExpressionList,
+  'AST_BlockItemList': AST.BlockItemList,
+  'AST_CommaEllipsis': AST.CommaEllipsis,
+  'AST_CommaEllipsisEmpty': AST.CommaEllipsisEmpty,
+  'AST_Declaration': AST.Declaration,
+  'AST_DeclarationList': AST.DeclarationList,
+  'AST_DeclarationSpecifierList': AST.DeclarationSpecifierList,
+  'AST_Declarator': AST.Declarator,
+  'AST_DeclaratorAbstract': AST.DeclaratorAbstract,
+  'AST_DeclaratorArray': AST.DeclaratorArray,
+  'AST_DeclaratorEmpty': AST.DeclaratorEmpty,
+  'AST_DeclaratorFunction': AST.DeclaratorFunction,
+  'AST_DeclaratorFunctionOldStyle': AST.DeclaratorFunctionOldStyle,
+  'AST_DeclaratorIdentifier': AST.DeclaratorIdentifier,
+  'AST_DeclaratorPointer': AST.DeclaratorPointer,
+  'AST_DefaultTypeName': AST.DefaultTypeName,
+  'AST_DesignatorField': AST.DesignatorField,
+  'AST_DesignatorIndex': AST.DesignatorIndex,
+  'AST_DesignatorInitializer': AST.DesignatorInitializer,
+  'AST_DesignatorInitializerList': AST.DesignatorInitializerList,
+  'AST_DesignatorList': AST.DesignatorList,
+  'AST_EnumSpecifier': AST.EnumSpecifier,
+  'AST_Enumerator': AST.Enumerator,
+  'AST_EnumeratorList': AST.EnumeratorList,
+  'AST_EqualsInitializerEmpty': AST.EqualsInitializerEmpty,
+  'AST_Expression': AST.Expression,
+  'AST_ExpressionAdd': AST.ExpressionAdd,
+  'AST_ExpressionAddAssignment': AST.ExpressionAddAssignment,
+  'AST_ExpressionAddressOf': AST.ExpressionAddressOf,
+  'AST_ExpressionAlignOfType': AST.ExpressionAlignOfType,
+  'AST_ExpressionArray': AST.ExpressionArray,
+  'AST_ExpressionAssignment': AST.ExpressionAssignment,
+  'AST_ExpressionAsterisk': AST.ExpressionAsterisk,
+  'AST_ExpressionBitwiseAnd': AST.ExpressionBitwiseAnd,
+  'AST_ExpressionBitwiseAndAssignment': AST.ExpressionBitwiseAndAssignment,
+  'AST_ExpressionBitwiseNot': AST.ExpressionBitwiseNot,
+  'AST_ExpressionBitwiseOr': AST.ExpressionBitwiseOr,
+  'AST_ExpressionBitwiseOrAssignment': AST.ExpressionBitwiseOrAssignment,
+  'AST_ExpressionCall': AST.ExpressionCall,
+  'AST_ExpressionCast': AST.ExpressionCast,
+  'AST_ExpressionCharConstant': AST.ExpressionCharConstant,
+  'AST_ExpressionComma': AST.ExpressionComma,
+  'AST_ExpressionConditional': AST.ExpressionConditional,
+  'AST_ExpressionDereference': AST.ExpressionDereference,
+  'AST_ExpressionDivide': AST.ExpressionDivide,
+  'AST_ExpressionDivideAssignment': AST.ExpressionDivideAssignment,
+  'AST_ExpressionEmpty': AST.ExpressionEmpty,
+  'AST_ExpressionEqual': AST.ExpressionEqual,
+  'AST_ExpressionExclusiveOr': AST.ExpressionExclusiveOr,
+  'AST_ExpressionExclusiveOrAssignment': AST.ExpressionExclusiveOrAssignment,
+  'AST_ExpressionField': AST.ExpressionField,
+  'AST_ExpressionFieldDereference': AST.ExpressionFieldDereference,
+  'AST_ExpressionFloatLiteral': AST.ExpressionFloatLiteral,
+  'AST_ExpressionFunctionName': AST.ExpressionFunctionName,
+  'AST_ExpressionGreaterThan': AST.ExpressionGreaterThan,
+  'AST_ExpressionGreaterThanOrEqual': AST.ExpressionGreaterThanOrEqual,
+  'AST_ExpressionIdentifier': AST.ExpressionIdentifier,
+  'AST_ExpressionIndex': AST.ExpressionIndex,
+  'AST_ExpressionIntLiteral': AST.ExpressionIntLiteral,
+  'AST_Identifier': AST.Identifier,
+  'AST_ExpressionLeftShiftAssignment': AST.ExpressionLeftShiftAssignment,
+  'AST_ExpressionLessThan': AST.ExpressionLessThan,
+  'AST_ExpressionLessThanOrEqual': AST.ExpressionLessThanOrEqual,
+  'AST_ExpressionLogicalAnd': AST.ExpressionLogicalAnd,
+  'AST_ExpressionLogicalNot': AST.ExpressionLogicalNot,
+  'AST_ExpressionLogicalOr': AST.ExpressionLogicalOr,
+  'AST_ExpressionMinus': AST.ExpressionMinus,
+  'AST_ExpressionModulo': AST.ExpressionModulo,
+  'AST_ExpressionModuloAssignment': AST.ExpressionModuloAssignment,
+  'AST_ExpressionMultiply': AST.ExpressionMultiply,
+  'AST_ExpressionMultiplyAssignment': AST.ExpressionMultiplyAssignment,
+  'AST_ExpressionNotEqual': AST.ExpressionNotEqual,
+  'AST_ExpressionPlus': AST.ExpressionPlus,
+  'AST_ExpressionPostDecrement': AST.ExpressionPostDecrement,
+  'AST_ExpressionPostIncrement': AST.ExpressionPostIncrement,
+  'AST_ExpressionPreDecrement': AST.ExpressionPreDecrement,
+  'AST_ExpressionPreIncrement': AST.ExpressionPreIncrement,
+  'AST_ExpressionRightShiftAssignment': AST.ExpressionRightShiftAssignment,
+  'AST_ExpressionShiftLeft': AST.ExpressionShiftLeft,
+  'AST_ExpressionShiftRight': AST.ExpressionShiftRight,
+  'AST_ExpressionSizeOfExpression': AST.ExpressionSizeOfExpression,
+  'AST_ExpressionSizeOfType': AST.ExpressionSizeOfType,
+  'AST_ExpressionStringLiteral': AST.ExpressionStringLiteral,
+  'AST_ExpressionSubtract': AST.ExpressionSubtract,
+  'AST_ExpressionSubtractAssignment': AST.ExpressionSubtractAssignment,
+  'AST_FunctionDefinition': AST.FunctionDefinition,
+  'AST_FunctionSpecifier': AST.FunctionSpecifier,
+  'AST_GenericAssociation': AST.GenericAssociation,
+  'AST_GenericAssociationList': AST.GenericAssociationList,
+  'AST_GenericSelection': AST.GenericSelection,
+  'AST_IdentifierEmpty': AST.IdentifierEmpty,
+  'AST_IdentifierList': AST.IdentifierList,
+  'AST_InitDeclarator': AST.InitDeclarator,
+  'AST_InitDeclaratorList': AST.InitDeclaratorList,
+  'AST_ParameterDeclaration': AST.ParameterDeclaration,
+  'AST_ParameterDeclarationList': AST.ParameterDeclarationList,
+  'AST_SpecifierQualifierList': AST.SpecifierQualifierList,
+  'AST_Statement': AST.Statement,
+  'AST_StatementBlock': AST.StatementBlock,
+  'AST_StatementBreak': AST.StatementBreak,
+  'AST_StatementCase': AST.StatementCase,
+  'AST_StatementContinue': AST.StatementContinue,
+  'AST_StatementDefault': AST.StatementDefault,
+  'AST_StatementDoWhile': AST.StatementDoWhile,
+  'AST_StatementExpression': AST.StatementExpression,
+  'AST_StatementFor': AST.StatementFor,
+  'AST_StatementGoto': AST.StatementGoto,
+  'AST_StatementIf': AST.StatementIf,
+  'AST_StatementIfElse': AST.StatementIfElse,
+  'AST_StatementLabel': AST.StatementLabel,
+  'AST_StatementReturn': AST.StatementReturn,
+  'AST_StatementSwitch': AST.StatementSwitch,
+  'AST_StatementWhile': AST.StatementWhile,
+  'AST_StaticAssertDeclaration': AST.StaticAssertDeclaration,
+  'AST_StorageClassSpecifier': AST.StorageClassSpecifier,
+  'AST_StructDeclaration': AST.StructDeclaration,
+  'AST_StructDeclarationList': AST.StructDeclarationList,
+  'AST_StructDeclarator': AST.StructDeclarator,
+  'AST_StructDeclaratorList': AST.StructDeclaratorList,
+  'AST_StructSpecifier': AST.StructSpecifier,
+  'AST_TypeName': AST.TypeName,
+  'AST_TypeQualifier': AST.TypeQualifier,
+  'AST_TypeQualifierList': AST.TypeQualifierList,
+  'AST_TypeQualifierOrStaticList': AST.TypeQualifierOrStaticList,
+  'AST_TypeSpecifier': AST.TypeSpecifier,
+  'AST_UnionSpecifier': AST.UnionSpecifier
 }
 def factory(tag, attrib = {}, *args, **kwargs):
   return tag_to_class.get(tag, element.Element)(tag, attrib, *args, **kwargs)
diff --git a/ast.sh b/ast.sh
index dd16e2d..2ba2388 100755 (executable)
--- a/ast.sh
+++ b/ast.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-if ./generate.py ast <ast.py >ast.py.new && ! diff -q ast.py ast.py.new
+if ./generate_ast.py ast <ast.py >ast.py.new && ! diff -q ast.py ast.py.new
 then
   mv ast.py.new ast.py
 else
diff --git a/bisect_set.py b/bisect_set.py
deleted file mode 100644 (file)
index 6ce1be9..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-# defines the alphabet size, set this to 0x11000 for unicode
-n_characters = 0x100
-
-def bisect_set_or(character_set0, character_set1):
-  # calculate union of the child sets
-  # we do this by calculating a series of breakpoints, at each breakpoint
-  # evaluating the "or" (max) of the even/odd truth values of each child,
-  # then making the output truth value even/odd by outputting if necessary
-  result = []
-  i = 0
-  j = 0
-  while True:
-    if i < len(character_set0):
-      k = character_set0[i]
-      if j < len(character_set1):
-        k = min(k, character_set1[j])
-    elif j < len(character_set1):
-      k = character_set1[j]
-    else:
-      break
-    if i < len(character_set0) and character_set0[i] == k:
-      i += 1
-    if j < len(character_set1) and character_set1[j] == k:
-      j += 1
-    if (len(result) & 1) != max(i & 1, j & 1):
-      result.append(k)
-  assert (i & 1) == 0 and (j & 1) == 0
-  return result
-
-def bisect_set_and(character_set0, character_set1):
-  # calculate intersection of the child sets
-  # we do this by calculating a series of breakpoints, at each breakpoint
-  # evaluating the "and" (min) of the even/odd truth values of each child,
-  # then making the output truth value even/odd by outputting if necessary
-  result = []
-  i = 0
-  j = 0
-  while True:
-    if i < len(character_set0):
-      k = character_set0[i]
-      if j < len(character_set1):
-        k = min(k, character_set1[j])
-    elif j < len(character_set1):
-      k = character_set1[j]
-    else:
-      break
-    if i < len(character_set0) and character_set0[i] == k:
-      i += 1
-    if j < len(character_set1) and character_set1[j] == k:
-      j += 1
-    if (len(result) & 1) != min(i & 1, j & 1):
-      result.append(k)
-  assert (i & 1) == 0 and (j & 1) == 0
-  return result
-
-def bisect_set_not(character_set):
-  # calculate complement of the child set
-  # if child set begins with [0], remove it, otherwise add [0] prefix
-  # if child set ends with [n_characters], remove it, otherwise add [n_characters] suffix
-  # the suffix part is not totally necessary, but makes sure length is even
-  # (the evenness is so that single character sets can always be [c, c + 1])
-  result = list(character_set)
-  if result[:1] == [0]:
-    del result[:1]
-  else:
-    result[:0] = [0]
-  if result[-1:] == [n_characters]:
-    del result[-1:]
-  else:
-    result.append(n_characters)
-  return result
diff --git a/dfa.py b/dfa.py
deleted file mode 100644 (file)
index 46f4cbe..0000000
--- a/dfa.py
+++ /dev/null
@@ -1,221 +0,0 @@
-import bisect
-import element
-import work
-import sys
-
-# defines the alphabet size, set this to 0x11000 for unicode
-n_characters = 0x100
-
-class DFA:
-  # transition classes:
-  # instructions to transform thread list from a multistate to next multistate
-  # (TRANSITION_POP, n)                        j += n
-  # (TRANSITION_DUP, n)                        threads0[j - n:j] = threads0[j:j + n]
-  #                                    j -= n
-  # (TRANSITION_MARK, n, mark_value)   threads0[j:j + n] = [
-  #                                      (i, mark, thread)
-  #                                      for thread in threads0[j:j + n]
-  #                                    ]
-  # (TRANSITION_MOVE, n)               threads1.extend(threads0[j:j + n])
-  #                                    j += n
-  # (TRANSITION_DEL, n)                        del threads1[-n:]
-
-  TRANSITION_POP = 0
-  TRANSITION_DUP = 1
-  TRANSITION_MARK = 2
-  TRANSITION_MOVE = 3
-  #TRANSITION_DEL = 4
-  def __init__(
-    self,
-    groups = [],
-    states = [([n_characters], [0], 0)],
-    actions = [(0, [])],
-    start_action = [] # can have multiple DFAs in same container
-  ):
-    # groups: list of group_desc
-    # group_desc: (tag, kwargs)
-    #   tag, kwargs will be passed to apply_markup() hence factory()
-    # states: list of state_desc
-    # state_desc: (list of breaks, list of action to do, accept_thread)
-    # actions: list of action_desc
-    # action_desc: (state to go to next, compiled transition to do first)
-    # accept_thread: which thread of thread list to use, -1 don't accept
-    self.groups = groups
-    self.states = states
-    self.actions = actions
-    self.start_action = start_action
-
-  def match_text(self, text, i, start_index = 0):
-    def transit(transition):
-      nonlocal threads0, threads1, prefix_slop # note: also uses i
-      j = prefix_slop
-      for trans in transition:
-        if trans[0] == DFA.TRANSITION_POP:
-          j += trans[1]
-        elif trans[0] == DFA.TRANSITION_DUP:
-          while j < trans[1]:
-            threads0[:0] = [None] * prefix_slop
-            threads1[:0] = [None] * prefix_slop
-            j += prefix_slop
-            prefix_slop *= 2
-          threads0[j - trans[1]:j] = threads0[j:j + trans[1]]
-          j -= trans[1]
-        elif trans[0] == DFA.TRANSITION_MARK:
-          threads0[j:j + trans[1]] = [
-            (i, trans[2], thread)
-            for thread in threads0[j:j + trans[1]]
-          ]
-        elif trans[0] == DFA.TRANSITION_MOVE:
-          threads1.extend(threads0[j:j + trans[1]])
-          j += trans[1]
-        #elif trans[0] == DFA.TRANSITION_DEL:
-        #  del threads1[-trans[1]:]
-        else:
-          assert False
-      assert j == len(threads0)
-      threads0, threads1 = threads1, threads0
-      del threads1[prefix_slop:]
-
-    threads0 = [None, None]
-    threads1 = [None]
-    prefix_slop = 1
-
-    action = self.start_action[start_index]
-    while action != -1:
-      state, transition = self.actions[action]
-      #print('i', i, 'action', action, 'state', state, 'transition', transition)
-      transit(transition)
-      if state == 0:
-        # there is only one match, which is complete
-        assert len(threads0) == prefix_slop + 1
-        return threads0[prefix_slop]
-      if i >= len(text):
-        # return best match we have, but not incomplete match
-        i = self.states[state][2]
-        return (None if i == -1 else threads0[prefix_slop + i])
-      action = self.states[state][1][
-        bisect.bisect_right(self.states[state][0], ord(text[i]))
-      ]
-      i += 1
-    return None
-
-  def match_yychunk(self, root, pos, off, yychunk_iter, start_index = 0):
-    if pos < 0:
-      pos, off = element.to_start_relative(root, pos, off)
-
-    def transit(transition):
-      nonlocal threads0, threads1, prefix_slop # note: also uses pos, off
-      j = prefix_slop
-      for trans in transition:
-        if trans[0] == DFA.TRANSITION_POP:
-          j += trans[1]
-        elif trans[0] == DFA.TRANSITION_DUP:
-          while j < trans[1]:
-            threads0[:0] = [None] * prefix_slop
-            threads1[:0] = [None] * prefix_slop
-            j += prefix_slop
-            prefix_slop *= 2
-          threads0[j - trans[1]:j] = threads0[j:j + trans[1]]
-          j -= trans[1]
-        elif trans[0] == DFA.TRANSITION_MARK:
-          threads0[j:j + trans[1]] = [
-            (pos, off, trans[2], thread)
-            for thread in threads0[j:j + trans[1]]
-          ]
-        elif trans[0] == DFA.TRANSITION_MOVE:
-          threads1.extend(threads0[j:j + trans[1]])
-          j += trans[1]
-        #elif trans[0] == DFA.TRANSITION_DEL:
-        #  del threads1[-trans[1]:]
-        else:
-          assert False
-      assert j == len(threads0)
-      threads0, threads1 = threads1, threads0
-      del threads1[prefix_slop:]
-
-    threads0 = [None, None]
-    threads1 = [None]
-    prefix_slop = 1
-
-    action = self.start_action[start_index]
-    text = element.get_text(root, pos)
-    while action != -1:
-      state, transition = self.actions[action]
-      transit(transition)
-      if state == 0:
-        # there is only one match, which is complete
-        assert len(threads0) == prefix_slop + 1
-        return threads0[prefix_slop]
-      while off >= len(text):
-        if pos < len(root):
-          pos += 1
-          off = 0
-        else:
-          try:
-            next(yychunk_iter)
-          except StopIteration:
-            # return best match we have, but not incomplete match
-            i = self.states[state][2]
-            return (None if i == -1 else threads0[prefix_slop + i])
-          text = element.get_text(root, pos)
-      #print(
-      #  'state {0:d} pos {1:d} off {2:d} text "{3:s}"'.format(
-      #    state,
-      #    pos,
-      #    off,
-      #    text.replace('\n', '$')
-      #  )
-      #)
-      action = self.states[state][1][
-        bisect.bisect_right(self.states[state][0], ord(text[off]))
-      ]
-      off += 1
-    return None
-
-  def yylex(self, root, pos, off, factory, yychunk_iter):
-    if pos < 0:
-      pos, off = element.to_start_relative(root, pos, off)
-
-    while True:
-      # note: pointers must be kept start relative during the below call,
-      # because it extends the following text by calling the yychunk_iter
-      thread = self.match_yychunk(root, pos, off, yychunk_iter)
-      if thread is None:
-        break
-      stack = []
-      while True:
-        pos, off, mark_value, thread = thread
-        group_index = mark_value >> 1
-        if (mark_value & 1) != 0:
-          end_pos, end_off = element.to_end_relative(root, pos, off)
-          stack.append((end_pos, end_off, group_index))
-        else:
-          end_pos, end_off, temp = stack.pop()
-          assert temp == group_index
-          if len(stack) == 0:
-            break
-          tag, kwargs = self.groups[group_index]
-          if tag != '':
-            work.apply_markup(
-              root,
-              pos,
-              off,
-              end_pos,
-              end_off,
-              factory,
-              tag,
-              **kwargs
-            )
-      # note: pointers must be kept end relative during the below call,
-      # because it modifies the preceding text by calling apply_markup()
-      yield end_pos, end_off, group_index
-      pos, off = element.to_start_relative(root, end_pos, end_off)
-
-  def __repr__(self):
-    return 'dfa.DFA({0:s}, {1:s}, {2:s}, {3:s})'.format(
-      repr(self.groups),
-      repr(self.states),
-      repr(self.actions),
-      repr(self.start_action)
-    )
index 13129c3..2121e08 100644 (file)
@@ -1,3 +1,19 @@
+# Copyright (C) 2018 Nick Downing <nick@ndcode.org>
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# 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; version 2.
+#
+# 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, write to the Free Software Foundation, Inc., 51
+# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
 import xml.etree.ElementTree
 
 class Element(xml.etree.ElementTree._Element_Py):
@@ -144,24 +160,10 @@ def set_text(root, i, text):
   else:
     root[i - 1].tail = text
 
-def to_end_relative(root, pos, off):
-  assert pos >= 0 and off >= 0
-  off -= len(get_text(root, pos))
-  pos -= len(root) + 1
-  return pos, off
-
-def to_start_relative(root, pos, off):
-  assert pos < 0 and off <= 0
-  pos += len(root) + 1
-  off += len(get_text(root, pos))
-  return pos, off
-
-def to_text(root):
-  return ''.join(
-    [
-      j
-      for i in range(len(root))
-      for j in [get_text(root, i), to_text(root[i])]
-    ] +
-    [get_text(root, len(root))]
-  )
+def concatenate(children, factory = Element, *args, **kwargs):
+  root = factory(*args, **kwargs)
+  for child in children:
+    i = len(root)
+    set_text(root, i, get_text(root, i) + get_text(child, 0))
+    root[i:] = child[:]
+  return root
similarity index 94%
rename from generate.py
rename to generate_ast.py
index f9a633b..5a7ae8b 100755 (executable)
@@ -1,5 +1,21 @@
 #!/usr/bin/env python3
 
+# Copyright (C) 2018 Nick Downing <nick@ndcode.org>
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# 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; version 2.
+#
+# 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, write to the Free Software Foundation, Inc., 51
+# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
 import re
 import sys
 
diff --git a/grammar.py b/grammar.py
deleted file mode 100644 (file)
index 81d30ef..0000000
+++ /dev/null
@@ -1,555 +0,0 @@
-import bisect
-import bisect_set
-import element
-import lr1
-import sys
-
-# defines the alphabet size, set this to 0x11000 for unicode
-n_characters = 0x100
-
-class Grammar(element.Element):
-  class Production(element.Element):
-    class Item(element.Element):
-      # GENERATE ELEMENT() BEGIN
-      def __init__(
-        self,
-        tag = 'Grammar_Production_Item',
-        attrib = {},
-        text = '',
-        children = []
-      ):
-        element.Element.__init__(
-          self,
-          tag,
-          attrib,
-          text,
-          children
-        )
-      def copy(self, factory = None):
-        result = element.Element.copy(
-          self,
-          Item if factory is None else factory
-        )
-        return result
-      def __repr__(self):
-        params = []
-        self.repr_serialize(params)
-        return 'grammar.Grammar.Production.Item({0:s})'.format(', '.join(params))
-      # GENERATE END
-      def post_process(self, name_to_character_sets, group_index):
-        raise NotImplementedException
-      def add_to_groups(self, groups):
-        raise NotImplementedException
-      def add_to_lr1_symbols(self, symbols, group_bounds):
-        raise NotImplementedException
-
-    class Group(Item):
-      class Attribute(element.Element):
-        # GENERATE ELEMENT(str name, str value) BEGIN
-        def __init__(
-          self,
-          tag = 'Grammar_Production_Group_Attribute',
-          attrib = {},
-          text = '',
-          children = [],
-          name = '',
-          value = ''
-        ):
-          element.Element.__init__(
-            self,
-            tag,
-            attrib,
-            text,
-            children
-          )
-          self.name = name
-          self.value = value
-        def serialize(self, ref_list):
-          element.Element.serialize(self, ref_list)
-          self.set('name', element.serialize_str(self.name))
-          self.set('value', element.serialize_str(self.value))
-        def deserialize(self, ref_list):
-          element.Element.deserialize(self, ref_list)
-          self.name = element.deserialize_str(self.get('name', ''))
-          self.value = element.deserialize_str(self.get('value', ''))
-        def copy(self, factory = None):
-          result = element.Element.copy(
-            self,
-            Attribute if factory is None else factory
-          )
-          result.name = self.name
-          result.value = self.value
-          return result
-        def repr_serialize(self, params):
-          element.Element.repr_serialize(self, params)
-          if self.name != '':
-            params.append(
-              'name = {0:s}'.format(repr(self.name))
-            )
-          if self.value != '':
-            params.append(
-              'value = {0:s}'.format(repr(self.value))
-            )
-        def __repr__(self):
-          params = []
-          self.repr_serialize(params)
-          return 'grammar.Grammar.Production.Group.Attribute({0:s})'.format(', '.join(params))
-        # GENERATE END
-
-      # GENERATE ELEMENT(int index, str name, list(ref) attributes) BEGIN
-      def __init__(
-        self,
-        tag = 'Grammar_Production_Group',
-        attrib = {},
-        text = '',
-        children = [],
-        index = -1,
-        name = '',
-        attributes = []
-      ):
-        Grammar.Production.Item.__init__(
-          self,
-          tag,
-          attrib,
-          text,
-          children
-        )
-        self.index = (
-          element.deserialize_int(index)
-        if isinstance(index, str) else
-          index
-        )
-        self.name = name
-        self.attributes = attributes
-      def serialize(self, ref_list):
-        Grammar.Production.Item.serialize(self, ref_list)
-        self.set('index', element.serialize_int(self.index))
-        self.set('name', element.serialize_str(self.name))
-        self.set(
-          'attributes',
-          ' '.join([element.serialize_ref(i, ref_list) for i in self.attributes])
-        )
-      def deserialize(self, ref_list):
-        Grammar.Production.Item.deserialize(self, ref_list)
-        self.index = element.deserialize_int(self.get('index', '-1'))
-        self.name = element.deserialize_str(self.get('name', ''))
-        self.attributes = [
-          element.deserialize_ref(i, ref_list)
-          for i in self.get('attributes', '').split()
-        ]
-      def copy(self, factory = None):
-        result = Grammar.Production.Item.copy(
-          self,
-          Group if factory is None else factory
-        )
-        result.index = self.index
-        result.name = self.name
-        result.attributes = self.attributes
-        return result
-      def repr_serialize(self, params):
-        Grammar.Production.Item.repr_serialize(self, params)
-        if self.index != -1:
-          params.append(
-            'index = {0:s}'.format(repr(self.index))
-          )
-        if self.name != '':
-          params.append(
-            'name = {0:s}'.format(repr(self.name))
-          )
-        if len(self.attributes):
-          params.append(
-            'attributes = [{0:s}]'.format(
-              ', '.join([repr(i) for i in self.attributes])
-            )
-          )
-      def __repr__(self):
-        params = []
-        self.repr_serialize(params)
-        return 'grammar.Grammar.Production.Group({0:s})'.format(', '.join(params))
-      # GENERATE END
-      def post_process(self, name_to_character_sets, group_index):
-        self.index = group_index
-        group_index += 1
-        for i in self:
-          group_index = i.post_process(name_to_character_sets, group_index)
-        return group_index
-      def add_to_groups(self, groups):
-        assert len(groups) == self.index
-        groups.append(
-          (self.name, {i.name: i.value for i in self.attributes})
-        )
-        for i in self:
-          i.add_to_groups(groups)
-      def add_to_lr1_symbols(self, symbols, group_bounds):
-        group_start = len(symbols)
-        assert len(group_bounds) == self.index
-        group_bounds.append(None)
-        group_count = 0
-        for i in self:
-          group_count += (
-            i.add_to_lr1_symbols(symbols, group_bounds)
-          )
-        group_bounds[self.index] = (
-          group_start,
-          group_count,
-          self.name,
-          {i.name: i.value for i in self.attributes}
-        )
-        return 1 # count of groups or ungrouped characters
-
-    class Symbol(element.Element):
-      # GENERATE ELEMENT(list(int) terminal_set, list(int) nonterminal_set) BEGIN
-      def __init__(
-        self,
-        tag = 'Grammar_Production_Symbol',
-        attrib = {},
-        text = '',
-        children = [],
-        terminal_set = [],
-        nonterminal_set = []
-      ):
-        element.Element.__init__(
-          self,
-          tag,
-          attrib,
-          text,
-          children
-        )
-        self.terminal_set = (
-          [element.deserialize_int(i) for i in terminal_set.split()]
-        if isinstance(terminal_set, str) else
-          terminal_set
-        )
-        self.nonterminal_set = (
-          [element.deserialize_int(i) for i in nonterminal_set.split()]
-        if isinstance(nonterminal_set, str) else
-          nonterminal_set
-        )
-      def serialize(self, ref_list):
-        element.Element.serialize(self, ref_list)
-        self.set(
-          'terminal_set',
-          ' '.join([element.serialize_int(i) for i in self.terminal_set])
-        )
-        self.set(
-          'nonterminal_set',
-          ' '.join([element.serialize_int(i) for i in self.nonterminal_set])
-        )
-      def deserialize(self, ref_list):
-        element.Element.deserialize(self, ref_list)
-        self.terminal_set = [
-          element.deserialize_int(i)
-          for i in self.get('terminal_set', '').split()
-        ]
-        self.nonterminal_set = [
-          element.deserialize_int(i)
-          for i in self.get('nonterminal_set', '').split()
-        ]
-      def copy(self, factory = None):
-        result = element.Element.copy(
-          self,
-          Symbol if factory is None else factory
-        )
-        result.terminal_set = self.terminal_set
-        result.nonterminal_set = self.nonterminal_set
-        return result
-      def repr_serialize(self, params):
-        element.Element.repr_serialize(self, params)
-        if len(self.terminal_set):
-          params.append(
-            'terminal_set = [{0:s}]'.format(
-              ', '.join([repr(i) for i in self.terminal_set])
-            )
-          )
-        if len(self.nonterminal_set):
-          params.append(
-            'nonterminal_set = [{0:s}]'.format(
-              ', '.join([repr(i) for i in self.nonterminal_set])
-            )
-          )
-      def __repr__(self):
-        params = []
-        self.repr_serialize(params)
-        return 'grammar.Grammar.Production.Symbol({0:s})'.format(', '.join(params))
-      # GENERATE END
-      def post_process(self, name_to_character_sets, group_index):
-        return group_index
-      def add_to_groups(self, groups):
-        pass
-      def add_to_lr1_symbols(self, symbols, group_bounds):
-        symbols.append((self.terminal_set, self.nonterminal_set))
-        return 1 # count of groups or ungrouped characters
-
-    class NamedSymbol(Symbol):
-      # GENERATE ELEMENT(str name) BEGIN
-      def __init__(
-        self,
-        tag = 'Grammar_Production_NamedSymbol',
-        attrib = {},
-        text = '',
-        children = [],
-        terminal_set = [],
-        nonterminal_set = [],
-        name = ''
-      ):
-        Grammar.Production.Symbol.__init__(
-          self,
-          tag,
-          attrib,
-          text,
-          children,
-          terminal_set,
-          nonterminal_set
-        )
-        self.name = name
-      def serialize(self, ref_list):
-        Grammar.Production.Symbol.serialize(self, ref_list)
-        self.set('name', element.serialize_str(self.name))
-      def deserialize(self, ref_list):
-        Grammar.Production.Symbol.deserialize(self, ref_list)
-        self.name = element.deserialize_str(self.get('name', ''))
-      def copy(self, factory = None):
-        result = Grammar.Production.Symbol.copy(
-          self,
-          NamedSymbol if factory is None else factory
-        )
-        result.name = self.name
-        return result
-      def repr_serialize(self, params):
-        Grammar.Production.Symbol.repr_serialize(self, params)
-        if self.name != '':
-          params.append(
-            'name = {0:s}'.format(repr(self.name))
-          )
-      def __repr__(self):
-        params = []
-        self.repr_serialize(params)
-        return 'grammar.Grammar.Production.NamedSymbol({0:s})'.format(', '.join(params))
-      # GENERATE END
-      def post_process(self, name_to_character_sets, group_index):
-        self.terminal_set, self.nonterminal_set = (
-          name_to_character_sets[self.name]
-        )
-        return group_index
-
-    # GENERATE ELEMENT(int lhs_nonterminal, int precedence) BEGIN
-    def __init__(
-      self,
-      tag = 'Grammar_Production',
-      attrib = {},
-      text = '',
-      children = [],
-      lhs_nonterminal = -1,
-      precedence = -1
-    ):
-      element.Element.__init__(
-        self,
-        tag,
-        attrib,
-        text,
-        children
-      )
-      self.lhs_nonterminal = (
-        element.deserialize_int(lhs_nonterminal)
-      if isinstance(lhs_nonterminal, str) else
-        lhs_nonterminal
-      )
-      self.precedence = (
-        element.deserialize_int(precedence)
-      if isinstance(precedence, str) else
-        precedence
-      )
-    def serialize(self, ref_list):
-      element.Element.serialize(self, ref_list)
-      self.set('lhs_nonterminal', element.serialize_int(self.lhs_nonterminal))
-      self.set('precedence', element.serialize_int(self.precedence))
-    def deserialize(self, ref_list):
-      element.Element.deserialize(self, ref_list)
-      self.lhs_nonterminal = element.deserialize_int(self.get('lhs_nonterminal', '-1'))
-      self.precedence = element.deserialize_int(self.get('precedence', '-1'))
-    def copy(self, factory = None):
-      result = element.Element.copy(
-        self,
-        Production if factory is None else factory
-      )
-      result.lhs_nonterminal = self.lhs_nonterminal
-      result.precedence = self.precedence
-      return result
-    def repr_serialize(self, params):
-      element.Element.repr_serialize(self, params)
-      if self.lhs_nonterminal != -1:
-        params.append(
-          'lhs_nonterminal = {0:s}'.format(repr(self.lhs_nonterminal))
-        )
-      if self.precedence != -1:
-        params.append(
-          'precedence = {0:s}'.format(repr(self.precedence))
-        )
-    def __repr__(self):
-      params = []
-      self.repr_serialize(params)
-      return 'grammar.Grammar.Production({0:s})'.format(', '.join(params))
-    # GENERATE END
-    def post_process(self, lhs_nonterminal, name_to_character_sets):
-      self.lhs_nonterminal = lhs_nonterminal
-      group_index = 0
-      for i in self:
-        group_index = i.post_process(name_to_character_sets, group_index)
-    def add_to_lr1(self, _lr1):
-      symbols = []
-      group_bounds = []
-      for i in self:
-        i.add_to_lr1_symbols(symbols, group_bounds)
-      _lr1.productions.append(
-        (
-          # symbols
-          symbols,
-          # lookaheads (list of initial_set, can_be_empty)
-          [([], False) for i in range(len(symbols))] + [([], True)],
-          # group_bounds
-          group_bounds
-        )
-      )
-
-  # GENERATE ELEMENT(list(int) associativities, int n_terminals, int eof_terminal) BEGIN
-  def __init__(
-    self,
-    tag = 'Grammar',
-    attrib = {},
-    text = '',
-    children = [],
-    associativities = [],
-    n_terminals = -1,
-    eof_terminal = -1
-  ):
-    element.Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-    self.associativities = (
-      [element.deserialize_int(i) for i in associativities.split()]
-    if isinstance(associativities, str) else
-      associativities
-    )
-    self.n_terminals = (
-      element.deserialize_int(n_terminals)
-    if isinstance(n_terminals, str) else
-      n_terminals
-    )
-    self.eof_terminal = (
-      element.deserialize_int(eof_terminal)
-    if isinstance(eof_terminal, str) else
-      eof_terminal
-    )
-  def serialize(self, ref_list):
-    element.Element.serialize(self, ref_list)
-    self.set(
-      'associativities',
-      ' '.join([element.serialize_int(i) for i in self.associativities])
-    )
-    self.set('n_terminals', element.serialize_int(self.n_terminals))
-    self.set('eof_terminal', element.serialize_int(self.eof_terminal))
-  def deserialize(self, ref_list):
-    element.Element.deserialize(self, ref_list)
-    self.associativities = [
-      element.deserialize_int(i)
-      for i in self.get('associativities', '').split()
-    ]
-    self.n_terminals = element.deserialize_int(self.get('n_terminals', '-1'))
-    self.eof_terminal = element.deserialize_int(self.get('eof_terminal', '-1'))
-  def copy(self, factory = None):
-    result = element.Element.copy(
-      self,
-      Grammar if factory is None else factory
-    )
-    result.associativities = self.associativities
-    result.n_terminals = self.n_terminals
-    result.eof_terminal = self.eof_terminal
-    return result
-  def repr_serialize(self, params):
-    element.Element.repr_serialize(self, params)
-    if len(self.associativities):
-      params.append(
-        'associativities = [{0:s}]'.format(
-          ', '.join([repr(i) for i in self.associativities])
-        )
-      )
-    if self.n_terminals != -1:
-      params.append(
-        'n_terminals = {0:s}'.format(repr(self.n_terminals))
-      )
-    if self.eof_terminal != -1:
-      params.append(
-        'eof_terminal = {0:s}'.format(repr(self.eof_terminal))
-      )
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'grammar.Grammar({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def post_process(self, name_to_character_sets):
-    for i in range(len(self)):
-      self[i].post_process(i, name_to_character_sets)
-  def to_lr1(self):
-    _lr1 = lr1.LR1(
-      # productions
-      [],
-      # precedences
-      ([self.n_terminals], [-1], [1 + len(self)], [-1]),
-      # associativities
-      self.associativities,
-      # n_terminals
-      self.n_terminals,
-      # eof_terminal
-      self.eof_terminal)
-
-    # compute productions and (eventually) nonterminals precedence table
-    for i in self:
-      i.add_to_lr1(_lr1)
-
-    # propagate lookaheads
-    modified = True
-    while modified:
-      modified = False
-      for symbols, lookaheads, _ in _lr1.productions:
-        for i in range(len(symbols) - 1, -1, -1):
-          initial_set, nonterminal_set = symbols[i]
-          can_be_empty = False
-          for j in range(0, len(nonterminal_set), 2):
-            for k in range(nonterminal_set[j], nonterminal_set[j + 1]):
-              child_initial_set, child_can_be_empty = _lr1.productions[k][1][0]
-              initial_set = bisect_set.bisect_set_or(
-                initial_set,
-                child_initial_set
-              )
-              can_be_empty = can_be_empty or child_can_be_empty
-          # at this point can_be_empty refers to current symbol only
-          if can_be_empty:
-            next_initial_set, can_be_empty = lookaheads[i + 1]
-            initial_set = bisect_set.bisect_set_or(
-              initial_set,
-              next_initial_set
-            )
-          # at this point can_be_empty refers to all remaining symbols
-          if (initial_set, can_be_empty) != lookaheads[i]:
-            lookaheads[i] = (initial_set, can_be_empty)
-            modified = True
-
-    return _lr1
-
-# GENERATE FACTORY(element.Element) BEGIN
-tag_to_class = {
-  'Grammar': Grammar,
-  'Grammar_Production': Grammar.Production,
-  'Grammar_Production_Item': Grammar.Production.Item,
-  'Grammar_Production_Group': Grammar.Production.Group,
-  'Grammar_Production_Group_Attribute': Grammar.Production.Group.Attribute,
-  'Grammar_Production_Symbol': Grammar.Production.Symbol,
-  'Grammar_Production_NamedSymbol': Grammar.Production.NamedSymbol
-}
-def factory(tag, attrib = {}, *args, **kwargs):
-  return tag_to_class.get(tag, element.Element)(tag, attrib, *args, **kwargs)
-# GENERATE END
diff --git a/grammar.sh b/grammar.sh
deleted file mode 100755 (executable)
index 67d4650..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-if ./generate.py grammar <grammar.py >grammar.py.new && ! diff -q grammar.py grammar.py.new
-then
-  mv grammar.py.new grammar.py
-else
-  rm -f grammar.py.new
-fi
diff --git a/lex.yy.c b/lex.yy.c
deleted file mode 100644 (file)
index 47055b4..0000000
--- a/lex.yy.c
+++ /dev/null
@@ -1,5509 +0,0 @@
-
-#line 2 "lex.yy.c"
-
-#define  YY_INT_ALIGNED short int
-
-/* A lexical scanner generated by flex */
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 4
-#if YY_FLEX_SUBMINOR_VERSION > 0
-#define FLEX_BETA
-#endif
-
-/* First, we deal with  platform-specific or compiler-specific issues. */
-
-/* begin standard C headers. */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-/* end standard C headers. */
-
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types. 
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
-#endif
-
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
-#else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t; 
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
-
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN               (-128)
-#endif
-#ifndef INT16_MIN
-#define INT16_MIN              (-32767-1)
-#endif
-#ifndef INT32_MIN
-#define INT32_MIN              (-2147483647-1)
-#endif
-#ifndef INT8_MAX
-#define INT8_MAX               (127)
-#endif
-#ifndef INT16_MAX
-#define INT16_MAX              (32767)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX              (2147483647)
-#endif
-#ifndef UINT8_MAX
-#define UINT8_MAX              (255U)
-#endif
-#ifndef UINT16_MAX
-#define UINT16_MAX             (65535U)
-#endif
-#ifndef UINT32_MAX
-#define UINT32_MAX             (4294967295U)
-#endif
-
-#ifndef SIZE_MAX
-#define SIZE_MAX               (~(size_t)0)
-#endif
-
-#endif /* ! C99 */
-
-#endif /* ! FLEXINT_H */
-
-/* begin standard C++ headers. */
-
-/* TODO: this is always defined, so inline it */
-#define yyconst const
-
-#if defined(__GNUC__) && __GNUC__ >= 3
-#define yynoreturn __attribute__((__noreturn__))
-#else
-#define yynoreturn
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an
- *   integer in range [0..255] for use as an array index.
- */
-#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
-
-/* Enter a start condition.  This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN (yy_start) = 1 + 2 *
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state.  The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START (((yy_start) - 1) / 2)
-#define YYSTATE YY_START
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart( yyin  )
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#ifndef YY_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k.
- * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
- * Ditto for the __ia64__ case accordingly.
- */
-#define YY_BUF_SIZE 32768
-#else
-#define YY_BUF_SIZE 16384
-#endif /* __ia64__ */
-#endif
-
-/* The state buf must be large enough to hold one state per character in the main buffer.
- */
-#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
-
-#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-#define YY_TYPEDEF_YY_BUFFER_STATE
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-#endif
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
-extern int yyleng;
-
-extern FILE *yyin, *yyout;
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-    
-    #define YY_LESS_LINENO(n)
-    #define YY_LINENO_REWIND_TO(ptr)
-    
-/* Return all but the first "n" matched characters back to the input stream. */
-#define yyless(n) \
-       do \
-               { \
-               /* Undo effects of setting up yytext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-               *yy_cp = (yy_hold_char); \
-               YY_RESTORE_YY_MORE_OFFSET \
-               (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
-               } \
-       while ( 0 )
-#define unput(c) yyunput( c, (yytext_ptr)  )
-
-#ifndef YY_STRUCT_YY_BUFFER_STATE
-#define YY_STRUCT_YY_BUFFER_STATE
-struct yy_buffer_state
-       {
-       FILE *yy_input_file;
-
-       char *yy_ch_buf;                /* input buffer */
-       char *yy_buf_pos;               /* current position in input buffer */
-
-       /* Size of input buffer in bytes, not including room for EOB
-        * characters.
-        */
-       int yy_buf_size;
-
-       /* Number of characters read into yy_ch_buf, not including EOB
-        * characters.
-        */
-       int yy_n_chars;
-
-       /* Whether we "own" the buffer - i.e., we know we created it,
-        * and can realloc() it to grow it, and should free() it to
-        * delete it.
-        */
-       int yy_is_our_buffer;
-
-       /* Whether this is an "interactive" input source; if so, and
-        * if we're using stdio for input, then we want to use getc()
-        * instead of fread(), to make sure we stop fetching input after
-        * each newline.
-        */
-       int yy_is_interactive;
-
-       /* Whether we're considered to be at the beginning of a line.
-        * If so, '^' rules will be active on the next match, otherwise
-        * not.
-        */
-       int yy_at_bol;
-
-    int yy_bs_lineno; /**< The line count. */
-    int yy_bs_column; /**< The column count. */
-
-       /* Whether to try to fill the input buffer when we reach the
-        * end of it.
-        */
-       int yy_fill_buffer;
-
-       int yy_buffer_status;
-
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
-       /* When an EOF's been seen but there's still some text to process
-        * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-        * shouldn't try reading from the input source any more.  We might
-        * still have a bunch of tokens to match, though, because of
-        * possible backing-up.
-        *
-        * When we actually see the EOF, we change the status to "new"
-        * (via yyrestart()), so that the user can continue scanning by
-        * just pointing yyin at a new input file.
-        */
-#define YY_BUFFER_EOF_PENDING 2
-
-       };
-#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-
-/* Stack of input buffers. */
-static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
-static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- *
- * Returns the top of the stack, or NULL.
- */
-#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
-                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
-                          : NULL)
-/* Same as previous macro, but useful when we know that the buffer stack is not
- * NULL or when we need an lvalue. For internal use only.
- */
-#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
-
-/* yy_hold_char holds the character lost when yytext is formed. */
-static char yy_hold_char;
-static int yy_n_chars;         /* number of characters read into yy_ch_buf */
-int yyleng;
-
-/* Points to current character in buffer. */
-static char *yy_c_buf_p = NULL;
-static int yy_init = 0;                /* whether we need to initialize */
-static int yy_start = 0;       /* start state number */
-
-/* Flag which is used to allow yywrap()'s to do buffer switches
- * instead of setting up a fresh yyin.  A bit of a hack ...
- */
-static int yy_did_buffer_switch_on_eof;
-
-void yyrestart ( FILE *input_file  );
-void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer  );
-YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size  );
-void yy_delete_buffer ( YY_BUFFER_STATE b  );
-void yy_flush_buffer ( YY_BUFFER_STATE b  );
-void yypush_buffer_state ( YY_BUFFER_STATE new_buffer  );
-void yypop_buffer_state ( void );
-
-static void yyensure_buffer_stack ( void );
-static void yy_load_buffer_state ( void );
-static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file  );
-#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
-
-YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size  );
-YY_BUFFER_STATE yy_scan_string ( const char *yy_str  );
-YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len  );
-
-void *yyalloc ( yy_size_t  );
-void *yyrealloc ( void *, yy_size_t  );
-void yyfree ( void *  );
-
-#define yy_new_buffer yy_create_buffer
-#define yy_set_interactive(is_interactive) \
-       { \
-       if ( ! YY_CURRENT_BUFFER ){ \
-        yyensure_buffer_stack (); \
-               YY_CURRENT_BUFFER_LVALUE =    \
-            yy_create_buffer( yyin, YY_BUF_SIZE ); \
-       } \
-       YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
-       }
-#define yy_set_bol(at_bol) \
-       { \
-       if ( ! YY_CURRENT_BUFFER ){\
-        yyensure_buffer_stack (); \
-               YY_CURRENT_BUFFER_LVALUE =    \
-            yy_create_buffer( yyin, YY_BUF_SIZE ); \
-       } \
-       YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
-       }
-#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
-
-/* Begin user sect3 */
-typedef flex_uint8_t YY_CHAR;
-
-FILE *yyin = NULL, *yyout = NULL;
-
-typedef int yy_state_type;
-
-extern int yylineno;
-int yylineno = 1;
-
-extern char *yytext;
-#ifdef yytext_ptr
-#undef yytext_ptr
-#endif
-#define yytext_ptr yytext
-
-static yy_state_type yy_get_previous_state ( void );
-static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  );
-static int yy_get_next_buffer ( void );
-static void yynoreturn yy_fatal_error ( const char* msg  );
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
- */
-#define YY_DO_BEFORE_ACTION \
-       (yytext_ptr) = yy_bp; \
-       yyleng = (int) (yy_cp - yy_bp); \
-       (yy_hold_char) = *yy_cp; \
-       *yy_cp = '\0'; \
-       (yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 253
-#define YY_END_OF_BUFFER 254
-/* This struct is not used in this scanner,
-   but its presence is necessary. */
-struct yy_trans_info
-       {
-       flex_int32_t yy_verify;
-       flex_int32_t yy_nxt;
-       };
-static const flex_int16_t yy_accept[1114] =
-    {   0,
-        0,    0,    0,    0,    0,    0,  246,  246,   40,   40,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   21,   21,
-      239,  239,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   21,   21,
-      250,  250,  239,  239,  254,  252,    9,   20,  252,   18,
-        1,   19,  252,  252,  252,  252,   17,  163,  148,  149,
-      163,  141,  163,  160,  161,  162,  162,  163,  163,  163,
-      162,  147,  137,  163,  163,  139,  140,  135,  136,  135,
-      134,  133,  134,  246,  247,  247,   40,   42,   40,   41,
-
-       40,   40,   41,   41,   41,   50,   49,   51,  252,  169,
-      169,  164,  169,  165,  166,  168,  170,  218,  219,  218,
-      216,  215,  217,  171,  173,  171,  172,  171,  185,  185,
-      185,  185,  187,  189,  187,  187,  187,  187,  188,  228,
-      233,  228,  232,  231,  234,  229,  229,  229,  234,  234,
-      226,  227,  252,  130,  252,   21,   23,   21,   22,   22,
-       22,  235,  241,  235,  236,  242,  242,  242,  224,  224,
-      225,  224,  224,  224,  224,  224,  224,  224,  129,   53,
-       52,  129,  129,  129,  129,   54,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
-
-      129,  129,  129,  129,  129,  129,  129,   36,   33,   36,
-       34,   48,   45,  252,   48,   48,   44,   43,  175,  174,
-      176,  177,  178,  179,  180,  181,  182,   31,   32,   31,
-       30,   28,   29,   28,   27,   22,  250,  251,  251,  237,
-      237,  238,    9,   20,    0,   18,    1,   19,    0,    0,
-        0,   16,   10,    0,    0,    0,    0,    4,   16,    5,
-        0,    2,   17,  148,  149,    0,    0,    0,  143,    0,
-      159,  157,    0,  153,  153,    0,  243,  243,  243,    0,
-        0,  142,    0,  147,  137,    0,    0,    0,  139,  140,
-      152,  138,    0,  136,  134,  133,  131,  132,  246,  244,
-
-      245,   40,   42,   40,   40,   37,   38,    0,   50,   49,
-       51,    0,  164,    0,  164,  167,  168,  219,  215,  173,
-        0,  183,  184,  189,  186,  228,  233,    0,    0,  221,
-      229,  229,  229,    0,  130,    0,   21,   23,   24,  235,
-      241,  240,  239,  240,    0,    0,  225,  220,    0,    0,
-       53,   52,    0,  128,    0,    0,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,   55,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,  129,  129,    0,   35,
-       34,   48,   45,   46,   47,   31,   32,   29,   26,   25,
-
-      250,  248,  249,  237,    0,   16,   10,    0,   14,    0,
-        0,    0,    0,    0,    4,   16,    5,    0,    6,    0,
-      144,    0,  145,    0,  158,    0,  153,  153,    0,  153,
-      153,  153,  243,  243,  155,  154,    0,  156,  138,  146,
-        0,  152,    0,  131,  132,   40,   40,    0,   39,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  230,  229,  229,    0,    0,  220,    0,    0,
-        0,    0,  129,  129,  129,  129,  129,  129,   65,  129,
-      129,  129,   70,  129,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
-
-      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,  129,  129,    0,    0,
-        0,    0,   14,    0,    0,    0,    0,    0,    0,    4,
-        8,    5,    0,  153,  153,  153,  153,  153,  153,  153,
-      243,  156,    0,    0,   40,   40,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  229,  229,
-        0,    0,   56,   57,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,  129,   71,   72,  129,  129,  129,  129,
-       77,   78,  129,  129,  129,  129,  129,  129,  129,   83,
-
-      129,  129,  129,  129,  129,  129,  129,  129,  129,   92,
-      129,  129,  129,  129,  129,  129,  129,  129,  129,    0,
-        0,    0,    0,   15,    0,    0,    0,    0,    0,    8,
-        8,    8,    0,  153,  153,  153,  153,  153,  153,  153,
-        0,    0,   40,   40,  214,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  229,  229,
-        0,    0,   58,  129,   60,  129,   62,  129,  129,  129,
-      129,   68,  129,  129,  129,   73,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,  129,   86,  129,  129,
-
-      129,  129,   90,  129,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,    0,    0,    0,    0,    3,    0,    0,
-        0,    8,    7,    8,    0,  153,  153,  153,    0,    0,
-       40,   40,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  222,  223,  222,  223,
-      129,   61,  129,  129,  129,  129,  129,  129,  129,  125,
-      129,  129,  129,  129,  129,  129,  129,  129,  123,  129,
-       85,  129,   88,  129,   89,  129,  129,  129,  104,    0,
-      129,   94,  129,    0,   95,    0,    0,    0,    0,    0,
-
-       12,    0,   13,    0,  151,    0,  150,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  129,  129,  129,  129,  129,   66,  129,   69,  129,
-      129,  129,  129,  129,  129,  122,  129,   82,  129,  129,
-       87,  129,   91,  102,  124,    0,    0,    0,    0,    0,
-        0,  129,  129,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  150,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  129,  129,
-
-      129,  129,  129,   67,  129,  129,  129,  129,   79,  129,
-      129,  129,  129,  129,  129,    0,    0,  113,    0,    0,
-        0,    0,    0,    0,   93,  129,    0,    0,  114,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   11,    0,
-      190,  191,  192,  193,  194,  195,  196,  197,  198,  199,
-      200,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,   84,  129,  129,    0,
-        0,    0,    0,    0,    0,  115,    0,  103,    0,    0,
-        0,    0,    0,  116,    0,    0,    0,    0,    0,  201,
-
-      202,  203,  204,  205,  206,  207,  208,  209,  210,  211,
-      212,    0,  129,  129,  129,  129,  129,  121,  129,  129,
-       75,  129,  129,  129,  129,  129,    0,    0,  109,    0,
-      119,  117,  110,    0,    0,    0,  120,  118,    0,    0,
-        0,    0,    0,    0,  213,  129,  129,  129,  129,  129,
-      125,   74,  129,   81,  129,  126,  129,  105,  107,    0,
-      106,  108,    0,    0,    0,    0,    0,    0,    0,  129,
-       63,  129,  129,  129,  129,   76,  129,  111,  112,   97,
-        0,    0,    0,    0,   98,  129,  129,  129,  129,  129,
-      127,   96,    0,  100,    0,  129,  129,  129,   66,  129,
-
-       99,  101,  129,   64,  129,  129,  129,   67,  129,  129,
-       80,   59,    0
-    } ;
-
-static const YY_CHAR yy_ec[256] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
-        4,    4,    5,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    1,    6,    7,    8,    9,    1,   10,   11,
-       12,   13,   14,   15,   16,   17,   18,   19,   19,   19,
-       19,   19,   19,   19,   20,   21,   22,   23,    1,   24,
-       25,   26,   27,    1,   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,   44,
-       53,   54,   55,   56,   57,    1,   58,   59,   60,   61,
-
-       62,   63,   64,   65,   66,   67,   68,   69,   70,   71,
-       72,   73,   44,   74,   75,   76,   77,   78,   79,   80,
-       81,   44,   82,   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,    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,    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,    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,
-        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
-    } ;
-
-static const YY_CHAR yy_meta[85] =
-    {   0,
-        1,    1,    2,    1,    3,    4,    1,    1,    5,    6,
-        1,    7,    8,    9,    1,   10,    1,   11,   12,   12,
-       12,   12,   13,    1,    1,    1,    1,   14,   14,   14,
-       14,   14,   14,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   16,   17,   18,    1,   19,   14,   14,   14,
-       14,   14,   14,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   20,    1,   21
-    } ;
-
-static const flex_int16_t yy_base[1221] =
-    {   0,
-        0,   84,  167,  250,  171,  184,  135,  142,  220,  231,
-      196,  200,  334,    0, 3627, 3625,  211,  416,  203,  212,
-      189,  225,  266,  417,  500,    0,  207,  208,  234,  421,
-      424,  436,  583,  588,  669,    0,  294,  304,  584,  751,
-      579,  580,  417,  576,  287,  306,  241,  441,  595,  608,
-      169,  238,  440,  754, 3680, 4511,  325, 4511, 3676,    0,
-      446, 4511, 3673,  430,  827, 3661,    0, 4511,  758, 4511,
-     3650, 4511,  453, 3621, 4511, 4511, 3619, 3584,  129,  746,
-      445,  766, 4511, 3604,  198, 3582, 4511, 4511, 4511, 3600,
-        0, 3599,  214,    0, 3506, 3483,    0, 4511, 3532, 4511,
-
-      420,  119, 3481, 3478, 3446,    0, 3526, 4511, 3520, 4511,
-      482, 3520, 3518, 4511, 3455,    0, 4511, 4511, 4511, 3504,
-     4511,  598, 4511, 4511, 4511, 3499, 4511,  754, 4511, 3477,
-      759,  180, 4511, 4511, 3467,    0, 3442,  762, 4511,    0,
-     4511, 3459, 4511, 3406, 3434,    0,  562,  167, 3393, 3370,
-     4511, 4511,  326, 4511,  420,    0, 4511, 3418, 3402, 3366,
-     3342,    0, 4511, 3368, 4511, 3317,  444, 3314, 4511,  471,
-     4511, 3354, 3271, 3337,  572,  189, 3295, 3285, 4511, 3332,
-     4511, 3307, 3303,  585,  594, 4511,  746,  734,  744,  754,
-      763,  770,    0,  755,  748,  763,  818,  789,  240,  822,
-
-      762,  381,  802,  791,  813,  824,  577, 4511, 4511, 3302,
-      871,    0, 4511, 3302, 3250, 3231, 4511, 4511, 4511, 4511,
-     4511, 4511, 4511, 4511, 4511, 4511, 4511,    0, 4511, 3279,
-     4511, 4511, 4511, 3276, 3260, 3259,    0, 3221, 3214,    0,
-     3264, 4511,  835, 4511, 3262,    0,  903, 4511, 3257,  842,
-      817,    0,    0,  910,  914,  918,  922,    0,  814,    0,
-      457, 4511,    0,  943, 4511, 3241, 3141,  483, 4511, 3217,
-     3212, 4511,  826,  556,  903,  930, 4511,  757,    0, 3134,
-     3131, 4511, 3129,  964, 4511, 3190, 3110, 3174, 3161, 4511,
-        0, 4511,  896, 4511,    0, 3172,    0,    0,    0, 4511,
-
-     4511,    0, 4511,  910,  913, 4511, 4511,  602,    0, 3169,
-     4511,  957, 3164, 3161, 3127, 4511,    0, 4511,  976, 4511,
-     1020, 4511, 4511, 4511, 4511,    0, 4511, 3116,    0, 4511,
-        0,  926,  930,  644, 4511,  662,    0, 4511, 4511,    0,
-     4511, 4511, 3071, 3121,  794, 3037, 4511,    0,  934,  932,
-     3117, 4511, 3091, 4511,  938,  939,    0,  940,  738,  956,
-      802, 3059,  876,  978,  933,  933,  939,  948,  964, 1030,
-      938,  958,  976,  968,    0,  996, 4511,  999, 1057, 1068,
-      981, 1079, 1077, 1080, 1074, 1068, 1070, 1120, 3062, 4511,
-     1014,    0, 4511, 4511, 4511,    0, 4511, 4511, 4511, 4511,
-
-        0, 4511, 4511,    0, 1078,    0,    0, 1153, 4511, 3063,
-     1166, 1077, 1076, 1091,    0, 1089,    0, 1018, 4511, 1022,
-     4511, 1025, 4511, 1035, 4511, 1091, 1067, 1138, 1162, 1242,
-     1177, 1308, 1105,    0, 4511, 4511, 2954, 1198, 4511, 4511,
-     1144,    0, 1137,    0,    0, 1161, 1156, 1123, 4511, 1202,
-     1308, 1309, 1310, 1319, 3013, 1312, 1311, 1327, 1320, 1321,
-     1323, 1382, 4511, 1172, 1166, 2589, 2537,    0, 1178, 1169,
-     1169, 1298, 1315, 1324, 1330, 1321, 1330, 1323,    0, 1341,
-     1332, 1348,    0, 1346, 1350, 1348, 1361, 1350, 1367, 2573,
-     1370, 1366, 1380, 1382, 1382, 1385, 1378, 1387, 1391, 1400,
-
-     1393, 1403, 1406, 1414, 1400, 1401, 1404, 1429, 1419, 1424,
-     1428, 1425, 1436, 1435, 1430, 1441, 1442, 1432, 1432, 1450,
-     1209, 1508, 4511, 1215, 1512, 1219, 1461, 1455, 1451,    0,
-     1143,    0, 1461, 1534, 1600, 1636,  204, 2525, 1606, 1681,
-     4511, 4511, 1453, 1463, 1591, 1442, 2524, 1599, 1604, 1600,
-     1607, 1605, 1611, 1608, 1650, 1620, 1606, 1614, 1613, 1654,
-     1663, 1652, 1661, 1666, 1682, 1664, 1693, 1694, 1655, 1674,
-     1662, 1675, 4511, 4511, 1683, 1676, 1677, 1683, 1697, 1692,
-     1731, 1711, 1702, 1718,    0,    0, 1719, 1706, 1716, 1735,
-        0,    0, 2553, 1722, 1732, 2540, 1725, 1722, 1733,    0,
-
-     1727, 1747, 1740, 1739, 1735, 1752, 1739, 1740, 1746,    0,
-     1750, 1763, 1760, 1750, 1752, 1759, 1777, 1762, 1778, 1769,
-     1783, 1778, 2514, 4511, 1224, 1230, 1772, 1783, 1780,    0,
-     1507, 1234, 2364,  732, 2273, 1809, 1845, 1430, 1076, 1585,
-     1797, 2286, 1785, 1807, 4511, 1811, 1814, 1829, 1835, 1821,
-     1808, 1822, 1845, 1859, 1860, 1862, 1868, 1869, 1870, 1825,
-     1888, 1890, 1876, 1891, 1874, 1902, 1894, 1898, 1795, 1891,
-     1882, 1899,    0, 1887,    0, 1892,    0, 2260, 1900, 1891,
-     1909,    0, 1904, 2253, 1902,    0, 1916, 1907, 1918, 2227,
-     1912, 1909, 1924, 2201, 1908, 1918, 1922,    0, 1934, 1925,
-
-     1931, 1947,    0, 1936, 1942, 1941, 1953, 2103, 1957, 1958,
-     1952, 2085, 1950, 1951, 1950, 1969, 1956, 2133, 1515, 1961,
-     1971, 2002, 4511, 2117, 2038, 1981, 1592, 1842, 2025, 1983,
-        0,    0, 1972, 1990, 1999, 1987, 1994, 2008, 2005, 2007,
-     2015, 2023, 2016, 2021, 2017, 2024, 2022, 2026, 2030, 2029,
-     2037, 2035, 2045, 2051, 2054, 2061,    0,    0, 4511, 4511,
-     1922,    0, 2049, 2039, 2050, 2053, 2051, 2051, 2054, 1831,
-     2073, 2064, 2077, 2073, 2081, 2082, 2072, 2085,    0, 2091,
-        0, 2074,    0, 1824,    0, 2091, 2094, 2082,    0, 2116,
-     2088,    0, 2092, 2133,    0, 1728, 2097, 2095, 1714, 1678,
-
-     4511, 2135, 4511, 2096, 4511, 1726, 4511, 1703, 1612, 1601,
-     1514, 1500, 1477, 1377, 1373, 1333, 1274, 1203, 2133, 2128,
-     2148, 2151, 2144, 2150, 2156, 2158, 2161, 2163, 2184, 2167,
-     2164, 2157, 2151, 2159, 2158, 2173,    0, 2165,    0, 2166,
-     2182, 2173, 2179, 2178, 2186,    0, 2185,    0, 2187, 2193,
-        0, 2202,    0,    0,    0, 2204, 2187, 2201, 2224, 2200,
-     2222, 2213, 2219, 2230, 2199, 2227, 2239, 2222, 2225, 1162,
-     1158, 2228, 2278, 4511, 1112, 1109, 1081, 1063, 1057,  984,
-      976,  969,  923,  913,  910,  931,  895,  891,  887,  881,
-      874,  856,  848,  843,  840,  804,  788, 2259, 2248, 2258,
-
-     2265, 2264, 2241,    0, 2254, 2265, 2268, 2279,    0, 2262,
-     2268, 2271, 2266, 2278, 2283, 2289, 2273, 4511, 2280, 2281,
-     2281, 2300, 2283, 2281,    0, 2303, 2307, 2292, 4511, 2302,
-     2304, 2319, 2303, 2307, 2309, 2328, 2309, 2357, 4511, 2362,
-     4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511,
-     4511,  746,  725,  597,  577,  441,  426,  420,  267,  253,
-      247,  230,  183,  181, 2317, 2338, 2342, 2330, 2336, 2343,
-     2339, 2331, 2334, 2350, 2341, 2345,    0, 2350, 2346, 2344,
-     2349, 2361, 2364, 2367, 2359, 4511, 2357,    0, 2358, 2362,
-     2379, 2383, 2375, 4511, 2388, 2375, 2382, 2377, 2389, 4511,
-
-     4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511,
-     4511,  122, 2399, 2398, 2382, 2391, 2391,    0, 2407, 2408,
-        0, 2397, 2398, 2420, 2417, 2414, 2418, 2426, 4511, 2414,
-     4511, 4511, 4511, 2422, 2429, 2419, 4511, 4511, 2417, 2437,
-     2435, 2425, 2428, 2428, 4511, 2431, 2445, 2445, 2447, 2452,
-        0,    0, 2461,    0, 2444,    0, 2459, 4511, 4511, 2452,
-     4511, 4511, 2454, 2465, 2452, 2467, 2471, 2470, 2476, 2481,
-        0, 2468, 2465, 2465, 2485,    0, 2465, 4511, 4511, 4511,
-     2489, 2491, 2479, 2488, 4511, 2501, 2491, 2498, 2503, 2490,
-        0, 4511, 2497, 4511, 2510, 2500, 2502, 2500,    0, 2514,
-
-     4511, 4511, 2516,    0, 2523, 2508, 2509,    0, 2528, 2531,
-        0,    0, 4511, 2593, 2614, 2635, 2656, 2677, 2698, 2719,
-     2740, 2761, 2782, 2803, 2824, 2845, 2866, 2887, 2908, 2929,
-     2950, 2971, 2992, 3013, 3025, 3044, 3055, 3074, 3095, 3108,
-     3127, 3148, 3169, 3190, 3202, 3221, 3242, 3263, 3280, 3292,
-     3311, 3332, 3353, 3374, 3395, 3408, 2553, 3423, 3444, 3463,
-     3484, 3505, 3517, 3536, 3557, 2569, 3057, 3578, 3590, 3609,
-     3630, 3651, 2558, 3663, 3684, 3705, 3726, 3747, 3768, 3789,
-     3810, 3831, 3843, 3862, 3879, 3891, 3910, 3931, 3952, 3973,
-     3994, 4007, 4022, 4043, 4062, 4083, 4104, 4125, 4146, 4167,
-
-     4179, 4189, 4208, 4229, 4250, 2561, 4262, 4283, 4304, 4325,
-     4346, 4367, 3028, 4379, 4398, 4419, 4432, 4447, 4468, 4489
-    } ;
-
-static const flex_int16_t yy_def[1221] =
-    {   0,
-     1113, 1113, 1114, 1114, 1115, 1116, 1117, 1117, 1118, 1118,
-     1119, 1119, 1113,   13, 1120, 1120, 1121, 1121, 1122, 1122,
-     1123, 1123, 1124, 1124, 1113,   25, 1125, 1125, 1126, 1126,
-     1127, 1127, 1128, 1128, 1113,   35, 1129, 1129, 1130, 1130,
-     1120, 1120, 1120, 1120, 1131, 1131, 1132, 1132, 1126, 1126,
-     1133, 1133, 1134, 1134, 1113, 1113, 1113, 1113, 1113, 1135,
-     1113, 1113, 1113, 1113, 1136, 1113, 1137, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1138, 1139,
-     1140, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1141, 1113, 1141, 1142, 1113, 1113, 1143, 1113, 1143, 1113,
-
-     1143, 1143, 1113, 1113, 1113, 1144, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1145, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1139, 1113, 1113,
-     1139, 1146, 1113, 1113, 1113, 1147, 1113, 1139, 1113, 1148,
-     1113, 1148, 1113, 1149, 1113, 1150, 1150, 1150, 1113, 1113,
-     1113, 1113, 1151, 1113, 1151, 1152, 1113, 1152, 1113, 1113,
-     1113, 1153, 1113, 1153, 1113, 1113, 1154, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1155, 1113, 1113, 1113, 1156, 1156, 1156, 1156,
-     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1157, 1156, 1156,
-
-     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1113, 1113, 1158,
-     1113, 1159, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1160, 1113, 1160,
-     1113, 1113, 1113, 1113, 1113, 1113, 1161, 1113, 1113, 1162,
-     1162, 1113, 1113, 1113, 1113, 1163, 1113, 1113, 1113, 1113,
-     1113, 1164, 1165, 1113, 1113, 1113, 1113, 1166, 1164, 1167,
-     1168, 1113, 1169, 1113, 1113, 1113, 1113, 1170, 1113, 1113,
-     1113, 1113, 1113, 1171, 1171, 1172, 1113, 1113, 1173, 1113,
-     1113, 1113, 1174, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1175, 1113, 1113, 1113, 1176, 1113, 1177, 1178, 1179, 1113,
-
-     1113, 1180, 1113, 1180, 1180, 1113, 1113, 1181, 1182, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1183, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1184, 1113, 1113, 1185, 1113,
-     1186, 1186, 1186, 1187, 1113, 1187, 1188, 1113, 1113, 1189,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1190, 1113, 1113,
-     1113, 1113, 1191, 1113, 1113, 1113, 1192, 1192, 1192, 1192,
-     1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192,
-     1192, 1192, 1192, 1192, 1192, 1192, 1113, 1192, 1192, 1192,
-     1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1193, 1113,
-     1113, 1194, 1113, 1113, 1113, 1195, 1113, 1113, 1113, 1113,
-
-     1196, 1113, 1113, 1197, 1113, 1198, 1199, 1200, 1113, 1113,
-     1113, 1113, 1113, 1113, 1201, 1198, 1202, 1203, 1113, 1203,
-     1113, 1204, 1113, 1204, 1113, 1113, 1205, 1205, 1205, 1113,
-     1205, 1205, 1113, 1206, 1113, 1113, 1207, 1113, 1113, 1113,
-     1113, 1208, 1113, 1209, 1210, 1211, 1211, 1212, 1113, 1212,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1113, 1214, 1214, 1113, 1215, 1216, 1113, 1113,
-     1113, 1113, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113, 1113,
-     1200, 1200, 1113, 1200, 1200, 1113, 1113, 1113, 1113, 1201,
-     1218, 1202, 1113, 1113, 1205,  432,  430,  430, 1205,  432,
-     1113, 1113, 1113, 1113, 1211, 1211, 1113, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1214, 1214,
-     1113, 1113, 1113, 1113, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113,
-     1113, 1113, 1113, 1113, 1200, 1200, 1113, 1113, 1113, 1218,
-     1218, 1218, 1113,  534,  534, 1205,  432, 1205, 1205, 1205,
-     1113, 1113, 1211, 1211, 1113, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1214, 1214,
-     1113, 1113, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1113, 1113, 1113, 1113, 1113, 1219, 1113,
-     1113, 1218, 1113, 1218, 1113, 1205, 1205, 1205, 1113, 1113,
-     1211, 1211, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1214, 1214, 1113, 1113,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113,
-     1217, 1217, 1217, 1113, 1217, 1113, 1113, 1113, 1113, 1219,
-
-     1113, 1219, 1113, 1113, 1113, 1113, 1113, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1113, 1113, 1113, 1113, 1113,
-     1113, 1217, 1217, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1220, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1217, 1217,
-
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1217, 1217, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1220, 1113, 1220,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1213, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1217, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1217, 1217, 1217, 1217, 1217,
-     1217, 1113, 1113, 1113, 1113, 1217, 1217, 1217, 1217, 1217,
-
-     1113, 1113, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217,    0, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113
-    } ;
-
-static const flex_int16_t yy_nxt[4596] =
-    {   0,
-       56,   57,   58,   56,   59,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       60,   60,   56,   56,   56,   56,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
-       60,   56,   56,   56,   56,   61,   62,   56,   63,   56,
-       64,   56,   65,   56,   56,   56,   56,   56,   56,   56,
-
-       56,   66,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   56,   56,   56,   56,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   56,   56,   56,   69,   70,
-      305,   71,   72,   89,   73,   90, 1045,   74,   75,   76,
-       76,  275,  276,   76,   77,   92,   89,   95,   90,   96,
-       78,   56,   93,   76,   95,  323,   96,  107,  108,  305,
-
-      109,  107,  108, 1012,  109,  125,  291,  126,  127,  154,
-      154,  155,  155,  119,  125,  120,  126,  127,  333,   79,
-       80,  238,   98,  239,   99,  121,  638,   56,  100,  122,
-      122,  122,  122,   98,  323,   99,  157, 1011,  158,  105,
-      350,  130,  131,  233,  132,  234,  159,  333,   81,   76,
-       76,   82,   83,  235,   84,   72,  128,   73,   85,  427,
-       74,   75,   76,   76,  101,  128,   76,   77,  134,  350,
-      135,  102,  103,   86,  104,  101,   76,  130,  131,  292,
-      132,  136,  102,  103, 1010,  104,  160,  378,  161,  229,
-      238,  230,  239,  101,  123,  297,  209,  298,  231,  210,
-
-      102, 1009,   79,   80,  101,   87,  209, 1008,  229,  210,
-      230,  102,  211,  211,  211,  211,  378,  231,  137,  138,
-      139, 1007,  211,  211,  211,  211,  243,  244,  335,  245,
-      336,   81,   76,   76,  110,  111,  112,  110,  113,  110,
-      110,  110,  110,  110,  110,  110,  114,  110,  114,  110,
-      110,  110,  110,  110,  110,  110,  110,  110,  110,  115,
-      110,  116,  116,  116,  116,  116,  116,  116,  116,  116,
-      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
-      116,  116,  116,  116,  116,  116,  110,  110,  110,  110,
-      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
-
-      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
-      116,  116,  116,  116,  116,  110,  110,  110,  119,  134,
-      120,  135,  335,  157,  336,  158,  163,  383,  164,  165,
-      121,  250,  136,  159,  122,  122,  122,  122,  163,  224,
-      164,  165,  163,  233,  241,  234,  343,  247,  248,  242,
-      249,  304,  225,  235,  269,  269,  383,  270,  280,  419,
-      281,  420,  226,  282,  282,  282,  282,  227,  251,  137,
-      138,  139,  345,  160, 1006,  161,  166,  167,  168,  346,
-     1005,  304,  225,  312,  313,  423,  314,  424,  166,  167,
-      168,  226,  166,  167,  168, 1004,  227,  344,  251,  123,
-
-      140,  140,  141,  140,  142,  143,  140,  140,  140,  144,
-      140,  140,  140,  140,  140,  140,  140,  145,  140,  140,
-      140,  140,  140,  140,  140,  140,  140,  146,  146,  146,
-      146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
-      146,  146,  146,  146,  147,  146,  146,  146,  146,  146,
-      146,  148,  149,  140,  150,  140,  146,  146,  146,  146,
-      146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
-      146,  146,  146,  147,  146,  146,  146,  146,  146,  146,
-      148,  151,  140,  152,  170,  171,  213,  172,  214,  170,
-      171,  173,  172,  332,  219,  219,  173,  157,  224,  158,
-
-      174,  220,  220,  349,  449,  174,  450,  236,  428,  429,
-      157,  225,  158,  355,  221,  221,  319,  319,  319,  319,
-      236,  226,  356,  332,  222,  222,  227,  175,  388,  223,
-      223, 1003,  175,  349,  176,  177,  215,  178,  216,  176,
-      177,  225,  178,  355,  221,  221,  335,  160,  336,  161,
-      226, 1002,  356,  222,  222,  227,  175,  388,  223,  223,
-      160,  175,  161,  176,  335,  217,  336,  218,  176,  179,
-      180,  181,  179,  182,  183,  179,  179,  179,  179,  179,
-      179,  179,  179,  179,  179,  179,  179,  179,  184,  185,
-      179,  179,  179,  186,  179,  179,  187,  188,  189,  190,
-
-      191,  192,  193,  194,  195,  193,  193,  196,  197,  198,
-      199,  200,  193,  201,  202,  203,  204,  205,  206,  193,
-      207,  179,  179,  179,  179,  179,  187,  188,  189,  190,
-      191,  192,  193,  194,  195,  193,  193,  196,  197,  198,
-      199,  200,  201,  202,  203,  204,  205,  206,  193,  207,
-      179,  179,  179,  213,  726,  214,  163,  362,  241,  264,
-      265,  360,  266,  242,  278,  278,  267,  284,  285,  361,
-      286,  363,  278,  278,  287,  433,  433,  278,  278, 1001,
-      278,  278,  475,  288,  358,  364,  369,  427,  370,  289,
-      359,  360,  365,  382,  371,  345,  279,  367,  372,  361,
-
-     1000,  363,  346,  215,  279,  216,  166,  167,  168,  279,
-      963,  475,  279,  366,  358,  364,  369,  368,  370,  359,
-      376,  290,  365,  382,  371,  279,  962,  367,  372,  384,
-      377,  385,  217,  279,  218,  253,  243,  244,  279,  245,
-      268,  279,  366,  250,  386,  373,  368,  478,  268,  374,
-      376,  387,  405,  379,  254,  416,  255,  426,  255,  384,
-      377,  385,  961,  380,  255,  960,  381,  255,  256,  257,
-      959,  255,  258,  259,  386,  373,  478,  260,  958,  374,
-      251,  387,  405,  379,  254,  416,  255,  426,  255,  391,
-      391,  391,  391,  380,  255,  381,  957,  255,  256,  257,
-
-      255,  258,  259,  956,  247,  248,  260,  249,  261,  955,
-      251,  408,  409,  954,  410,  408,  409,  953,  410,  408,
-      409,  480,  410,  408,  409,  430,  410,  443,  411,  411,
-      411,  411,  411,  411,  411,  411,  411,  411,  411,  411,
-      411,  411,  411,  411,  264,  265,  446,  266,  431,  431,
-      480,  267,  447,  952,  412,  428,  429,  443,  312,  313,
-      413,  314,  464,  414,  951,  284,  285,  950,  286,  465,
-      469,  470,  287,  471,  472,  473,  446,  949,  483,  484,
-      432,  288,  447,  412,  485,  476,  486,  289,  490,  474,
-      413,  487,  464,  414,  319,  319,  319,  319,  491,  465,
-
-      469,  470,  477,  471,  472,  473,  481,  483,  484,  432,
-      482,  492,  499,  485,  493,  476,  486,  490,  474,  290,
-      419,  487,  420,  948,  419,  268,  420,  423,  491,  424,
-      947,  477,  391,  391,  391,  391,  481,  423,  946,  424,
-      482,  492,  499,  493,  494,  495,  268,  451,  452,  453,
-      454,  455,  455,  456,  455,  455,  455,  455,  457,  455,
-      455,  455,  458,  455,  455,  459,  455,  460,  455,  455,
-      461,  455,  488,  494,  495,  462,  489,  451,  452,  453,
-      454,  455,  455,  456,  455,  455,  455,  455,  457,  455,
-      455,  455,  458,  455,  459,  455,  460,  455,  455,  461,
-
-      455,  496,  488,  497,  503,  489,  500,  504,  505,  506,
-      501,  945,  508,  498,  509,  502,  507,  944,  520,  428,
-      429,  527,  528,  277,  277,  449,  529,  450,  428,  429,
-      496,  531,  533,  497,  503,  943,  500,  504,  505,  506,
-      501,  508,  498,  509,  631,  502,  507,  510,  520,  511,
-      527,  528,  512,  513,  522,  523,  529,  524,  514,  515,
-      534,  531,  533,  942,  516,  517,  941,  526,  409,  518,
-      410,  525,  525,  525,  525,  543,  519,  510,  544,  511,
-      535,  535,  512,  513,  411,  411,  411,  411,  514,  515,
-      428,  429,  545,  516,  517,  539,  539,  546,  518,  542,
-
-      542,  542,  542,  569,  449,  543,  450,  570,  544,  571,
-      572,  624,  536,  625,  936,  573,  427,  523,  935,  625,
-      526,  409,  545,  410,  632,  885,  624,  546,  625,  428,
-      429,  626,  523,  569,  524,  722,  723,  570,  724,  571,
-      572,  536,  427,  427,  573,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  537,
-      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
-      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
-      537,  537,  537,  537,  428,  429,  884,  538,  427,  537,
-
-      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
-      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
-      537,  537,  537,  427,  427,  427,  540,  540,  540,  540,
-      547,  547,  547,  547,  547,  540,  540,  540,  540,  540,
-      540,  547,  547,  547,  574,  547,  548,  549,  575,  547,
-      550,  576,  553,  558,  551,  883,  552,  577,  578,  579,
-      428,  429,  556,  557,  580,  540,  540,  540,  540,  540,
-      540,  554,  581,  574,  555,  583,  548,  549,  575,  582,
-      550,  576,  553,  558,  551,  552,  586,  577,  578,  579,
-      584,  587,  556,  557,  580,  882,  585,  588,  589,  881,
-
-      554,  591,  581,  555, 1113,  583,  592,  593,  582,  559,
-      560,  561,  562,  594,  595,  563,  586,  596,  597,  584,
-      564,  587,  598,  599,  565,  585,  588,  566,  589,  567,
-      600,  591,  568,  601,  602,  603,  592,  593,  606,  559,
-      560,  561,  562,  594,  595,  563,  607,  596,  597,  604,
-      564,  608,  598,  599,  565,  605,  566,  609,  567,  610,
-      600,  568,  611,  601,  602,  603,  612,  614,  606,  613,
-      615,  616,  617,  618,  620,  607,  619,  621,  622,  604,
-      608,  623,  428,  429,  274,  605,  644,  609,  627,  610,
-      628,  629,  611,  633,  641,  642,  612,  614,  613,  880,
-
-      615,  616,  617,  618,  620,  619,  621,  622,  631,  522,
-      523,  623,  524,  626,  523,  644,  524,  801,  627,  802,
-      628,  629,  879,  633,  641,  642,  525,  525,  525,  525,
-      525,  525,  525,  525,  427,  427,  878,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  634,  634,  634,  634,  634,  634,  634,  634,  634,
-      634,  634,  634,  634,  634,  634,  634,  634,  634,  634,
-      634,  634,  634,  634,  634,  634,  428,  429,  632,  635,
-      427,  634,  634,  634,  634,  634,  634,  634,  634,  634,
-
-      634,  634,  634,  634,  634,  634,  634,  634,  634,  634,
-      634,  634,  634,  634,  634,  427,  427,  427,  636,  636,
-      643,  547,  547,  877,  639,  639,  547,  547,  547,  547,
-      547,  648,  651,  547,  876,  547,  547,  428,  429,  646,
-      650,  647,  547,  653,  428,  429,  649,  655,  656,  657,
-      643,  658,  428,  429,  637,  637,  637,  637,  428,  429,
-      652,  648,  651,  637,  637,  637,  637,  637,  637,  646,
-      650,  647,  547,  653,  547,  649,  547,  655,  656,  657,
-      801,  658,  802,  547,  669,  547,  547,  661,  547,  652,
-      654,  671,  659,  637,  637,  637,  637,  637,  637,  640,
-
-      640,  640,  640,  660,  547,  662,  666,  663,  640,  640,
-      640,  640,  640,  640,  669,  547,  547,  661,  670,  672,
-      654,  671,  659,  673,  668,  875,  664,  674,  675,  665,
-      676,  677,  678,  660,  662,  667,  666,  663,  640,  640,
-      640,  640,  640,  640,  682,  684,  679,  670,  672,  683,
-      685,  874,  686,  673,  668,  664,  674,  675,  665,  676,
-      687,  677,  678,  680,  688,  667,  690,  691,  695,  681,
-      872,  693,  694,  696,  682,  684,  697,  698,  683,  699,
-      685,  686,  700,  701,  869,  702,  703,  704,  705,  687,
-      706,  707,  709,  680,  688,  690,  708,  691,  695,  681,
-
-      693,  694,  696,  710,  711,  713,  697,  698,  712,  699,
-      714,  700,  716,  701,  702,  703,  715,  704,  705,  717,
-      706,  707,  709,  719,  720,  708,  721,  727,  727,  729,
-      547,  731,  710,  547,  711,  713,  547,  712,  732,  852,
-      714,  757,  716,  547,  547,  715,  841,  547,  734,  717,
-      738,  547,  719,  739,  720,  721,  737,  547,  733,  729,
-      731,  428,  429,  728,  728,  728,  728,  547,  732,  735,
-      757,  748,  728,  728,  728,  728,  728,  728,  734,  736,
-      738,  547,  547,  739,  547,  740,  737,  733,  741,  742,
-      547,  547,  547,  743,  428,  429,  547,  747,  547,  735,
-
-      748,  744,  728,  728,  728,  728,  728,  728,  736,  745,
-      547,  746,  547,  547,  753,  740,  547,  750,  741,  742,
-      547,  749,  758,  743,  547,  751,  752,  747,  759,  754,
-      760,  744,  761,  756,  762,  764,  755,  832,  766,  745,
-      767,  746,  768,  771,  753,  765,  770,  750,  772,  773,
-      775,  749,  758,  776,  751,  777,  752,  759,  779,  754,
-      760,  761,  780,  756,  762,  764,  755,  766,  781,  782,
-      767,  783,  768,  771,  765,  770,  784,  785,  772,  773,
-      775,  786,  776,  787,  789,  777,  788,  779,  791,  792,
-      793,  780,  795,  796,  547,  797,  798,  781,  799,  782,
-
-      783,  803,  804,  722,  723,  784,  724,  785,  807,  547,
-      786,  808,  547,  787,  789,  788,  547,  809,  791,  792,
-      793,  547,  795,  796,  797,  811,  798,  547,  799,  547,
-      547,  803,  804,  428,  429,  427,  810,  547,  547,  547,
-      812,  808,  813,  547,  547,  547,  547,  809,  547,  814,
-      806,  547,  547,  815,  817,  811,  819,  547,  821,  547,
-      818,  816,  822,  805,  820,  824,  810,  547,  826,  812,
-      823,  825,  813,  547,  828,  827,  547,  833,  814,  835,
-      829,  836,  815,  547,  817,  830,  819,  834,  821,  818,
-      816,  837,  822,  820,  831,  824,  838,  839,  826,  823,
-
-      840,  825,  842,  843,  828,  827,  844,  833,  845,  835,
-      829,  836,  846,  847,  849,  830,  848,  834,  850,  723,
-      851,  837,  853,  854,  831,  838,  839,  855,  862,  840,
-      863,  870,  842,  843,  718,  871,  844,  801,  845,  802,
-      873,  794,  846,  847,  849,  848,  856,  857,  850,  851,
-      547,  858,  853,  854,  859,  547,  855,  860,  862,  790,
-      863,  870,  861,  864,  865,  871,  547,  887,  866,  873,
-      547,  867,  547,  547,  868,  888,  856,  857,  547,  886,
-      547,  858,  890,  547,  859,  547,  547,  860,  889,  547,
-      892,  861,  899,  864,  865,  900,  891,  887,  866,  898,
-
-      901,  867,  893,  902,  868,  888,  547,  894,  886,  895,
-      904,  897,  890,  903,  906,  896,  778,  905,  889,  907,
-      892,  908,  899,  909,  900,  891,  910,  911,  912,  898,
-      901,  893,  902,  913,  914,  916,  894,  917,  895,  904,
-      897,  918,  774,  903,  906,  896,  905,  923,  907,  928,
-      915,  908,  909,  924,  925,  919,  910,  911,  912,  920,
-      926,  927,  921,  913,  914,  916,  917,  929,  769,  933,
-      934,  918,  922,  937,  930,  763,  923,  931,  928,  915,
-      939,  547,  940,  924,  925,  919,  969,  932,  965,  920,
-      926,  927,  921,  966,  967,  968,  970,  929,  933,  934,
-
-      971,  922,  937,  972,  930,  964,  973,  931,  974,  975,
-      976,  730,  977,  978,  979,  969,  932,  980,  965,  981,
-      982,  983,  984,  966,  967,  968,  970,  985,  427,  986,
-      971,  987,  988,  972,  964,  989,  973,  974,  990,  975,
-      976,  977,  991,  978,  979,  992,  993,  980,  981,  994,
-      982,  983,  984,  995,  996,  999,  997,  985,  986,  939,
-      987,  940,  988, 1013,  939,  989,  940,  990, 1014, 1015,
-     1016, 1017,  991,  998, 1018,  992,  993, 1019,  994, 1020,
-     1021, 1022,  995,  996,  999, 1023,  997, 1024, 1025,  725,
-     1026, 1027, 1013, 1028, 1029, 1030, 1031, 1032, 1014, 1015,
-
-     1016, 1017,  998, 1033, 1018, 1034, 1035, 1019, 1020, 1021,
-     1036, 1022, 1037, 1038, 1023, 1039, 1044, 1024, 1025, 1026,
-     1027, 1040, 1028, 1043, 1029, 1030, 1031, 1032, 1048, 1041,
-     1046, 1047, 1033, 1042, 1034, 1035, 1049, 1050, 1051, 1052,
-     1036, 1053, 1037, 1038, 1054, 1039, 1044, 1055, 1056, 1057,
-     1040, 1058, 1043, 1059, 1060, 1061, 1062, 1048, 1041, 1063,
-     1046, 1047, 1042, 1064, 1065, 1049, 1050, 1066, 1051, 1052,
-     1053, 1067, 1068, 1054, 1069, 1070, 1071, 1055, 1056, 1057,
-     1072, 1058, 1073, 1059, 1060, 1061, 1062, 1074, 1075, 1063,
-     1076, 1077, 1064, 1078, 1065, 1079, 1080, 1066, 1081, 1082,
-
-     1067, 1068, 1083, 1069, 1070, 1084, 1071, 1085, 1086, 1087,
-     1072, 1088, 1073, 1089, 1090,  718, 1091, 1074, 1075, 1076,
-     1092, 1077, 1093, 1078, 1094, 1079, 1080, 1081, 1095, 1082,
-     1096, 1097, 1083, 1098, 1099, 1084, 1100, 1085, 1086, 1087,
-     1088, 1101, 1089, 1102, 1090, 1091, 1103, 1104, 1105, 1106,
-     1092, 1107, 1093, 1094, 1108,  692, 1109, 1110, 1095, 1111,
-     1096, 1097, 1112, 1098, 1099, 1100,  375,  375,  689,  434,
-     1101,  434,  541, 1102,  541, 1103, 1104, 1105,  645, 1106,
-      427, 1107,  415,  415, 1108, 1109, 1110,  415,  590, 1111,
-      344,  343, 1112,   68,   68,   68,   68,   68,   68,   68,
-
-       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   91,   91,   91,   91,   91,
-       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
-       91,   91,   91,   91,   91,   91,   94,   94,   94,   94,
-       94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
-       94,   94,   94,   94,   94,   94,   94,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,   97,  106,  106,
-
-      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,  106,   56,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-      118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
-      118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
-      118,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  129,  129,  129,  129,  129,  129,  129,  129,
-      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
-
-      129,  129,  129,  133,  133,  133,  133,  133,  133,  133,
-      133,  133,  133,  133,  133,  133,  133,  133,  133,  133,
-      133,  133,  133,  133,  153,  153,  153,  153,  153,  153,
-      153,  153,  153,  153,  153,  153,  153,  153,  153,  153,
-      153,  153,  153,  153,  153,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  162,  162,  169,  169,  169,
-      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
-
-      169,  169,  169,  169,  169,  169,  169,  169,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      228,  228,  228,  228,  228,  228,  228,  228,  228,  228,
-      228,  228,  228,  228,  228,  228,  228,  228,  228,  228,
-      228,  232,  232,  232,  232,  232,  232,  232,  232,  232,
-      232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
-      232,  232,  237,  237,  237,  237,  237,  237,  237,  237,
-
-      237,  237,  237,  237,  237,  237,  237,  237,  237,  237,
-      237,  237,  237,  240,  240,  240,  240,  240,  240,  240,
-      240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
-      240,  240,  240,  240,  246,  547,  246,  438,  246,  246,
-      455,  455,  455,  246,  252,  252,  252,  252,  252,  252,
-      252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
-      252,  252,  252,  252,  263,  409,  263,  390,  263,  263,
-      417,  417,  479,  263,  274,  417,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  277,  354,  277,  277,  277,
-
-      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
-      277,  277,  277,  277,  277,  277,  283,  283,  351,  283,
-      348,  283,  283,  467,  466,  463,  283,  295,  315,  295,
-      295,  295,  295,  295,  295,  295,  295,  295,  295,  295,
-      295,  295,  295,  295,  295,  295,  295,  295,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  313,  299,  315,  299,  299,  299,  302,
-      310,  302,  302,  296,  302,  302,  302,  302,  302,  302,
-      302,  302,  302,  302,  441,  302,  440,  302,  302,  302,
-      309,  439,  285,  309,  309,  309,  309,  309,  309,  309,
-
-      309,  309,  309,  309,  309,  309,  309,  309,  309,  309,
-      309,  317,  438,  317,  436,  317,  317,  435,  425,  269,
-      317,  322,  421,  322,  322,  322,  322,  322,  322,  322,
-      322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
-      322,  322,  325,  265,  325,  325,  325,  325,  325,  325,
-      325,  325,  325,  325,  325,  325,  325,  325,  325,  248,
-      325,  325,  325,  326,  244,  326,  341,  326,  403,  326,
-      326,  326,  326,  402,  326,  326,  400,  399,  398,  326,
-      328,  397,  328,  328,  328,  395,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-
-      328,  331,  394,  331,  393,  331,  331,  390,  354,  352,
-      331,  334,  334,  334,  334,  334,  334,  334,  334,  334,
-      334,  334,  334,  334,  334,  334,  334,  334,  334,  334,
-      334,  334,  337,  351,  337,  337,  337,  337,  337,  307,
-      337,  337,  337,  337,  337,  337,  337,  306,  337,  330,
-      337,  337,  337,  340,  348,  340,  347,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  307,  306,
-      341,  340,  340,  340,  342,  342,  342,  342,  342,  342,
-      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
-      342,  342,  342,  342,  342,  353,  307,  353,  353,  353,
-
-      353,  353,  353,  353,  353,  353,  353,  353,  353,  353,
-      353,  353,  353,  353,  353,  353,  357,  357,  306,  339,
-      338,  357,  357,  389,  307,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  392,  306,  330,  392,  392,  392,
-      392,  392,  392,  392,  392,  392,  392,  392,  392,  329,
-      392,  327,  392,  396,  321,  396,  396,  396,  396,  324,
-      396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
-      396,  396,  396,  396,  401,  401,  401,  401,  401,  401,
-      401,  401,  401,  401,  401,  401,  401,  401,  401,  321,
-
-      401,  320,  401,  401,  401,  404,  318,  404,  404,  404,
-      316,  404,  404,  404,  404,  404,  404,  404,  404,  404,
-      313,  315,  311,  404,  404,  404,  246,  310,  246,  308,
-      246,  246,  307,  306,  303,  246,  406,  301,  406,  406,
-      406,  406,  406,  406,  406,  406,  406,  406,  406,  406,
-      406,  406,  406,  406,  406,  406,  406,  407,  300,  407,
-      407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
-      407,  407,  407,  407,  407,  407,  407,  407,  418,  418,
-      418,  418,  418,  418,  418,  418,  418,  418,  418,  418,
-      418,  418,  418,  418,  418,  418,  418,  418,  418,  263,
-
-      296,  263,  294,  263,  263,  293,  285,  273,  263,  422,
-      422,  422,  422,  422,  422,  422,  422,  422,  422,  422,
-      422,  422,  422,  422,  422,  422,  422,  422,  422,  422,
-      427,  272,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  271,  427,  427,
-      427,  274,  265,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
-      274,  274,  437,  262,  437,  248,  437,  437,  244, 1113,
-      117,  437,  117,  437,  442, 1113,  442,  442,  442,  442,
-      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
-
-      442,  442,  442,  442,  442,  295, 1113,  295,  295,  295,
-      295,  295,  295,  295,  295,  295,  295,  295,  295,  295,
-      295,  295,  295,  295,  295,  295,  444, 1113,  444,  444,
-      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
-      444,  444,  444,  444,  444,  444,  444,  445, 1113,  445,
-      445,  445,  445,  445,  445,  445,  445,  445,  445,  445,
-      445,  445,  445,  445,  445,  445,  445,  445,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299, 1113,  299, 1113,  299,  299,  299,  302,
-     1113,  302,  302, 1113,  302,  302,  302,  302,  302,  302,
-
-      302,  302,  302,  302, 1113,  302, 1113,  302,  302,  302,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  309, 1113, 1113,  309,  309,  309,  309,  309,  309,
-      309,  309,  309,  309,  309,  309,  309,  309,  309,  309,
-      309,  309,  317, 1113,  317, 1113,  317,  317, 1113, 1113,
-     1113,  317,  326, 1113,  326, 1113,  326, 1113,  326,  326,
-      326,  326, 1113,  326,  326, 1113, 1113, 1113,  326,  328,
-     1113,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-      328,  328,  328,  328,  328,  328,  328,  328,  328,  328,
-
-      331, 1113,  331, 1113,  331,  331, 1113, 1113, 1113,  331,
-      334,  334,  334,  334,  334,  334,  334,  334,  334,  334,
-      334,  334,  334,  334,  334,  334,  334,  334,  334,  334,
-      334,  337, 1113,  337,  337,  337,  337,  337, 1113,  337,
-      337,  337,  337,  337,  337,  337, 1113,  337, 1113,  337,
-      337,  337,  340, 1113,  340, 1113,  340,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340, 1113, 1113, 1113,
-      340,  340,  340,  468, 1113,  468,  468,  468,  468,  468,
-      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-      468,  468,  468,  468,  353, 1113,  353,  353,  353,  353,
-
-      353,  353,  353,  353,  353,  353,  353,  353,  353,  353,
-      353,  353,  353,  353,  353,  357,  357, 1113, 1113, 1113,
-      357,  357,  389, 1113,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  392, 1113, 1113,  392,  392,  392,  392,
-      392,  392,  392,  392,  392,  392,  392,  392, 1113,  392,
-     1113,  392,  396, 1113,  396,  396,  396,  396, 1113,  396,
-      396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
-      396,  396,  396,  401,  401,  401,  401,  401,  401,  401,
-      401,  401,  401,  401,  401,  401,  401,  401, 1113,  401,
-
-     1113,  401,  401,  401,  404, 1113,  404,  404,  404, 1113,
-      404,  404,  404,  404,  404,  404,  404,  404,  404, 1113,
-     1113, 1113,  404,  404,  404,  406, 1113,  406,  406,  406,
-      406,  406,  406,  406,  406,  406,  406,  406,  406,  406,
-      406,  406,  406,  406,  406,  406,  407, 1113,  407,  407,
-      407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
-      407,  407,  407,  407,  407,  407,  407,  521,  521,  521,
-      521,  521,  521,  521,  521,  521,  521,  521,  521,  521,
-      521,  521,  521,  521,  521,  521,  521,  521,  530, 1113,
-      530, 1113,  530,  530, 1113, 1113, 1113,  530,  532, 1113,
-
-      532, 1113,  532,  532, 1113, 1113, 1113,  532,  418,  418,
-      418,  418,  418,  418,  418,  418,  418,  418,  418,  418,
-      418,  418,  418,  418,  418,  418,  418,  418,  418,  422,
-      422,  422,  422,  422,  422,  422,  422,  422,  422,  422,
-      422,  422,  422,  422,  422,  422,  422,  422,  422,  422,
-      427, 1113,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427, 1113,  427,  427,
-      427,  437, 1113,  437, 1113,  437,  437, 1113, 1113, 1113,
-      437, 1113,  437,  442, 1113,  442,  442,  442,  442,  442,
-      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
-
-      442,  442,  442,  442,  444, 1113,  444,  444,  444,  444,
-      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
-      444,  444,  444,  444,  444,  445, 1113,  445,  445,  445,
-      445,  445,  445,  445,  445,  445,  445,  445,  445,  445,
-      445,  445,  445,  445,  445,  445,  302, 1113,  302,  302,
-     1113,  302,  302,  302,  302,  302,  302,  302,  302,  302,
-      302, 1113,  302, 1113,  302,  302,  302,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  331, 1113,
-      331, 1113,  331,  331, 1113, 1113, 1113,  331,  342, 1113,
-
-      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
-      342,  342,  342,  342,  342,  342,  342,  342,  342,  468,
-     1113,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-      357,  357, 1113, 1113, 1113,  357,  357,  630, 1113,  630,
-      630,  630,  630,  630,  630,  630,  630,  630,  630,  630,
-      630,  630,  630,  630,  630,  630,  630,  630,  800,  800,
-      800,  800,  800,  800,  800,  800,  800,  800,  800,  800,
-      800,  800,  800,  800,  800,  800,  800,  800,  800,  938,
-      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
-
-      938,  938,  938,  938,  938,  938,  938,  938,  938,  938,
-       55, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113
-
-    } ;
-
-static const flex_int16_t yy_chk[4596] =
-    {   0,
-        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,    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,    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,    1,    1,    1,    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,    3,    3,
-      102,    3,    3,    5,    3,    5, 1012,    3,    3,    3,
-        3,   79,   79,    3,    3,    6,    6,    7,    6,    7,
-        3,   21,    6,    3,    8,  132,    8,   11,   11,  102,
-
-       11,   12,   12,  964,   12,   19,   85,   19,   19,   27,
-       28,   27,   28,   17,   20,   17,   20,   20,  148,    3,
-        3,   51,    9,   51,    9,   17,  537,   22,    9,   17,
-       17,   17,   17,   10,  132,   10,   29,  963,   29,   10,
-      176,   21,   21,   47,   21,   47,   29,  148,    3,    3,
-        3,    4,    4,   47,    4,    4,   19,    4,    4,  537,
-        4,    4,    4,    4,    9,   20,    4,    4,   23,  176,
-       23,    9,    9,    4,    9,   10,    4,   22,   22,   85,
-       22,   23,   10,   10,  962,   10,   29,  199,   29,   45,
-       52,   45,   52,    9,   17,   93,   37,   93,   45,   37,
-
-        9,  961,    4,    4,   10,    4,   38,  960,   46,   38,
-       46,   10,   37,   37,   37,   37,  199,   46,   23,   23,
-       23,  959,   38,   38,   38,   38,   57,   57,  153,   57,
-      153,    4,    4,    4,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   18,   24,
-       18,   24,  155,   30,  155,   30,   31,  202,   31,   31,
-       18,   64,   24,   30,   18,   18,   18,   18,   32,   43,
-       32,   32,   53,   48,   53,   48,  167,   61,   61,   53,
-       61,  101,   43,   48,   73,   73,  202,   73,   81,  261,
-       81,  261,   43,   81,   81,   81,   81,   43,   64,   24,
-       24,   24,  170,   30,  958,   30,   31,   31,   31,  170,
-      957,  101,   43,  111,  111,  268,  111,  268,   32,   32,
-       32,   43,   53,   53,   53,  956,   43,  167,   64,   18,
-
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   33,   33,   39,   33,   39,   34,
-       34,   33,   34,  147,   41,   42,   34,   49,   44,   49,
-
-       33,   41,   42,  175,  308,   34,  308,   49,  274,  274,
-       50,   44,   50,  184,   41,   42,  122,  122,  122,  122,
-       50,   44,  185,  147,   41,   42,   44,   33,  207,   41,
-       42,  955,   34,  175,   33,   33,   39,   33,   39,   34,
-       34,   44,   34,  184,   41,   42,  334,   49,  334,   49,
-       44,  954,  185,   41,   42,   44,   33,  207,   41,   42,
-       50,   34,   50,   33,  336,   39,  336,   39,   34,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   40,  634,   40,   54,  189,   54,   69,
-       69,  188,   69,   54,   80,   80,   69,   82,   82,  188,
-       82,  189,  128,  128,   82,  278,  278,  131,  131,  953,
-      138,  138,  359,   82,  187,  190,  194,  634,  195,   82,
-      187,  188,  191,  201,  196,  345,   80,  192,  196,  188,
-
-      952,  189,  345,   40,  128,   40,   54,   54,   54,  131,
-      897,  359,  138,  191,  187,  190,  194,  192,  195,  187,
-      198,   82,  191,  201,  196,   80,  896,  192,  196,  203,
-      198,  204,   40,  128,   40,   65,  243,  243,  131,  243,
-       69,  138,  191,  250,  205,  197,  192,  361,   82,  197,
-      198,  206,  251,  200,   65,  259,   65,  273,   65,  203,
-      198,  204,  895,  200,   65,  894,  200,   65,   65,   65,
-      893,   65,   65,   65,  205,  197,  361,   65,  892,  197,
-      250,  206,  251,  200,   65,  259,   65,  273,   65,  211,
-      211,  211,  211,  200,   65,  200,  891,   65,   65,   65,
-
-       65,   65,   65,  890,  247,  247,   65,  247,   65,  889,
-      250,  254,  254,  888,  254,  255,  255,  887,  255,  256,
-      256,  363,  256,  257,  257,  275,  257,  293,  254,  254,
-      254,  254,  255,  255,  255,  255,  256,  256,  256,  256,
-      257,  257,  257,  257,  264,  264,  304,  264,  276,  276,
-      363,  264,  305,  886,  254,  275,  275,  293,  312,  312,
-      256,  312,  332,  257,  885,  284,  284,  884,  284,  333,
-      349,  350,  284,  355,  356,  358,  304,  883,  365,  366,
-      276,  284,  305,  254,  367,  360,  368,  284,  371,  358,
-      256,  369,  332,  257,  319,  319,  319,  319,  372,  333,
-
-      349,  350,  360,  355,  356,  358,  364,  365,  366,  276,
-      364,  373,  381,  367,  374,  360,  368,  371,  358,  284,
-      418,  369,  418,  882,  420,  264,  420,  422,  372,  422,
-      881,  360,  391,  391,  391,  391,  364,  424,  880,  424,
-      364,  373,  381,  374,  376,  378,  284,  321,  321,  321,
-      321,  321,  321,  321,  321,  321,  321,  321,  321,  321,
-      321,  321,  321,  321,  321,  321,  321,  321,  321,  321,
-      321,  321,  370,  376,  378,  321,  370,  321,  321,  321,
-      321,  321,  321,  321,  321,  321,  321,  321,  321,  321,
-      321,  321,  321,  321,  321,  321,  321,  321,  321,  321,
-
-      321,  379,  370,  380,  383,  370,  382,  383,  384,  385,
-      382,  879,  386,  380,  387,  382,  385,  878,  405,  427,
-      427,  412,  413,  433,  433,  448,  414,  448,  639,  639,
-      379,  416,  426,  380,  383,  877,  382,  383,  384,  385,
-      382,  386,  380,  387,  531,  382,  385,  388,  405,  388,
-      412,  413,  388,  388,  408,  408,  414,  408,  388,  388,
-      428,  416,  426,  876,  388,  388,  875,  411,  411,  388,
-      411,  408,  408,  408,  408,  441,  388,  388,  443,  388,
-      429,  429,  388,  388,  411,  411,  411,  411,  388,  388,
-      428,  428,  446,  388,  388,  431,  431,  447,  388,  438,
-
-      438,  438,  438,  464,  450,  441,  450,  465,  443,  469,
-      470,  521,  429,  521,  871,  471,  429,  524,  870,  524,
-      526,  526,  446,  526,  531,  818,  625,  447,  625,  431,
-      431,  626,  626,  464,  626,  632,  632,  465,  632,  469,
-      470,  429,  430,  430,  471,  430,  430,  430,  430,  430,
-      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
-      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
-      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
-      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
-      430,  430,  430,  430,  430,  430,  817,  430,  430,  430,
-
-      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
-      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
-      430,  430,  430,  430,  430,  430,  432,  432,  432,  432,
-      451,  452,  453,  457,  456,  432,  432,  432,  432,  432,
-      432,  454,  459,  460,  472,  461,  451,  452,  473,  458,
-      453,  474,  457,  461,  454,  816,  456,  475,  476,  477,
-      432,  432,  459,  460,  478,  432,  432,  432,  432,  432,
-      432,  458,  480,  472,  458,  482,  451,  452,  473,  481,
-      453,  474,  457,  461,  454,  456,  486,  475,  476,  477,
-      484,  487,  459,  460,  478,  815,  485,  488,  489,  814,
-
-      458,  491,  480,  458,  462,  482,  492,  493,  481,  462,
-      462,  462,  462,  494,  495,  462,  486,  496,  497,  484,
-      462,  487,  498,  499,  462,  485,  488,  462,  489,  462,
-      500,  491,  462,  501,  502,  503,  492,  493,  505,  462,
-      462,  462,  462,  494,  495,  462,  506,  496,  497,  504,
-      462,  507,  498,  499,  462,  504,  462,  508,  462,  509,
-      500,  462,  510,  501,  502,  503,  511,  513,  505,  512,
-      514,  515,  516,  517,  519,  506,  518,  519,  519,  504,
-      507,  520,  638,  638,  638,  504,  546,  508,  527,  509,
-      528,  529,  510,  533,  543,  544,  511,  513,  512,  813,
-
-      514,  515,  516,  517,  519,  518,  519,  519,  631,  522,
-      522,  520,  522,  525,  525,  546,  525,  719,  527,  719,
-      528,  529,  812,  533,  543,  544,  522,  522,  522,  522,
-      525,  525,  525,  525,  534,  534,  811,  534,  534,  534,
-      534,  534,  534,  534,  534,  534,  534,  534,  534,  534,
-      534,  534,  534,  534,  534,  534,  534,  534,  534,  534,
-      534,  534,  534,  534,  534,  534,  534,  534,  534,  534,
-      534,  534,  534,  534,  534,  534,  534,  534,  534,  534,
-      534,  534,  534,  534,  534,  534,  534,  534,  631,  534,
-      534,  534,  534,  534,  534,  534,  534,  534,  534,  534,
-
-      534,  534,  534,  534,  534,  534,  534,  534,  534,  534,
-      534,  534,  534,  534,  534,  534,  534,  534,  535,  535,
-      545,  548,  550,  810,  539,  539,  549,  552,  557,  551,
-      554,  549,  552,  553,  809,  559,  558,  640,  640,  548,
-      551,  548,  556,  554,  727,  727,  550,  556,  557,  558,
-      545,  559,  535,  535,  536,  536,  536,  536,  539,  539,
-      553,  549,  552,  536,  536,  536,  536,  536,  536,  548,
-      551,  548,  555,  554,  562,  550,  560,  556,  557,  558,
-      800,  559,  800,  563,  569,  561,  566,  562,  564,  553,
-      555,  571,  560,  536,  536,  536,  536,  536,  536,  540,
-
-      540,  540,  540,  561,  565,  563,  566,  564,  540,  540,
-      540,  540,  540,  540,  569,  567,  568,  562,  570,  572,
-      555,  571,  560,  575,  568,  808,  565,  576,  577,  565,
-      578,  579,  580,  561,  563,  567,  566,  564,  540,  540,
-      540,  540,  540,  540,  582,  584,  581,  570,  572,  583,
-      587,  806,  588,  575,  568,  565,  576,  577,  565,  578,
-      589,  579,  580,  581,  590,  567,  594,  595,  599,  581,
-      799,  597,  598,  601,  582,  584,  602,  603,  583,  604,
-      587,  588,  605,  606,  796,  607,  608,  609,  611,  589,
-      612,  613,  615,  581,  590,  594,  614,  595,  599,  581,
-
-      597,  598,  601,  616,  617,  619,  602,  603,  618,  604,
-      620,  605,  621,  606,  607,  608,  620,  609,  611,  622,
-      612,  613,  615,  627,  628,  614,  629,  636,  636,  641,
-      651,  643,  616,  646,  617,  619,  647,  618,  644,  784,
-      620,  669,  621,  650,  652,  620,  770,  660,  647,  622,
-      651,  648,  627,  652,  628,  629,  650,  649,  646,  641,
-      643,  636,  636,  637,  637,  637,  637,  653,  644,  648,
-      669,  660,  637,  637,  637,  637,  637,  637,  647,  649,
-      651,  654,  655,  652,  656,  653,  650,  646,  654,  655,
-      657,  658,  659,  656,  728,  728,  665,  659,  663,  648,
-
-      660,  657,  637,  637,  637,  637,  637,  637,  649,  658,
-      661,  658,  662,  664,  665,  653,  667,  662,  654,  655,
-      668,  661,  670,  656,  666,  663,  664,  659,  671,  666,
-      672,  657,  674,  668,  676,  679,  667,  761,  680,  658,
-      681,  658,  683,  687,  665,  679,  685,  662,  688,  689,
-      691,  661,  670,  692,  663,  693,  664,  671,  695,  666,
-      672,  674,  696,  668,  676,  679,  667,  680,  697,  699,
-      681,  700,  683,  687,  679,  685,  701,  702,  688,  689,
-      691,  704,  692,  705,  707,  693,  706,  695,  709,  710,
-      711,  696,  713,  714,  733,  715,  716,  697,  717,  699,
-
-      700,  720,  721,  722,  722,  701,  722,  702,  730,  736,
-      704,  733,  734,  705,  707,  706,  737,  734,  709,  710,
-      711,  735,  713,  714,  715,  736,  716,  739,  717,  740,
-      738,  720,  721,  726,  726,  726,  735,  741,  743,  745,
-      737,  733,  738,  744,  747,  742,  746,  734,  748,  739,
-      729,  750,  749,  740,  742,  736,  744,  752,  746,  751,
-      743,  741,  747,  725,  745,  749,  735,  753,  751,  737,
-      748,  750,  738,  754,  753,  752,  755,  763,  739,  764,
-      754,  765,  740,  756,  742,  755,  744,  763,  746,  743,
-      741,  766,  747,  745,  756,  749,  767,  768,  751,  748,
-
-      769,  750,  771,  772,  753,  752,  773,  763,  774,  764,
-      754,  765,  775,  776,  778,  755,  777,  763,  780,  724,
-      782,  766,  786,  787,  756,  767,  768,  788,  791,  769,
-      793,  797,  771,  772,  718,  798,  773,  802,  774,  802,
-      804,  712,  775,  776,  778,  777,  790,  790,  780,  782,
-      820,  790,  786,  787,  790,  819,  788,  790,  791,  708,
-      793,  797,  790,  794,  794,  798,  823,  820,  794,  804,
-      821,  794,  824,  822,  794,  821,  790,  790,  825,  819,
-      826,  790,  823,  827,  790,  828,  831,  790,  822,  830,
-      825,  790,  832,  794,  794,  833,  824,  820,  794,  831,
-
-      834,  794,  826,  835,  794,  821,  829,  827,  819,  828,
-      838,  830,  823,  836,  841,  829,  694,  840,  822,  842,
-      825,  843,  832,  844,  833,  824,  845,  847,  849,  831,
-      834,  826,  835,  850,  852,  856,  827,  857,  828,  838,
-      830,  858,  690,  836,  841,  829,  840,  860,  842,  865,
-      852,  843,  844,  861,  862,  859,  845,  847,  849,  859,
-      863,  864,  859,  850,  852,  856,  857,  866,  684,  868,
-      869,  858,  859,  872,  867,  678,  860,  867,  865,  852,
-      873,  898,  873,  861,  862,  859,  903,  867,  899,  859,
-      863,  864,  859,  900,  901,  902,  905,  866,  868,  869,
-
-      906,  859,  872,  907,  867,  898,  908,  867,  910,  911,
-      912,  642,  913,  914,  915,  903,  867,  916,  899,  917,
-      919,  920,  921,  900,  901,  902,  905,  922,  635,  923,
-      906,  924,  926,  907,  898,  927,  908,  910,  928,  911,
-      912,  913,  930,  914,  915,  931,  932,  916,  917,  933,
-      919,  920,  921,  934,  935,  937,  936,  922,  923,  938,
-      924,  938,  926,  965,  940,  927,  940,  928,  966,  967,
-      968,  969,  930,  936,  970,  931,  932,  971,  933,  972,
-      973,  974,  934,  935,  937,  975,  936,  976,  978,  633,
-      979,  980,  965,  981,  982,  983,  984,  985,  966,  967,
-
-      968,  969,  936,  987,  970,  989,  990,  971,  972,  973,
-      991,  974,  992,  993,  975,  995,  999,  976,  978,  979,
-      980,  996,  981,  998,  982,  983,  984,  985, 1015,  997,
-     1013, 1014,  987,  997,  989,  990, 1016, 1017, 1019, 1020,
-      991, 1022,  992,  993, 1023,  995,  999, 1024, 1025, 1026,
-      996, 1027,  998, 1028, 1030, 1034, 1035, 1015,  997, 1036,
-     1013, 1014,  997, 1039, 1040, 1016, 1017, 1041, 1019, 1020,
-     1022, 1042, 1043, 1023, 1044, 1046, 1047, 1024, 1025, 1026,
-     1048, 1027, 1049, 1028, 1030, 1034, 1035, 1050, 1053, 1036,
-     1055, 1057, 1039, 1060, 1040, 1063, 1064, 1041, 1065, 1066,
-
-     1042, 1043, 1067, 1044, 1046, 1068, 1047, 1069, 1070, 1072,
-     1048, 1073, 1049, 1074, 1075,  623, 1077, 1050, 1053, 1055,
-     1081, 1057, 1082, 1060, 1083, 1063, 1064, 1065, 1084, 1066,
-     1086, 1087, 1067, 1088, 1089, 1068, 1090, 1069, 1070, 1072,
-     1073, 1093, 1074, 1095, 1075, 1077, 1096, 1097, 1098, 1100,
-     1081, 1103, 1082, 1083, 1105,  596, 1106, 1107, 1084, 1109,
-     1086, 1087, 1110, 1088, 1089, 1090, 1157, 1157,  593, 1173,
-     1093, 1173, 1206, 1095, 1206, 1096, 1097, 1098,  547, 1100,
-      538, 1103, 1166, 1166, 1105, 1106, 1107, 1166,  490, 1109,
-      467,  466, 1110, 1114, 1114, 1114, 1114, 1114, 1114, 1114,
-
-     1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114,
-     1114, 1114, 1114, 1114, 1115, 1115, 1115, 1115, 1115, 1115,
-     1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115,
-     1115, 1115, 1115, 1115, 1115, 1116, 1116, 1116, 1116, 1116,
-     1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116,
-     1116, 1116, 1116, 1116, 1116, 1116, 1117, 1117, 1117, 1117,
-     1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
-     1117, 1117, 1117, 1117, 1117, 1117, 1117, 1118, 1118, 1118,
-     1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118,
-     1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1119, 1119,
-
-     1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119,
-     1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1120,
-     1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120,
-     1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120,
-     1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121,
-     1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121,
-     1121, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122,
-     1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122,
-     1122, 1122, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123,
-     1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123,
-
-     1123, 1123, 1123, 1124, 1124, 1124, 1124, 1124, 1124, 1124,
-     1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124,
-     1124, 1124, 1124, 1124, 1125, 1125, 1125, 1125, 1125, 1125,
-     1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
-     1125, 1125, 1125, 1125, 1125, 1126, 1126, 1126, 1126, 1126,
-     1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126,
-     1126, 1126, 1126, 1126, 1126, 1126, 1127, 1127, 1127, 1127,
-     1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127,
-     1127, 1127, 1127, 1127, 1127, 1127, 1127, 1128, 1128, 1128,
-     1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128,
-
-     1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1129, 1129,
-     1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129,
-     1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1130,
-     1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130,
-     1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130,
-     1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131,
-     1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131,
-     1131, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
-     1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
-     1132, 1132, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133,
-
-     1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133,
-     1133, 1133, 1133, 1134, 1134, 1134, 1134, 1134, 1134, 1134,
-     1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134,
-     1134, 1134, 1134, 1134, 1135,  455, 1135,  437, 1135, 1135,
-     1213, 1213, 1213, 1135, 1136, 1136, 1136, 1136, 1136, 1136,
-     1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
-     1136, 1136, 1136, 1136, 1137,  410, 1137,  389, 1137, 1137,
-     1167, 1167,  362, 1137, 1138, 1167, 1138, 1138, 1138, 1138,
-     1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
-     1138, 1138, 1138, 1138, 1138, 1139,  353, 1139, 1139, 1139,
-
-     1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
-     1139, 1139, 1139, 1139, 1139, 1139, 1140, 1140,  351, 1140,
-      346, 1140, 1140,  344,  343,  328, 1140, 1141,  315, 1141,
-     1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
-     1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1142, 1142,
-     1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
-     1142, 1142, 1142,  314, 1142,  313, 1142, 1142, 1142, 1143,
-      310, 1143, 1143,  296, 1143, 1143, 1143, 1143, 1143, 1143,
-     1143, 1143, 1143, 1143,  289, 1143,  288, 1143, 1143, 1143,
-     1144,  287,  286, 1144, 1144, 1144, 1144, 1144, 1144, 1144,
-
-     1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144,
-     1144, 1145,  283, 1145,  281, 1145, 1145,  280,  271,  270,
-     1145, 1146,  267, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
-     1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
-     1146, 1146, 1147,  266, 1147, 1147, 1147, 1147, 1147, 1147,
-     1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,  249,
-     1147, 1147, 1147, 1148,  245, 1148,  241, 1148,  239, 1148,
-     1148, 1148, 1148,  238, 1148, 1148,  236,  235,  234, 1148,
-     1149,  230, 1149, 1149, 1149,  216, 1149, 1149, 1149, 1149,
-     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
-
-     1149, 1150,  215, 1150,  214, 1150, 1150,  210,  183,  182,
-     1150, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151,
-     1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151,
-     1151, 1151, 1152,  180, 1152, 1152, 1152, 1152, 1152,  178,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152,  177, 1152,  174,
-     1152, 1152, 1152, 1153,  173, 1153,  172, 1153, 1153, 1153,
-     1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,  168,  166,
-      164, 1153, 1153, 1153, 1154, 1154, 1154, 1154, 1154, 1154,
-     1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
-     1154, 1154, 1154, 1154, 1154, 1155,  161, 1155, 1155, 1155,
-
-     1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,
-     1155, 1155, 1155, 1155, 1155, 1155, 1156, 1156,  160,  159,
-      158, 1156, 1156, 1158,  150, 1158, 1158, 1158, 1158, 1158,
-     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
-     1158, 1158, 1158, 1158, 1159,  149,  145, 1159, 1159, 1159,
-     1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,  144,
-     1159,  142, 1159, 1160,  137, 1160, 1160, 1160, 1160,  135,
-     1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
-     1160, 1160, 1160, 1160, 1161, 1161, 1161, 1161, 1161, 1161,
-     1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,  130,
-
-     1161,  126, 1161, 1161, 1161, 1162,  120, 1162, 1162, 1162,
-      115, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
-      113,  112,  109, 1162, 1162, 1162, 1163,  107, 1163,  105,
-     1163, 1163,  104,  103,   99, 1163, 1164,   96, 1164, 1164,
-     1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
-     1164, 1164, 1164, 1164, 1164, 1164, 1164, 1165,   95, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1168, 1168,
-     1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168,
-     1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1169,
-
-       92, 1169,   90, 1169, 1169,   86,   84,   78, 1169, 1170,
-     1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170,
-     1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170,
-     1171,   77, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171,   74, 1171, 1171,
-     1171, 1172,   71, 1172, 1172, 1172, 1172, 1172, 1172, 1172,
-     1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,
-     1172, 1172, 1174,   66, 1174,   63, 1174, 1174,   59,   55,
-       16, 1174,   15, 1174, 1175,    0, 1175, 1175, 1175, 1175,
-     1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
-
-     1175, 1175, 1175, 1175, 1175, 1176,    0, 1176, 1176, 1176,
-     1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176,
-     1176, 1176, 1176, 1176, 1176, 1176, 1177,    0, 1177, 1177,
-     1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,
-     1177, 1177, 1177, 1177, 1177, 1177, 1177, 1178,    0, 1178,
-     1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
-     1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1179, 1179,
-     1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
-     1179, 1179, 1179,    0, 1179,    0, 1179, 1179, 1179, 1180,
-        0, 1180, 1180,    0, 1180, 1180, 1180, 1180, 1180, 1180,
-
-     1180, 1180, 1180, 1180,    0, 1180,    0, 1180, 1180, 1180,
-     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
-     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
-     1181, 1182,    0,    0, 1182, 1182, 1182, 1182, 1182, 1182,
-     1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
-     1182, 1182, 1183,    0, 1183,    0, 1183, 1183,    0,    0,
-        0, 1183, 1184,    0, 1184,    0, 1184,    0, 1184, 1184,
-     1184, 1184,    0, 1184, 1184,    0,    0,    0, 1184, 1185,
-        0, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-
-     1186,    0, 1186,    0, 1186, 1186,    0,    0,    0, 1186,
-     1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187,
-     1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187,
-     1187, 1188,    0, 1188, 1188, 1188, 1188, 1188,    0, 1188,
-     1188, 1188, 1188, 1188, 1188, 1188,    0, 1188,    0, 1188,
-     1188, 1188, 1189,    0, 1189,    0, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189,    0,    0,    0,
-     1189, 1189, 1189, 1190,    0, 1190, 1190, 1190, 1190, 1190,
-     1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190,
-     1190, 1190, 1190, 1190, 1191,    0, 1191, 1191, 1191, 1191,
-
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1192, 1192,    0,    0,    0,
-     1192, 1192, 1193,    0, 1193, 1193, 1193, 1193, 1193, 1193,
-     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
-     1193, 1193, 1193, 1194,    0,    0, 1194, 1194, 1194, 1194,
-     1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,    0, 1194,
-        0, 1194, 1195,    0, 1195, 1195, 1195, 1195,    0, 1195,
-     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
-     1195, 1195, 1195, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
-     1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,    0, 1196,
-
-        0, 1196, 1196, 1196, 1197,    0, 1197, 1197, 1197,    0,
-     1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,    0,
-        0,    0, 1197, 1197, 1197, 1198,    0, 1198, 1198, 1198,
-     1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
-     1198, 1198, 1198, 1198, 1198, 1198, 1199,    0, 1199, 1199,
-     1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199,
-     1199, 1199, 1199, 1199, 1199, 1199, 1199, 1200, 1200, 1200,
-     1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,
-     1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1201,    0,
-     1201,    0, 1201, 1201,    0,    0,    0, 1201, 1202,    0,
-
-     1202,    0, 1202, 1202,    0,    0,    0, 1202, 1203, 1203,
-     1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
-     1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1204,
-     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
-     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
-     1205,    0, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205,    0, 1205, 1205,
-     1205, 1207,    0, 1207,    0, 1207, 1207,    0,    0,    0,
-     1207,    0, 1207, 1208,    0, 1208, 1208, 1208, 1208, 1208,
-     1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208,
-
-     1208, 1208, 1208, 1208, 1209,    0, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1210,    0, 1210, 1210, 1210,
-     1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210,
-     1210, 1210, 1210, 1210, 1210, 1210, 1211,    0, 1211, 1211,
-        0, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211,    0, 1211,    0, 1211, 1211, 1211, 1212, 1212, 1212,
-     1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212,
-     1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1214,    0,
-     1214,    0, 1214, 1214,    0,    0,    0, 1214, 1215,    0,
-
-     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
-     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1216,
-        0, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216,
-     1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216,
-     1217, 1217,    0,    0,    0, 1217, 1217, 1218,    0, 1218,
-     1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
-     1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1220,
-     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
-
-     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1113, 1113
-
-    } ;
-
-static yy_state_type yy_last_accepting_state;
-static char *yy_last_accepting_cpos;
-
-extern int yy_flex_debug;
-int yy_flex_debug = 0;
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
-#line 1 "tests/scan.l"
-/* scan.l - scanner for flex input -*-C-*- */
-#line 4 "tests/scan.l"
-/*  Copyright (c) 1990 The Regents of the University of California. */
-/*  All rights reserved. */
-
-/*  This code is derived from software contributed to Berkeley by */
-/*  Vern Paxson. */
-
-/*  The United States Government has rights in this work pursuant */
-/*  to contract no. DE-AC03-76SF00098 between the United States */
-/*  Department of Energy and the University of California. */
-
-/*  This file is part of flex. */
-
-/*  Redistribution and use in source and binary forms, with or without */
-/*  modification, are permitted provided that the following conditions */
-/*  are met: */
-
-/*  1. Redistributions of source code must retain the above copyright */
-/*     notice, this list of conditions and the following disclaimer. */
-/*  2. Redistributions in binary form must reproduce the above copyright */
-/*     notice, this list of conditions and the following disclaimer in the */
-/*     documentation and/or other materials provided with the distribution. */
-
-/*  Neither the name of the University nor the names of its contributors */
-/*  may be used to endorse or promote products derived from this software */
-/*  without specific prior written permission. */
-
-/*  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */
-/*  IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */
-/*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */
-/*  PURPOSE. */
-
-#include "flexdef.h"
-#include "parse.h"
-extern bool tablesverify, tablesext;
-extern int trlcontxt; /* Set in  parse.y for each rule. */
-extern const char *escaped_qstart, *escaped_qend;
-
-#define M4QSTART "[""["
-#define M4QEND "]""]"
-
-#define ESCAPED_QSTART "[" M4QEND M4QSTART "[" M4QEND M4QSTART
-#define ESCAPED_QEND M4QEND "]" M4QSTART M4QEND "]" M4QSTART
-
-#define ACTION_ECHO add_action( yytext )
-#define ACTION_IFDEF(def, should_define) \
-       { \
-       if ( should_define ) \
-               action_define( def, 1 ); \
-       }
-
-#define ACTION_ECHO_QSTART add_action (ESCAPED_QSTART)
-#define ACTION_ECHO_QEND   add_action (ESCAPED_QEND)
-
-#define ACTION_M4_IFDEF(def, should_define) \
-    do{ \
-        if ( should_define ) \
-            buf_m4_define( &m4defs_buf, def, NULL);\
-        else \
-            buf_m4_undefine( &m4defs_buf, def);\
-    } while(0)
-
-#define MARK_END_OF_PROLOG mark_prolog();
-
-#if 1
-#define YY_DECL \
-       static int real_flexscan(void)
-#else
-#define YY_DECL \
-       int flexscan(void)
-#endif
-
-#define RETURNCHAR \
-       yylval = (unsigned char) yytext[0]; \
-       return CHAR;
-
-#define RETURNNAME \
-       if(yyleng < MAXLINE) \
-         { \
-       strncpy( nmstr, yytext, sizeof(nmstr) ); \
- piece_pack(); \
- piece_append("<PLex_Name>"); \
- piece_escape(yytext, strlen(yytext)); \
- piece_append("</PLex_Name>"); \
- piece_pack(); \
- return ~NAME; \
- /*    return NAME;*/ \
-        } \
-       else \
-        do { \
-          synerr(_("Input line too long\n")); \
-          FLEX_EXIT(EXIT_FAILURE);  \
-        } while (0)
-
-#define PUT_BACK_STRING(str, start) \
-       { size_t i = strlen( str );     \
-         while ( i > start )           \
-           unput((str)[--i]);          \
-       }
-
-#define CHECK_REJECT(str) \
-       if ( all_upper( str ) ) \
-               reject = true;
-
-#define CHECK_YYMORE(str) \
-       if ( all_lower( str ) ) \
-               yymore_used = true;
-
-#define YY_USER_INIT \
-       if ( getenv("POSIXLY_CORRECT") ) \
-               posix_compat = true;
-
-#define START_CODEBLOCK(x) do { \
-    /* Emit the needed line directive... */\
-    if (indented_code == false) { \
-        linenum++; \
-        line_directive_out(NULL, 1); \
-    } \
-    add_action(M4QSTART); \
-    yy_push_state(CODEBLOCK); \
-    if ((indented_code = x)) ACTION_ECHO; \
- piece_append("<PLex_Section1Or2_CodeBlock>"); \
-} while(0)
-
-#define END_CODEBLOCK do { \
-    yy_pop_state();\
-    add_action(M4QEND); \
-    if (!indented_code) line_directive_out(NULL, 0);\
- piece_append("</PLex_Section1Or2_CodeBlock>"); \
-} while (0)
-
-/* Nick */
-char piece_temp[100], *piece[10000];
-int piece0, piece1;
-
-void piece_append(const char *str);
-void piece_insert(int n, const char *str);
-void piece_escape(const char *p, size_t n);
-void piece_flush(size_t n);
-void piece_pack();
-
-static void markup_action(const char *text);
-static void markup_option(const char *name, int sense);
-
-#line 1991 "lex.yy.c"
-
-#line 1993 "lex.yy.c"
-
-#define INITIAL 0
-#define SECT2 1
-#define SECT2PROLOG 2
-#define SECT3 3
-#define CODEBLOCK 4
-#define PICKUPDEF 5
-#define SC 6
-#define CARETISBOL 7
-#define NUM 8
-#define QUOTE 9
-#define FIRSTCCL 10
-#define CCL 11
-#define ACTION 12
-#define RECOVER 13
-#define COMMENT 14
-#define ACTION_STRING 15
-#define PERCENT_BRACE_ACTION 16
-#define OPTION 17
-#define LINEDIR 18
-#define CODEBLOCK_MATCH_BRACE 19
-#define GROUP_WITH_PARAMS 20
-#define GROUP_MINUS_PARAMS 21
-#define EXTENDED_COMMENT 22
-#define COMMENT_DISCARD 23
-#define CODE_COMMENT 24
-#define SECT3_NOESCAPE 25
-#define CHARACTER_CONSTANT 26
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-#include <unistd.h>
-#endif
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-static int yy_init_globals ( void );
-
-/* Accessor methods to globals.
-   These are made visible to non-reentrant scanners for convenience. */
-
-int yylex_destroy ( void );
-
-int yyget_debug ( void );
-
-void yyset_debug ( int debug_flag  );
-
-YY_EXTRA_TYPE yyget_extra ( void );
-
-void yyset_extra ( YY_EXTRA_TYPE user_defined  );
-
-FILE *yyget_in ( void );
-
-void yyset_in  ( FILE * _in_str  );
-
-FILE *yyget_out ( void );
-
-void yyset_out  ( FILE * _out_str  );
-
-                       int yyget_leng ( void );
-
-char *yyget_text ( void );
-
-int yyget_lineno ( void );
-
-void yyset_lineno ( int _line_number  );
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int yywrap ( void );
-#else
-extern int yywrap ( void );
-#endif
-#endif
-
-#ifndef YY_NO_UNPUT
-    
-    static void yyunput ( int c, char *buf_ptr  );
-    
-#endif
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy ( char *, const char *, int );
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen ( const char * );
-#endif
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-static int yyinput ( void );
-#else
-static int input ( void );
-#endif
-
-#endif
-
-        static int yy_start_stack_ptr = 0;
-        static int yy_start_stack_depth = 0;
-        static int *yy_start_stack = NULL;
-    
-    static void yy_push_state ( int _new_state );
-    
-    static void yy_pop_state ( void );
-    
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k */
-#define YY_READ_BUF_SIZE 16384
-#else
-#define YY_READ_BUF_SIZE 8192
-#endif /* __ia64__ */
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
-#endif
-
-/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
-       if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
-               { \
-               int c = '*'; \
-               int n; \
-               for ( n = 0; n < max_size && \
-                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
-                       buf[n] = (char) c; \
-               if ( c == '\n' ) \
-                       buf[n++] = (char) c; \
-               if ( c == EOF && ferror( yyin ) ) \
-                       YY_FATAL_ERROR( "input in flex scanner failed" ); \
-               result = n; \
-               } \
-       else \
-               { \
-               errno=0; \
-               while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
-                       { \
-                       if( errno != EINTR) \
-                               { \
-                               YY_FATAL_ERROR( "input in flex scanner failed" ); \
-                               break; \
-                               } \
-                       errno=0; \
-                       clearerr(yyin); \
-                       } \
-               }\
-\
-
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-#endif
-
-/* end tables serialization structures and prototypes */
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
-
-extern int yylex (void);
-
-#define YY_DECL int yylex (void)
-#endif /* !YY_DECL */
-
-/* Code executed at the beginning of each rule, after yytext and yyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK /*LINTED*/break;
-#endif
-
-#define YY_RULE_SETUP \
-       if ( yyleng > 0 ) \
-               YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
-                               (yytext[yyleng - 1] == '\n'); \
-       YY_USER_ACTION
-
-/** The main scanner function which does all the work.
- */
-YY_DECL
-{
-       yy_state_type yy_current_state;
-       char *yy_cp, *yy_bp;
-       int yy_act;
-    
-       if ( !(yy_init) )
-               {
-               (yy_init) = 1;
-
-#ifdef YY_USER_INIT
-               YY_USER_INIT;
-#endif
-
-               if ( ! (yy_start) )
-                       (yy_start) = 1; /* first start state */
-
-               if ( ! yyin )
-                       yyin = stdin;
-
-               if ( ! yyout )
-                       yyout = stdout;
-
-               if ( ! YY_CURRENT_BUFFER ) {
-                       yyensure_buffer_stack ();
-                       YY_CURRENT_BUFFER_LVALUE =
-                               yy_create_buffer( yyin, YY_BUF_SIZE );
-               }
-
-               yy_load_buffer_state(  );
-               }
-
-       {
-#line 184 "tests/scan.l"
-
-#line 186 "tests/scan.l"
-       static int bracelevel, didadef, indented_code;
-       static int doing_rule_action = false;
-       static int option_sense;
-
-       int doing_codeblock = false;
-       int brace_depth=0, brace_start_line=0;
-       char nmdef[MAXLINE];
-
-
-#line 2259 "lex.yy.c"
-
-       while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
-               {
-               yy_cp = (yy_c_buf_p);
-
-               /* Support of yytext. */
-               *yy_cp = (yy_hold_char);
-
-               /* yy_bp points to the position in yy_ch_buf of the start of
-                * the current run.
-                */
-               yy_bp = yy_cp;
-
-               yy_current_state = (yy_start);
-               yy_current_state += YY_AT_BOL();
-yy_match:
-               do
-                       {
-                       int yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
-                       if ( yy_accept[yy_current_state] )
-                               {
-                               (yy_last_accepting_state) = yy_current_state;
-                               (yy_last_accepting_cpos) = yy_cp;
-                               }
-                       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-                               {
-                               yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 1114 )
-                                       yy_c = yy_meta[yy_c];
-                               }
-                       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-                       ++yy_cp;
-                       }
-               while ( yy_base[yy_current_state] != 4511 );
-
-yy_find_action:
-               yy_act = yy_accept[yy_current_state];
-               if ( yy_act == 0 )
-                       { /* have to back up */
-                       yy_cp = (yy_last_accepting_cpos);
-                       yy_current_state = (yy_last_accepting_state);
-                       yy_act = yy_accept[yy_current_state];
-                       }
-
-               YY_DO_BEFORE_ACTION;
-
-do_action:     /* This label is used only to access EOF actions. */
-
-               switch ( yy_act )
-       { /* beginning of action switch */
-                       case 0: /* must back up */
-                       /* undo the effects of YY_DO_BEFORE_ACTION */
-                       *yy_cp = (yy_hold_char);
-                       yy_cp = (yy_last_accepting_cpos);
-                       yy_current_state = (yy_last_accepting_state);
-                       goto yy_find_action;
-
-case 1:
-YY_RULE_SETUP
-#line 196 "tests/scan.l"
-START_CODEBLOCK(true); piece_append("<PLex_Text>");
-       YY_BREAK
-case 2:
-YY_RULE_SETUP
-#line 197 "tests/scan.l"
-add_action("/*[""["); yy_push_state( COMMENT );
-       YY_BREAK
-case 3:
-YY_RULE_SETUP
-#line 198 "tests/scan.l"
-yy_push_state( LINEDIR );
-       YY_BREAK
-case 4:
-YY_RULE_SETUP
-#line 199 "tests/scan.l"
-return SCDECL;
-       YY_BREAK
-case 5:
-YY_RULE_SETUP
-#line 200 "tests/scan.l"
-return XSCDECL;
-       YY_BREAK
-case 6:
-/* rule 6 can match eol */
-YY_RULE_SETUP
-#line 201 "tests/scan.l"
-START_CODEBLOCK(false); piece_flush(strlen(yytext)); piece_append("<PLex_Text>");
-       YY_BREAK
-case 7:
-/* rule 7 can match eol */
-YY_RULE_SETUP
-#line 202 "tests/scan.l"
-{
-                brace_start_line = linenum;
-                ++linenum;
-                buf_linedir( &top_buf, infilename?infilename:"<stdin>", linenum);
-                brace_depth = 1;
-                yy_push_state(CODEBLOCK_MATCH_BRACE);
-            }
-       YY_BREAK
-case 8:
-YY_RULE_SETUP
-#line 210 "tests/scan.l"
-synerr( _("malformed '%top' directive") );
-       YY_BREAK
-case 9:
-YY_RULE_SETUP
-#line 212 "tests/scan.l"
-/* discard */
-       YY_BREAK
-case 10:
-YY_RULE_SETUP
-#line 214 "tests/scan.l"
-{
-                       sectnum = 2;
-                       bracelevel = 0;
-                       mark_defs1();
-                       line_directive_out(NULL, 1);
-                       BEGIN(SECT2PROLOG);
-#if 1
- piece_append("</PLex_Section1>");
- piece_pack();
- piece_escape(yytext, strlen(yytext));
- piece_append("<PLex_Section2>");
- piece_pack();
- return ~SECTEND;
-#else
-                       return SECTEND;
-#endif
-                       }
-       YY_BREAK
-case 11:
-/* rule 11 can match eol */
-YY_RULE_SETUP
-#line 232 "tests/scan.l"
-yytext_is_array = false; ++linenum; piece_append("<PLex_Section1_Options><PLex_Section1_Options_Array>"); piece_flush(strlen(yytext) - 1); piece_append("</PLex_Section1_Options_Array></PLex_Section1_Options>"); 
-       YY_BREAK
-case 12:
-/* rule 12 can match eol */
-YY_RULE_SETUP
-#line 233 "tests/scan.l"
-yytext_is_array = true; ++linenum; piece_append("<PLex_Section1_Options><PLex_Section1_Options_Array value=\"true\">"); piece_flush(strlen(yytext) - 1); piece_append("</PLex_Section1_Options_Array></PLex_Section1_Options>");
-       YY_BREAK
-case 13:
-YY_RULE_SETUP
-#line 235 "tests/scan.l"
-BEGIN(OPTION); return TOK_OPTION;
-       YY_BREAK
-case 14:
-/* rule 14 can match eol */
-YY_RULE_SETUP
-#line 237 "tests/scan.l"
-++linenum; /* ignore */
-       YY_BREAK
-case 15:
-/* rule 15 can match eol */
-YY_RULE_SETUP
-#line 238 "tests/scan.l"
-++linenum;     /* ignore */
-       YY_BREAK
-/* xgettext: no-c-format */
-case 16:
-/* rule 16 can match eol */
-YY_RULE_SETUP
-#line 241 "tests/scan.l"
-synerr( _( "unrecognized '%' directive" ) );
-       YY_BREAK
-case 17:
-YY_RULE_SETUP
-#line 243 "tests/scan.l"
-{
-                       if(yyleng < MAXLINE)
-                        {
-                       strncpy( nmstr, yytext, sizeof(nmstr) );
-                        }
-                       else
-                        {
-                          synerr( _("Definition name too long\n"));
-                          FLEX_EXIT(EXIT_FAILURE);
-                        }
-
-                       didadef = false;
-                       BEGIN(PICKUPDEF);
-                       }
-       YY_BREAK
-case 18:
-YY_RULE_SETUP
-#line 258 "tests/scan.l"
-RETURNNAME;
-       YY_BREAK
-case 19:
-/* rule 19 can match eol */
-YY_RULE_SETUP
-#line 259 "tests/scan.l"
-++linenum; /* allows blank lines in section 1 */
-       YY_BREAK
-case 20:
-/* rule 20 can match eol */
-YY_RULE_SETUP
-#line 260 "tests/scan.l"
-ACTION_ECHO; ++linenum; /* maybe end of comment line */
-       YY_BREAK
-
-/* */
-case 21:
-YY_RULE_SETUP
-#line 265 "tests/scan.l"
-ACTION_ECHO;
-       YY_BREAK
-case 22:
-YY_RULE_SETUP
-#line 266 "tests/scan.l"
-ACTION_ECHO;
-       YY_BREAK
-case 23:
-/* rule 23 can match eol */
-YY_RULE_SETUP
-#line 268 "tests/scan.l"
-++linenum; ACTION_ECHO;
-       YY_BREAK
-
-
-case 24:
-YY_RULE_SETUP
-#line 271 "tests/scan.l"
-add_action("*/]""]"); yy_pop_state();
-       YY_BREAK
-
-
-case 25:
-YY_RULE_SETUP
-#line 274 "tests/scan.l"
-ACTION_ECHO; yy_pop_state();
-       YY_BREAK
-
-
-/* This is the same as COMMENT, but is discarded rather than output. */
-case 26:
-YY_RULE_SETUP
-#line 279 "tests/scan.l"
-yy_pop_state();
-       YY_BREAK
-case 27:
-YY_RULE_SETUP
-#line 280 "tests/scan.l"
-;
-       YY_BREAK
-case 28:
-YY_RULE_SETUP
-#line 281 "tests/scan.l"
-;
-       YY_BREAK
-case 29:
-/* rule 29 can match eol */
-YY_RULE_SETUP
-#line 282 "tests/scan.l"
-++linenum;
-       YY_BREAK
-
-
-case 30:
-YY_RULE_SETUP
-#line 286 "tests/scan.l"
-yy_pop_state();
-       YY_BREAK
-case 31:
-YY_RULE_SETUP
-#line 287 "tests/scan.l"
-;
-       YY_BREAK
-case 32:
-/* rule 32 can match eol */
-YY_RULE_SETUP
-#line 288 "tests/scan.l"
-++linenum;
-       YY_BREAK
-
-
-case 33:
-/* rule 33 can match eol */
-YY_RULE_SETUP
-#line 292 "tests/scan.l"
-yy_pop_state();
-       YY_BREAK
-case 34:
-YY_RULE_SETUP
-#line 293 "tests/scan.l"
-linenum = myctoi( yytext );
-       YY_BREAK
-case 35:
-YY_RULE_SETUP
-#line 295 "tests/scan.l"
-{
-                       free(infilename);
-                       infilename = xstrdup(yytext + 1);
-                       infilename[strlen( infilename ) - 1] = '\0';
-                       }
-       YY_BREAK
-case 36:
-YY_RULE_SETUP
-#line 300 "tests/scan.l"
-/* ignore spurious characters */
-       YY_BREAK
-
-
-case 37:
-YY_RULE_SETUP
-#line 303 "tests/scan.l"
-ACTION_ECHO_QSTART;
-       YY_BREAK
-case 38:
-YY_RULE_SETUP
-#line 304 "tests/scan.l"
-ACTION_ECHO_QEND;
-       YY_BREAK
-
-
-case 39:
-/* rule 39 can match eol */
-YY_RULE_SETUP
-#line 308 "tests/scan.l"
-++linenum; piece_append("</PLex_Text>"); piece_flush(strlen(yytext)); END_CODEBLOCK;
-       YY_BREAK
-case 40:
-YY_RULE_SETUP
-#line 309 "tests/scan.l"
-ACTION_ECHO;
-       YY_BREAK
-case 41:
-YY_RULE_SETUP
-#line 310 "tests/scan.l"
-ACTION_ECHO;
-       YY_BREAK
-case 42:
-/* rule 42 can match eol */
-YY_RULE_SETUP
-#line 311 "tests/scan.l"
-{
-                       ++linenum;
-                       ACTION_ECHO;
-                       if ( indented_code ) { piece_flush(strlen(yytext)); piece_append("</PLex_Text>"); END_CODEBLOCK; }
-                       }
-       YY_BREAK
-
-
-case 43:
-YY_RULE_SETUP
-#line 319 "tests/scan.l"
-{
-                if( --brace_depth == 0){
-                    /* TODO: Matched. */
-                    yy_pop_state();
-                }else
-                    buf_strnappend(&top_buf, yytext, yyleng);
-            }
-       YY_BREAK
-case 44:
-YY_RULE_SETUP
-#line 327 "tests/scan.l"
-{
-                brace_depth++;
-                buf_strnappend(&top_buf, yytext, yyleng);
-            }
-       YY_BREAK
-case 45:
-/* rule 45 can match eol */
-YY_RULE_SETUP
-#line 332 "tests/scan.l"
-{
-                ++linenum;
-                buf_strnappend(&top_buf, yytext, yyleng);
-            }
-       YY_BREAK
-case 46:
-YY_RULE_SETUP
-#line 337 "tests/scan.l"
-buf_strnappend(&top_buf, escaped_qstart, (int) strlen(escaped_qstart));
-       YY_BREAK
-case 47:
-YY_RULE_SETUP
-#line 338 "tests/scan.l"
-buf_strnappend(&top_buf, escaped_qend, (int) strlen(escaped_qend));
-       YY_BREAK
-case 48:
-YY_RULE_SETUP
-#line 339 "tests/scan.l"
-{
-       buf_strnappend(&top_buf, yytext, yyleng);
-    }
-       YY_BREAK
-case YY_STATE_EOF(CODEBLOCK_MATCH_BRACE):
-#line 343 "tests/scan.l"
-{
-                linenum = brace_start_line;
-                synerr(_("Unmatched '{'"));
-                yyterminate();
-                }
-       YY_BREAK
-
-
-case 49:
-YY_RULE_SETUP
-#line 352 "tests/scan.l"
-/* separates name and definition */
-       YY_BREAK
-case 50:
-YY_RULE_SETUP
-#line 354 "tests/scan.l"
-{
-                       if(yyleng < MAXLINE)
-                        {
-                       strncpy( nmdef, yytext, sizeof(nmdef) );
-                        }
-                       else
-                        {
-                          format_synerr( _("Definition value for {%s} too long\n"), nmstr);
-                          FLEX_EXIT(EXIT_FAILURE);
-                        }
-                       /* Skip trailing whitespace. */
-                       {
-                           size_t i = strlen( nmdef );
-                           while (i > 0 && (nmdef[i-1] == ' ' || nmdef[i-1] == '\t'))
-                              --i;
-                           nmdef[i] = '\0';
-                       }
-
-                       ndinstal( nmstr, nmdef );
-                       didadef = true;
-                       }
-       YY_BREAK
-case 51:
-/* rule 51 can match eol */
-YY_RULE_SETUP
-#line 376 "tests/scan.l"
-{
-                       if ( ! didadef )
-                               synerr( _( "incomplete name definition" ) );
-                       BEGIN(INITIAL);
-                       ++linenum;
-                       }
-       YY_BREAK
-
-
-case 52:
-/* rule 52 can match eol */
-YY_RULE_SETUP
-#line 386 "tests/scan.l"
-++linenum; BEGIN(INITIAL);
-       YY_BREAK
-case 53:
-YY_RULE_SETUP
-#line 387 "tests/scan.l"
-option_sense = true;
-       YY_BREAK
-case 54:
-YY_RULE_SETUP
-#line 389 "tests/scan.l"
-return '=';
-       YY_BREAK
-case 55:
-YY_RULE_SETUP
-#line 391 "tests/scan.l"
-option_sense = ! option_sense;
-       YY_BREAK
-case 56:
-YY_RULE_SETUP
-#line 393 "tests/scan.l"
-csize = option_sense ? 128 : 256; markup_option("SevenBit", option_sense);
-       YY_BREAK
-case 57:
-YY_RULE_SETUP
-#line 394 "tests/scan.l"
-csize = option_sense ? 256 : 128; markup_option("SevenBit", !option_sense);
-       YY_BREAK
-case 58:
-YY_RULE_SETUP
-#line 396 "tests/scan.l"
-long_align = option_sense; markup_option("Align", option_sense);
-       YY_BREAK
-case 59:
-YY_RULE_SETUP
-#line 397 "tests/scan.l"
-{
-                       ACTION_M4_IFDEF( "M4""_YY_ALWAYS_INTERACTIVE", option_sense );
-            interactive = option_sense;
- markup_option("AlwaysInteractive", option_sense);
-                       }
-       YY_BREAK
-case 60:
-YY_RULE_SETUP
-#line 402 "tests/scan.l"
-yytext_is_array = option_sense; markup_option("Array", option_sense);
-       YY_BREAK
-case 61:
-YY_RULE_SETUP
-#line 403 "tests/scan.l"
-backing_up_report = option_sense; markup_option("Backup", option_sense);
-       YY_BREAK
-case 62:
-YY_RULE_SETUP
-#line 404 "tests/scan.l"
-interactive = ! option_sense; markup_option("Interactive", !option_sense);
-       YY_BREAK
-case 63:
-YY_RULE_SETUP
-#line 405 "tests/scan.l"
-bison_bridge_lval = option_sense; markup_option("BisonBridge", option_sense);
-       YY_BREAK
-case 64:
-YY_RULE_SETUP
-#line 406 "tests/scan.l"
-{ if((bison_bridge_lloc = option_sense))
-                            bison_bridge_lval = true;
- markup_option("BisonLocations", option_sense);
-                     }
-       YY_BREAK
-case 65:
-YY_RULE_SETUP
-#line 410 "tests/scan.l"
-C_plus_plus = option_sense; markup_option("CPlusPlus", option_sense);
-       YY_BREAK
-case 66:
-YY_RULE_SETUP
-#line 411 "tests/scan.l"
-sf_set_case_ins(!option_sense); markup_option("Caseless", !option_sense);
-       YY_BREAK
-case 67:
-YY_RULE_SETUP
-#line 412 "tests/scan.l"
-sf_set_case_ins(option_sense); markup_option("Caseless", option_sense);
-       YY_BREAK
-case 68:
-YY_RULE_SETUP
-#line 413 "tests/scan.l"
-ddebug = option_sense; markup_option("Debug", option_sense);
-       YY_BREAK
-case 69:
-YY_RULE_SETUP
-#line 414 "tests/scan.l"
-spprdflt = ! option_sense; markup_option("Default", option_sense);
-       YY_BREAK
-case 70:
-YY_RULE_SETUP
-#line 415 "tests/scan.l"
-useecs = option_sense; markup_option("ECS", option_sense);
-       YY_BREAK
-case 71:
-YY_RULE_SETUP
-#line 416 "tests/scan.l"
-{
-                       useecs = usemecs = false;
-                       use_read = fullspd = true;
- markup_option("Fast", option_sense);
-                       }
-       YY_BREAK
-case 72:
-YY_RULE_SETUP
-#line 421 "tests/scan.l"
-{
-                       useecs = usemecs = false;
-                       use_read = fulltbl = true;
- markup_option("Full", option_sense);
-                       }
-       YY_BREAK
-case 73:
-YY_RULE_SETUP
-#line 426 "tests/scan.l"
-ACTION_IFDEF("YY_NO_INPUT", ! option_sense); markup_option("Input", option_sense);
-       YY_BREAK
-case 74:
-YY_RULE_SETUP
-#line 427 "tests/scan.l"
-interactive = option_sense; markup_option("Interactive", option_sense);
-       YY_BREAK
-case 75:
-YY_RULE_SETUP
-#line 428 "tests/scan.l"
-lex_compat = option_sense; markup_option("LexCompat", option_sense);
-       YY_BREAK
-case 76:
-YY_RULE_SETUP
-#line 429 "tests/scan.l"
-posix_compat = option_sense; markup_option("PosixCompat", option_sense);
-       YY_BREAK
-case 77:
-YY_RULE_SETUP
-#line 430 "tests/scan.l"
-gen_line_dirs = option_sense; markup_option("Line", option_sense);
-       YY_BREAK
-case 78:
-YY_RULE_SETUP
-#line 431 "tests/scan.l"
-{
-                       ACTION_M4_IFDEF( "M4""_YY_MAIN", option_sense);
-            /* Override yywrap */
-            if( option_sense == true )
-                do_yywrap = false;
- markup_option("Main", option_sense);
-                       }
-       YY_BREAK
-case 79:
-YY_RULE_SETUP
-#line 438 "tests/scan.l"
-usemecs = option_sense; markup_option("MetaECS", option_sense);
-       YY_BREAK
-case 80:
-YY_RULE_SETUP
-#line 439 "tests/scan.l"
-{
-                       ACTION_M4_IFDEF( "M4""_YY_NEVER_INTERACTIVE", option_sense );
-            interactive = !option_sense;
- markup_option("NeverInteractive", option_sense);
-                       }
-       YY_BREAK
-case 81:
-YY_RULE_SETUP
-#line 444 "tests/scan.l"
-performance_report += option_sense ? 1 : -1; markup_option("PerfReport", option_sense);
-       YY_BREAK
-case 82:
-YY_RULE_SETUP
-#line 445 "tests/scan.l"
-yytext_is_array = ! option_sense; markup_option("Array", !option_sense);
-       YY_BREAK
-case 83:
-YY_RULE_SETUP
-#line 446 "tests/scan.l"
-use_read = option_sense; markup_option("Read", option_sense);
-       YY_BREAK
-case 84:
-YY_RULE_SETUP
-#line 447 "tests/scan.l"
-reentrant = option_sense; markup_option("Reentrant", option_sense);
-       YY_BREAK
-case 85:
-YY_RULE_SETUP
-#line 448 "tests/scan.l"
-reject_really_used = option_sense; markup_option("Reject", option_sense);
-       YY_BREAK
-case 86:
-YY_RULE_SETUP
-#line 449 "tests/scan.l"
-ACTION_M4_IFDEF( "M4""_YY_STACK_USED", option_sense ); markup_option("Stack", option_sense);
-       YY_BREAK
-case 87:
-YY_RULE_SETUP
-#line 450 "tests/scan.l"
-do_stdinit = option_sense; markup_option("StdInit", option_sense);
-       YY_BREAK
-case 88:
-YY_RULE_SETUP
-#line 451 "tests/scan.l"
-use_stdout = option_sense; markup_option("StdOut", option_sense);
-       YY_BREAK
-case 89:
-YY_RULE_SETUP
-#line 452 "tests/scan.l"
-ACTION_IFDEF("YY_NO_UNISTD_H", ! option_sense); markup_option("UniStd", option_sense);
-       YY_BREAK
-case 90:
-YY_RULE_SETUP
-#line 453 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_UNPUT", ! option_sense); markup_option("Unput", option_sense);
-       YY_BREAK
-case 91:
-YY_RULE_SETUP
-#line 454 "tests/scan.l"
-printstats = option_sense; markup_option("Verbose", option_sense);
-       YY_BREAK
-case 92:
-YY_RULE_SETUP
-#line 455 "tests/scan.l"
-nowarn = ! option_sense; markup_option("Warn", option_sense);
-       YY_BREAK
-case 93:
-YY_RULE_SETUP
-#line 456 "tests/scan.l"
-do_yylineno = option_sense; ACTION_M4_IFDEF("M4""_YY_USE_LINENO", option_sense); markup_option("YYLineNo", option_sense);
-       YY_BREAK
-case 94:
-YY_RULE_SETUP
-#line 457 "tests/scan.l"
-yymore_really_used = option_sense; markup_option("YYMore", option_sense);
-       YY_BREAK
-case 95:
-YY_RULE_SETUP
-#line 458 "tests/scan.l"
-do_yywrap = option_sense; markup_option("YYWrap", option_sense);
-       YY_BREAK
-case 96:
-YY_RULE_SETUP
-#line 460 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_PUSH_STATE", ! option_sense); markup_option("YYPushState", option_sense);
-       YY_BREAK
-case 97:
-YY_RULE_SETUP
-#line 461 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_POP_STATE", ! option_sense); markup_option("YYPopState", option_sense);
-       YY_BREAK
-case 98:
-YY_RULE_SETUP
-#line 462 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_TOP_STATE", ! option_sense); markup_option("YYTopState", option_sense);
-       YY_BREAK
-case 99:
-YY_RULE_SETUP
-#line 464 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_SCAN_BUFFER", ! option_sense); markup_option("YYScanBuffer", option_sense);
-       YY_BREAK
-case 100:
-YY_RULE_SETUP
-#line 465 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_SCAN_BYTES", ! option_sense); markup_option("YYScanBytes", option_sense);
-       YY_BREAK
-case 101:
-YY_RULE_SETUP
-#line 466 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_SCAN_STRING", ! option_sense); markup_option("YYScanString", option_sense);
-       YY_BREAK
-case 102:
-YY_RULE_SETUP
-#line 468 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_FLEX_ALLOC", ! option_sense); markup_option("YYAlloc", option_sense);
-       YY_BREAK
-case 103:
-YY_RULE_SETUP
-#line 469 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_FLEX_REALLOC", ! option_sense); markup_option("YYRealloc", option_sense);
-       YY_BREAK
-case 104:
-YY_RULE_SETUP
-#line 470 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_FLEX_FREE", ! option_sense); markup_option("YYFree", option_sense);
-       YY_BREAK
-case 105:
-YY_RULE_SETUP
-#line 472 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_GET_DEBUG", ! option_sense); markup_option("YYGetDebug", option_sense);
-       YY_BREAK
-case 106:
-YY_RULE_SETUP
-#line 473 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_SET_DEBUG", ! option_sense); markup_option("YYSetDebug", option_sense);
-       YY_BREAK
-case 107:
-YY_RULE_SETUP
-#line 474 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_GET_EXTRA", ! option_sense); markup_option("YYGetExtra", option_sense);
-       YY_BREAK
-case 108:
-YY_RULE_SETUP
-#line 475 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_SET_EXTRA", ! option_sense); markup_option("YYSetExtra", option_sense);
-       YY_BREAK
-case 109:
-YY_RULE_SETUP
-#line 476 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_GET_LENG", ! option_sense); markup_option("YYGetLeng", option_sense);
-       YY_BREAK
-case 110:
-YY_RULE_SETUP
-#line 477 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_GET_TEXT", ! option_sense); markup_option("YYGetText", option_sense);
-       YY_BREAK
-case 111:
-YY_RULE_SETUP
-#line 478 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_GET_LINENO", ! option_sense); markup_option("YYGetLineNo", option_sense);
-       YY_BREAK
-case 112:
-YY_RULE_SETUP
-#line 479 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_SET_LINENO", ! option_sense); markup_option("YYSetLineNo", option_sense);
-       YY_BREAK
-case 113:
-YY_RULE_SETUP
-#line 480 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_GET_IN", ! option_sense); markup_option("YYGetIn", option_sense);
-       YY_BREAK
-case 114:
-YY_RULE_SETUP
-#line 481 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_SET_IN", ! option_sense); markup_option("YYSetIn", option_sense);
-       YY_BREAK
-case 115:
-YY_RULE_SETUP
-#line 482 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_GET_OUT", ! option_sense); markup_option("YYGetOut", option_sense);
-       YY_BREAK
-case 116:
-YY_RULE_SETUP
-#line 483 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_SET_OUT", ! option_sense); markup_option("YYSetOut", option_sense);
-       YY_BREAK
-case 117:
-YY_RULE_SETUP
-#line 484 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_GET_LVAL", ! option_sense); markup_option("YYGetLVal", option_sense);
-       YY_BREAK
-case 118:
-YY_RULE_SETUP
-#line 485 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_SET_LVAL", ! option_sense); markup_option("YYSetLVal", option_sense);
-       YY_BREAK
-case 119:
-YY_RULE_SETUP
-#line 486 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_GET_LLOC", ! option_sense); markup_option("YYGetLLoc", option_sense);
-       YY_BREAK
-case 120:
-YY_RULE_SETUP
-#line 487 "tests/scan.l"
-ACTION_M4_IFDEF("M4""_YY_NO_SET_LLOC", ! option_sense); markup_option("YYSetLLoc", option_sense);
-       YY_BREAK
-case 121:
-YY_RULE_SETUP
-#line 489 "tests/scan.l"
-return TOK_EXTRA_TYPE;
-       YY_BREAK
-case 122:
-YY_RULE_SETUP
-#line 490 "tests/scan.l"
-return TOK_OUTFILE;
-       YY_BREAK
-case 123:
-YY_RULE_SETUP
-#line 491 "tests/scan.l"
-return TOK_PREFIX;
-       YY_BREAK
-case 124:
-YY_RULE_SETUP
-#line 492 "tests/scan.l"
-return TOK_YYCLASS;
-       YY_BREAK
-case 125:
-YY_RULE_SETUP
-#line 493 "tests/scan.l"
-return TOK_HEADER_FILE;
-       YY_BREAK
-case 126:
-YY_RULE_SETUP
-#line 494 "tests/scan.l"
-return TOK_TABLES_FILE;
-       YY_BREAK
-case 127:
-YY_RULE_SETUP
-#line 495 "tests/scan.l"
-{
-                    tablesverify = option_sense;
-                    if(!tablesext && option_sense)
-                        tablesext = true;
- markup_option("TablesVerify", option_sense);
-                    }
-       YY_BREAK
-case 128:
-YY_RULE_SETUP
-#line 503 "tests/scan.l"
-{
-                       if(yyleng-1 < MAXLINE)
-                        {
-                       strncpy( nmstr, yytext + 1, sizeof(nmstr) );
-                        }
-                       else
-                        {
-                          synerr( _("Option line too long\n"));
-                          FLEX_EXIT(EXIT_FAILURE);
-                        }
-                       nmstr[strlen( nmstr ) - 1] = '\0';
-#if 1
- piece_pack();
- piece_append("<PLex_String>\"<PLex_Text>");
- piece_escape(yytext + 1, strlen(yytext + 1) - 1);
- piece_append("</PLex_Text>\"</PLex_String>");
- piece_pack();
- return ~NAME; /* actually a misnomer */
-#else
-                       return NAME;
-#endif
-                       }
-       YY_BREAK
-case 129:
-YY_RULE_SETUP
-#line 526 "tests/scan.l"
-{
-                       format_synerr( _( "unrecognized %%option: %s" ),
-                               yytext );
-                       BEGIN(RECOVER);
-                       }
-       YY_BREAK
-
-case 130:
-/* rule 130 can match eol */
-YY_RULE_SETUP
-#line 533 "tests/scan.l"
-++linenum; BEGIN(INITIAL);
-       YY_BREAK
-
-case 131:
-YY_RULE_SETUP
-#line 537 "tests/scan.l"
-++bracelevel; yyless( 2 );     /* eat only %{ */
-       YY_BREAK
-case 132:
-YY_RULE_SETUP
-#line 538 "tests/scan.l"
---bracelevel; yyless( 2 );     /* eat only %} */
-       YY_BREAK
-case 133:
-YY_RULE_SETUP
-#line 540 "tests/scan.l"
-START_CODEBLOCK(true); piece_append("<PLex_Text>"); /* indented code in prolog */
-       YY_BREAK
-case 134:
-YY_RULE_SETUP
-#line 542 "tests/scan.l"
-{
-        /* non-indented code */
-               if ( bracelevel <= 0 ) {
-            /* not in %{ ... %} */
-            yyless( 0 );       /* put it all back */
-            yy_set_bol( 1 );
-            mark_prolog();
-            BEGIN(SECT2);
-        } else {
-            START_CODEBLOCK(true);
- piece_append("<PLex_Text>");
-        }
-    }
-       YY_BREAK
-case 135:
-YY_RULE_SETUP
-#line 556 "tests/scan.l"
-ACTION_ECHO;
-       YY_BREAK
-case 136:
-/* rule 136 can match eol */
-YY_RULE_SETUP
-#line 557 "tests/scan.l"
-++linenum; ACTION_ECHO;
-       YY_BREAK
-case YY_STATE_EOF(SECT2PROLOG):
-#line 559 "tests/scan.l"
-{
-                       mark_prolog();
-                       sectnum = 0;
-#if 1
- piece_pack();
- piece_append("</PLex_Section2>");
- piece_pack();
- return ~YY_NULL;
-#else
-                       yyterminate(); /* to stop the parser */
-#endif
-                       }
-       YY_BREAK
-
-
-case 137:
-/* rule 137 can match eol */
-YY_RULE_SETUP
-#line 574 "tests/scan.l"
-++linenum; /* allow blank lines in section 2 */
-       YY_BREAK
-case 138:
-YY_RULE_SETUP
-#line 576 "tests/scan.l"
-{
-                       indented_code = false;
-                       doing_codeblock = true;
-                       bracelevel = 1;
-                       BEGIN(PERCENT_BRACE_ACTION);
- piece_flush(strlen(yytext) - 2);
- piece_append("<PLex_Section1Or2_CodeBlock>");
- piece_flush(2);
- piece_append("<PLex_Text>");
-                       }
-       YY_BREAK
-case 139:
-YY_RULE_SETUP
-#line 587 "tests/scan.l"
-{
-                        /* Allow "<" to appear in (?x) patterns. */
-                        if (!sf_skip_ws())
-                            BEGIN(SC);
-                        return '<';
-                    }
-       YY_BREAK
-case 140:
-YY_RULE_SETUP
-#line 593 "tests/scan.l"
-return '^';
-       YY_BREAK
-case 141:
-YY_RULE_SETUP
-#line 594 "tests/scan.l"
-BEGIN(QUOTE); return '"';
-       YY_BREAK
-case 142:
-*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
-(yy_c_buf_p) = yy_cp = yy_bp + 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 595 "tests/scan.l"
-{
-                       BEGIN(NUM);
-                       if ( lex_compat || posix_compat )
-                               return BEGIN_REPEAT_POSIX;
-                       else
-                               return BEGIN_REPEAT_FLEX;
-                       }
-       YY_BREAK
-case 143:
-/* rule 143 can match eol */
-*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
-YY_LINENO_REWIND_TO(yy_bp + 1);
-(yy_c_buf_p) = yy_cp = yy_bp + 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 602 "tests/scan.l"
-return '$';
-       YY_BREAK
-case 144:
-YY_RULE_SETUP
-#line 604 "tests/scan.l"
-{
-                       bracelevel = 1;
-                       BEGIN(PERCENT_BRACE_ACTION);
- piece_flush(strlen(yytext) - 2);
- piece_append("<PLex_Section2_Rule_Action>");
-
-                       if ( in_rule )
-                               {
-                               doing_rule_action = true;
-                               in_rule = false;
-#if 1
- piece_pack();
- piece_escape(yytext, 2);
- piece_pack();
- piece_append("<PLex_Text>");
- return ~'\n';
-#else
-                               return '\n';
-#endif
-                               }
-#if 1 /* don't think this can really happen */
- abort();
-#else
- piece_flush(strlen(yytext));
- piece_append("<PLex_Text>");
-#endif
-                       }
-       YY_BREAK
-case 145:
-/* rule 145 can match eol */
-YY_RULE_SETUP
-#line 631 "tests/scan.l"
-{
-                        if (sf_skip_ws()){
-                            /* We're in the middle of a (?x: ) pattern. */
-                            /* Push back everything starting at the "|" */
-                            int amt = (int) (strchr (yytext, '|') - yytext);
-                            yyless(amt);
-                        }
-                        else {
-                            add_action("]""]");
-                            continued_action = true;
-                            ++linenum;
-#if 1
- int i;
- for (i = 0; yytext[i] == '\t' || yytext[i] == ' '; ++i)
-  ;
- piece_flush(i);
- piece_pack();
- piece_append("<PLex_Section2_Rule_Action continued=\"true\">");
- piece_escape(yytext, strlen(yytext));
- piece_append("</PLex_Section2_Rule_Action>");
- piece_pack();
- return ~'\n';
-#else
-                            return '\n';
-#endif
-                        }
-                    }
-       YY_BREAK
-case 146:
-YY_RULE_SETUP
-#line 659 "tests/scan.l"
-{
-
-                if (sf_skip_ws()){
-                    /* We're in the middle of a (?x: ) pattern. */
-                    yy_push_state(COMMENT_DISCARD);
-                }
-                else{
-                    yyless( yyleng - 2 );      /* put back '/', '*' */
-                    bracelevel = 0;
-                    continued_action = false;
-                    BEGIN(ACTION);
-                }
-                       }
-       YY_BREAK
-case 147:
-YY_RULE_SETUP
-#line 673 "tests/scan.l"
-/* allow indented rules */ ;
-       YY_BREAK
-case 148:
-YY_RULE_SETUP
-#line 675 "tests/scan.l"
-{
-            if (sf_skip_ws()){
-                /* We're in the middle of a (?x: ) pattern. */
-            }
-            else{
-                /* This rule is separate from the one below because
-                 * otherwise we get variable trailing context, so
-                 * we can't build the scanner using -{f,F}.
-                 */
-                bracelevel = 0;
-                continued_action = false;
-                BEGIN(ACTION);
-
-                if ( in_rule )
-                    {
-                    doing_rule_action = true;
-                    in_rule = false;
-#if 1
- piece_pack();
- piece_escape(yytext, strlen(yytext));
- piece_pack();
- piece_append("<PLex_Section2_Rule_Action><PLex_Text>");
- return ~'\n';
-#else
-                    return '\n';
-#endif
-                    }
-            }
-                       }
-       YY_BREAK
-case 149:
-/* rule 149 can match eol */
-YY_RULE_SETUP
-#line 705 "tests/scan.l"
-{
-            if (sf_skip_ws()){
-                /* We're in the middle of a (?x: ) pattern. */
-                ++linenum;
-            }
-            else{
-                bracelevel = 0;
-                continued_action = false;
-                BEGIN(ACTION);
-#if 1
- yyless(yyleng - 1);
-#else
-                unput( '\n' ); /* so <ACTION> sees it */
-#endif
-
-                if ( in_rule )
-                    {
-                    doing_rule_action = true;
-                    in_rule = false;
-#if 1
- piece_pack();
- piece_escape(yytext, strlen(yytext));
- piece_pack();
- piece_append("<PLex_Section2_Rule_Action><PLex_Text>");
- return ~'\n';
-#else
-                    return '\n';
-#endif
-                    }
-            }
-                       }
-       YY_BREAK
-case 150:
-#line 738 "tests/scan.l"
-case 151:
-YY_RULE_SETUP
-#line 738 "tests/scan.l"
-return EOF_OP;
-       YY_BREAK
-case 152:
-YY_RULE_SETUP
-#line 740 "tests/scan.l"
-{
-                       sectnum = 3;
-                       BEGIN(no_section3_escape ? SECT3_NOESCAPE : SECT3);
-                       outn("/* Begin user sect3 */");
-#if 1
- piece_pack();
- piece_append("</PLex_Section2>");
- piece_escape(yytext, strlen(yytext));
- piece_pack();
- piece_append("<PLex_Section3>");
- return ~YY_NULL;
-#else
-                       yyterminate(); /* to stop the parser */
-#endif
-
-                       }
-       YY_BREAK
-case 153:
-YY_RULE_SETUP
-#line 757 "tests/scan.l"
-{
-                       int cclval;
-
-                       if(yyleng < MAXLINE)
-                        {
-                       strncpy( nmstr, yytext, sizeof(nmstr) );
-                        }
-                       else
-                        {
-                          synerr( _("Input line too long\n"));
-                          FLEX_EXIT(EXIT_FAILURE);
-                        }
-
-                       /* Check to see if we've already encountered this
-                        * ccl.
-                        */
-                       if (0 /* <--- This "0" effectively disables the reuse of a
-                   * character class (purely based on its source text).
-                   * The reason it was disabled is so yacc/bison can parse
-                   * ccl operations, such as ccl difference and union.
-                   */
-                &&  (cclval = ccllookup( nmstr )) != 0 )
-                               {
-                               if ( input() != ']' )
-                                       synerr( _( "bad character class" ) );
-
-                               yylval = cclval;
-                               ++cclreuse;
-                               return PREVCCL;
-                               }
-                       else
-                               {
-                               /* We fudge a bit.  We know that this ccl will
-                                * soon be numbered as lastccl + 1 by cclinit.
-                                */
-                               cclinstal( nmstr, lastccl + 1 );
-
-                               /* Push back everything but the leading bracket
-                                * so the ccl can be rescanned.
-                                */
-                               yyless( 1 );
-
-                               BEGIN(FIRSTCCL);
-                               return '[';
-                               }
-                       }
-       YY_BREAK
-case 154:
-YY_RULE_SETUP
-#line 803 "tests/scan.l"
-return CCL_OP_DIFF;
-       YY_BREAK
-case 155:
-YY_RULE_SETUP
-#line 804 "tests/scan.l"
-return CCL_OP_UNION;
-       YY_BREAK
-/* Check for :space: at the end of the rule so we don't
-     * wrap the expanded regex in '(' ')' -- breaking trailing
-     * context.
-     */
-case 156:
-/* rule 156 can match eol */
-YY_RULE_SETUP
-#line 811 "tests/scan.l"
-{
-                       char *nmdefptr;
-            int end_is_ws, end_ch;
-
-            end_ch = yytext[yyleng-1];
-            end_is_ws = end_ch != '}' ? 1 : 0;
-
-                       if(yyleng-1 < MAXLINE)
-                        {
-                       strncpy( nmstr, yytext + 1, sizeof(nmstr) );
-                        }
-                       else
-                        {
-                          synerr( _("Input line too long\n"));
-                          FLEX_EXIT(EXIT_FAILURE);
-                        }
-nmstr[yyleng - 2 - end_is_ws] = '\0';  /* chop trailing brace */
-
-                       if ( (nmdefptr = ndlookup( nmstr )) == 0 )
-                               format_synerr(
-                                       _( "undefined definition {%s}" ),
-                                               nmstr );
-
-                       else
-                               { /* push back name surrounded by ()'s */
-                               size_t len = strlen( nmdefptr );
-                if (end_is_ws)
-#if 1
- yyless(yyleng - 1);
-#else
-                    unput(end_ch);
-#endif
-
-                               if ( lex_compat || nmdefptr[0] == '^' ||
-                                    (len > 0 && nmdefptr[len - 1] == '$')
-                     || (end_is_ws && trlcontxt && !sf_skip_ws()))
-                                       { /* don't use ()'s after all */
-                                       PUT_BACK_STRING(nmdefptr, 0);
-
-                                       if ( nmdefptr[0] == '^' )
-                                               BEGIN(CARETISBOL);
-                                       }
-
-                               else
-                                       {
-                                       unput(')');
-                                       PUT_BACK_STRING(nmdefptr, 0);
-                                       unput('(');
-                                       }
-                               }
-                       }
-       YY_BREAK
-case 157:
-YY_RULE_SETUP
-#line 863 "tests/scan.l"
-{
-                    if (sf_skip_ws())
-                        yy_push_state(COMMENT_DISCARD);
-                    else{
-                        /* Push back the "*" and return "/" as usual. */
-                        yyless(1);
-                        return '/';
-                    }
-                }
-       YY_BREAK
-case 158:
-YY_RULE_SETUP
-#line 873 "tests/scan.l"
-{
-                    if (lex_compat || posix_compat){
-                        /* Push back the "?#" and treat it like a normal parens. */
-                        yyless(1);
-                        sf_push(); 
-                        return '(';
-                    }
-                    else
-                        yy_push_state(EXTENDED_COMMENT);
-                }
-       YY_BREAK
-case 159:
-YY_RULE_SETUP
-#line 883 "tests/scan.l"
-{
-                    sf_push();
-                    if (lex_compat || posix_compat)
-                        /* Push back the "?" and treat it like a normal parens. */
-                        yyless(1);
-                    else
-                        BEGIN(GROUP_WITH_PARAMS);
-                    return '(';
-                }
-       YY_BREAK
-case 160:
-YY_RULE_SETUP
-#line 892 "tests/scan.l"
-sf_push(); return '(';
-       YY_BREAK
-case 161:
-YY_RULE_SETUP
-#line 893 "tests/scan.l"
-{
-                    if (_sf_top_ix > 0) {
-                        sf_pop();
-                        return ')';
-                    } else
-                        synerr(_("unbalanced parenthesis"));
-                }
-       YY_BREAK
-case 162:
-YY_RULE_SETUP
-#line 901 "tests/scan.l"
-return (unsigned char) yytext[0];
-       YY_BREAK
-case 163:
-YY_RULE_SETUP
-#line 902 "tests/scan.l"
-RETURNCHAR;
-       YY_BREAK
-/* Nick added this rule for consistency with rest of scanner */
-case YY_STATE_EOF(SECT2):
-#line 905 "tests/scan.l"
-{
-                       sectnum = 0;
-#if 1
- piece_pack();
- piece_append("</PLex_Section2>");
- piece_pack();
- return ~YY_NULL;
-#else
-                       yyterminate(); /* to stop the parser */
-#endif
-                       }
-       YY_BREAK
-
-
-case 164:
-/* rule 164 can match eol */
-YY_RULE_SETUP
-#line 920 "tests/scan.l"
-++linenum;     /* Allow blank lines & continuations */
-       YY_BREAK
-case 165:
-YY_RULE_SETUP
-#line 921 "tests/scan.l"
-return (unsigned char) yytext[0];
-       YY_BREAK
-case 166:
-YY_RULE_SETUP
-#line 922 "tests/scan.l"
-BEGIN(SECT2); return '>';
-       YY_BREAK
-case 167:
-*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
-(yy_c_buf_p) = yy_cp = yy_bp + 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 923 "tests/scan.l"
-BEGIN(CARETISBOL); return '>';
-       YY_BREAK
-case 168:
-YY_RULE_SETUP
-#line 924 "tests/scan.l"
-RETURNNAME;
-       YY_BREAK
-case 169:
-YY_RULE_SETUP
-#line 925 "tests/scan.l"
-{
-                       format_synerr( _( "bad <start condition>: %s" ),
-                               yytext );
-                       }
-       YY_BREAK
-
-case 170:
-YY_RULE_SETUP
-#line 931 "tests/scan.l"
-BEGIN(SECT2); return '^';
-       YY_BREAK
-
-case 171:
-YY_RULE_SETUP
-#line 935 "tests/scan.l"
-RETURNCHAR;
-       YY_BREAK
-case 172:
-YY_RULE_SETUP
-#line 936 "tests/scan.l"
-BEGIN(SECT2); return '"';
-       YY_BREAK
-case 173:
-/* rule 173 can match eol */
-YY_RULE_SETUP
-#line 938 "tests/scan.l"
-{
-                       synerr( _( "missing quote" ) );
-                       BEGIN(SECT2);
-                       ++linenum;
-                       return '"';
-                       }
-       YY_BREAK
-
-
-case 174:
-YY_RULE_SETUP
-#line 947 "tests/scan.l"
-BEGIN(SECT2);
-       YY_BREAK
-case 175:
-YY_RULE_SETUP
-#line 948 "tests/scan.l"
-BEGIN(GROUP_MINUS_PARAMS);
-       YY_BREAK
-case 176:
-YY_RULE_SETUP
-#line 949 "tests/scan.l"
-sf_set_case_ins(1);
-       YY_BREAK
-case 177:
-YY_RULE_SETUP
-#line 950 "tests/scan.l"
-sf_set_dot_all(1);
-       YY_BREAK
-case 178:
-YY_RULE_SETUP
-#line 951 "tests/scan.l"
-sf_set_skip_ws(1);
-       YY_BREAK
-
-
-case 179:
-YY_RULE_SETUP
-#line 954 "tests/scan.l"
-BEGIN(SECT2);
-       YY_BREAK
-case 180:
-YY_RULE_SETUP
-#line 955 "tests/scan.l"
-sf_set_case_ins(0);
-       YY_BREAK
-case 181:
-YY_RULE_SETUP
-#line 956 "tests/scan.l"
-sf_set_dot_all(0);
-       YY_BREAK
-case 182:
-YY_RULE_SETUP
-#line 957 "tests/scan.l"
-sf_set_skip_ws(0);
-       YY_BREAK
-
-
-case 183:
-*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
-(yy_c_buf_p) = yy_cp = yy_bp + 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 961 "tests/scan.l"
-BEGIN(CCL); return '^';
-       YY_BREAK
-case 184:
-*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
-(yy_c_buf_p) = yy_cp = yy_bp + 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 962 "tests/scan.l"
-return '^';
-       YY_BREAK
-case 185:
-YY_RULE_SETUP
-#line 963 "tests/scan.l"
-BEGIN(CCL); RETURNCHAR;
-       YY_BREAK
-
-
-case 186:
-*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
-(yy_c_buf_p) = yy_cp = yy_bp + 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 967 "tests/scan.l"
-return '-';
-       YY_BREAK
-case 187:
-YY_RULE_SETUP
-#line 968 "tests/scan.l"
-RETURNCHAR;
-       YY_BREAK
-case 188:
-YY_RULE_SETUP
-#line 969 "tests/scan.l"
-BEGIN(SECT2); return ']';
-       YY_BREAK
-case 189:
-/* rule 189 can match eol */
-YY_RULE_SETUP
-#line 970 "tests/scan.l"
-{
-                       synerr( _( "bad character class" ) );
-                       BEGIN(SECT2);
-                       return ']';
-                       }
-       YY_BREAK
-
-
-case 190:
-YY_RULE_SETUP
-#line 978 "tests/scan.l"
-BEGIN(CCL); return CCE_ALNUM;
-       YY_BREAK
-case 191:
-YY_RULE_SETUP
-#line 979 "tests/scan.l"
-BEGIN(CCL); return CCE_ALPHA;
-       YY_BREAK
-case 192:
-YY_RULE_SETUP
-#line 980 "tests/scan.l"
-BEGIN(CCL); return CCE_BLANK;
-       YY_BREAK
-case 193:
-YY_RULE_SETUP
-#line 981 "tests/scan.l"
-BEGIN(CCL); return CCE_CNTRL;
-       YY_BREAK
-case 194:
-YY_RULE_SETUP
-#line 982 "tests/scan.l"
-BEGIN(CCL); return CCE_DIGIT;
-       YY_BREAK
-case 195:
-YY_RULE_SETUP
-#line 983 "tests/scan.l"
-BEGIN(CCL); return CCE_GRAPH;
-       YY_BREAK
-case 196:
-YY_RULE_SETUP
-#line 984 "tests/scan.l"
-BEGIN(CCL); return CCE_LOWER;
-       YY_BREAK
-case 197:
-YY_RULE_SETUP
-#line 985 "tests/scan.l"
-BEGIN(CCL); return CCE_PRINT;
-       YY_BREAK
-case 198:
-YY_RULE_SETUP
-#line 986 "tests/scan.l"
-BEGIN(CCL); return CCE_PUNCT;
-       YY_BREAK
-case 199:
-YY_RULE_SETUP
-#line 987 "tests/scan.l"
-BEGIN(CCL); return CCE_SPACE;
-       YY_BREAK
-case 200:
-YY_RULE_SETUP
-#line 988 "tests/scan.l"
-BEGIN(CCL); return CCE_UPPER;
-       YY_BREAK
-case 201:
-YY_RULE_SETUP
-#line 989 "tests/scan.l"
-BEGIN(CCL); return CCE_XDIGIT;
-       YY_BREAK
-case 202:
-YY_RULE_SETUP
-#line 991 "tests/scan.l"
-BEGIN(CCL); return CCE_NEG_ALNUM;
-       YY_BREAK
-case 203:
-YY_RULE_SETUP
-#line 992 "tests/scan.l"
-BEGIN(CCL); return CCE_NEG_ALPHA;
-       YY_BREAK
-case 204:
-YY_RULE_SETUP
-#line 993 "tests/scan.l"
-BEGIN(CCL); return CCE_NEG_BLANK;
-       YY_BREAK
-case 205:
-YY_RULE_SETUP
-#line 994 "tests/scan.l"
-BEGIN(CCL); return CCE_NEG_CNTRL;
-       YY_BREAK
-case 206:
-YY_RULE_SETUP
-#line 995 "tests/scan.l"
-BEGIN(CCL); return CCE_NEG_DIGIT;
-       YY_BREAK
-case 207:
-YY_RULE_SETUP
-#line 996 "tests/scan.l"
-BEGIN(CCL); return CCE_NEG_GRAPH;
-       YY_BREAK
-case 208:
-YY_RULE_SETUP
-#line 997 "tests/scan.l"
-BEGIN(CCL); return CCE_NEG_LOWER;
-       YY_BREAK
-case 209:
-YY_RULE_SETUP
-#line 998 "tests/scan.l"
-BEGIN(CCL); return CCE_NEG_PRINT;
-       YY_BREAK
-case 210:
-YY_RULE_SETUP
-#line 999 "tests/scan.l"
-BEGIN(CCL); return CCE_NEG_PUNCT;
-       YY_BREAK
-case 211:
-YY_RULE_SETUP
-#line 1000 "tests/scan.l"
-BEGIN(CCL); return CCE_NEG_SPACE;
-       YY_BREAK
-case 212:
-YY_RULE_SETUP
-#line 1001 "tests/scan.l"
-BEGIN(CCL); return CCE_NEG_UPPER;
-       YY_BREAK
-case 213:
-YY_RULE_SETUP
-#line 1002 "tests/scan.l"
-BEGIN(CCL); return CCE_NEG_XDIGIT;
-       YY_BREAK
-case 214:
-YY_RULE_SETUP
-#line 1003 "tests/scan.l"
-{
-                       format_synerr(
-                               _( "bad character class expression: %s" ),
-                                       yytext );
-                       BEGIN(CCL); return CCE_ALNUM;
-                       }
-       YY_BREAK
-
-
-case 215:
-YY_RULE_SETUP
-#line 1012 "tests/scan.l"
-{
-                       yylval = myctoi( yytext );
-                       return NUMBER;
-                       }
-       YY_BREAK
-case 216:
-YY_RULE_SETUP
-#line 1017 "tests/scan.l"
-return ',';
-       YY_BREAK
-case 217:
-YY_RULE_SETUP
-#line 1018 "tests/scan.l"
-{
-                       BEGIN(SECT2);
-                       if ( lex_compat || posix_compat )
-                               return END_REPEAT_POSIX;
-                       else
-                               return END_REPEAT_FLEX;
-                       }
-       YY_BREAK
-case 218:
-YY_RULE_SETUP
-#line 1026 "tests/scan.l"
-{
-                       synerr( _( "bad character inside {}'s" ) );
-                       BEGIN(SECT2);
-                       return '}';
-                       }
-       YY_BREAK
-case 219:
-/* rule 219 can match eol */
-YY_RULE_SETUP
-#line 1032 "tests/scan.l"
-{
-                       synerr( _( "missing }" ) );
-                       BEGIN(SECT2);
-                       ++linenum;
-                       return '}';
-                       }
-       YY_BREAK
-
-
-case 220:
-YY_RULE_SETUP
-#line 1042 "tests/scan.l"
-bracelevel = 0; piece_append("</PLex_Text>");
-       YY_BREAK
-case 221:
-YY_RULE_SETUP
-#line 1044 "tests/scan.l"
-ACTION_ECHO; yy_push_state( CODE_COMMENT );
-       YY_BREAK
-
-case 222:
-YY_RULE_SETUP
-#line 1047 "tests/scan.l"
-{
-            ACTION_ECHO;
-            CHECK_REJECT(yytext);
-        }
-       YY_BREAK
-case 223:
-YY_RULE_SETUP
-#line 1051 "tests/scan.l"
-{
-            ACTION_ECHO;
-            CHECK_YYMORE(yytext);
-        }
-       YY_BREAK
-
-case 224:
-YY_RULE_SETUP
-#line 1057 "tests/scan.l"
-ACTION_ECHO;
-       YY_BREAK
-case 225:
-/* rule 225 can match eol */
-YY_RULE_SETUP
-#line 1058 "tests/scan.l"
-{
-               ++linenum;
-               ACTION_ECHO;
-               if (bracelevel <= 0 || (doing_codeblock && indented_code)) {
-            if ( doing_rule_action )
-                add_action( "\tYY_BREAK]""]\n" );
-
- piece_flush(strlen(yytext));
- if (doing_codeblock)
-  piece_append("</PLex_Section1Or2_CodeBlock>");
- else
-  markup_action("</PLex_Section2_Rule_Action>");
-            doing_rule_action = doing_codeblock = false;
-            BEGIN(SECT2);
-        }
-    }
-       YY_BREAK
-
-/* Reject and YYmore() are checked for above, in PERCENT_BRACE_ACTION */
-
-case 226:
-YY_RULE_SETUP
-#line 1079 "tests/scan.l"
-ACTION_ECHO; ++bracelevel;
-       YY_BREAK
-case 227:
-YY_RULE_SETUP
-#line 1080 "tests/scan.l"
-ACTION_ECHO; --bracelevel;
-       YY_BREAK
-case 228:
-YY_RULE_SETUP
-#line 1081 "tests/scan.l"
-ACTION_ECHO;
-       YY_BREAK
-case 229:
-YY_RULE_SETUP
-#line 1082 "tests/scan.l"
-ACTION_ECHO;
-       YY_BREAK
-case 230:
-YY_RULE_SETUP
-#line 1083 "tests/scan.l"
-ACTION_ECHO; /* character constant */
-       YY_BREAK
-case 231:
-YY_RULE_SETUP
-#line 1084 "tests/scan.l"
-ACTION_ECHO; BEGIN(CHARACTER_CONSTANT);
-       YY_BREAK
-case 232:
-YY_RULE_SETUP
-#line 1085 "tests/scan.l"
-ACTION_ECHO; BEGIN(ACTION_STRING);
-       YY_BREAK
-case 233:
-/* rule 233 can match eol */
-YY_RULE_SETUP
-#line 1086 "tests/scan.l"
-{
-                ++linenum;
-                ACTION_ECHO;
-                if (bracelevel <= 0) {
-                   if ( doing_rule_action )
- {
-                      add_action( "\tYY_BREAK]""]\n" );
-  piece_flush(strlen(yytext));
-  markup_action("</PLex_Text></PLex_Section2_Rule_Action>");
- }
-
-                   doing_rule_action = false;
-                   BEGIN(SECT2);
-                }
-             }
-       YY_BREAK
-case 234:
-YY_RULE_SETUP
-#line 1101 "tests/scan.l"
-ACTION_ECHO;
-       YY_BREAK
-
-
-case 235:
-YY_RULE_SETUP
-#line 1105 "tests/scan.l"
-ACTION_ECHO;
-       YY_BREAK
-case 236:
-YY_RULE_SETUP
-#line 1106 "tests/scan.l"
-ACTION_ECHO; BEGIN(ACTION);
-       YY_BREAK
-
-
-case 237:
-YY_RULE_SETUP
-#line 1109 "tests/scan.l"
-ACTION_ECHO;
-       YY_BREAK
-case 238:
-YY_RULE_SETUP
-#line 1110 "tests/scan.l"
-ACTION_ECHO; BEGIN(ACTION);
-       YY_BREAK
-
-
-case 239:
-/* rule 239 can match eol */
-YY_RULE_SETUP
-#line 1113 "tests/scan.l"
-ACTION_ECHO;
-       YY_BREAK
-case 240:
-/* rule 240 can match eol */
-YY_RULE_SETUP
-#line 1114 "tests/scan.l"
-ACTION_ECHO;
-       YY_BREAK
-case 241:
-/* rule 241 can match eol */
-YY_RULE_SETUP
-#line 1115 "tests/scan.l"
-++linenum; ACTION_ECHO; if (bracelevel <= 0) { BEGIN(SECT2); piece_flush(strlen(yytext)); if (doing_rule_action) markup_action("</PLex_Text></PLex_Section2_Rule_Action>"); } else { BEGIN(ACTION); }
-       YY_BREAK
-case 242:
-YY_RULE_SETUP
-#line 1116 "tests/scan.l"
-ACTION_ECHO;
-       YY_BREAK
-
-case YY_STATE_EOF(COMMENT):
-case YY_STATE_EOF(CODE_COMMENT):
-case YY_STATE_EOF(COMMENT_DISCARD):
-case YY_STATE_EOF(ACTION):
-case YY_STATE_EOF(ACTION_STRING):
-case YY_STATE_EOF(CHARACTER_CONSTANT):
-#line 1119 "tests/scan.l"
-{
-                       synerr( _( "EOF encountered inside an action" ) );
-                       yyterminate();
-                       }
-       YY_BREAK
-case YY_STATE_EOF(EXTENDED_COMMENT):
-case YY_STATE_EOF(GROUP_WITH_PARAMS):
-case YY_STATE_EOF(GROUP_MINUS_PARAMS):
-#line 1124 "tests/scan.l"
-{
-                       synerr( _( "EOF encountered inside pattern" ) );
-                       yyterminate();
-                       }
-       YY_BREAK
-case 243:
-YY_RULE_SETUP
-#line 1129 "tests/scan.l"
-{
-                       yylval = myesc( (unsigned char *) yytext );
-
-                       if ( YY_START == FIRSTCCL )
-                               BEGIN(CCL);
-
-                       return CHAR;
-                       }
-       YY_BREAK
-
-case 244:
-YY_RULE_SETUP
-#line 1139 "tests/scan.l"
-fputs(escaped_qstart, yyout);
-       YY_BREAK
-case 245:
-YY_RULE_SETUP
-#line 1140 "tests/scan.l"
-fputs(escaped_qend, yyout);
-       YY_BREAK
-case 246:
-/* rule 246 can match eol */
-YY_RULE_SETUP
-#line 1141 "tests/scan.l"
-ECHO;
-       YY_BREAK
-case 247:
-YY_RULE_SETUP
-#line 1142 "tests/scan.l"
-ECHO;
-       YY_BREAK
-case YY_STATE_EOF(SECT3):
-#line 1143 "tests/scan.l"
-{
-        sectnum = 0;
-#if 1
- piece_pack();
- piece_append("</PLex_Section3>");
- piece_pack();
- return ~YY_NULL;
-#else
-        yyterminate();
-#endif
-    }
-       YY_BREAK
-
-
-case 248:
-YY_RULE_SETUP
-#line 1156 "tests/scan.l"
-fprintf(yyout, "[""[%s]""]", escaped_qstart);
-       YY_BREAK
-case 249:
-YY_RULE_SETUP
-#line 1157 "tests/scan.l"
-fprintf(yyout, "[""[%s]""]", escaped_qend);
-       YY_BREAK
-case 250:
-/* rule 250 can match eol */
-YY_RULE_SETUP
-#line 1158 "tests/scan.l"
-ECHO;
-       YY_BREAK
-case 251:
-YY_RULE_SETUP
-#line 1159 "tests/scan.l"
-ECHO;
-       YY_BREAK
-case YY_STATE_EOF(SECT3_NOESCAPE):
-#line 1160 "tests/scan.l"
-{
-       sectnum = 0;
-#if 1
- piece_pack();
- piece_append("</PLex_Section3>");
- piece_pack();
- return ~YY_NULL;
-#else
-       yyterminate();
-#endif
-    }
-       YY_BREAK
-
-case 252:
-/* rule 252 can match eol */
-YY_RULE_SETUP
-#line 1172 "tests/scan.l"
-format_synerr( _( "bad character: %s" ), yytext );
-       YY_BREAK
-case 253:
-YY_RULE_SETUP
-#line 1174 "tests/scan.l"
-YY_FATAL_ERROR( "flex scanner jammed" );
-       YY_BREAK
-#line 4297 "lex.yy.c"
-case YY_STATE_EOF(INITIAL):
-case YY_STATE_EOF(CODEBLOCK):
-case YY_STATE_EOF(PICKUPDEF):
-case YY_STATE_EOF(SC):
-case YY_STATE_EOF(CARETISBOL):
-case YY_STATE_EOF(NUM):
-case YY_STATE_EOF(QUOTE):
-case YY_STATE_EOF(FIRSTCCL):
-case YY_STATE_EOF(CCL):
-case YY_STATE_EOF(RECOVER):
-case YY_STATE_EOF(PERCENT_BRACE_ACTION):
-case YY_STATE_EOF(OPTION):
-case YY_STATE_EOF(LINEDIR):
-       yyterminate();
-
-       case YY_END_OF_BUFFER:
-               {
-               /* Amount of text matched not including the EOB char. */
-               int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
-
-               /* Undo the effects of YY_DO_BEFORE_ACTION. */
-               *yy_cp = (yy_hold_char);
-               YY_RESTORE_YY_MORE_OFFSET
-
-               if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
-                       {
-                       /* We're scanning a new file or input source.  It's
-                        * possible that this happened because the user
-                        * just pointed yyin at a new source and called
-                        * yylex().  If so, then we have to assure
-                        * consistency between YY_CURRENT_BUFFER and our
-                        * globals.  Here is the right place to do so, because
-                        * this is the first action (other than possibly a
-                        * back-up) that will match for the new input source.
-                        */
-                       (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-                       YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
-                       YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
-                       }
-
-               /* Note that here we test for yy_c_buf_p "<=" to the position
-                * of the first EOB in the buffer, since yy_c_buf_p will
-                * already have been incremented past the NUL character
-                * (since all states make transitions on EOB to the
-                * end-of-buffer state).  Contrast this with the test
-                * in input().
-                */
-               if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-                       { /* This was really a NUL. */
-                       yy_state_type yy_next_state;
-
-                       (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
-
-                       yy_current_state = yy_get_previous_state(  );
-
-                       /* Okay, we're now positioned to make the NUL
-                        * transition.  We couldn't have
-                        * yy_get_previous_state() go ahead and do it
-                        * for us because it doesn't know how to deal
-                        * with the possibility of jamming (and we don't
-                        * want to build jamming into it because then it
-                        * will run more slowly).
-                        */
-
-                       yy_next_state = yy_try_NUL_trans( yy_current_state );
-
-                       yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-
-                       if ( yy_next_state )
-                               {
-                               /* Consume the NUL. */
-                               yy_cp = ++(yy_c_buf_p);
-                               yy_current_state = yy_next_state;
-                               goto yy_match;
-                               }
-
-                       else
-                               {
-                               yy_cp = (yy_c_buf_p);
-                               goto yy_find_action;
-                               }
-                       }
-
-               else switch ( yy_get_next_buffer(  ) )
-                       {
-                       case EOB_ACT_END_OF_FILE:
-                               {
-                               (yy_did_buffer_switch_on_eof) = 0;
-
-                               if ( yywrap(  ) )
-                                       {
-                                       /* Note: because we've taken care in
-                                        * yy_get_next_buffer() to have set up
-                                        * yytext, we can now set up
-                                        * yy_c_buf_p so that if some total
-                                        * hoser (like flex itself) wants to
-                                        * call the scanner after we return the
-                                        * YY_NULL, it'll still work - another
-                                        * YY_NULL will get returned.
-                                        */
-                                       (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
-
-                                       yy_act = YY_STATE_EOF(YY_START);
-                                       goto do_action;
-                                       }
-
-                               else
-                                       {
-                                       if ( ! (yy_did_buffer_switch_on_eof) )
-                                               YY_NEW_FILE;
-                                       }
-                               break;
-                               }
-
-                       case EOB_ACT_CONTINUE_SCAN:
-                               (yy_c_buf_p) =
-                                       (yytext_ptr) + yy_amount_of_matched_text;
-
-                               yy_current_state = yy_get_previous_state(  );
-
-                               yy_cp = (yy_c_buf_p);
-                               yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-                               goto yy_match;
-
-                       case EOB_ACT_LAST_MATCH:
-                               (yy_c_buf_p) =
-                               &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
-
-                               yy_current_state = yy_get_previous_state(  );
-
-                               yy_cp = (yy_c_buf_p);
-                               yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-                               goto yy_find_action;
-                       }
-               break;
-               }
-
-       default:
-               YY_FATAL_ERROR(
-                       "fatal flex scanner internal error--no action found" );
-       } /* end of action switch */
-               } /* end of scanning one token */
-       } /* end of user's declarations */
-} /* end of yylex */
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- *     EOB_ACT_LAST_MATCH -
- *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- *     EOB_ACT_END_OF_FILE - end of file
- */
-static int yy_get_next_buffer (void)
-{
-       char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-       char *source = (yytext_ptr);
-       int number_to_move, i;
-       int ret_val;
-
-       if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
-               YY_FATAL_ERROR(
-               "fatal flex scanner internal error--end of buffer missed" );
-
-       if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
-               { /* Don't try to fill the buffer, so this is an EOF. */
-               if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
-                       {
-                       /* We matched a single character, the EOB, so
-                        * treat this as a final EOF.
-                        */
-                       return EOB_ACT_END_OF_FILE;
-                       }
-
-               else
-                       {
-                       /* We matched some text prior to the EOB, first
-                        * process it.
-                        */
-                       return EOB_ACT_LAST_MATCH;
-                       }
-               }
-
-       /* Try to read more data. */
-
-       /* First move last chars to start of buffer. */
-       number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
-
-       for ( i = 0; i < number_to_move; ++i )
-               *(dest++) = *(source++);
-
-       if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-               /* don't do the read, it's not guaranteed to return an EOF,
-                * just force an EOF
-                */
-               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
-
-       else
-               {
-                       int num_to_read =
-                       YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-
-               while ( num_to_read <= 0 )
-                       { /* Not enough room in the buffer - grow it. */
-
-                       /* just a shorter name for the current buffer */
-                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
-
-                       int yy_c_buf_p_offset =
-                               (int) ((yy_c_buf_p) - b->yy_ch_buf);
-
-                       if ( b->yy_is_our_buffer )
-                               {
-                               int new_size = b->yy_buf_size * 2;
-
-                               if ( new_size <= 0 )
-                                       b->yy_buf_size += b->yy_buf_size / 8;
-                               else
-                                       b->yy_buf_size *= 2;
-
-                               b->yy_ch_buf = (char *)
-                                       /* Include room in for 2 EOB chars. */
-                                       yyrealloc( (void *) b->yy_ch_buf,
-                                                        (yy_size_t) (b->yy_buf_size + 2)  );
-                               }
-                       else
-                               /* Can't grow it, we don't own it. */
-                               b->yy_ch_buf = NULL;
-
-                       if ( ! b->yy_ch_buf )
-                               YY_FATAL_ERROR(
-                               "fatal error - scanner input buffer overflow" );
-
-                       (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
-
-                       num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
-                                               number_to_move - 1;
-
-                       }
-
-               if ( num_to_read > YY_READ_BUF_SIZE )
-                       num_to_read = YY_READ_BUF_SIZE;
-
-               /* Read in more data. */
-               YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-                       (yy_n_chars), num_to_read );
-
-               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-               }
-
-       if ( (yy_n_chars) == 0 )
-               {
-               if ( number_to_move == YY_MORE_ADJ )
-                       {
-                       ret_val = EOB_ACT_END_OF_FILE;
-                       yyrestart( yyin  );
-                       }
-
-               else
-                       {
-                       ret_val = EOB_ACT_LAST_MATCH;
-                       YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
-                               YY_BUFFER_EOF_PENDING;
-                       }
-               }
-
-       else
-               ret_val = EOB_ACT_CONTINUE_SCAN;
-
-       if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
-               /* Extend the array by 50%, plus the number we really need. */
-               int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
-               YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
-                       (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size  );
-               if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-                       YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
-               /* "- 2" to take care of EOB's */
-               YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
-       }
-
-       (yy_n_chars) += number_to_move;
-       YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
-       YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
-
-       (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
-
-       return ret_val;
-}
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-    static yy_state_type yy_get_previous_state (void)
-{
-       yy_state_type yy_current_state;
-       char *yy_cp;
-    
-       yy_current_state = (yy_start);
-       yy_current_state += YY_AT_BOL();
-
-       for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
-               {
-               int yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-               if ( yy_accept[yy_current_state] )
-                       {
-                       (yy_last_accepting_state) = yy_current_state;
-                       (yy_last_accepting_cpos) = yy_cp;
-                       }
-               while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-                       {
-                       yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 1114 )
-                               yy_c = yy_meta[yy_c];
-                       }
-               yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-               }
-
-       return yy_current_state;
-}
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- *     next_state = yy_try_NUL_trans( current_state );
- */
-    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
-{
-       int yy_is_jam;
-       char *yy_cp = (yy_c_buf_p);
-
-       int yy_c = 1;
-       if ( yy_accept[yy_current_state] )
-               {
-               (yy_last_accepting_state) = yy_current_state;
-               (yy_last_accepting_cpos) = yy_cp;
-               }
-       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-               {
-               yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 1114 )
-                       yy_c = yy_meta[yy_c];
-               }
-       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1113);
-
-               return yy_is_jam ? 0 : yy_current_state;
-}
-
-#ifndef YY_NO_UNPUT
-
-    static void yyunput (int c, char * yy_bp )
-{
-       char *yy_cp;
-    
-    yy_cp = (yy_c_buf_p);
-
-       /* undo effects of setting up yytext */
-       *yy_cp = (yy_hold_char);
-
-       if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-               { /* need to shift things up to make room */
-               /* +2 for EOB chars. */
-               int number_to_move = (yy_n_chars) + 2;
-               char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
-                                       YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
-               char *source =
-                               &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
-
-               while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-                       *--dest = *--source;
-
-               yy_cp += (int) (dest - source);
-               yy_bp += (int) (dest - source);
-               YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
-                       (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
-
-               if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-                       YY_FATAL_ERROR( "flex scanner push-back overflow" );
-               }
-
-       *--yy_cp = (char) c;
-
-       (yytext_ptr) = yy_bp;
-       (yy_hold_char) = *yy_cp;
-       (yy_c_buf_p) = yy_cp;
-}
-
-#endif
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-    static int yyinput (void)
-#else
-    static int input  (void)
-#endif
-
-{
-       int c;
-    
-       *(yy_c_buf_p) = (yy_hold_char);
-
-       if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
-               {
-               /* yy_c_buf_p now points to the character we want to return.
-                * If this occurs *before* the EOB characters, then it's a
-                * valid NUL; if not, then we've hit the end of the buffer.
-                */
-               if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-                       /* This was really a NUL. */
-                       *(yy_c_buf_p) = '\0';
-
-               else
-                       { /* need more input */
-                       int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
-                       ++(yy_c_buf_p);
-
-                       switch ( yy_get_next_buffer(  ) )
-                               {
-                               case EOB_ACT_LAST_MATCH:
-                                       /* This happens because yy_g_n_b()
-                                        * sees that we've accumulated a
-                                        * token and flags that we need to
-                                        * try matching the token before
-                                        * proceeding.  But for input(),
-                                        * there's no matching to consider.
-                                        * So convert the EOB_ACT_LAST_MATCH
-                                        * to EOB_ACT_END_OF_FILE.
-                                        */
-
-                                       /* Reset buffer status. */
-                                       yyrestart( yyin );
-
-                                       /*FALLTHROUGH*/
-
-                               case EOB_ACT_END_OF_FILE:
-                                       {
-                                       if ( yywrap(  ) )
-                                               return 0;
-
-                                       if ( ! (yy_did_buffer_switch_on_eof) )
-                                               YY_NEW_FILE;
-#ifdef __cplusplus
-                                       return yyinput();
-#else
-                                       return input();
-#endif
-                                       }
-
-                               case EOB_ACT_CONTINUE_SCAN:
-                                       (yy_c_buf_p) = (yytext_ptr) + offset;
-                                       break;
-                               }
-                       }
-               }
-
-       c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
-       *(yy_c_buf_p) = '\0';   /* preserve yytext */
-       (yy_hold_char) = *++(yy_c_buf_p);
-
-       YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
-
-       return c;
-}
-#endif /* ifndef YY_NO_INPUT */
-
-/** Immediately switch to a different input stream.
- * @param input_file A readable stream.
- * 
- * @note This function does not reset the start condition to @c INITIAL .
- */
-    void yyrestart  (FILE * input_file )
-{
-    
-       if ( ! YY_CURRENT_BUFFER ){
-        yyensure_buffer_stack ();
-               YY_CURRENT_BUFFER_LVALUE =
-            yy_create_buffer( yyin, YY_BUF_SIZE );
-       }
-
-       yy_init_buffer( YY_CURRENT_BUFFER, input_file );
-       yy_load_buffer_state(  );
-}
-
-/** Switch to a different input buffer.
- * @param new_buffer The new input buffer.
- * 
- */
-    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
-{
-    
-       /* TODO. We should be able to replace this entire function body
-        * with
-        *              yypop_buffer_state();
-        *              yypush_buffer_state(new_buffer);
-     */
-       yyensure_buffer_stack ();
-       if ( YY_CURRENT_BUFFER == new_buffer )
-               return;
-
-       if ( YY_CURRENT_BUFFER )
-               {
-               /* Flush out information for old buffer. */
-               *(yy_c_buf_p) = (yy_hold_char);
-               YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-               }
-
-       YY_CURRENT_BUFFER_LVALUE = new_buffer;
-       yy_load_buffer_state(  );
-
-       /* We don't actually know whether we did this switch during
-        * EOF (yywrap()) processing, but the only time this flag
-        * is looked at is after yywrap() is called, so it's safe
-        * to go ahead and always set it.
-        */
-       (yy_did_buffer_switch_on_eof) = 1;
-}
-
-static void yy_load_buffer_state  (void)
-{
-       (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-       (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
-       yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
-       (yy_hold_char) = *(yy_c_buf_p);
-}
-
-/** Allocate and initialize an input buffer state.
- * @param file A readable stream.
- * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
- * 
- * @return the allocated buffer state.
- */
-    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
-{
-       YY_BUFFER_STATE b;
-    
-       b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
-       if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-       b->yy_buf_size = size;
-
-       /* yy_ch_buf has to be 2 characters longer than the size given because
-        * we need to put in 2 end-of-buffer characters.
-        */
-       b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2)  );
-       if ( ! b->yy_ch_buf )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-       b->yy_is_our_buffer = 1;
-
-       yy_init_buffer( b, file );
-
-       return b;
-}
-
-/** Destroy the buffer.
- * @param b a buffer created with yy_create_buffer()
- * 
- */
-    void yy_delete_buffer (YY_BUFFER_STATE  b )
-{
-    
-       if ( ! b )
-               return;
-
-       if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
-               YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
-
-       if ( b->yy_is_our_buffer )
-               yyfree( (void *) b->yy_ch_buf  );
-
-       yyfree( (void *) b  );
-}
-
-/* Initializes or reinitializes a buffer.
- * This function is sometimes called more than once on the same buffer,
- * such as during a yyrestart() or at EOF.
- */
-    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
-
-{
-       int oerrno = errno;
-    
-       yy_flush_buffer( b );
-
-       b->yy_input_file = file;
-       b->yy_fill_buffer = 1;
-
-    /* If b is the current buffer, then yy_init_buffer was _probably_
-     * called from yyrestart() or through yy_get_next_buffer.
-     * In that case, we don't want to reset the lineno or column.
-     */
-    if (b != YY_CURRENT_BUFFER){
-        b->yy_bs_lineno = 1;
-        b->yy_bs_column = 0;
-    }
-
-        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-    
-       errno = oerrno;
-}
-
-/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
- * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
- * 
- */
-    void yy_flush_buffer (YY_BUFFER_STATE  b )
-{
-       if ( ! b )
-               return;
-
-       b->yy_n_chars = 0;
-
-       /* We always need two end-of-buffer characters.  The first causes
-        * a transition to the end-of-buffer state.  The second causes
-        * a jam in that state.
-        */
-       b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-       b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
-       b->yy_buf_pos = &b->yy_ch_buf[0];
-
-       b->yy_at_bol = 1;
-       b->yy_buffer_status = YY_BUFFER_NEW;
-
-       if ( b == YY_CURRENT_BUFFER )
-               yy_load_buffer_state(  );
-}
-
-/** Pushes the new state onto the stack. The new state becomes
- *  the current state. This function will allocate the stack
- *  if necessary.
- *  @param new_buffer The new state.
- *  
- */
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
-{
-       if (new_buffer == NULL)
-               return;
-
-       yyensure_buffer_stack();
-
-       /* This block is copied from yy_switch_to_buffer. */
-       if ( YY_CURRENT_BUFFER )
-               {
-               /* Flush out information for old buffer. */
-               *(yy_c_buf_p) = (yy_hold_char);
-               YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-               }
-
-       /* Only push if top exists. Otherwise, replace top. */
-       if (YY_CURRENT_BUFFER)
-               (yy_buffer_stack_top)++;
-       YY_CURRENT_BUFFER_LVALUE = new_buffer;
-
-       /* copied from yy_switch_to_buffer. */
-       yy_load_buffer_state(  );
-       (yy_did_buffer_switch_on_eof) = 1;
-}
-
-/** Removes and deletes the top of the stack, if present.
- *  The next element becomes the new top.
- *  
- */
-void yypop_buffer_state (void)
-{
-       if (!YY_CURRENT_BUFFER)
-               return;
-
-       yy_delete_buffer(YY_CURRENT_BUFFER );
-       YY_CURRENT_BUFFER_LVALUE = NULL;
-       if ((yy_buffer_stack_top) > 0)
-               --(yy_buffer_stack_top);
-
-       if (YY_CURRENT_BUFFER) {
-               yy_load_buffer_state(  );
-               (yy_did_buffer_switch_on_eof) = 1;
-       }
-}
-
-/* Allocates the stack if it does not exist.
- *  Guarantees space for at least one push.
- */
-static void yyensure_buffer_stack (void)
-{
-       yy_size_t num_to_alloc;
-    
-       if (!(yy_buffer_stack)) {
-
-               /* First allocation is just for 2 elements, since we don't know if this
-                * scanner will even need a stack. We use 2 instead of 1 to avoid an
-                * immediate realloc on the next call.
-         */
-      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
-               (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
-                                                               (num_to_alloc * sizeof(struct yy_buffer_state*)
-                                                               );
-               if ( ! (yy_buffer_stack) )
-                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-
-               memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-
-               (yy_buffer_stack_max) = num_to_alloc;
-               (yy_buffer_stack_top) = 0;
-               return;
-       }
-
-       if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
-
-               /* Increase the buffer to prepare for a possible push. */
-               yy_size_t grow_size = 8 /* arbitrary grow size */;
-
-               num_to_alloc = (yy_buffer_stack_max) + grow_size;
-               (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
-                                                               ((yy_buffer_stack),
-                                                               num_to_alloc * sizeof(struct yy_buffer_state*)
-                                                               );
-               if ( ! (yy_buffer_stack) )
-                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-
-               /* zero only the new slots.*/
-               memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
-               (yy_buffer_stack_max) = num_to_alloc;
-       }
-}
-
-/** Setup the input buffer state to scan directly from a user-specified character buffer.
- * @param base the character buffer
- * @param size the size in bytes of the character buffer
- * 
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
-{
-       YY_BUFFER_STATE b;
-    
-       if ( size < 2 ||
-            base[size-2] != YY_END_OF_BUFFER_CHAR ||
-            base[size-1] != YY_END_OF_BUFFER_CHAR )
-               /* They forgot to leave room for the EOB's. */
-               return NULL;
-
-       b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
-       if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
-
-       b->yy_buf_size = (int) (size - 2);      /* "- 2" to take care of EOB's */
-       b->yy_buf_pos = b->yy_ch_buf = base;
-       b->yy_is_our_buffer = 0;
-       b->yy_input_file = NULL;
-       b->yy_n_chars = b->yy_buf_size;
-       b->yy_is_interactive = 0;
-       b->yy_at_bol = 1;
-       b->yy_fill_buffer = 0;
-       b->yy_buffer_status = YY_BUFFER_NEW;
-
-       yy_switch_to_buffer( b  );
-
-       return b;
-}
-
-/** Setup the input buffer state to scan a string. The next call to yylex() will
- * scan from a @e copy of @a str.
- * @param yystr a NUL-terminated string to scan
- * 
- * @return the newly allocated buffer state object.
- * @note If you want to scan bytes that may contain NUL values, then use
- *       yy_scan_bytes() instead.
- */
-YY_BUFFER_STATE yy_scan_string (const char * yystr )
-{
-    
-       return yy_scan_bytes( yystr, (int) strlen(yystr) );
-}
-
-/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
- * scan from a @e copy of @a bytes.
- * @param yybytes the byte buffer to scan
- * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
- * 
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
-{
-       YY_BUFFER_STATE b;
-       char *buf;
-       yy_size_t n;
-       int i;
-    
-       /* Get memory for full buffer, including space for trailing EOB's. */
-       n = (yy_size_t) (_yybytes_len + 2);
-       buf = (char *) yyalloc( n  );
-       if ( ! buf )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-
-       for ( i = 0; i < _yybytes_len; ++i )
-               buf[i] = yybytes[i];
-
-       buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
-
-       b = yy_scan_buffer( buf, n );
-       if ( ! b )
-               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
-
-       /* It's okay to grow etc. this buffer, and we should throw it
-        * away when we're done.
-        */
-       b->yy_is_our_buffer = 1;
-
-       return b;
-}
-
-    static void yy_push_state (int  _new_state )
-{
-       if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
-               {
-               yy_size_t new_size;
-
-               (yy_start_stack_depth) += YY_START_STACK_INCR;
-               new_size = (yy_size_t) (yy_start_stack_depth) * sizeof( int );
-
-               if ( ! (yy_start_stack) )
-                       (yy_start_stack) = (int *) yyalloc( new_size  );
-
-               else
-                       (yy_start_stack) = (int *) yyrealloc(
-                                       (void *) (yy_start_stack), new_size  );
-
-               if ( ! (yy_start_stack) )
-                       YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
-               }
-
-       (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
-
-       BEGIN(_new_state);
-}
-
-    static void yy_pop_state  (void)
-{
-       if ( --(yy_start_stack_ptr) < 0 )
-               YY_FATAL_ERROR( "start-condition stack underflow" );
-
-       BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
-}
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-static void yynoreturn yy_fatal_error (const char* msg )
-{
-                       fprintf( stderr, "%s\n", msg );
-       exit( YY_EXIT_FAILURE );
-}
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
-       do \
-               { \
-               /* Undo effects of setting up yytext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-               yytext[yyleng] = (yy_hold_char); \
-               (yy_c_buf_p) = yytext + yyless_macro_arg; \
-               (yy_hold_char) = *(yy_c_buf_p); \
-               *(yy_c_buf_p) = '\0'; \
-               yyleng = yyless_macro_arg; \
-               } \
-       while ( 0 )
-
-/* Accessor  methods (get/set functions) to struct members. */
-
-/** Get the current line number.
- * 
- */
-int yyget_lineno  (void)
-{
-    
-    return yylineno;
-}
-
-/** Get the input stream.
- * 
- */
-FILE *yyget_in  (void)
-{
-        return yyin;
-}
-
-/** Get the output stream.
- * 
- */
-FILE *yyget_out  (void)
-{
-        return yyout;
-}
-
-/** Get the length of the current token.
- * 
- */
-int yyget_leng  (void)
-{
-        return yyleng;
-}
-
-/** Get the current token.
- * 
- */
-
-char *yyget_text  (void)
-{
-        return yytext;
-}
-
-/** Set the current line number.
- * @param _line_number line number
- * 
- */
-void yyset_lineno (int  _line_number )
-{
-    
-    yylineno = _line_number;
-}
-
-/** Set the input stream. This does not discard the current
- * input buffer.
- * @param _in_str A readable stream.
- * 
- * @see yy_switch_to_buffer
- */
-void yyset_in (FILE *  _in_str )
-{
-        yyin = _in_str ;
-}
-
-void yyset_out (FILE *  _out_str )
-{
-        yyout = _out_str ;
-}
-
-int yyget_debug  (void)
-{
-        return yy_flex_debug;
-}
-
-void yyset_debug (int  _bdebug )
-{
-        yy_flex_debug = _bdebug ;
-}
-
-static int yy_init_globals (void)
-{
-        /* Initialization is the same as for the non-reentrant scanner.
-     * This function is called from yylex_destroy(), so don't allocate here.
-     */
-
-    (yy_buffer_stack) = NULL;
-    (yy_buffer_stack_top) = 0;
-    (yy_buffer_stack_max) = 0;
-    (yy_c_buf_p) = NULL;
-    (yy_init) = 0;
-    (yy_start) = 0;
-
-    (yy_start_stack_ptr) = 0;
-    (yy_start_stack_depth) = 0;
-    (yy_start_stack) =  NULL;
-
-/* Defined in main.c */
-#ifdef YY_STDINIT
-    yyin = stdin;
-    yyout = stdout;
-#else
-    yyin = NULL;
-    yyout = NULL;
-#endif
-
-    /* For future reference: Set errno on error, since we are called by
-     * yylex_init()
-     */
-    return 0;
-}
-
-/* yylex_destroy is for both reentrant and non-reentrant scanners. */
-int yylex_destroy  (void)
-{
-    
-    /* Pop the buffer stack, destroying each element. */
-       while(YY_CURRENT_BUFFER){
-               yy_delete_buffer( YY_CURRENT_BUFFER  );
-               YY_CURRENT_BUFFER_LVALUE = NULL;
-               yypop_buffer_state();
-       }
-
-       /* Destroy the stack itself. */
-       yyfree((yy_buffer_stack) );
-       (yy_buffer_stack) = NULL;
-
-    /* Destroy the start condition stack. */
-        yyfree( (yy_start_stack)  );
-        (yy_start_stack) = NULL;
-
-    /* Reset the globals. This is important in a non-reentrant scanner so the next time
-     * yylex() is called, initialization will occur. */
-    yy_init_globals( );
-
-    return 0;
-}
-
-/*
- * Internal utility routines.
- */
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, const char * s2, int n )
-{
-               
-       int i;
-       for ( i = 0; i < n; ++i )
-               s1[i] = s2[i];
-}
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (const char * s )
-{
-       int n;
-       for ( n = 0; s[n]; ++n )
-               ;
-
-       return n;
-}
-#endif
-
-void *yyalloc (yy_size_t  size )
-{
-                       return malloc(size);
-}
-
-void *yyrealloc  (void * ptr, yy_size_t  size )
-{
-               
-       /* The cast to (char *) in the following accommodates both
-        * implementations that use char* generic pointers, and those
-        * that use void* generic pointers.  It works with the latter
-        * because both ANSI C and C++ allow castless assignment from
-        * any pointer type to void*, and deal with argument conversions
-        * as though doing an assignment.
-        */
-       return realloc(ptr, size);
-}
-
-void yyfree (void * ptr )
-{
-                       free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
-}
-
-#define YYTABLES_NAME "yytables"
-
-#line 1174 "tests/scan.l"
-
-
-
-int yywrap(void)
-       {
-       if ( --num_input_files > 0 )
-               {
-               set_input_file( *++input_files );
-               return 0;
-               }
-
-       else
-               return 1;
-       }
-
-
-/* set_input_file - open the given file (if NULL, stdin) for scanning */
-
-void set_input_file( char *file )
-       {
-       if ( file && strcmp( file, "-" ) )
-               {
-               infilename = xstrdup(file);
-               yyin = fopen( infilename, "r" );
-
-               if ( yyin == NULL )
-                       lerr( _( "can't open %s" ), file );
-               }
-
-       else
-               {
-               yyin = stdin;
-               infilename = xstrdup("<stdin>");
-               }
-
-       linenum = 1;
-       }
-
-/* Nick */
-void piece_append(const char *str) {
- piece[piece1++] = strdup(str);
-}
-
-void piece_insert(int n, const char *str) {
- memmove(piece + n + 1, piece + n, (piece1 - n) * sizeof(char *));
- piece[n] = strdup(str);
- ++piece1;
-}
-
-void piece_escape(const char *p, size_t n) {
- size_t i, j = 0;
- for (i = 0; i < n; ++i)
-  switch (p[i]) {
-  case '<':
-  case '>':
-   j += 4;
-   break;
-  case '&':
-   j += 5;
-   break;
-  default:
-   ++j;
-   break;
-  }
- char *q = malloc(j + 1);
- j = 0;
- for (i = 0; i < n; ++i)
-  switch (p[i]) {
-  case '<':
-   memcpy(q + j, "&lt;", 4);
-   j += 4;
-   break;
-  case '>':
-   memcpy(q + j, "&gt;", 4);
-   j += 4;
-   break;
-  case '&':
-   memcpy(q + j, "&amp;", 5);
-   j += 5;
-   break;
-  default:
-   q[j++] = p[i];
-   break;
-  }
- q[j] = 0;
- piece[piece1++] = q;
-}
-
-void piece_flush(size_t n) {
- piece_escape(yytext, n);
- yytext += n;
-}
-
-void piece_pack() {
- int i;
- size_t j = 0;
- for (i = piece0; i < piece1; ++i)
-  j += strlen(piece[i]);
- char *q = malloc(j + 1);
- j = 0;
- for (i = piece0; i < piece1; ++i) {
-  int k = strlen(piece[i]);
-  memcpy(q + j, piece[i], k);
-  free(piece[i]);
-  j += k;
- }
- q[j] = 0;
- piece[piece0++] = q;
- piece1 = piece0;
-}
-
-int flexscan(void) {
- int result = real_flexscan();
- if (result < 0)
-  return ~result;
- piece_pack();
- piece_escape(yytext, strlen(yytext));
- piece_pack();
- return result;
-}
-
-static void markup_action(const char *text) {
- /* append to last token text so it appears inside <PLex_Section2_Rule>..</PLex_Section2_Rule> */
- /* a problem here is that Rule has already been reduced (marked up), */
- /* because we returned a '\n' token when we detected start of action, */
- /* hence we need to move the closing </PLex_Section2_Rule> tag over to our right */
- int i = strlen(piece[--piece0]);
- if (i < 21 || strcmp(piece[piece0] + i - 21, "</PLex_Section2_Rule>") != 0)
-  abort();
- piece[piece0][i - 21] = 0;
- piece_append(text);
- piece_append("</PLex_Section2_Rule>");
- piece_pack();
-}
-
-static void markup_option(const char *name, int sense) {
- /* a problem here is that we couldn't apply markup when scanning the "no" */
- /* prefix because we didn't know what option it was, back up to include it */
- int i = piece1;
- while (--i >= piece0 && strcmp(piece[i], "no") == 0)
-  ;
- sprintf(piece_temp, "<PLex_Section1_Options_%s%s>", name, sense ? " value=\"true\"" : "");
- piece_insert(i + 1, piece_temp);
- piece_flush(strlen(yytext));
- sprintf(piece_temp, "</PLex_Section1_Options_%s>", name);
- piece_append(piece_temp);
- /* append to last token text so it appears inside <PLex_Section1_Options>..</PLex_Section1_Options> */
- --piece0;
- piece_pack();
-}
-
diff --git a/lr1.py b/lr1.py
deleted file mode 100644 (file)
index 7a784f1..0000000
--- a/lr1.py
+++ /dev/null
@@ -1,573 +0,0 @@
-import bisect
-import bisect_set
-import element
-import lr1dfa
-#import work
-import sys
-
-# defines the alphabet size, set this to 0x11000 for unicode
-n_characters = 0x100
-
-class LR1:
-  ASSOCIATIVITY_RIGHT = 0
-  ASSOCIATIVITY_LEFT = 1
-  ASSOCIATIVITY_NON = 2
-
-  def __init__(
-    self,
-    productions = [],
-    precedences = ([], [], [], []),
-    associativities = [],
-    n_terminals = n_characters + 1,
-    eof_terminal = n_characters
-  ):
-    # productions: list of production
-    # production: (
-    #   symbols,
-    #   lookaheads,
-    #   ref_data
-    # )
-    # symbols: list of symbol_desc
-    # symbol_desc: (terminal_set, nonterminal_set)
-    # terminal_set: similar to character_set, even length list of pairs of breaks
-    # nonterminal_set: as above but has n_terminals subtracted from breaks
-    # lookaheads: list of lookahead_desc, len(lookaheads) = len(symbols) + 1
-    # lookahead_desc: (initial_set, can_be_empty)
-    # initial_set: what terminals can occur at this position in symbols array,
-    # computed such that lookaheads[i][0] is symbols[i][0], plus initial set of
-    # each nonterminal from symbols[i][1], plus lookaheads[i + 1][0] if any
-    # nonterminal of symbols[i][1] can be empty (may pull in i + 2, i + 3 etc)
-    # can_be_empty: whether all symbols from this position to end can be empty
-    # note: last lookahead_desc is a sentinel consisting of ([], True), so that
-    # initial_set is empty (will be augmented by context) and can_be_empty is
-    # True (because all symbols from the end to the end can obviously be empty)
-    # ref_data: can be anything for caller's use, usually list of group_bound
-    # group_bound: (start_index, end_index, tag, kwargs)
-    #   where start_index, end_index are indices into list of character_set,
-    #   and tag, kwargs will be passed to apply_markup() hence factory(),
-    #   noting that markup has to be applied in reverse order of the list
-    # precedences: (terminal_breaks, terminal_precs, nonterminal_breaks,
-    #   nonterminal_precs) encoded similarly to the action and goto tables
-    # associativities: indexed by value from (non)terminal_precs, contains
-    #   -1 for not specified (equal precedence is a compile time error) or an
-    #   ASSOCIATIVITY_* value (NON means equal precedence is run time error)
-    # n_terminals: offset to apply to productions[] index to get symbol
-    #   (character set code), also symbol for productions[0] = start production
-    # eof_terminal: usually == n_terminals - 1 (must be valid terminal value)
-    self.productions = productions
-    self.precedences = precedences
-    self.associativities = associativities
-    self.n_terminals = n_terminals
-    self.eof_terminal = eof_terminal
-
-  def lookahead_item_set_closure(self, items, item_to_index):
-    in_queue = [True for i in range(len(items))]
-    queue = list(range(len(items)))
-
-    qhead = 0
-    while qhead < len(queue):
-      i = queue[qhead]
-      in_queue[i] = False
-      j, k, lookahead_set = items[i]
-      symbols, lookaheads, _ = self.productions[j]
-      if k < len(symbols):
-        _, nonterminal_set = symbols[k]
-        if len(nonterminal_set):
-          next_lookahead_set, next_can_be_empty = lookaheads[k + 1]
-          if next_can_be_empty:
-            next_lookahead_set = bisect_set.bisect_set_or(
-              next_lookahead_set,
-              lookahead_set
-            )
-          for l in range(0, len(nonterminal_set), 2):
-            for m in range(nonterminal_set[l], nonterminal_set[l + 1]):
-              key = (m, 0)
-              if key in item_to_index:
-                n = item_to_index[key]
-                child_lookahead_set = bisect_set.bisect_set_or(
-                  items[n][2],
-                  next_lookahead_set
-                )
-                if child_lookahead_set != items[n][2]:
-                  items[n] = (m, 0, child_lookahead_set)
-                  if not in_queue[n]:
-                    # optimization: do not re-queue unless it is transparent
-                    # to changes in the lookahead set wrt. further propagation
-                    child_symbols, child_lookaheads, _ = self.productions[m]
-                    if len(child_symbols) and child_lookaheads[1][1]:
-                      in_queue[n] = True
-                      queue.append(n)
-              else:
-                n = len(items)
-                items.append((m, 0, next_lookahead_set))
-                item_to_index[key] = n
-                in_queue.append(True)
-                queue.append(n)
-      qhead += 1 
-
-  def lookahead_item_set_action(self, items, terminal):
-    next_items = []
-    next_item_to_index = {}
-    reductions = set()
-    terminal0 = 0
-    terminal1 = self.n_terminals
-    for i, j, lookahead_set in items:
-      symbols, _, _ = self.productions[i]
-      if j < len(symbols):
-        terminal_set, _ = symbols[j]
-        k = bisect.bisect_right(terminal_set, terminal)
-        if k > 0 and terminal0 < terminal_set[k - 1]:
-          terminal0 = terminal_set[k - 1]
-        if k < len(terminal_set) and terminal1 > terminal_set[k]:
-          terminal1 = terminal_set[k]
-        if (k & 1) == 1:
-          next_item_to_index[(i, j + 1)] = len(next_items)
-          next_items.append((i, j + 1, lookahead_set))
-      else:
-        k = bisect.bisect_right(lookahead_set, terminal)
-        if k > 0 and terminal0 < lookahead_set[k - 1]:
-          terminal0 = lookahead_set[k - 1]
-        if k < len(lookahead_set) and terminal1 > lookahead_set[k]:
-          terminal1 = lookahead_set[k]
-        if (k & 1) == 1:
-          reductions.add(i)
-    return next_items, next_item_to_index, reductions, terminal0, terminal1
-
-  def lookahead_item_set_goto(self, items, nonterminal):
-    next_items = []
-    next_item_to_index = {}
-    reductions = set()
-    nonterminal0 = 0
-    nonterminal1 = len(self.productions)
-    for i, j, lookahead_set in items:
-      symbols, _, _ = self.productions[i]
-      if j < len(symbols):
-        _, nonterminal_set = symbols[j]
-        k = bisect.bisect_right(nonterminal_set, nonterminal)
-        if k > 0 and nonterminal0 < nonterminal_set[k - 1]:
-          nonterminal0 = nonterminal_set[k - 1]
-        if k < len(nonterminal_set) and nonterminal1 > nonterminal_set[k]:
-          nonterminal1 = nonterminal_set[k]
-        if (k & 1) == 1:
-          next_item_to_index[(i, j + 1)] = len(next_items)
-          next_items.append((i, j + 1, lookahead_set))
-    return next_items, next_item_to_index, nonterminal0, nonterminal1
-
-  #def parse_text(self, text, i):
-  #  items = [(0, 0, [self.eof_terminal, self.eof_terminal + 1])]
-  #  item_to_index = {(0, 0): 0}
-  #  value_stack = []
-  #  state_stack = []
-  #  lookahead_character = ord(text[i]) if i < len(text) else self.eof_terminal
-  #  while True:
-  #    self.lookahead_item_set_closure(items, item_to_index)
-  #    value_stack.append(i)
-  #    state_stack.append(items)
-  #    items, item_to_index, reductions, _, _ = (
-  #      self.lookahead_item_set_action(items, lookahead_character)
-  #    )
-  #    if len(items) != 0:
-  #      if len(reductions) != 0:
-  #        sys.stderr.write(
-  #          'shift/reduce conflict: {0:s} vs {1:s}\n'.format(
-  #            ','.join([str(i) for i, _, _ in next_items]),
-  #            ','.join([str(i) for i in reductions])
-  #          )
-  #        )
-  #      i += 1
-  #      lookahead_character = ord(text[i]) if i < len(text) else self.eof_terminal
-  #    elif len(reductions) != 0:
-  #      if len(reductions) != 1:
-  #        sys.stderr.write(
-  #          'reduce/reduce conflict: {0:s}\n'.format(
-  #            ','.join([str(i) for i in reductions])
-  #          )
-  #        )
-  #      reduce = min(reductions)
-  #      symbols, _, ref_data = self.productions[reduce]
-  #      base = len(value_stack) - len(symbols) - 1
-  #      for j in range(len(ref_data) - 1, -1, -1):
-  #        k, l, tag, _ = ref_data[j]
-  #        k += base
-  #        if l != 1:
-  #          value_stack[k + 1:k + l + 1] = [value_stack[k + l]]
-  #        sys.stderr.write(
-  #          'text \'{0:s}\' tag \'{1:s}\'\n'.format(
-  #            text[value_stack[k]:value_stack[k + 1]],
-  #            tag
-  #          )
-  #        )
-  #      del value_stack[base + 1:]
-  #      del state_stack[base + 1:]
-  #      if reduce == 0:
-  #        assert base == 0
-  #        return
-  #      items, item_to_index, _, _ = (
-  #        self.lookahead_item_set_goto(state_stack[-1], reduce)
-  #      )
-  #      assert len(items) != 0
-  #    else:
-  #      raise Exception(
-  #        'syntax error at {0:d}: {1:s}'.format(i, text[i:])
-  #      )
-
-  #def parse_yychunk(self, root, pos, off, factory, yychunk_iter):
-  #  if pos < 0:
-  #    pos, off = element.to_start_relative(root, pos, off)
-
-  #  items = [(0, 0, [self.eof_terminal, self.eof_terminal + 1])]
-  #  item_to_index = {(0, 0): 0}
-  #  value_stack = []
-  #  state_stack = []
-  #  text = element.get_text(root, pos)
-  #  while off >= len(text):
-  #    if pos < len(root):
-  #      pos += 1
-  #      off = 0
-  #    else:
-  #      try:
-  #        next(yychunk_iter)
-  #      except StopIteration:
-  #        lookahead_character = self.eof_terminal
-  #        break
-  #      text = element.get_text(root, pos)
-  #  else: 
-  #    lookahead_character = ord(text[off])
-  #  while True:
-  #    self.lookahead_item_set_closure(items, item_to_index)
-  #    value_stack.append((pos, off))
-  #    state_stack.append(items)
-  #    items, item_to_index, reductions, _, _ = (
-  #      self.lookahead_item_set_action(items, lookahead_character)
-  #    )
-  #    if len(items) != 0:
-  #      if len(reductions) != 0:
-  #        sys.stderr.write(
-  #          'shift/reduce conflict: {0:s} vs {1:s}\n'.format(
-  #            ','.join([str(i) for i, _ in next_lookahead_item_set.keys()]),
-  #            ','.join([str(i) for i in reductions])
-  #          )
-  #        )
-  #      off += 1
-  #      while off >= len(text):
-  #        if pos < len(root):
-  #          pos += 1
-  #          off = 0
-  #        else:
-  #          try:
-  #            next(yychunk_iter)
-  #          except StopIteration:
-  #            lookahead_character = self.eof_terminal
-  #            break
-  #          text = element.get_text(root, pos)
-  #      else: 
-  #        lookahead_character = ord(text[off])
-  #    elif len(reductions) != 0:
-  #      if len(reductions) != 1:
-  #        sys.stderr.write(
-  #          'reduce/reduce conflict: {0:s}\n'.format(
-  #            ','.join([str(i) for i in reductions])
-  #          )
-  #        )
-  #      reduce = min(reductions)
-  #      symbols, _, ref_data = self.productions[reduce]
-  #      base = len(value_stack) - len(symbols) - 1
-  #      end_relative = len(value_stack)
-  #      for j in range(len(ref_data) - 1, -1, -1):
-  #        k, l, tag, kwargs = ref_data[j]
-  #        k += base
-  #        assert k < end_relative
-  #        if l != 1:
-  #          value_stack[k + 1:k + l + 1] = [value_stack[k + l]]
-  #          end_relative = max(k + 1, end_relative + 1 - l)
-  #        while end_relative > k + 1:
-  #          end_relative -= 1
-  #          pos1, off1 = value_stack[end_relative]
-  #          value_stack[end_relative] = (
-  #            element.to_end_relative(root, pos1, off1)
-  #          )
-  #        pos0, off0 = value_stack[k]
-  #        pos1, off1 = value_stack[k + 1]
-  #        work.apply_markup(
-  #          root,
-  #          pos0,
-  #          off0,
-  #          pos1,
-  #          off1,
-  #          factory,
-  #          tag,
-  #          **kwargs
-  #        )
-  #      if end_relative < len(value_stack):
-  #        pos, off = value_stack[-1]
-  #        pos, off = element.to_start_relative(root, pos, off)
-  #        text = element.get_text(root, pos)
-  #      del value_stack[base + 1:]
-  #      del state_stack[base + 1:]
-  #      if reduce == 0:
-  #        assert base == 0
-  #        return
-  #      items, item_to_index, _, _ = (
-  #        self.lookahead_item_set_goto(state_stack[-1], reduce)
-  #      )
-  #      assert len(items) != 0
-  #    else:
-  #      raise Exception(
-  #        'syntax error at {0:d},{1:d}: {2:s}'.format(pos, off, text[off:])
-  #      )
-
-  def to_clr1(self):
-    _lr1dfa = lr1dfa.LR1DFA(
-      [],
-      [
-        (len(symbols), ref_data)
-        for symbols, _, ref_data in self.productions
-      ],
-      self.n_terminals,
-      self.eof_terminal
-    )
-
-    items = [(0, 0, [self.eof_terminal, self.eof_terminal + 1])]
-    item_to_index = {(0, 0): 0}
-    self.lookahead_item_set_closure(items, item_to_index)
-
-    items = sorted(items)
-    key = tuple((i, j, tuple(k)) for i, j, k in items)
-    state_to_items = [items]
-    items_to_state = {key: 0}
-
-    while len(_lr1dfa.states) < len(state_to_items):
-      items = state_to_items[len(_lr1dfa.states)]
-      state_desc = ([], [], [], [])
-
-      def add_state(next_items, next_item_to_index):
-        self.lookahead_item_set_closure(next_items, next_item_to_index)
-        new_items = sorted(next_items)
-        key = tuple((i, j, tuple(k)) for i, j, k in new_items)
-        if key in items_to_state:
-          state = items_to_state[key]
-        else:
-          state = len(state_to_items)
-          state_to_items.append(new_items)
-          items_to_state[key] = state
-        return state
-
-      terminal = 0
-      while terminal < self.n_terminals:
-        next_items, next_item_to_index, reductions, terminal0, terminal1 = (
-          self.lookahead_item_set_action(items, terminal)
-        )
-        assert terminal0 == terminal and terminal1 > terminal
-        if len(reductions) != 0:
-          if len(reductions) != 1:
-            sys.stderr.write(
-              'state {0:d} reduce/reduce conflict: {1:s}\n'.format(
-                len(_lr1dfa.states),
-                ', '.join([str(i) for i in sorted(reductions)])
-              )
-            )
-          reduction = min(reductions)
-          if len(next_items) != 0:
-            j = bisect.bisect_right(self.precedences[0], terminal)
-            if j > 0 and terminal0 < self.precedences[0][j - 1]:
-              terminal0 = self.precedences[0][j - 1]
-            assert j < len(self.precedences[0])
-            if terminal1 > self.precedences[0][j]:
-              terminal1 = self.precedences[0][j]
-            shift_precedence = self.precedences[1][j]
-            reduce_precedence = self.precedences[3][
-              bisect.bisect_right(self.precedences[2], reduction)
-            ]
-            if shift_precedence == -1 or reduce_precedence == -1:
-              sys.stderr.write(
-                'state {0:d} shift/reduce conflict: {1:d} vs {2:d}\n'.format(
-                  len(_lr1dfa.states),
-                  terminal,
-                  reduction
-                )
-              )
-              action = add_state(next_items, next_item_to_index) * 2 # shift
-            elif shift_precedence > reduce_precedence:
-              action = add_state(next_items, next_item_to_index) * 2 # shift
-            elif shift_precedence < reduce_precedence:
-              action = reduction * 2 + 1 # reduce
-            else:
-              associativity = self.associativities[shift_precedence]
-              if associativity == LR1.ASSOCIATIVITY_RIGHT:
-                action = add_state(next_items, next_item_to_index) * 2 # shift
-              elif associativity == LR1.ASSOCIATIVITY_LEFT:
-                action = reduction * 2 + 1 # reduce
-              elif associativity == LR1.ASSOCIATIVITY_NON: # run time error
-                action = -1
-              else:
-                assert False # not specified (compile time error)
-          else:
-            action = reduction * 2 + 1 # reduce
-        elif len(next_items) != 0:
-          action = add_state(next_items, next_item_to_index) * 2 # shift
-        else:
-          action = -1
-        state_desc[0].append(terminal1)
-        state_desc[1].append(action)
-        terminal = terminal1
-
-      nonterminal = 0
-      while nonterminal < len(self.productions):
-        next_items, next_item_to_index, nonterminal0, nonterminal1 = (
-          self.lookahead_item_set_goto(items, nonterminal)
-        )
-        assert nonterminal0 == nonterminal and nonterminal1 > nonterminal
-        if len(next_items) != 0:
-          goto = add_state(next_items, next_item_to_index)
-        else:
-          goto = -1
-        state_desc[2].append(nonterminal1)
-        state_desc[3].append(goto)
-        nonterminal = nonterminal1
-
-      _lr1dfa.states.append(state_desc)
-    return _lr1dfa
-
-  def to_lalr1(self):
-    _lr1dfa = lr1dfa.LR1DFA(
-      [],
-      [
-        (len(symbols), ref_data)
-        for symbols, _, ref_data in self.productions
-      ],
-      self.n_terminals,
-      self.eof_terminal
-    )
-
-    items = [(0, 0, [self.eof_terminal, self.eof_terminal + 1])]
-    item_to_index = {(0, 0): 0}
-    self.lookahead_item_set_closure(items, item_to_index)
-
-    items = sorted(items)
-    key = tuple((i, j) for i, j, _ in items) # ignore lookahead
-    state_to_items = [items]
-    items_to_state = {key: 0}
-
-    in_queue = [True]
-    queue = [0]
-
-    qhead = 0
-    while qhead < len(queue):
-      i = queue[qhead]
-      in_queue[i] = False
-      items = state_to_items[i]
-      state_desc = ([], [], [], [])
-
-      def add_state(next_items, next_item_to_index):
-        self.lookahead_item_set_closure(next_items, next_item_to_index)
-        new_items = sorted(next_items)
-        key = tuple((i, j) for i, j, _ in new_items) # ignore lookahead
-        if key in items_to_state:
-          state = items_to_state[key]
-          state_items = state_to_items[state]
-          for i in range(len(new_items)):
-            j, k, lookahead_set = new_items[i]
-            lookahead_set = bisect_set.bisect_set_or(lookahead_set, state_items[i][2])
-            if lookahead_set != state_items[i][2]:
-              state_items[i] = (j, k, lookahead_set)
-              if not in_queue[state]:
-                in_queue[state] = True
-                queue.append(state)
-        else:
-          state = len(state_to_items)
-          state_to_items.append(new_items)
-          items_to_state[key] = state
-          in_queue.append(True)
-          queue.append(state)
-        return state
-
-      terminal = 0
-      while terminal < self.n_terminals:
-        next_items, next_item_to_index, reductions, terminal0, terminal1 = (
-          self.lookahead_item_set_action(items, terminal)
-        )
-        assert terminal0 == terminal and terminal1 > terminal
-        if len(reductions) != 0:
-          if len(reductions) != 1:
-            sys.stderr.write(
-              'state {0:d} reduce/reduce conflict: {1:s}\n'.format(
-                len(_lr1dfa.states),
-                ', '.join([str(i) for i in sorted(reductions)])
-              )
-            )
-          reduction = min(reductions)
-          if len(next_items) != 0:
-            j = bisect.bisect_right(self.precedences[0], terminal)
-            if j > 0 and terminal0 < self.precedences[0][j - 1]:
-              terminal0 = self.precedences[0][j - 1]
-            assert j < len(self.precedences[0])
-            if terminal1 > self.precedences[0][j]:
-              terminal1 = self.precedences[0][j]
-            shift_precedence = self.precedences[1][j]
-            reduce_precedence = self.precedences[3][
-              bisect.bisect_right(self.precedences[2], reduction)
-            ]
-            if shift_precedence == -1 or reduce_precedence == -1:
-              sys.stderr.write(
-                'state {0:d} shift/reduce conflict: {1:d} vs {2:d}\n'.format(
-                  i,
-                  terminal,
-                  reduction
-                )
-              )
-              action = add_state(next_items, next_item_to_index) * 2 # shift
-            elif shift_precedence > reduce_precedence:
-              action = add_state(next_items, next_item_to_index) * 2 # shift
-            elif shift_precedence < reduce_precedence:
-              action = reduction * 2 + 1 # reduce
-            else:
-              associativity = self.associativities[shift_precedence]
-              if associativity == LR1.ASSOCIATIVITY_RIGHT:
-                action = add_state(next_items, next_item_to_index) * 2 # shift
-              elif associativity == LR1.ASSOCIATIVITY_LEFT:
-                action = reduction * 2 + 1 # reduce
-              elif associativity == LR1.ASSOCIATIVITY_NON: # run time error
-                action = -1
-              else:
-                assert False # not specified (compile time error)
-          else:
-            action = reduction * 2 + 1 # reduce
-        elif len(next_items) != 0:
-          action = add_state(next_items, next_item_to_index) * 2 # shift
-        else:
-          action = -1
-        state_desc[0].append(terminal1)
-        state_desc[1].append(action)
-        terminal = terminal1
-
-      nonterminal = 0
-      while nonterminal < len(self.productions):
-        next_items, next_item_to_index, nonterminal0, nonterminal1 = (
-          self.lookahead_item_set_goto(items, nonterminal)
-        )
-        assert nonterminal0 == nonterminal and nonterminal1 > nonterminal
-        if len(next_items) != 0:
-          goto = add_state(next_items, next_item_to_index)
-        else:
-          goto = -1
-        state_desc[2].append(nonterminal1)
-        state_desc[3].append(goto)
-        nonterminal = nonterminal1
-
-      if i < len(_lr1dfa.states):
-        _lr1dfa.states[i] = state_desc
-      else:
-        _lr1dfa.states.append(state_desc)
-      qhead += 1
-    return _lr1dfa
-
-  def __repr__(self):
-    return 'lr1.LR1({0:s}, {1:s}, {2:s}, {3:d}, {4:d})'.format(
-      repr(self.productions),
-      repr(self.precedences),
-      repr(self.associativities),
-      self.n_terminals,
-      self.eof_terminal
-    )
-
-
diff --git a/lr1dfa.py b/lr1dfa.py
deleted file mode 100644 (file)
index d3defa7..0000000
--- a/lr1dfa.py
+++ /dev/null
@@ -1,261 +0,0 @@
-import bisect
-import element
-import work
-import sys
-
-# defines the alphabet size, set this to 0x11000 for unicode
-n_characters = 0x100
-
-class LR1DFA:
-  def __init__(
-    self,
-    states = [],
-    productions = [],
-    n_terminals = n_characters + 1,
-    eof_terminal = n_characters
-  ):
-    # states: list of state_desc
-    # state_desc: (terminal breaks, actions, nonterminal breaks, gotos)
-    # action: shift = new state * 2, reduce = production * 2 + 1, error = -1
-    # goto: reduce = production, error = -1 (but error can't really happen)
-    # productions: list of production
-    # production: (len(symbols), ref_data)
-    # len(symbols): how many states to pop stack to reduce this production
-    # ref_data: can be anything for caller's use, usually list of group_bound
-    # group_bound: (start_index, end_index, tag, kwargs)
-    #   where start_index, end_index are indices into list of character_set,
-    #   and tag, kwargs will be passed to apply_markup() hence factory(),
-    #   noting that markup has to be applied in reverse order of the list
-    # n_terminals: offset to apply to productions[] index to get symbol
-    #   (character set code), also symbol for productions[0] = start production
-    # eof_terminal: usually == n_terminals - 1 (must be valid terminal value)
-    self.states = states
-    self.productions = productions
-    self.n_terminals = n_terminals
-    self.eof_terminal = eof_terminal
-
-  def parse_text(self, text, i):
-    state = 0
-    value_stack = []
-    state_stack = []
-    lookahead_character = ord(text[i]) if i < len(text) else self.eof_terminal
-    while True:
-      value_stack.append(i)
-      state_stack.append(state)
-      action = self.states[state][1][
-        bisect.bisect_right(self.states[state][0], lookahead_character)
-      ]
-      if action == -1:
-        raise Exception(
-          'syntax error at {0:d}: {1:s}'.format(i, text[i:])
-        )
-      if (action & 1) == 0:
-        state = action >> 1
-        i += 1
-        lookahead_character = ord(text[i]) if i < len(text) else self.eof_terminal
-      else:
-        reduce = action >> 1
-        len_symbols, ref_data = self.productions[reduce]
-        base = len(value_stack) - len_symbols - 1
-        for j in range(len(ref_data) - 1, -1, -1):
-          k, l, tag, _ = ref_data[j]
-          k += base
-          if l != 1:
-            value_stack[k + 1:k + l + 1] = [value_stack[k + l]]
-          sys.stdout.write(
-            'text \'{0:s}\' tag \'{1:s}\'\n'.format(
-              text[value_stack[k]:value_stack[k + 1]],
-              tag
-            )
-          )
-        del value_stack[base + 1:]
-        del state_stack[base + 1:]
-        if reduce == 0:
-          assert base == 0
-          return
-        state = self.states[state_stack[-1]][3][
-          bisect.bisect_right(self.states[state_stack[-1]][2], reduce)
-        ]
-        assert state != -1
-
-  def parse_yychunk(self, root, pos, off, factory, yychunk_iter):
-    if pos < 0:
-      pos, off = element.to_start_relative(root, pos, off)
-
-    state = 0
-    value_stack = []
-    state_stack = []
-    text = element.get_text(root, pos)
-    while off >= len(text):
-      if pos < len(root):
-        pos += 1
-        off = 0
-      else:
-        try:
-          next(yychunk_iter)
-        except StopIteration:
-          lookahead_character = self.eof_terminal
-          break
-        text = element.get_text(root, pos)
-    else:
-      lookahead_character = ord(text[off])
-    while True:
-      value_stack.append((pos, off))
-      state_stack.append(state)
-      action = self.states[state][1][
-        bisect.bisect_right(self.states[state][0], lookahead_character)
-      ]
-      #print('lookahead_character', lookahead_character, 'action', action)
-      if action == -1:
-        raise Exception(
-          'syntax error at {0:d},{1:d}: {2:s}'.format(pos, off, text[off:])
-        )
-      if (action & 1) == 0:
-        state = action >> 1
-        off += 1
-        while off >= len(text):
-          if pos < len(root):
-            pos += 1
-            off = 0
-          else:
-            try:
-              next(yychunk_iter)
-            except StopIteration:
-              lookahead_character = self.eof_terminal
-              break
-            text = element.get_text(root, pos)
-        else:
-          lookahead_character = ord(text[off])
-      else:
-        reduce = action >> 1
-        len_symbols, ref_data = self.productions[reduce]
-        base = len(value_stack) - len_symbols - 1
-        end_relative = len(value_stack)
-        for j in range(len(ref_data) - 1, -1, -1):
-          k, l, tag, kwargs = ref_data[j]
-          k += base
-          assert k < end_relative
-          if l != 1:
-            value_stack[k + 1:k + l + 1] = [value_stack[k + l]]
-            end_relative = max(k + 1, end_relative + 1 - l)
-          while end_relative > k + 1:
-            end_relative -= 1
-            pos1, off1 = value_stack[end_relative]
-            value_stack[end_relative] = (
-              element.to_end_relative(root, pos1, off1)
-            )
-          pos0, off0 = value_stack[k]
-          pos1, off1 = value_stack[k + 1]
-          work.apply_markup(
-            root,
-            pos0,
-            off0,
-            pos1,
-            off1,
-            factory,
-            tag,
-            **kwargs
-          )
-        if end_relative < len(value_stack):
-          pos, off = value_stack[-1]
-          pos, off = element.to_start_relative(root, pos, off)
-          text = element.get_text(root, pos)
-        del value_stack[base + 1:]
-        del state_stack[base + 1:]
-        if reduce == 0:
-          assert base == 0
-          return
-        state = self.states[state_stack[-1]][3][
-          bisect.bisect_right(self.states[state_stack[-1]][2], reduce)
-        ]
-        assert state != -1
-
-  def yyparse(self, root, pos, off, factory, yylex_iter):
-    if pos < 0:
-      pos, off = element.to_start_relative(root, pos, off)
-
-    state = 0
-    value_stack = []
-    state_stack = []
-    try:
-      end_pos, end_off, lookahead_character = next(yylex_iter)
-      #if lookahead_character < 256:
-      #  print('\'{0:s}\''.format(chr(lookahead_character)))
-      #else:
-      #  print(['IDENTIFIER', 'I_CONSTANT', 'F_CONSTANT', 'STRING_LITERAL', 'FUNC_NAME', 'SIZEOF', 'PTR_OP', 'INC_OP', 'DEC_OP', 'LEFT_OP', 'RIGHT_OP', 'LE_OP', 'GE_OP', 'EQ_OP', 'NE_OP', 'AND_OP', 'OR_OP', 'MUL_ASSIGN', 'DIV_ASSIGN', 'MOD_ASSIGN', 'ADD_ASSIGN', 'SUB_ASSIGN', 'LEFT_ASSIGN', 'RIGHT_ASSIGN', 'AND_ASSIGN', 'XOR_ASSIGN', 'OR_ASSIGN', 'TYPEDEF_NAME', 'ENUMERATION_CONSTANT', 'TYPEDEF', 'EXTERN', 'STATIC', 'AUTO', 'REGISTER', 'INLINE', 'CONST', 'RESTRICT', 'VOLATILE', 'BOOL', 'CHAR', 'SHORT', 'INT', 'LONG', 'SIGNED', 'UNSIGNED', 'FLOAT', 'DOUBLE', 'VOID', 'COMPLEX', 'IMAGINARY', 'STRUCT', 'UNION', 'ENUM', 'ELLIPSIS', 'CASE', 'DEFAULT', 'IF', 'ELSE', 'SWITCH', 'WHILE', 'DO', 'FOR', 'GOTO', 'CONTINUE', 'BREAK', 'RETURN', 'ALIGNAS', 'ALIGNOF', 'ATOMIC', 'GENERIC', 'NORETURN', 'STATIC_ASSERT', 'THREAD_LOCAL'][lookahead_character - 258])
-    except StopIteration:
-      lookahead_character = self.eof_terminal
-      end_pos, end_off = element.to_end_relative(root, pos, off)
-    while True:
-      value_stack.append((pos, off))
-      state_stack.append(state)
-      action = self.states[state][1][
-        bisect.bisect_right(self.states[state][0], lookahead_character)
-      ]
-      #print('lookahead_character', lookahead_character, 'action', action)
-      if action == -1:
-        raise Exception(
-          'syntax error at {0:d},{1:d}: {2:d}'.format(pos, off, lookahead_character)
-        )
-      if (action & 1) == 0:
-        state = action >> 1
-        pos, off = element.to_start_relative(root, end_pos, end_off)
-        try:
-          end_pos, end_off, lookahead_character = next(yylex_iter)
-          #if lookahead_character < 256:
-          #  print('\'{0:s}\''.format(chr(lookahead_character)))
-          #else:
-          #  print(['IDENTIFIER', 'I_CONSTANT', 'F_CONSTANT', 'STRING_LITERAL', 'FUNC_NAME', 'SIZEOF', 'PTR_OP', 'INC_OP', 'DEC_OP', 'LEFT_OP', 'RIGHT_OP', 'LE_OP', 'GE_OP', 'EQ_OP', 'NE_OP', 'AND_OP', 'OR_OP', 'MUL_ASSIGN', 'DIV_ASSIGN', 'MOD_ASSIGN', 'ADD_ASSIGN', 'SUB_ASSIGN', 'LEFT_ASSIGN', 'RIGHT_ASSIGN', 'AND_ASSIGN', 'XOR_ASSIGN', 'OR_ASSIGN', 'TYPEDEF_NAME', 'ENUMERATION_CONSTANT', 'TYPEDEF', 'EXTERN', 'STATIC', 'AUTO', 'REGISTER', 'INLINE', 'CONST', 'RESTRICT', 'VOLATILE', 'BOOL', 'CHAR', 'SHORT', 'INT', 'LONG', 'SIGNED', 'UNSIGNED', 'FLOAT', 'DOUBLE', 'VOID', 'COMPLEX', 'IMAGINARY', 'STRUCT', 'UNION', 'ENUM', 'ELLIPSIS', 'CASE', 'DEFAULT', 'IF', 'ELSE', 'SWITCH', 'WHILE', 'DO', 'FOR', 'GOTO', 'CONTINUE', 'BREAK', 'RETURN', 'ALIGNAS', 'ALIGNOF', 'ATOMIC', 'GENERIC', 'NORETURN', 'STATIC_ASSERT', 'THREAD_LOCAL'][lookahead_character - 258])
-        except StopIteration:
-          lookahead_character = self.eof_terminal
-          #end_pos, end_off = element.to_end_relative(root, pos, off)
-      else:
-        reduce = action >> 1
-        len_symbols, ref_data = self.productions[reduce]
-        base = len(value_stack) - len_symbols - 1
-        end_relative = len(value_stack)
-        for j in range(len(ref_data) - 1, -1, -1):
-          k, l, tag, kwargs = ref_data[j]
-          k += base
-          assert k < end_relative
-          if l != 1:
-            value_stack[k + 1:k + l + 1] = [value_stack[k + l]]
-            end_relative = max(k + 1, end_relative + 1 - l)
-          while end_relative > k + 1:
-            end_relative -= 1
-            pos1, off1 = value_stack[end_relative]
-            value_stack[end_relative] = (
-              element.to_end_relative(root, pos1, off1)
-            )
-          pos0, off0 = value_stack[k]
-          pos1, off1 = value_stack[k + 1]
-          work.apply_markup(
-            root,
-            pos0,
-            off0,
-            pos1,
-            off1,
-            factory,
-            tag,
-            **kwargs
-          )
-        if end_relative < len(value_stack):
-          pos, off = value_stack[-1]
-          pos, off = element.to_start_relative(root, pos, off)
-        del value_stack[base + 1:]
-        del state_stack[base + 1:]
-        if reduce == 0:
-          assert base == 0
-          return
-        state = self.states[state_stack[-1]][3][
-          bisect.bisect_right(self.states[state_stack[-1]][2], reduce)
-        ]
-        assert state != -1
-
-  def __repr__(self):
-    return 'lr1dfa.LR1DFA({0:s}, {1:s}, {2:d}, {3:d})'.format(
-      repr(self.states),
-      repr(self.productions),
-      self.n_terminals,
-      self.eof_terminal
-    )
diff --git a/minilex.py b/minilex.py
deleted file mode 100755 (executable)
index 8337229..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env python3
-
-import element
-import nfa
-import regex
-import sys
-import wrap_repr
-
-if len(sys.argv) < 2:
-  sys.stdout.write(
-    'usage: {0:s} regex.xml [tokens.py] <yylex_template.py'.format(
-      sys.argv[0]
-    )
-  )
-  sys.exit(1)
-
-with open(sys.argv[1]) as fin:
-  _regex = element.deserialize(fin, regex.factory)
-
-group_name_to_token = {}
-for i in range(0x100):
-  group_name_to_token['X_{0:02X}'.format(i)] = i
-if len(sys.argv) >= 3:
-  with open(sys.argv[2]) as fin:
-    line = fin.readline()
-    while len(line):
-      fields = line.split()
-      assert fields[1] == '='
-      group_name_to_token[fields[0]] = int(fields[2])
-      line = fin.readline()
-
-line = sys.stdin.readline()
-while len(line):
-  if line[:14] == '# GENERATE DFA':
-    groups = []
-    _regex.to_groups(groups)
-    _nfa = nfa.NFA(groups)
-    _regex.add_to_nfa(_nfa)
-    _dfa = _nfa.to_dfa()
-    sys.stdout.write(
-      '''# GENERATE DFA BEGIN
-{0:s}# GENERATE END
-'''.format(
-        wrap_repr.wrap_repr('_dfa = {0:s}'.format(repr(_dfa)), 79)
-      )
-    )
-    if line[14:20] == ' BEGIN':
-      line = sys.stdin.readline()
-      while len(line):
-        if line[:14] == '# GENERATE END':
-          break
-        line = sys.stdin.readline()
-      else:
-        assert False
-  elif line[:17] == '# GENERATE TOKENS':
-    groups = []
-    _regex.to_groups(groups)
-    tokens = [group_name_to_token.get(i, -1) for i, _ in groups]
-    sys.stdout.write(
-      '''# GENERATE TOKENS BEGIN
-{0:s}# GENERATE END
-'''.format(
-        wrap_repr.wrap_repr('tokens = {0:s}'.format(repr(tokens)), 79)
-      )
-    )
-    if line[17:23] == ' BEGIN':
-      line = sys.stdin.readline()
-      while len(line):
-        if line[:14] == '# GENERATE END':
-          break
-        line = sys.stdin.readline()
-      else:
-        assert False
-  else:
-    sys.stdout.write(line)
-  line = sys.stdin.readline()
diff --git a/miniyacc.py b/miniyacc.py
deleted file mode 100755 (executable)
index 4f1e1f9..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/env python3
-
-import element
-import grammar
-import sys
-import wrap_repr
-
-if len(sys.argv) < 2:
-  sys.stdout.write(
-    'usage: {0:s} grammar.xml tokens.py <yyparse_template.py'.format(
-      sys.argv[0]
-    )
-  )
-  sys.exit(1)
-
-with open(sys.argv[1]) as fin:
-  _grammar = element.deserialize(fin, grammar.factory)
-
-line = sys.stdin.readline()
-while len(line):
-  if line[:15] == '# GENERATE CLR1':
-    clr1 = _grammar.to_lr1().to_clr1()
-    sys.stdout.write(
-      '''# GENERATE CLR1 BEGIN
-{0:s}# GENERATE END
-'''.format(
-        wrap_repr.wrap_repr('clr1 = {0:s}'.format(repr(clr1)), 79)
-      )
-    )
-    if line[15:21] == ' BEGIN':
-      line = sys.stdin.readline()
-      while len(line):
-        if line[:14] == '# GENERATE END':
-          break
-        line = sys.stdin.readline()
-      else:
-        assert False
-  if line[:16] == '# GENERATE LALR1':
-    lalr1 = _grammar.to_lr1().to_lalr1()
-    sys.stdout.write(
-      '''# GENERATE LALR1 BEGIN
-{0:s}# GENERATE END
-'''.format(
-        wrap_repr.wrap_repr('lalr1 = {0:s}'.format(repr(lalr1)), 79)
-      )
-    )
-    if line[16:22] == ' BEGIN':
-      line = sys.stdin.readline()
-      while len(line):
-        if line[:14] == '# GENERATE END':
-          break
-        line = sys.stdin.readline()
-      else:
-        assert False
-  else:
-    sys.stdout.write(line)
-  line = sys.stdin.readline()
diff --git a/nfa.py b/nfa.py
deleted file mode 100644 (file)
index 0d108bd..0000000
--- a/nfa.py
+++ /dev/null
@@ -1,446 +0,0 @@
-import bisect
-import dfa
-import element
-
-# defines the alphabet size, set this to 0x11000 for unicode
-n_characters = 0x100
-
-class NFA:
-  # state_desc classes:
-  # (STATE_CHARACTER, character_set, next_state)
-  # (STATE_OR, next_state0, next_state1)
-  # (STATE_AND, next_state0, next_state1)
-  # (STATE_JOIN0,)
-  # (STATE_JOIN1, next_state)
-  # (STATE_MARK, mark_value, next_state)
-
-  STATE_CHARACTER = 0
-  STATE_OR = 1
-  STATE_AND = 2
-  STATE_JOIN0 = 3
-  STATE_JOIN1 = 4
-  STATE_MARK = 5
-  join0_state = (STATE_JOIN0,)
-
-  # multistate classes:
-  # (MULTISTATE_ACCEPT, 1)             accept, occupies one thread in list
-  # (MULTISTATE_AND, n, state, child)  and, occupies n threads in list
-  # (MULTISTATE_OR, n, child0, child1)
-  # n = sum of n from child states, that is, multistate[1] is the number of
-  # (MULTISTATE_ACCEPT, 1) leaf states ultimately reachable from this subtree
-
-  MULTISTATE_ACCEPT = 0
-  MULTISTATE_AND = 1
-  MULTISTATE_OR = 2
-  accept_multistate = (MULTISTATE_ACCEPT, 1)
-
-  def __init__(
-    self,
-    groups = [],
-    states = [(STATE_CHARACTER, [0, n_characters], 0)],
-    start_state = [] # can have multiple NFAs in same container
-  ):
-    # groups: list of group_desc
-    # group_desc: (tag, kwargs)
-    #   tag, kwargs will be passed to apply_markup() hence factory()
-    self.groups = groups
-    self.states = states
-    self.start_state = start_state
-
-  def multistate_next(self, root_multistate, character):
-    # the deduplication works as effectively a second pass which goes
-    # over the multistate tree in pre-order, looking for OR-disjunctions
-    # of any depth and configuration, e.g. (a OR b) or (c OR d), and
-    # collecting the subexpressions e.g. a, b, c OR b, c, d, c OR d, and
-    # failing any subexpression that's previously occurred in pre-order
-    # (children of AND-conjunctions get a fresh empty subexpression set)
-
-    # unfortunately it can't be done as a second pass literally, because
-    # we have to generate the transition list, thus we need to know if a
-    # subexpression is going to be failed, so we can delete it's threads
-
-    # therefore the deduplication is tacked onto the end of the building
-    # process, examining each built node just before the builder returns,
-    # if already in the subexpression set we will rewrite the transition
-    # list produced by the recursive calls, otherwise we will add it in
-
-    # the problem is determining the subexpression set to pass into any
-    # recursive calls, the caller's set will be sent unchanged by cases
-    # that return the result unchanged or add an OR-disjuction, an empty
-    # set will be sent by cases that add an AND-conjuction to the result 
-
-    # if we have added something to the node built by a recursive call,
-    # we'll fall into the deduplication logic, otherwise just return it
-
-    def advance1(multistate, join_count, done_multistates):
-      # modifies nonlocal: transition
-      assert multistate[0] == NFA.MULTISTATE_AND
-      _, _, state, child = multistate
-      if state == 0:
-        # note that if we reach the accepting state, we must be a top-level
-        # expression, and could not be part of an AND-conjunction (because
-        # AND-conjunction terms always go to a join0 or join1 state first),
-        # we remove ourselves to indicate to scanner that match is complete
-        assert join_count == 0
-        assert child == NFA.accept_multistate
-        return advance(child, 0, done_multistates)
-      state_desc = self.states[state]
-      if state_desc[0] == NFA.STATE_CHARACTER:
-        if join_count != 0:
-          transition.append((dfa.DFA.TRANSITION_POP, child[1]))
-          return None
-        len_transition = len(transition)
-        child = advance(child, 0, set())
-        if child is None:
-          return None
-        result = (NFA.MULTISTATE_AND, child[1], state, child)
-      elif state_desc[0] == NFA.STATE_OR:
-        _, next_state0, next_state1 = state_desc
-        len_transition = len(transition)
-        transition.append((dfa.DFA.TRANSITION_DUP, child[1]))
-        child0 = advance1(
-          (NFA.MULTISTATE_AND, child[1], next_state0, child),
-          join_count,
-          done_multistates
-        )
-        child1 = advance1(
-          (NFA.MULTISTATE_AND, child[1], next_state1, child),
-          join_count,
-          done_multistates
-        )
-        if child0 is None:
-          return child1
-        if child1 is None:
-          return child0
-        result = (NFA.MULTISTATE_OR, child0[1] + child1[1], child0, child1)
-      elif state_desc[0] == NFA.STATE_AND:
-        _, next_state0, next_state1 = state_desc
-        return advance1(
-          (
-            NFA.MULTISTATE_AND,
-            child[1],
-            next_state0,
-            (NFA.MULTISTATE_AND, child[1], next_state1, child)
-          ),
-          join_count,
-          done_multistates
-        )
-      elif state_desc[0] == NFA.STATE_JOIN0:
-        return advance(child, join_count + 1, done_multistates)
-      elif state_desc[0] == NFA.STATE_JOIN1:
-        _, next_state = state_desc
-        if join_count == 0:
-          transition.append((dfa.DFA.TRANSITION_POP, child[1]))
-          return None
-        return advance1(
-          (NFA.MULTISTATE_AND, child[1], next_state, child),
-          join_count - 1,
-          done_multistates
-        )
-      elif state_desc[0] == NFA.STATE_MARK:
-        _, mark_value, next_state = state_desc
-        transition.append((dfa.DFA.TRANSITION_MARK, child[1], mark_value))
-        return advance1(
-          (NFA.MULTISTATE_AND, child[1], next_state, child),
-          join_count,
-          done_multistates
-        )
-      else:
-        assert False
-      if result in done_multistates:
-        transition[len_transition:] = [(dfa.DFA.TRANSITION_POP, multistate[1])]
-        return None
-      done_multistates.add(result)
-      return result
-
-    def advance(multistate, join_count, done_multistates):
-      nonlocal character0, character1 # modifies nonlocal: transition
-      if multistate[0] == NFA.MULTISTATE_ACCEPT:
-        assert join_count == 0
-        len_transition = len(transition)
-        transition.append((dfa.DFA.TRANSITION_MOVE, 1))
-        result = NFA.accept_multistate # takes no arguments so use static one
-      elif multistate[0] == NFA.MULTISTATE_AND:
-        if character >= 0:
-          _, _, state, child = multistate
-          state_desc = self.states[state]
-          assert state_desc[0] == NFA.STATE_CHARACTER
-          _, character_set, next_state = state_desc
-          k = bisect.bisect_right(character_set, character)
-          if k > 0 and character0 < character_set[k - 1]:
-            character0 = character_set[k - 1]
-          if k < len(character_set) and character1 > character_set[k]:
-            character1 = character_set[k]
-          if (k & 1) == 0:
-            transition.append((dfa.DFA.TRANSITION_POP, child[1]))
-            return None
-          multistate = (NFA.MULTISTATE_AND, child[1], next_state, child)
-        return advance1(multistate, join_count, done_multistates)
-      elif multistate[0] == NFA.MULTISTATE_OR:
-        _, _, child0, child1 = multistate
-        len_transition = len(transition)
-        child0 = advance(child0, join_count, done_multistates)
-        child1 = advance(child1, join_count, done_multistates)
-        if child0 is None:
-          return child1
-        if child1 is None:
-          return child0
-        result = (NFA.MULTISTATE_OR, child0[1] + child1[1], child0, child1)
-      else:
-        assert False
-      if result in done_multistates:
-        transition[len_transition:] = [(dfa.DFA.TRANSITION_POP, multistate[1])]
-        return None
-      done_multistates.add(result)
-      return result
-
-    transition = []
-    character0 = 0
-    character1 = n_characters
-    root_multistate = advance(root_multistate, 0, set())
-    return root_multistate, transition, character0, character1
-
-  def multistate_accept(root_multistate):
-    i = 0
-    def accept(multistate):
-      nonlocal i
-      if multistate[0] == NFA.MULTISTATE_ACCEPT:
-        return True
-      if multistate[0] == NFA.MULTISTATE_AND:
-        _, _, _, child = multistate
-        i += child[1]
-        return False
-      if multistate[0] == NFA.MULTISTATE_OR:
-        _, _, child0, child1 = multistate
-        return accept(child0) or accept(child1)
-      assert False
-    return i if accept(root_multistate) else -1
-
-  def match_text(self, text, i, start_index = 0):
-    def transit(transition):
-      nonlocal threads0, threads1, prefix_slop # note: also uses i
-      j = prefix_slop
-      for trans in transition:
-        if trans[0] == dfa.DFA.TRANSITION_POP:
-          j += trans[1]
-        elif trans[0] == dfa.DFA.TRANSITION_DUP:
-          while j < trans[1]:
-            threads0[:0] = [None] * prefix_slop
-            threads1[:0] = [None] * prefix_slop
-            j += prefix_slop
-            prefix_slop *= 2
-          threads0[j - trans[1]:j] = threads0[j:j + trans[1]]
-          j -= trans[1]
-        elif trans[0] == dfa.DFA.TRANSITION_MARK:
-          threads0[j:j + trans[1]] = [
-            (i, trans[2], thread)
-            for thread in threads0[j:j + trans[1]]
-          ]
-        elif trans[0] == dfa.DFA.TRANSITION_MOVE:
-          threads1.extend(threads0[j:j + trans[1]])
-          j += trans[1]
-        #elif trans[0] == dfa.DFA.TRANSITION_DEL:
-        #  del threads1[-trans[1]:]
-        else:
-          assert False
-      assert j == len(threads0)
-      threads0, threads1 = threads1, threads0
-      del threads1[prefix_slop:]
-
-    threads0 = [None, None]
-    threads1 = [None]
-    prefix_slop = 1
-
-    start_state = self.start_state[start_index]
-    if start_state == -1:
-      return None
-    next_multistate, transition, _, _ = self.multistate_next(
-      (NFA.MULTISTATE_AND, 1, start_state, NFA.accept_multistate),
-      -1
-    )
-    while next_multistate is not None:
-      transit(transition)
-      assert len(threads0) == prefix_slop + next_multistate[1]
-      if next_multistate == NFA.accept_multistate:
-        # there is only one match, which is complete
-        assert len(threads0) == prefix_slop + 1
-        return threads0[prefix_slop]
-      if i >= len(text):
-        # return best match we have, but not incomplete match
-        i = NFA.multistate_accept(next_multistate)
-        return (None if i == -1 else threads0[prefix_slop + i])
-      next_multistate, transition, _, _ = (
-        self.multistate_next(next_multistate, ord(text[i]))
-      )
-      i += 1
-    return None
-
-  def match_yychunk(self, root, pos, off, yychunk_iter, start_index = 0):
-    if pos < 0:
-      pos, off = element.to_start_relative(root, pos, off)
-
-    def transit(transition):
-      nonlocal threads0, threads1, prefix_slop # note: also uses pos, off
-      j = prefix_slop
-      for trans in transition:
-        if trans[0] == dfa.DFA.TRANSITION_POP:
-          j += trans[1]
-        elif trans[0] == dfa.DFA.TRANSITION_DUP:
-          while j < trans[1]:
-            threads0[:0] = [None] * prefix_slop
-            threads1[:0] = [None] * prefix_slop
-            j += prefix_slop
-            prefix_slop *= 2
-          threads0[j - trans[1]:j] = threads0[j:j + trans[1]]
-          j -= trans[1]
-        elif trans[0] == dfa.DFA.TRANSITION_MARK:
-          threads0[j:j + trans[1]] = [
-            (pos, off, trans[2], thread)
-            for thread in threads0[j:j + trans[1]]
-          ]
-        elif trans[0] == dfa.DFA.TRANSITION_MOVE:
-          threads1.extend(threads0[j:j + trans[1]])
-          j += trans[1]
-        #elif trans[0] == dfa.DFA.TRANSITION_DEL:
-        #  del threads1[-trans[1]:]
-        else:
-          assert False
-      assert j == len(threads0)
-      threads0, threads1 = threads1, threads0
-      del threads1[prefix_slop:]
-
-    threads0 = [None, None]
-    threads1 = [None]
-    prefix_slop = 1
-
-    start_state = self.start_state[start_index]
-    if start_state == -1:
-      return None
-    next_multistate, transition, _, _ = self.multistate_next(
-      (NFA.MULTISTATE_AND, 1, start_state, NFA.accept_multistate),
-      -1
-    )
-    text = element.get_text(root, pos)
-    while next_multistate is not None:
-      transit(transition)
-      assert len(threads0) == prefix_slop + next_multistate[1]
-      if next_multistate == NFA.accept_multistate:
-        # there is only one match, which is complete
-        assert len(threads0) == prefix_slop + 1
-        return threads0[prefix_slop]
-      while off >= len(text):
-        if pos < len(root):
-          pos += 1
-          off = 0
-        else:
-          try:
-            next(yychunk_iter)
-          except StopIteration:
-            # return best match we have, but not incomplete match
-            i = NFA.multistate_accept(next_multistate)
-            return (None if i == -1 else threads0[prefix_slop + i])
-          text = element.get_text(root, pos)
-      next_multistate, transition, _, _ = (
-        self.multistate_next(next_multistate, ord(text[off]))
-      )
-      off += 1
-    return None
-
-  def to_dfa(self):
-    _dfa = dfa.DFA(list(self.groups))
-
-    accept_key = (NFA.accept_multistate, ())
-    action_to_meaning = [accept_key]
-    meaning_to_action = {accept_key: 0}
-    state_to_meaning = [NFA.accept_multistate]
-    meaning_to_state = {NFA.accept_multistate: 0}
-
-    for start_state in self.start_state:
-      if start_state == -1:
-        start_action = -1
-      else:
-        next_multistate, transition, _, _ = self.multistate_next(
-          (NFA.MULTISTATE_AND, 1, start_state, NFA.accept_multistate),
-          -1
-        )
-        if next_multistate is None:
-          start_action = -1
-        else:
-          start_key = (next_multistate, tuple(transition))
-          start_action = len(action_to_meaning)
-          meaning_to_action[start_key] = start_action
-          action_to_meaning.append(start_key)
-      _dfa.start_action.append(start_action)
-
-    while len(_dfa.actions) < len(action_to_meaning):
-      next_multistate, transition = action_to_meaning[len(_dfa.actions)]
-      if next_multistate in meaning_to_state:
-        next_state = meaning_to_state[next_multistate]
-      else:
-        next_state = len(state_to_meaning)
-        state_to_meaning.append(next_multistate)
-        meaning_to_state[next_multistate] = next_state
-      _dfa.actions.append((next_state, list(transition)))
-
-      while len(_dfa.states) < len(state_to_meaning):
-        character = 0
-        multistate = state_to_meaning[len(_dfa.states)]
-        state_desc = ([], [], NFA.multistate_accept(multistate))
-        while character < n_characters:
-          next_multistate, transition, character0, character1 = self.multistate_next(
-            multistate,
-            character
-          )
-          assert character0 == character and character1 > character
-          if next_multistate is None:
-            action = -1
-          else:
-            # optimize transition (optional)
-            i = 0
-            j = 0
-            while i < len(transition):
-              if transition[i][0] == dfa.DFA.TRANSITION_POP:
-                n = transition[i][1]
-                i += 1
-                while (
-                  i < len(transition) and
-                  transition[i][0] == dfa.DFA.TRANSITION_POP
-                ):
-                  n += transition[i][1]
-                  i += 1
-                transition[j] = (dfa.DFA.TRANSITION_POP, n)
-              elif transition[i][0] == dfa.DFA.TRANSITION_MOVE:
-                n = transition[i][1]
-                i += 1
-                while (
-                  i < len(transition) and
-                  transition[i][0] == dfa.DFA.TRANSITION_MOVE
-                ):
-                  n += transition[i][1]
-                  i += 1
-                transition[j] = (dfa.DFA.TRANSITION_MOVE, n)
-              else:
-                transition[j] = transition[i]
-                i += 1
-              j += 1
-            del transition[j:]
-            # end optimize transition
-            key = (next_multistate, tuple(transition))
-            if key in meaning_to_action:
-              action = meaning_to_action[key]
-            else:
-              action = len(action_to_meaning)
-              action_to_meaning.append(key)
-              meaning_to_action[key] = action
-          state_desc[0].append(character1)
-          state_desc[1].append(action)
-          character = character1
-        _dfa.states.append(state_desc)
-    return _dfa
-
-  def __repr__(self):
-    return 'nfa.NFA({0:s}, {1:s}, {2:s})'.format(
-      repr(self.groups),
-      repr(self.states),
-      repr(self.start_state)
-    )
diff --git a/regex.py b/regex.py
deleted file mode 100644 (file)
index 0193035..0000000
--- a/regex.py
+++ /dev/null
@@ -1,1055 +0,0 @@
-import bisect_set
-import element
-import nfa
-
-# defines the alphabet size, set this to 0x11000 for unicode
-n_characters = 0x100
-
-class Regex(element.Element):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'Regex',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    element.Element.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = element.Element.copy(
-      self,
-      Regex if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'regex.Regex({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def post_process(self, group_index = 0): #, rule_name_to_character_set = None):
-    for i in self:
-      group_index = i.post_process(group_index) #, rule_name_to_character_set)
-    return group_index
-  def to_groups(self, groups):
-    for i in self:
-      i.to_groups(groups)
-  def to_nfa_state(self, _nfa, next_state):
-    raise NotImplementedException
-  def add_to_nfa(self, _nfa):
-    _nfa.start_state.append(self.to_nfa_state(_nfa, 0))
-  #def to_lr1_symbols(self, n_terminals, symbols, lookaheads, group_bounds):
-  #  group_count = 0
-  #  for i in self:
-  #    group_count += (
-  #      i.to_lr1_symbols(n_terminals, symbols, lookaheads, group_bounds)
-  #    )
-  #  return group_count # count of groups or ungrouped characters
-
-class RegexNone(Regex):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'RegexNone',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Regex.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Regex.copy(
-      self,
-      RegexNone if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'regex.RegexNone({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def to_nfa_state(self, _nfa, next_state):
-    return -1
-
-class RegexEmpty(Regex):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'RegexEmpty',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Regex.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Regex.copy(
-      self,
-      RegexEmpty if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'regex.RegexEmpty({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def to_nfa_state(self, _nfa, next_state):
-    return next_state
-
-class RegexCharacter(Regex):
-  # GENERATE ELEMENT(list(int) character_set) BEGIN
-  def __init__(
-    self,
-    tag = 'RegexCharacter',
-    attrib = {},
-    text = '',
-    children = [],
-    character_set = []
-  ):
-    Regex.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-    self.character_set = (
-      [element.deserialize_int(i) for i in character_set.split()]
-    if isinstance(character_set, str) else
-      character_set
-    )
-  def serialize(self, ref_list):
-    Regex.serialize(self, ref_list)
-    self.set(
-      'character_set',
-      ' '.join([element.serialize_int(i) for i in self.character_set])
-    )
-  def deserialize(self, ref_list):
-    Regex.deserialize(self, ref_list)
-    self.character_set = [
-      element.deserialize_int(i)
-      for i in self.get('character_set', '').split()
-    ]
-  def copy(self, factory = None):
-    result = Regex.copy(
-      self,
-      RegexCharacter if factory is None else factory
-    )
-    result.character_set = self.character_set
-    return result
-  def repr_serialize(self, params):
-    Regex.repr_serialize(self, params)
-    if len(self.character_set):
-      params.append(
-        'character_set = [{0:s}]'.format(
-          ', '.join([repr(i) for i in self.character_set])
-        )
-      )
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'regex.RegexCharacter({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def to_nfa_state(self, _nfa, next_state):
-    new_state = len(_nfa.states)
-    _nfa.states.append((nfa.NFA.STATE_CHARACTER, self.character_set, next_state))
-    return new_state
-  #def to_lr1_symbols(self, n_terminals, symbols, lookaheads, group_bounds):
-  #  terminal_set = []
-  #  nonterminal_set = []
-  #  i = 0
-  #  while i < len(self.character_set):
-  #    [j, k] = self.character_set[i:i + 2]
-  #    if k > n_terminals:
-  #      if j < n_terminals:
-  #        terminal_set.extend([j, n_terminals])
-  #        nonterminal_set.extend([0, k - n_terminals])
-  #        i += 2
-  #      while i < len(self.character_set):
-  #        [j, k] = self.character_set[i:i + 2]
-  #        nonterminal_set.extend([j - n_terminals, k - n_terminals])
-  #        i += 2
-  #      break
-  #    terminal_set.extend([j, k])
-  #    i += 2
-  #  symbols.append((terminal_set, nonterminal_set))
-  #  lookaheads.append(([], False)) # initial_set, can_be_empty
-  #  return 1 # count of groups or ungrouped characters
-
-class RegexCharacterRange(RegexCharacter):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'RegexCharacterRange',
-    attrib = {},
-    text = '',
-    children = [],
-    character_set = []
-  ):
-    RegexCharacter.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children,
-      character_set
-    )
-  def copy(self, factory = None):
-    result = RegexCharacter.copy(
-      self,
-      RegexCharacterRange if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'regex.RegexCharacterRange({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def post_process(self, group_index = 0): #, rule_name_to_character_set = None):
-    group_index = RegexCharacter.post_process(self, group_index) #, rule_name_to_character_set)
-    self.character_set = [self[0].character_set[0], self[1].character_set[-1]]
-    return group_index
-
-class RegexCharacterOr(RegexCharacter):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'RegexCharacterOr',
-    attrib = {},
-    text = '',
-    children = [],
-    character_set = []
-  ):
-    RegexCharacter.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children,
-      character_set
-    )
-  def copy(self, factory = None):
-    result = RegexCharacter.copy(
-      self,
-      RegexCharacterOr if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'regex.RegexCharacterOr({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def post_process(self, group_index = 0): #, rule_name_to_character_set = None):
-    group_index = RegexCharacter.post_process(self, group_index) #, rule_name_to_character_set)
-    self.character_set = bisect_set.bisect_set_or(self[0].character_set, self[1].character_set)
-    return group_index
-
-class RegexCharacterAnd(RegexCharacter):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'RegexCharacterAnd',
-    attrib = {},
-    text = '',
-    children = [],
-    character_set = []
-  ):
-    RegexCharacter.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children,
-      character_set
-    )
-  def copy(self, factory = None):
-    result = RegexCharacter.copy(
-      self,
-      RegexCharacterAnd if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'regex.RegexCharacterAnd({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def post_process(self, group_index = 0): #, rule_name_to_character_set = None):
-    group_index = RegexCharacter.post_process(self, group_index) #, rule_name_to_character_set)
-    self.character_set = bisect_set.bisect_set_and(self[0].character_set, self[1].character_set)
-    return group_index
-
-class RegexCharacterNot(RegexCharacter):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'RegexCharacterNot',
-    attrib = {},
-    text = '',
-    children = [],
-    character_set = []
-  ):
-    RegexCharacter.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children,
-      character_set
-    )
-  def copy(self, factory = None):
-    result = RegexCharacter.copy(
-      self,
-      RegexCharacterNot if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'regex.RegexCharacterNot({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def post_process(self, group_index = 0): #, rule_name_to_character_set = None):
-    group_index = RegexCharacter.post_process(self, group_index) #, rule_name_to_character_set)
-    self.character_set = bisect_set.bisect_set_not(self[0].character_set)
-    return group_index
-
-#class RegexCharacterRule(RegexCharacter):
-#  # GENERATE ELEMENT(str rule_name) BEGIN
-#  def __init__(
-#    self,
-#    tag = 'RegexCharacterRule',
-#    attrib = {},
-#    text = '',
-#    children = [],
-#    character_set = [],
-#    rule_name = ''
-#  ):
-#    RegexCharacter.__init__(
-#      self,
-#      tag,
-#      attrib,
-#      text,
-#      children,
-#      character_set
-#    )
-#    self.rule_name = rule_name
-#  def serialize(self, ref_list, indent = 0):
-#    RegexCharacter.serialize(self, ref_list, indent)
-#    self.set('rule_name', element.serialize_str(self.rule_name))
-#  def deserialize(self, ref_list):
-#    RegexCharacter.deserialize(self, ref_list)
-#    self.rule_name = element.deserialize_str(self.get('rule_name', ''))
-#  def copy(self, factory = None):
-#    result = RegexCharacter.copy(
-#      self,
-#      RegexCharacterRule if factory is None else factory
-#    )
-#    result.rule_name = self.rule_name
-#    return result
-#  def repr_serialize(self, params):
-#    RegexCharacter.repr_serialize(self, params)
-#    if self.rule_name != '':
-#      params.append(
-#        'rule_name = {0:s}'.format(repr(self.rule_name))
-#      )
-#  def __repr__(self):
-#    params = []
-#    self.repr_serialize(params)
-#    return 'regex.RegexCharacterRule({0:s})'.format(', '.join(params))
-#  # GENERATE END
-#  def post_process(self, group_index = 0, rule_name_to_character_set = None):
-#    if rule_name_to_character_set is not None:
-#      self.character_set = rule_name_to_character_set[self.rule_name]
-#    return RegexCharacter.post_process(self, group_index, rule_name_to_character_set)
-
-class RegexOr(Regex):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'RegexOr',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Regex.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Regex.copy(
-      self,
-      RegexOr if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'regex.RegexOr({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def to_nfa_state(self, _nfa, next_state):
-    child0_state = self[0].to_nfa_state(_nfa, next_state)
-    child1_state = self[1].to_nfa_state(_nfa, next_state)
-    if child0_state == -1:
-      return child1_state
-    if child1_state == -1:
-      return child0_state
-    new_state = len(_nfa.states)
-    _nfa.states.append((nfa.NFA.STATE_OR, child0_state, child1_state))
-    return new_state
-
-class RegexAnd(Regex):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'RegexAnd',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Regex.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Regex.copy(
-      self,
-      RegexAnd if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'regex.RegexAnd({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def to_nfa_state(self, _nfa, next_state):
-    join0_state = len(_nfa.states)
-    _nfa.states.append(nfa.NFA.join0_state) # takes no arguments so use static one
-    join1_state = len(_nfa.states)
-    _nfa.states.append((nfa.NFA.STATE_JOIN1, next_state))
-    child0_state = self[0].to_nfa_state(_nfa, join0_state)
-    if child0_state == -1:
-      return -1
-    child1_state = self[1].to_nfa_state(_nfa, join1_state)
-    if child1_state == -1:
-      return -1
-    new_state = len(_nfa.states)
-    _nfa.states.append((nfa.NFA.STATE_AND, child0_state, child1_state))
-    return new_state
-
-class RegexSequence(Regex):
-  # GENERATE ELEMENT() BEGIN
-  def __init__(
-    self,
-    tag = 'RegexSequence',
-    attrib = {},
-    text = '',
-    children = []
-  ):
-    Regex.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-  def copy(self, factory = None):
-    result = Regex.copy(
-      self,
-      RegexSequence if factory is None else factory
-    )
-    return result
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'regex.RegexSequence({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def to_nfa_state(self, _nfa, next_state):
-    child1_state = self[1].to_nfa_state(_nfa, next_state)
-    if child1_state == -1:
-      return -1
-    return self[0].to_nfa_state(_nfa, child1_state)
-
-class RegexRepeat(Regex):
-  # GENERATE ELEMENT(int count0, int count1, bool non_greedy) BEGIN
-  def __init__(
-    self,
-    tag = 'RegexRepeat',
-    attrib = {},
-    text = '',
-    children = [],
-    count0 = -1,
-    count1 = -1,
-    non_greedy = False
-  ):
-    Regex.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-    self.count0 = (
-      element.deserialize_int(count0)
-    if isinstance(count0, str) else
-      count0
-    )
-    self.count1 = (
-      element.deserialize_int(count1)
-    if isinstance(count1, str) else
-      count1
-    )
-    self.non_greedy = (
-      element.deserialize_bool(non_greedy)
-    if isinstance(non_greedy, str) else
-      non_greedy
-    )
-  def serialize(self, ref_list):
-    Regex.serialize(self, ref_list)
-    self.set('count0', element.serialize_int(self.count0))
-    self.set('count1', element.serialize_int(self.count1))
-    self.set('non_greedy', element.serialize_bool(self.non_greedy))
-  def deserialize(self, ref_list):
-    Regex.deserialize(self, ref_list)
-    self.count0 = element.deserialize_int(self.get('count0', '-1'))
-    self.count1 = element.deserialize_int(self.get('count1', '-1'))
-    self.non_greedy = element.deserialize_bool(self.get('non_greedy', 'false'))
-  def copy(self, factory = None):
-    result = Regex.copy(
-      self,
-      RegexRepeat if factory is None else factory
-    )
-    result.count0 = self.count0
-    result.count1 = self.count1
-    result.non_greedy = self.non_greedy
-    return result
-  def repr_serialize(self, params):
-    Regex.repr_serialize(self, params)
-    if self.count0 != -1:
-      params.append(
-        'count0 = {0:s}'.format(repr(self.count0))
-      )
-    if self.count1 != -1:
-      params.append(
-        'count1 = {0:s}'.format(repr(self.count1))
-      )
-    if self.non_greedy != False:
-      params.append(
-        'non_greedy = {0:s}'.format(repr(self.non_greedy))
-      )
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'regex.RegexRepeat({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def post_process(self, group_index = 0): #, rule_name_to_character_set = None):
-    # total hack which will be done in a Python action in future
-    if len(self) >= 2:
-      assert self[1].tag == 'Number'
-      self.count0 = int(self[1].text)
-      if len(self) >= 3:
-        assert self[2].tag == 'Number'
-        self.count1 = int(self[2].text)
-      else:
-        self.count1 = self.count0
-      del self[1:]
-    # end total hack
-    return Regex.post_process(self, group_index) #, rule_name_to_character_set)
-  def to_nfa_state(self, _nfa, next_state):
-    count0 = self.count0
-    count1 = self.count1
-    if count1 == -1:
-      new_state = len(_nfa.states)
-      _nfa.states.append(None)
-      child_state = self[0].to_nfa_state(_nfa, new_state)
-      if child_state == -1:
-        new_state = next_state # note: unreachable state remains invalid (None)
-      else:
-        _nfa.states[new_state] = (
-          (nfa.NFA.STATE_OR, next_state, child_state)
-        if self.non_greedy else
-          (nfa.NFA.STATE_OR, child_state, next_state)
-        )
-    else:
-      new_state = next_state
-      for i in range(count1 - count0):
-        child_state = self[0].to_nfa_state(_nfa, new_state)
-        if child_state == -1:
-          break
-        new_state = len(_nfa.states)
-        _nfa.states.append(
-          (nfa.NFA.STATE_OR, next_state, child_state)
-        if self.non_greedy else
-          (nfa.NFA.STATE_OR, child_state, next_state)
-        )
-    for i in range(count0):
-      new_state = self[0].to_nfa_state(_nfa, new_state)
-      if new_state == -1:
-        break
-    return new_state
-
-class RegexGroup(Regex):
-  class Attribute(element.Element):
-    # GENERATE ELEMENT(str name, str value) BEGIN
-    def __init__(
-      self,
-      tag = 'RegexGroup_Attribute',
-      attrib = {},
-      text = '',
-      children = [],
-      name = '',
-      value = ''
-    ):
-      element.Element.__init__(
-        self,
-        tag,
-        attrib,
-        text,
-        children
-      )
-      self.name = name
-      self.value = value
-    def serialize(self, ref_list):
-      element.Element.serialize(self, ref_list)
-      self.set('name', element.serialize_str(self.name))
-      self.set('value', element.serialize_str(self.value))
-    def deserialize(self, ref_list):
-      element.Element.deserialize(self, ref_list)
-      self.name = element.deserialize_str(self.get('name', ''))
-      self.value = element.deserialize_str(self.get('value', ''))
-    def copy(self, factory = None):
-      result = element.Element.copy(
-        self,
-        Attribute if factory is None else factory
-      )
-      result.name = self.name
-      result.value = self.value
-      return result
-    def repr_serialize(self, params):
-      element.Element.repr_serialize(self, params)
-      if self.name != '':
-        params.append(
-          'name = {0:s}'.format(repr(self.name))
-        )
-      if self.value != '':
-        params.append(
-          'value = {0:s}'.format(repr(self.value))
-        )
-    def __repr__(self):
-      params = []
-      self.repr_serialize(params)
-      return 'regex.RegexGroup.Attribute({0:s})'.format(', '.join(params))
-    # GENERATE END
-
-  # GENERATE ELEMENT(int group_index, str group_name, list(ref) group_attributes) BEGIN
-  def __init__(
-    self,
-    tag = 'RegexGroup',
-    attrib = {},
-    text = '',
-    children = [],
-    group_index = -1,
-    group_name = '',
-    group_attributes = []
-  ):
-    Regex.__init__(
-      self,
-      tag,
-      attrib,
-      text,
-      children
-    )
-    self.group_index = (
-      element.deserialize_int(group_index)
-    if isinstance(group_index, str) else
-      group_index
-    )
-    self.group_name = group_name
-    self.group_attributes = group_attributes
-  def serialize(self, ref_list):
-    Regex.serialize(self, ref_list)
-    self.set('group_index', element.serialize_int(self.group_index))
-    self.set('group_name', element.serialize_str(self.group_name))
-    self.set(
-      'group_attributes',
-      ' '.join([element.serialize_ref(i, ref_list) for i in self.group_attributes])
-    )
-  def deserialize(self, ref_list):
-    Regex.deserialize(self, ref_list)
-    self.group_index = element.deserialize_int(self.get('group_index', '-1'))
-    self.group_name = element.deserialize_str(self.get('group_name', ''))
-    self.group_attributes = [
-      element.deserialize_ref(i, ref_list)
-      for i in self.get('group_attributes', '').split()
-    ]
-  def copy(self, factory = None):
-    result = Regex.copy(
-      self,
-      RegexGroup if factory is None else factory
-    )
-    result.group_index = self.group_index
-    result.group_name = self.group_name
-    result.group_attributes = self.group_attributes
-    return result
-  def repr_serialize(self, params):
-    Regex.repr_serialize(self, params)
-    if self.group_index != -1:
-      params.append(
-        'group_index = {0:s}'.format(repr(self.group_index))
-      )
-    if self.group_name != '':
-      params.append(
-        'group_name = {0:s}'.format(repr(self.group_name))
-      )
-    if len(self.group_attributes):
-      params.append(
-        'group_attributes = [{0:s}]'.format(
-          ', '.join([repr(i) for i in self.group_attributes])
-        )
-      )
-  def __repr__(self):
-    params = []
-    self.repr_serialize(params)
-    return 'regex.RegexGroup({0:s})'.format(', '.join(params))
-  # GENERATE END
-  def post_process(self, group_index = 0): #, rule_name_to_character_set = None):
-    # total hack which will be done in a Python action in future
-    if len(self) >= 2:
-      assert self[0].tag == 'GroupName'
-      self.group_name = self[0].text[1:-1]
-      del self[:1]
-    # end total hack
-    self.group_index = group_index
-    group_index += 1
-    return Regex.post_process(self, group_index) #, rule_name_to_character_set)
-  def to_groups(self, groups):
-    assert len(groups) == self.group_index
-    groups.append(
-      (self.group_name, {i.name: i.value for i in self.group_attributes})
-    )
-    return Regex.to_groups(self, groups)
-  def to_nfa_state(self, _nfa, next_state):
-    mark_state = len(_nfa.states)
-    _nfa.states.append((nfa.NFA.STATE_MARK, self.group_index * 2 + 1, next_state))
-    child_state = self[0].to_nfa_state(_nfa, mark_state)
-    if child_state == -1:
-      return -1
-    new_state = len(_nfa.states)
-    _nfa.states.append((nfa.NFA.STATE_MARK, self.group_index * 2, child_state))
-    return new_state
-  #def to_lr1_symbols(self, n_terminals, symbols, lookaheads, group_bounds):
-  #  group_start = len(symbols)
-  #  assert self.group_index == len(group_bounds)
-  #  group_bounds.append(None)
-  #  group_count = Regex.to_lr1_symbols(
-  #    self,
-  #    n_terminals,
-  #    symbols,
-  #    lookaheads,
-  #    group_bounds
-  #  )
-  #  group_bounds[self.group_index] = (
-  #    group_start,
-  #    group_count,
-  #    self.group_name,
-  #    {i.name: i.value for i in self.group_attributes}
-  #  )
-  #  return 1 # count of groups or ungrouped characters
-
-# GENERATE FACTORY(element.Element) BEGIN
-tag_to_class = {
-  'Regex': Regex,
-  'RegexNone': RegexNone,
-  'RegexEmpty': RegexEmpty,
-  'RegexCharacter': RegexCharacter,
-  'RegexCharacterRange': RegexCharacterRange,
-  'RegexCharacterOr': RegexCharacterOr,
-  'RegexCharacterAnd': RegexCharacterAnd,
-  'RegexCharacterNot': RegexCharacterNot,
-  'RegexOr': RegexOr,
-  'RegexAnd': RegexAnd,
-  'RegexSequence': RegexSequence,
-  'RegexRepeat': RegexRepeat,
-  'RegexGroup': RegexGroup,
-  'RegexGroup_Attribute': RegexGroup.Attribute
-}
-def factory(tag, attrib = {}, *args, **kwargs):
-  return tag_to_class.get(tag, element.Element)(tag, attrib, *args, **kwargs)
-# GENERATE END
-
-if __name__ == '__main__':
-  import sys
-  import xml.etree.ElementTree
-
-  regex = RegexAnd(children = [RegexRepeat(children = [RegexCharacterNot(
-children = [RegexCharacter()], character_set = [0, 256])]), RegexGroup(children = [
-RegexOr(children = [RegexOr(children = [RegexOr(children = [RegexGroup(children
-= [RegexRepeat(children = [RegexCharacter(character_set = [9, 14, 32, 33])],
-one_or_more = True)], group_index = 1, group_name = 'Whitespace'), RegexGroup(
-children = [RegexRepeat(children = [RegexCharacter(character_set = [48, 58])],
-one_or_more = True)], group_index = 2, group_name = 'Number')]), RegexGroup(
-children = [RegexSequence(children = [RegexSequence(children = [RegexSequence(
-children = [RegexEmpty(), RegexCharacter(character_set = [102, 103])]),
-RegexCharacter(character_set = [111, 112])]), RegexCharacter(character_set = [114, 115])]
-)], group_index = 3, group_name = 'For')]), RegexGroup(children = [
-RegexSequence(children = [RegexCharacter(character_set = [65, 91, 95, 96, 97, 123]),
-RegexRepeat(children = [RegexCharacter(character_set = [48, 58, 65, 91, 95, 96, 97,
-123])])])], group_index = 4, group_name = 'Identifier')])], group_index = 0)])
-  #sys.stdout.write(
-  #  wrap_repr(
-  #    '  regex = {0:s}'.format(repr(regex).replace('regex.', '')),
-  #    79
-  #  )
-  #)
-
-  _nfa = regex.to_nfa()
-  #sys.stdout.write(
-  #  wrap_repr(
-  #    '  _nfa = {0:s}'.format(repr(_nfa).replace('regex.', '')),
-  #    79
-  #  )
-  #)
-
-  text = '     id   99id id99 for forex  '
-  i = 0
-  while i < len(text):
-    print('text "{0:s}"'.format(text[i:i + 72].replace('\n', '$')))
-    thread = _nfa.match_text(text, i)
-    if thread is None:
-      print('no match')
-      break
-    i = thread[0] # end position of overall match
-    group_start = [-1 for j in range(len(_nfa.groups))]
-    group_end = [-1 for j in range(len(_nfa.groups))]
-    while thread is not None:
-      pos, mark, thread = thread
-      group = mark >> 1
-      if (mark & 1) == 0:
-        group_start[group] = pos
-        print(
-          'group {0:d} name "{1:s}" text "{2:s}"'.format(
-             group,
-             _nfa.groups[group][0],
-             text[group_start[group]:group_end[group]].replace('\n', '$')
-          )
-        )
-      else:
-        group_end[group] = pos
-
-  dfa = _nfa.to_dfa()
-  #sys.stdout.write(
-  #  wrap_repr(
-  #    '  dfa = {0:s}'.format(repr(dfa).replace('regex.', '')),
-  #    79
-  #  )
-  #)
-
-  text = '     id   99id id99 for forex  '
-  i = 0
-  while i < len(text):
-    print('text "{0:s}"'.format(text[i:i + 72].replace('\n', '$')))
-    thread = dfa.match_text(text, i)
-    if thread is None:
-      print('no match')
-      break
-    i = thread[0] # end position of overall match
-    group_start = [-1 for j in range(len(dfa.groups))]
-    group_end = [-1 for j in range(len(dfa.groups))]
-    while thread is not None:
-      pos, mark, thread = thread
-      group = mark >> 1
-      if (mark & 1) == 0:
-        group_start[group] = pos
-        print(
-          'group {0:d} name "{1:s}" text "{2:s}"'.format(
-             group,
-             dfa.groups[group][0],
-             text[group_start[group]:group_end[group]].replace('\n', '$')
-          )
-        )
-      else:
-        group_end[group] = pos
-
-  grammar = Grammar(children = [Grammar.Production(children = [RegexSequence(
-children = [RegexSequence(children = [RegexEmpty(), RegexCharacterRule(character_set
-= [288, 295], rule_name = 'whitespace_opt')]), RegexCharacterRule(character_set = [
-259, 262], rule_name = 'expr0')])], nonterminal = 0), Grammar.Production(
-children = [RegexSequence(children = [RegexEmpty(), RegexCharacterRule(character_set
-= [262, 265], rule_name = 'expr1')])], nonterminal = 1), Grammar.Production(
-children = [RegexSequence(children = [RegexEmpty(), RegexGroup(children = [
-RegexSequence(children = [RegexSequence(children = [RegexSequence(children = [
-RegexSequence(children = [RegexEmpty(), RegexCharacterRule(character_set = [259, 262
-], rule_name = 'expr0')]), RegexCharacter(character_set = [43, 44])]),
-RegexCharacterRule(character_set = [288, 295], rule_name = 'whitespace_opt')]),
-RegexCharacterRule(character_set = [262, 265], rule_name = 'expr1')])], group_index
-= 0, group_name = 'Add')])], nonterminal = 2), Grammar.Production(children = [
-RegexSequence(children = [RegexEmpty(), RegexGroup(children = [RegexSequence(
-children = [RegexSequence(children = [RegexSequence(children = [RegexSequence(
-children = [RegexEmpty(), RegexCharacterRule(character_set = [259, 262], rule_name =
-'expr0')]), RegexCharacter(character_set = [45, 46])]), RegexCharacterRule(character_set
-= [288, 295], rule_name = 'whitespace_opt')]), RegexCharacterRule(character_set = [
-262, 265], rule_name = 'expr1')])], group_index = 0, group_name = 'Subtract')])
-], nonterminal = 3), Grammar.Production(children = [RegexSequence(children = [
-RegexEmpty(), RegexCharacterRule(character_set = [265, 268], rule_name = 'expr2')])
-], nonterminal = 4), Grammar.Production(children = [RegexSequence(children = [
-RegexEmpty(), RegexGroup(children = [RegexSequence(children = [RegexSequence(
-children = [RegexSequence(children = [RegexSequence(children = [RegexEmpty(),
-RegexCharacterRule(character_set = [262, 265], rule_name = 'expr1')]),
-RegexCharacter(character_set = [42, 43])]), RegexCharacterRule(character_set = [288, 295
-], rule_name = 'whitespace_opt')]), RegexCharacterRule(character_set = [265, 268],
-rule_name = 'expr2')])], group_index = 0, group_name = 'Multiply')])],
-nonterminal = 5), Grammar.Production(children = [RegexSequence(children = [
-RegexEmpty(), RegexGroup(children = [RegexSequence(children = [RegexSequence(
-children = [RegexSequence(children = [RegexSequence(children = [RegexEmpty(),
-RegexCharacterRule(character_set = [262, 265], rule_name = 'expr1')]),
-RegexCharacter(character_set = [47, 48])]), RegexCharacterRule(character_set = [288, 295
-], rule_name = 'whitespace_opt')]), RegexCharacterRule(character_set = [265, 268],
-rule_name = 'expr2')])], group_index = 0, group_name = 'Divide')])],
-nonterminal = 6), Grammar.Production(children = [RegexSequence(children = [
-RegexSequence(children = [RegexEmpty(), RegexGroup(children = [RegexSequence(
-children = [RegexEmpty(), RegexCharacterRule(character_set = [268, 288], rule_name =
-'number')])], group_index = 0, group_name = 'Number')]), RegexCharacterRule(
-character_set = [288, 295], rule_name = 'whitespace_opt')])], nonterminal = 7),
-Grammar.Production(children = [RegexSequence(children = [RegexEmpty(),
-RegexGroup(children = [RegexSequence(children = [RegexSequence(children = [
-RegexSequence(children = [RegexEmpty(), RegexCharacter(character_set = [45, 46])]),
-RegexCharacterRule(character_set = [288, 295], rule_name = 'whitespace_opt')]),
-RegexCharacterRule(character_set = [265, 268], rule_name = 'expr2')])], group_index
-= 0, group_name = 'Negate')])], nonterminal = 8), Grammar.Production(children =
-[RegexSequence(children = [RegexSequence(children = [RegexSequence(children = [
-RegexSequence(children = [RegexSequence(children = [RegexEmpty(),
-RegexCharacter(character_set = [40, 41])]), RegexCharacterRule(character_set = [288, 295
-], rule_name = 'whitespace_opt')]), RegexCharacterRule(character_set = [259, 262],
-rule_name = 'expr0')]), RegexCharacter(character_set = [41, 42])]),
-RegexCharacterRule(character_set = [288, 295], rule_name = 'whitespace_opt')])],
-nonterminal = 9), Grammar.Production(children = [RegexSequence(children = [
-RegexEmpty(), RegexCharacter(character_set = [48, 49])])], nonterminal = 10),
-Grammar.Production(children = [RegexSequence(children = [RegexEmpty(),
-RegexCharacter(character_set = [49, 50])])], nonterminal = 11), Grammar.Production(
-children = [RegexSequence(children = [RegexEmpty(), RegexCharacter(character_set = [
-50, 51])])], nonterminal = 12), Grammar.Production(children = [RegexSequence(
-children = [RegexEmpty(), RegexCharacter(character_set = [51, 52])])], nonterminal =
-13), Grammar.Production(children = [RegexSequence(children = [RegexEmpty(),
-RegexCharacter(character_set = [52, 53])])], nonterminal = 14), Grammar.Production(
-children = [RegexSequence(children = [RegexEmpty(), RegexCharacter(character_set = [
-53, 54])])], nonterminal = 15), Grammar.Production(children = [RegexSequence(
-children = [RegexEmpty(), RegexCharacter(character_set = [54, 55])])], nonterminal =
-16), Grammar.Production(children = [RegexSequence(children = [RegexEmpty(),
-RegexCharacter(character_set = [55, 56])])], nonterminal = 17), Grammar.Production(
-children = [RegexSequence(children = [RegexEmpty(), RegexCharacter(character_set = [
-56, 57])])], nonterminal = 18), Grammar.Production(children = [RegexSequence(
-children = [RegexEmpty(), RegexCharacter(character_set = [57, 58])])], nonterminal =
-19), Grammar.Production(children = [RegexSequence(children = [RegexSequence(
-children = [RegexEmpty(), RegexCharacterRule(character_set = [268, 288], rule_name =
-'number')]), RegexCharacter(character_set = [48, 49])])], nonterminal = 20),
-Grammar.Production(children = [RegexSequence(children = [RegexSequence(children
-= [RegexEmpty(), RegexCharacterRule(character_set = [268, 288], rule_name = 'number'
-)]), RegexCharacter(character_set = [49, 50])])], nonterminal = 21),
-Grammar.Production(children = [RegexSequence(children = [RegexSequence(children
-= [RegexEmpty(), RegexCharacterRule(character_set = [268, 288], rule_name = 'number'
-)]), RegexCharacter(character_set = [50, 51])])], nonterminal = 22),
-Grammar.Production(children = [RegexSequence(children = [RegexSequence(children
-= [RegexEmpty(), RegexCharacterRule(character_set = [268, 288], rule_name = 'number'
-)]), RegexCharacter(character_set = [51, 52])])], nonterminal = 23),
-Grammar.Production(children = [RegexSequence(children = [RegexSequence(children
-= [RegexEmpty(), RegexCharacterRule(character_set = [268, 288], rule_name = 'number'
-)]), RegexCharacter(character_set = [52, 53])])], nonterminal = 24),
-Grammar.Production(children = [RegexSequence(children = [RegexSequence(children
-= [RegexEmpty(), RegexCharacterRule(character_set = [268, 288], rule_name = 'number'
-)]), RegexCharacter(character_set = [53, 54])])], nonterminal = 25),
-Grammar.Production(children = [RegexSequence(children = [RegexSequence(children
-= [RegexEmpty(), RegexCharacterRule(character_set = [268, 288], rule_name = 'number'
-)]), RegexCharacter(character_set = [54, 55])])], nonterminal = 26),
-Grammar.Production(children = [RegexSequence(children = [RegexSequence(children
-= [RegexEmpty(), RegexCharacterRule(character_set = [268, 288], rule_name = 'number'
-)]), RegexCharacter(character_set = [55, 56])])], nonterminal = 27),
-Grammar.Production(children = [RegexSequence(children = [RegexSequence(children
-= [RegexEmpty(), RegexCharacterRule(character_set = [268, 288], rule_name = 'number'
-)]), RegexCharacter(character_set = [56, 57])])], nonterminal = 28),
-Grammar.Production(children = [RegexSequence(children = [RegexSequence(children
-= [RegexEmpty(), RegexCharacterRule(character_set = [268, 288], rule_name = 'number'
-)]), RegexCharacter(character_set = [57, 58])])], nonterminal = 29),
-Grammar.Production(children = [RegexEmpty()], nonterminal = 30),
-Grammar.Production(children = [RegexSequence(children = [RegexSequence(children
-= [RegexEmpty(), RegexCharacterRule(character_set = [288, 295], rule_name =
-'whitespace_opt')]), RegexCharacter(character_set = [9, 10])])], nonterminal = 31),
-Grammar.Production(children = [RegexSequence(children = [RegexSequence(children
-= [RegexEmpty(), RegexCharacterRule(character_set = [288, 295], rule_name =
-'whitespace_opt')]), RegexCharacter(character_set = [10, 11])])], nonterminal = 32),
-Grammar.Production(children = [RegexSequence(children = [RegexSequence(children
-= [RegexEmpty(), RegexCharacterRule(character_set = [288, 295], rule_name =
-'whitespace_opt')]), RegexCharacter(character_set = [11, 12])])], nonterminal = 33),
-Grammar.Production(children = [RegexSequence(children = [RegexSequence(children
-= [RegexEmpty(), RegexCharacterRule(character_set = [288, 295], rule_name =
-'whitespace_opt')]), RegexCharacter(character_set = [12, 13])])], nonterminal = 34),
-Grammar.Production(children = [RegexSequence(children = [RegexSequence(children
-= [RegexEmpty(), RegexCharacterRule(character_set = [288, 295], rule_name =
-'whitespace_opt')]), RegexCharacter(character_set = [13, 14])])], nonterminal = 35),
-Grammar.Production(children = [RegexSequence(children = [RegexSequence(children
-= [RegexEmpty(), RegexCharacterRule(character_set = [288, 295], rule_name =
-'whitespace_opt')]), RegexCharacter(character_set = [32, 33])])], nonterminal = 36)
-], n_terminals = 258)
-  #sys.stdout.write(
-  #  wrap_repr(
-  #    '  grammar = {0:s}'.format(repr(grammar).replace('regex.', '')),
-  #    79
-  #  )
-  #)
-
-  lr1 = grammar.to_lr1()
-  #sys.stdout.write(
-  #  wrap_repr(
-  #    '  lr1 = {0:s}'.format(repr(lr1).replace('regex.', '')),
-  #    79
-  #  )
-  #)
-
-  lr1.parse_text('(13 + 5 * 6) * 2', 0)
-  root = element.Element('root', text = '(13 + 5 * 6) * 2')
-  lr1.parse_yychunk(root, 0, 0, element.Element, iter([]))
-  xml.etree.ElementTree.dump(root)
-
-  clr1 = lr1.to_clr1()
-  #sys.stdout.write(
-  #  wrap_repr(
-  #    '  clr1 = {0:s}'.format(repr(clr1).replace('regex.', '')),
-  #    79
-  #  )
-  #)
-
-  clr1.parse_text('(13 + 5 * 6) * 2', 0)
-  root = element.Element('root', text = '(13 + 5 * 6) * 2')
-  clr1.parse_yychunk(root, 0, 0, element.Element, iter([]))
-  xml.etree.ElementTree.dump(root)
-
-  lalr1 = lr1.to_lalr1()
-  #sys.stdout.write(
-  #  wrap_repr(
-  #    '  lalr1 = {0:s}'.format(repr(lalr1).replace('regex.', '')),
-  #    79
-  #  )
-  #)
-
-  lalr1.parse_text('(13 + 5 * 6) * 2', 0)
-  root = element.Element('root', text = '(13 + 5 * 6) * 2')
-  lalr1.parse_yychunk(root, 0, 0, element.Element, iter([]))
-  xml.etree.ElementTree.dump(root)
diff --git a/work.py b/work.py
deleted file mode 100644 (file)
index cf832c4..0000000
--- a/work.py
+++ /dev/null
@@ -1,173 +0,0 @@
-import sys
-import element
-
-def yychunk_line(root, fin):
-  line = fin.readline()
-  while len(line):
-    element.set_text(root, -1, element.get_text(root, -1) + line)
-    yield
-    line = fin.readline()
-
-def yychunk_block(root, fin, count):
-  block = fin.read(count)
-  while len(block):
-    element.set_text(root, -1, element.get_text(root, -1) + line)
-    yield
-    block = fin.read(count)
-
-def replace_with_element(root, pos0, off0, pos1, off1, child):
-  if pos0 < 0:
-    pos0, off0 = element.to_start_relative(root, pos0, off0)
-  if pos1 < 0:
-    pos1, off1 = element.to_start_relative(root, pos1, off1)
-  count = pos1 - pos0
-  assert count >= 0
-
-  temp = element.get_text(root, pos1)
-  root[pos0:pos1] = [child]
-  element.set_text(root, pos0 + 1, temp[off1:])
-  if count != 0:
-    temp = element.get_text(root, pos0)
-  element.set_text(root, pos0, temp[:off0])
-
-def replace_with_text(root, mark, i, j, text):
-  (pos0, off0) = mark[i]
-  (pos1, off1) = mark[j]
-  count = pos1 - pos0
-  assert count >= 0
-
-  temp = element.get_tail(root, pos1)
-  del root[pos0 + 1:pos1 + 1]
-  element.set_tail(
-    root,
-    pos0,
-    element.get_tail(root, pos0)[:off0] + text + temp[off1:]
-  )
-
-  if j != i + 1:
-    mark[i + 1:j + 1] = [mark[j]]
-  k = i + 1
-  delta_pos = -count
-  delta_off = off0 + len(text) - off1
-  while k < len(mark):
-    (pos2, off2) = mark[k]
-    if pos2 > pos1:
-      break
-    mark[k] = (pos2 + delta_pos, off2 + delta_off)
-    k += 1
-  if delta_pos != 0:
-    while k < len(mark):
-      (pos2, off2) = mark[k]
-      mark[k] = (pos2 + delta_pos, off2)
-      k += 1
-
-def replace_with_content(root, mark, i, j, child):
-  text = element.get_tail(child, -1)
-  if len(child) == 0:
-    replace_with_text(root, mark, i, j, text)
-  else:
-    (pos0, off0) = mark[i]
-    (pos1, off1) = mark[j]
-    count = pos1 - pos0
-    assert count >= 0
-  
-    temp = element.get_tail(root, pos1)
-    root[pos0 + 1:pos1 + 1] = child[:]
-    tail = element.get_tail(root, pos0 + len(child))
-    element.set_tail(root, pos0 + len(child), tail + temp[off1:])
-    if count != 0:
-      temp = element.get_tail(root, pos0)
-    element.set_tail(root, pos0, temp[:off0] + text)
-  
-    if j != i + 1:
-      mark[i + 1:j + 1] = [mark[j]]
-    k = i + 1
-    delta_pos = len(child) - count
-    delta_off = len(tail) - off1
-    while k < len(mark):
-      (pos2, off2) = mark[k]
-      if pos2 > pos1:
-        break
-      mark[k] = (pos2 + delta_pos, off2 + delta_off)
-      k += 1
-    if delta_pos != 0:
-      while k < len(mark):
-        (pos2, off2) = mark[k]
-        mark[k] = (pos2 + delta_pos, off2)
-        k += 1
-
-def extract_element(root, mark, i, j, factory, *args, **kwargs):
-  (pos0, off0) = mark[i]
-  (pos1, off1) = mark[j]
-  count = pos1 - pos0
-  assert count >= 0
-
-  result = factory(*args, **kwargs)
-  result[:] = [i.copy() for i in root[pos0 + 1:pos1 + 1]]
-  tail = element.get_tail(root, pos1)
-  if count == 0:
-    element.set_tail(result, -1, tail[off0:off1])
-  else:
-    element.set_tail(result, count - 1, tail[:off1])
-    tail = element.get_tail(root, pos0)
-    element.set_tail(result, -1, tail[off0:])
-  return result
-
-def extract_text(root, mark, i, j):
-  (pos0, off0) = mark[i]
-  (pos1, off1) = mark[j]
-  #result = [element.get_tail(root, i) for i in range(pos0, pos1 + 1)]
-  #result[-1] = result[-1][:off1]
-  #result[0] = result[0][off0:]
-  #return ''.join(result)
-  assert pos1 == pos0
-  return element.get_tail(root, pos0)[off0:off1]
-
-def apply_markup(root, pos0, off0, pos1, off1, factory, *args, **kwargs):
-  if pos0 < 0:
-    pos0, off0 = element.to_start_relative(root, pos0, off0)
-  if pos1 < 0:
-    pos1, off1 = element.to_start_relative(root, pos1, off1)
-  count = pos1 - pos0
-  assert count >= 0
-
-  child = factory(*args, **kwargs)
-  child[:] = root[pos0:pos1]
-
-  tail = element.get_text(root, pos1)
-  # at present, if count > 0, child[-1] is shared with root[pos1 - 1],
-  # so we cannot change child[-1].tail until after the replacement
-  if count == 0:
-    replace_with_element(root, pos0, off0, pos1, off1, child)
-    element.set_text(child, 0, tail[off0:off1])
-  else:
-    temp = element.get_text(root, pos0)
-    replace_with_element(root, pos0, off0, pos1, off1, child)
-    element.set_text(child, count, tail[:off1])
-    element.set_text(child, 0, temp[off0:])
-  return child
-
-def dump(root, mark):
-  i = 0
-  pos = -1
-  result = ''
-  while True:
-    assert i >= len(mark) or mark[i][0] >= pos
-    tail = element.get_tail(root, pos) 
-    off = 0
-    while off < len(tail) or (i < len(mark) and mark[i][0] == pos):
-      end = len(tail) if i >= len(mark) or mark[i][0] != pos else mark[i][1]
-      if end > off:
-        result += tail[off:end].replace('\n', '(lf)').replace('\t', '(tab)')
-        off = end
-      if i < len(mark) and mark[i][0] == pos:
-        result += '({0:d})'.format(i)
-        i += 1
-    pos += 1
-    if pos >= len(root):
-      break
-    result += '({0:s}{1:d})'.format(root[pos].tag, pos)
-  assert i >= len(mark)
-  result += '(eof)'
-  sys.stdout.write('{0:s}\n'.format(result[-159:])) #79:]))
-  sys.stdout.flush()
diff --git a/wrap_repr.py b/wrap_repr.py
deleted file mode 100644 (file)
index 935e8c4..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-def wrap_repr(text, width):
-  lines = []
-  i = 0
-  while i < len(text):
-    j = i + width
-    if j < len(text):
-      j = max(
-        [
-          text.rfind('(', i, j) + 1,
-          text.rfind('[', i, j) + 1,
-          text.rfind('{', i, j) + 1,
-          text.rfind('.', i, j) + 1,
-          text.rfind(')', i, j + 1),
-          text.rfind(']', i, j + 1),
-          text.rfind('}', i, j + 1),
-          text.rfind(' ', i, j + 1),
-        ]
-      )
-      assert j > 0
-    lines.append(text[i:j] + '\n')
-    i = j
-    while text[i:i + 1] == ' ':
-      i += 1
-  return ''.join(lines)