Add element groups, uniquify the internal tokens for action and element groups
authorNick Downing <downing.nick@gmail.com>
Wed, 26 Sep 2018 07:12:21 +0000 (17:12 +1000)
committerNick Downing <downing.nick@gmail.com>
Wed, 26 Sep 2018 07:24:40 +0000 (17:24 +1000)
src/parse.c
src/parse.h
src/parse.y
src/scan.c
src/scan.l

index a991604..9e4ab45 100644 (file)
@@ -62,7 +62,7 @@
 
 
 /* Copy the first part of user declarations.  */
-#line 34 "parse.y" /* yacc.c:339  */
+#line 37 "parse.y" /* yacc.c:339  */
 
 /*  Copyright (c) 1990 The Regents of the University of California. */
 /*  All rights reserved. */
@@ -240,10 +240,12 @@ extern int yydebug;
     CCE_NEG_XDIGIT = 296,
     CCL_OP_DIFF = 297,
     CCL_OP_UNION = 298,
-    BEGIN_REPEAT_POSIX = 299,
-    END_REPEAT_POSIX = 300,
-    BEGIN_REPEAT_FLEX = 301,
-    END_REPEAT_FLEX = 302
+    TOK_ACTION_GROUP = 299,
+    TOK_ELEMENT_GROUP = 300,
+    BEGIN_REPEAT_POSIX = 301,
+    END_REPEAT_POSIX = 302,
+    BEGIN_REPEAT_FLEX = 303,
+    END_REPEAT_FLEX = 304
   };
 #endif
 /* Tokens.  */
@@ -288,10 +290,12 @@ extern int yydebug;
 #define CCE_NEG_XDIGIT 296
 #define CCL_OP_DIFF 297
 #define CCL_OP_UNION 298
-#define BEGIN_REPEAT_POSIX 299
-#define END_REPEAT_POSIX 300
-#define BEGIN_REPEAT_FLEX 301
-#define END_REPEAT_FLEX 302
+#define TOK_ACTION_GROUP 299
+#define TOK_ELEMENT_GROUP 300
+#define BEGIN_REPEAT_POSIX 301
+#define END_REPEAT_POSIX 302
+#define BEGIN_REPEAT_FLEX 303
+#define END_REPEAT_FLEX 304
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -309,7 +313,7 @@ int yyparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 313 "parse.c" /* yacc.c:358  */
+#line 317 "parse.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -551,21 +555,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  3
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   182
+#define YYLAST   183
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  70
+#define YYNTOKENS  72
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  27
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  100
+#define YYNRULES  101
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  149
+#define YYNSTATES  152
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   302
+#define YYMAXUTOK   304
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -575,18 +579,18 @@ union yyalloc
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      49,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      51,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,    63,     2,    57,     2,     2,     2,
-      64,    65,    55,    60,    56,    69,    62,    59,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    66,     2,
-      53,    48,    54,    61,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,    65,     2,    59,     2,     2,     2,
+      66,    67,    57,    62,    58,    71,    64,    61,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    68,     2,
+      55,    50,    56,    63,     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,    67,     2,    68,    52,     2,     2,     2,     2,     2,
+       2,    69,     2,    70,    54,     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,    50,    58,    51,     2,     2,     2,     2,
+       2,     2,     2,    52,    60,    53,     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,
@@ -604,24 +608,24 @@ static const yytype_uint8 yytranslate[] =
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47
+      45,    46,    47,    48,    49
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   137,   137,   167,   174,   180,   185,   186,   190,   198,
-     201,   205,   208,   211,   215,   218,   219,   222,   229,   234,
-     241,   246,   251,   258,   263,   268,   272,   284,   322,   348,
-     373,   378,   381,   387,   407,   420,   422,   424,   428,   455,
-     511,   514,   559,   578,   586,   591,   618,   628,   631,   662,
-     679,   704,   713,   721,   729,   760,   777,   799,   841,   859,
-     869,   872,   878,   881,   887,   893,   911,   917,   921,   926,
-     928,   937,  1002,  1025,  1035,  1044,  1048,  1052,  1056,  1060,
-    1064,  1068,  1082,  1086,  1090,  1094,  1098,  1113,  1117,  1121,
-    1125,  1129,  1133,  1137,  1141,  1145,  1149,  1153,  1161,  1171,
-    1192
+       0,   140,   140,   170,   177,   183,   188,   189,   193,   201,
+     204,   208,   211,   214,   218,   221,   222,   225,   232,   237,
+     244,   249,   254,   261,   266,   271,   275,   287,   325,   351,
+     376,   381,   384,   390,   410,   423,   425,   427,   431,   458,
+     514,   517,   562,   581,   589,   594,   621,   631,   634,   665,
+     682,   707,   716,   724,   732,   763,   780,   802,   844,   862,
+     872,   875,   881,   884,   890,   895,   901,   919,   925,   929,
+     934,   936,   945,  1010,  1033,  1043,  1052,  1056,  1060,  1064,
+    1068,  1072,  1076,  1090,  1094,  1098,  1102,  1106,  1121,  1125,
+    1129,  1133,  1137,  1141,  1145,  1149,  1153,  1157,  1161,  1169,
+    1179,  1200
 };
 #endif
 
@@ -639,14 +643,15 @@ static const char *const yytname[] =
   "CCE_NEG_BLANK", "CCE_NEG_CNTRL", "CCE_NEG_DIGIT", "CCE_NEG_GRAPH",
   "CCE_NEG_LOWER", "CCE_NEG_PRINT", "CCE_NEG_PUNCT", "CCE_NEG_SPACE",
   "CCE_NEG_UPPER", "CCE_NEG_XDIGIT", "CCL_OP_DIFF", "CCL_OP_UNION",
-  "BEGIN_REPEAT_POSIX", "END_REPEAT_POSIX", "BEGIN_REPEAT_FLEX",
-  "END_REPEAT_FLEX", "'='", "'\\n'", "'{'", "'}'", "'^'", "'<'", "'>'",
-  "'*'", "','", "'$'", "'|'", "'/'", "'+'", "'?'", "'.'", "'\"'", "'('",
-  "')'", "':'", "'['", "']'", "'-'", "$accept", "goal", "initlex", "sect1",
-  "sect1end", "startconddecl", "namelist1", "options", "optionlist",
-  "option", "sect2", "initforrule", "flexrule", "scon_stk_ptr", "scon",
-  "namelist2", "sconname", "rule", "re", "re2", "series", "singleton",
-  "fullccl", "braceccl", "ccl", "ccl_expr", "string", YY_NULLPTR
+  "TOK_ACTION_GROUP", "TOK_ELEMENT_GROUP", "BEGIN_REPEAT_POSIX",
+  "END_REPEAT_POSIX", "BEGIN_REPEAT_FLEX", "END_REPEAT_FLEX", "'='",
+  "'\\n'", "'{'", "'}'", "'^'", "'<'", "'>'", "'*'", "','", "'$'", "'|'",
+  "'/'", "'+'", "'?'", "'.'", "'\"'", "'('", "')'", "':'", "'['", "']'",
+  "'-'", "$accept", "goal", "initlex", "sect1", "sect1end",
+  "startconddecl", "namelist1", "options", "optionlist", "option", "sect2",
+  "initforrule", "flexrule", "scon_stk_ptr", "scon", "namelist2",
+  "sconname", "rule", "re", "re2", "series", "singleton", "fullccl",
+  "braceccl", "ccl", "ccl_expr", "string", YY_NULLPTR
 };
 #endif
 
@@ -659,9 +664,10 @@ static const yytype_uint16 yytoknum[] =
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299,   300,   301,   302,    61,    10,
-     123,   125,    94,    60,    62,    42,    44,    36,   124,    47,
-      43,    63,    46,    34,    40,    41,    58,    91,    93,    45
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+      61,    10,   123,   125,    94,    60,    62,    42,    44,    36,
+     124,    47,    43,    63,    46,    34,    40,    41,    58,    91,
+      93,    45
 };
 # endif
 
@@ -679,21 +685,22 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     -64,    56,   117,   -64,   -64,     5,   -64,   -64,   -64,   -64,
-     -64,    41,   -64,   126,     4,   -64,   -64,    59,    53,    83,
-      85,    87,    96,    98,   -64,    92,   -64,    95,   -64,   140,
-     141,   142,   143,   147,   148,   104,    97,   -64,    -1,   -64,
-     -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -41,   -64,
-      49,   -64,   -64,   -64,   -64,   100,   -64,   -64,    44,   107,
-     111,   -64,   -13,   100,    90,    66,    54,   -64,   -64,   153,
-     -64,   -64,     2,   100,   100,   100,    55,   -64,     0,   -64,
-     -64,   100,   -64,    57,   161,    66,   162,   -64,   -64,   -64,
-     101,   101,   -64,   -64,   -64,    67,    71,    72,   -64,    51,
-     102,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,
+     -64,    58,   131,   -64,   -64,   142,   -64,   -64,   -64,   -64,
+     -64,     9,   -64,   152,     6,   -64,   -64,    54,    50,    52,
+      72,    75,    85,    95,   -64,    12,   -64,    81,   -64,   116,
+     136,   143,   144,   146,   147,   100,    49,   -64,    -1,   -64,
+     -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -45,   -64,
+     -39,   -64,   -64,   -64,   -64,    40,   -64,   -64,    51,   103,
+     110,   -64,   -15,    40,    94,    64,     5,   -64,   -64,   154,
+     -64,   -64,     2,    40,    40,    40,    40,    41,   -64,     0,
+     -64,   -64,    40,   -64,    39,   166,    64,   167,   -64,   -64,
+     -64,   104,   104,   -64,   -64,   -64,    47,    74,    79,    83,
+     -64,    53,   101,   -64,   -64,   -64,   -64,   -64,   -64,   -64,
      -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,
-     -64,   -64,   -64,   -64,   -64,   -64,   -64,    90,   -64,   -39,
-      48,   -64,   -64,   -64,   -64,   -64,   -64,   166,   -64,    10,
-     -64,     3,   -64,   125,   -64,   127,   -64,   -64,   -64
+     -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,    94,
+     -64,   -43,    -7,   -64,   -64,   -64,   -64,   -64,   -64,   -64,
+     171,   -64,     8,   -64,     3,   -64,   128,   -64,   127,   -64,
+     -64,   -64
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -706,32 +713,33 @@ static const yytype_uint8 yydefact[] =
        0,     0,     0,     0,    15,    31,     2,    26,    11,     0,
        0,     0,     0,     0,     0,     0,     0,    25,     0,    17,
       19,    20,    21,    18,    22,    33,    37,    38,     0,    36,
-      34,    30,    65,    59,    29,     0,    57,   100,     0,    74,
-       0,    28,    42,     0,    44,    47,    58,    68,    32,     0,
-      24,    27,     0,     0,     0,     0,     0,    74,     0,    23,
-      41,     0,    45,    39,     0,    46,     0,    51,    52,    53,
-       0,     0,    35,    99,    60,     0,     0,     0,    61,     0,
-      72,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      84,    86,    85,    87,    88,    89,    90,    91,    92,    97,
-      93,    94,    95,    98,    96,    69,    73,    43,    40,     0,
-       0,    66,    67,    63,    64,    62,    70,     0,    50,     0,
-      56,     0,    71,     0,    49,     0,    55,    48,    54
+      34,    30,    66,    59,    29,     0,    57,   101,     0,    75,
+       0,    28,    42,     0,    44,    47,    58,    69,    32,     0,
+      24,    27,     0,     0,     0,     0,     0,     0,    75,     0,
+      23,    41,     0,    45,    39,     0,    46,     0,    51,    52,
+      53,     0,     0,    35,   100,    60,     0,     0,     0,     0,
+      61,     0,    73,    76,    77,    78,    79,    80,    81,    82,
+      83,    84,    85,    87,    86,    88,    89,    90,    91,    92,
+      93,    98,    94,    95,    96,    99,    97,    70,    74,    43,
+      40,     0,     0,    67,    68,    63,    64,    65,    62,    71,
+       0,    50,     0,    56,     0,    72,     0,    49,     0,    55,
+      48,    54
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
      -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,   -64,
-     135,   146,   -64,   -64,   -64,   -64,   106,   121,   -15,   -64,
-      99,   -63,   -64,    26,   105,   -64,   -64
+     140,   151,   -64,   -64,   -64,   -64,   111,   124,    55,   -64,
+      99,   -63,   -64,    19,   105,   -64,   -64
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int8 yydefgoto[] =
+static const yytype_int16 yydefgoto[] =
 {
       -1,     1,     2,     5,    10,    11,    17,    12,    13,    24,
       14,    26,    60,    36,    27,    48,    49,    61,    62,    63,
-      64,    65,    66,    67,    78,   126,    72
+      64,    65,    66,    67,    79,   128,    72
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -739,85 +747,86 @@ static const yytype_int8 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      51,    85,    52,   100,   -26,    93,   138,   145,    53,    54,
-       6,     7,     8,    68,   143,    69,     9,   139,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,    15,    76,    80,    81,    82,    52,    83,    16,
-     146,    55,    73,    53,   100,   144,     3,    25,    95,    96,
-      97,    56,    57,    58,    85,    94,    59,    28,   125,   101,
-     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
+      51,    86,    52,   102,   141,    94,   -26,   148,    53,    54,
+      15,    68,   146,    69,    70,   142,    25,    16,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,   126,   143,    52,    81,    82,    83,    91,    92,    53,
+      46,   144,   149,    55,    52,   147,   102,    47,     3,    73,
+      53,    25,    28,    56,    57,    58,    86,    95,    59,    35,
+     127,   103,   104,   105,   106,   107,   108,   109,   110,   111,
      112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-     122,   123,   124,    52,    74,   140,    90,    91,    46,    53,
-      70,    29,    25,    52,   141,    47,    56,    57,    58,    53,
-      75,    59,    86,    81,   128,    81,   131,   132,     4,   136,
-      98,    87,    -6,    -6,    -6,    81,    88,    89,    -6,    81,
-      81,    30,   133,    31,    84,    32,   134,   135,    18,    19,
-      20,    21,    22,    23,    33,    37,    34,    35,    39,    40,
-      41,    42,    56,    57,    58,    43,    44,    59,    45,    77,
-      79,    47,    56,    57,    58,   129,   130,    59,    59,   142,
-     147,   137,    50,    38,   148,    92,    71,     0,     0,     0,
-     127,     0,    99
+     122,   123,   124,   125,   126,    74,    75,    52,   130,    82,
+      29,    82,    30,    53,    56,    57,    58,    82,   100,    59,
+     133,   134,    87,    77,   135,    56,    57,    58,    84,    76,
+      59,    88,    31,   139,    39,    32,    89,    90,    96,    97,
+      98,    99,     4,    37,    82,    33,    -6,    -6,    -6,    82,
+      85,   136,    -6,    82,    40,    34,   137,     6,     7,     8,
+     138,    41,    42,     9,    43,    44,    45,    78,    56,    57,
+      58,    80,    47,    59,    18,    19,    20,    21,    22,    23,
+     131,   132,   140,    59,   145,   150,   151,    50,    38,    71,
+      93,   129,     0,   101
 };
 
-static const yytype_int8 yycheck[] =
+static const yytype_int16 yycheck[] =
 {
-       1,    64,     3,     3,     0,     3,    45,     4,     9,    10,
-       5,     6,     7,    54,     4,    56,    11,    56,    18,    19,
+       1,    64,     3,     3,    47,     3,     0,     4,     9,    10,
+       1,    56,     4,    58,    53,    58,    55,     8,    18,    19,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,     1,    58,    57,    58,    59,     3,    63,     8,
-      47,    52,     8,     9,     3,    45,     0,    53,    73,    74,
-      75,    62,    63,    64,   127,    63,    67,     8,    68,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,     3,    50,    47,    42,    43,     1,     9,
-      51,    48,    53,     3,    56,     8,    62,    63,    64,     9,
-      66,    67,    46,    58,    57,    58,    90,    91,     1,    68,
-      65,    55,     5,     6,     7,    58,    60,    61,    11,    58,
-      58,    48,    65,    48,    44,    48,    65,    65,    12,    13,
-      14,    15,    16,    17,    48,    50,    48,    55,     8,     8,
-       8,     8,    62,    63,    64,     8,     8,    67,    54,    52,
-      49,     8,    62,    63,    64,     4,     4,    67,    67,     3,
-      45,    69,    37,    27,    47,    69,    55,    -1,    -1,    -1,
-      81,    -1,    77
+      40,    41,    49,     3,    59,    60,    61,    42,    43,     9,
+       1,    58,    49,    54,     3,    47,     3,     8,     0,     8,
+       9,    55,     8,    64,    65,    66,   129,    65,    69,    57,
+      70,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    44,    45,     3,    59,    60,
+      50,    60,    50,     9,    64,    65,    66,    60,    67,    69,
+      91,    92,    48,    58,    67,    64,    65,    66,    63,    68,
+      69,    57,    50,    70,     8,    50,    62,    63,    73,    74,
+      75,    76,     1,    52,    60,    50,     5,     6,     7,    60,
+      46,    67,    11,    60,     8,    50,    67,     5,     6,     7,
+      67,     8,     8,    11,     8,     8,    56,    54,    64,    65,
+      66,    51,     8,    69,    12,    13,    14,    15,    16,    17,
+       4,     4,    71,    69,     3,    47,    49,    37,    27,    55,
+      69,    82,    -1,    78
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    71,    72,     0,     1,    73,     5,     6,     7,    11,
-      74,    75,    77,    78,    80,     1,     8,    76,    12,    13,
-      14,    15,    16,    17,    79,    53,    81,    84,     8,    48,
-      48,    48,    48,    48,    48,    55,    83,    50,    81,     8,
-       8,     8,     8,     8,     8,    54,     1,     8,    85,    86,
-      80,     1,     3,     9,    10,    52,    62,    63,    64,    67,
-      82,    87,    88,    89,    90,    91,    92,    93,    54,    56,
-      51,    87,    96,     8,    50,    66,    88,    52,    94,    49,
-      57,    58,    59,    88,    44,    91,    46,    55,    60,    61,
-      42,    43,    86,     3,    63,    88,    88,    88,    65,    94,
-       3,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    68,    95,    90,    57,     4,
-       4,    93,    93,    65,    65,    65,    68,    69,    45,    56,
-      47,    56,     3,     4,    45,     4,    47,    45,    47
+       0,    73,    74,     0,     1,    75,     5,     6,     7,    11,
+      76,    77,    79,    80,    82,     1,     8,    78,    12,    13,
+      14,    15,    16,    17,    81,    55,    83,    86,     8,    50,
+      50,    50,    50,    50,    50,    57,    85,    52,    83,     8,
+       8,     8,     8,     8,     8,    56,     1,     8,    87,    88,
+      82,     1,     3,     9,    10,    54,    64,    65,    66,    69,
+      84,    89,    90,    91,    92,    93,    94,    95,    56,    58,
+      53,    89,    98,     8,    44,    45,    68,    90,    54,    96,
+      51,    59,    60,    61,    90,    46,    93,    48,    57,    62,
+      63,    42,    43,    88,     3,    65,    90,    90,    90,    90,
+      67,    96,     3,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    70,    97,    92,
+      59,     4,     4,    95,    95,    67,    67,    67,    67,    70,
+      71,    47,    58,    49,    58,     3,     4,    47,     4,    49,
+      47,    49
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    70,    71,    72,    73,    73,    73,    73,    74,    75,
-      75,    76,    76,    76,    77,    78,    78,    79,    79,    79,
-      79,    79,    79,    80,    80,    80,    81,    82,    82,    82,
-      82,    83,    84,    84,    84,    85,    85,    85,    86,    87,
-      87,    87,    87,    88,    88,    89,    90,    90,    90,    90,
-      90,    91,    91,    91,    91,    91,    91,    91,    91,    91,
-      91,    91,    91,    91,    91,    91,    92,    92,    92,    93,
-      93,    94,    94,    94,    94,    95,    95,    95,    95,    95,
-      95,    95,    95,    95,    95,    95,    95,    95,    95,    95,
-      95,    95,    95,    95,    95,    95,    95,    95,    95,    96,
-      96
+       0,    72,    73,    74,    75,    75,    75,    75,    76,    77,
+      77,    78,    78,    78,    79,    80,    80,    81,    81,    81,
+      81,    81,    81,    82,    82,    82,    83,    84,    84,    84,
+      84,    85,    86,    86,    86,    87,    87,    87,    88,    89,
+      89,    89,    89,    90,    90,    91,    92,    92,    92,    92,
+      92,    93,    93,    93,    93,    93,    93,    93,    93,    93,
+      93,    93,    93,    93,    93,    93,    93,    94,    94,    94,
+      95,    95,    96,    96,    96,    96,    97,    97,    97,    97,
+      97,    97,    97,    97,    97,    97,    97,    97,    97,    97,
+      97,    97,    97,    97,    97,    97,    97,    97,    97,    97,
+      98,    98
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -829,11 +838,11 @@ static const yytype_uint8 yyr2[] =
        1,     0,     4,     3,     0,     3,     1,     1,     1,     2,
        3,     2,     1,     3,     1,     2,     2,     1,     6,     5,
        4,     2,     2,     2,     6,     5,     4,     1,     1,     1,
-       3,     3,     4,     4,     4,     1,     3,     3,     1,     3,
-       4,     4,     2,     2,     0,     1,     1,     1,     1,     1,
+       3,     3,     4,     4,     4,     4,     1,     3,     3,     1,
+       3,     4,     4,     2,     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,     2,
-       0
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       2,     0
 };
 
 
@@ -1521,7 +1530,7 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 138 "parse.y" /* yacc.c:1646  */
+#line 141 "parse.y" /* yacc.c:1646  */
     { /* add default rule */
                        int def_rule;
 
@@ -1548,162 +1557,162 @@ yyreduce:
 
                        add_action( ";\n\tYY_BREAK]]\n" );
                        }
-#line 1541 "parse.c" /* yacc.c:1646  */
+#line 1550 "parse.c" /* yacc.c:1646  */
     break;
 
   case 3:
-#line 167 "parse.y" /* yacc.c:1646  */
+#line 170 "parse.y" /* yacc.c:1646  */
     { /* initialize for processing rules */
 
                        /* Create default DFA start condition. */
                        scinstal( "INITIAL", false );
                        }
-#line 1551 "parse.c" /* yacc.c:1646  */
+#line 1560 "parse.c" /* yacc.c:1646  */
     break;
 
   case 4:
-#line 175 "parse.y" /* yacc.c:1646  */
+#line 178 "parse.y" /* yacc.c:1646  */
     {
  insert_after(2, "</AST_Section1_StartConditions>");
  sprintf(piece_temp, "<AST_Section1_StartConditions exclusive=\"%s\">", xcluflg ? "true" : "false");
  insert_before(1, piece_temp);
  }
-#line 1561 "parse.c" /* yacc.c:1646  */
+#line 1570 "parse.c" /* yacc.c:1646  */
     break;
 
   case 5:
-#line 181 "parse.y" /* yacc.c:1646  */
+#line 184 "parse.y" /* yacc.c:1646  */
     {
  insert_after(1, "</AST_Section1_Options>");
  insert_before(1, "<AST_Section1_Options>");
  }
-#line 1570 "parse.c" /* yacc.c:1646  */
+#line 1579 "parse.c" /* yacc.c:1646  */
     break;
 
   case 7:
-#line 187 "parse.y" /* yacc.c:1646  */
+#line 190 "parse.y" /* yacc.c:1646  */
     { synerr( _("unknown error processing section 1") ); }
-#line 1576 "parse.c" /* yacc.c:1646  */
+#line 1585 "parse.c" /* yacc.c:1646  */
     break;
 
   case 8:
-#line 191 "parse.y" /* yacc.c:1646  */
+#line 194 "parse.y" /* yacc.c:1646  */
     {
                        check_options();
                        scon_stk = allocate_integer_array( lastsc + 1 );
                        scon_stk_ptr = 0;
                        }
-#line 1586 "parse.c" /* yacc.c:1646  */
+#line 1595 "parse.c" /* yacc.c:1646  */
     break;
 
   case 9:
-#line 199 "parse.y" /* yacc.c:1646  */
+#line 202 "parse.y" /* yacc.c:1646  */
     { xcluflg = false; }
-#line 1592 "parse.c" /* yacc.c:1646  */
+#line 1601 "parse.c" /* yacc.c:1646  */
     break;
 
   case 10:
-#line 202 "parse.y" /* yacc.c:1646  */
+#line 205 "parse.y" /* yacc.c:1646  */
     { xcluflg = true; }
-#line 1598 "parse.c" /* yacc.c:1646  */
+#line 1607 "parse.c" /* yacc.c:1646  */
     break;
 
   case 11:
-#line 206 "parse.y" /* yacc.c:1646  */
+#line 209 "parse.y" /* yacc.c:1646  */
     { scinstal( nmstr, xcluflg ); }
-#line 1604 "parse.c" /* yacc.c:1646  */
+#line 1613 "parse.c" /* yacc.c:1646  */
     break;
 
   case 12:
-#line 209 "parse.y" /* yacc.c:1646  */
+#line 212 "parse.y" /* yacc.c:1646  */
     { scinstal( nmstr, xcluflg ); }
-#line 1610 "parse.c" /* yacc.c:1646  */
+#line 1619 "parse.c" /* yacc.c:1646  */
     break;
 
   case 13:
-#line 212 "parse.y" /* yacc.c:1646  */
+#line 215 "parse.y" /* yacc.c:1646  */
     { synerr( _("bad start condition list") ); }
-#line 1616 "parse.c" /* yacc.c:1646  */
+#line 1625 "parse.c" /* yacc.c:1646  */
     break;
 
   case 17:
-#line 223 "parse.y" /* yacc.c:1646  */
+#line 226 "parse.y" /* yacc.c:1646  */
     {
                        outfilename = xstrdup(nmstr);
                        did_outfilename = 1;
  insert_after(2, "</AST_Section1_Options_OutFile>");
  insert_before(0,"<AST_Section1_Options_OutFile>");
                        }
-#line 1627 "parse.c" /* yacc.c:1646  */
+#line 1636 "parse.c" /* yacc.c:1646  */
     break;
 
   case 18:
-#line 230 "parse.y" /* yacc.c:1646  */
+#line 233 "parse.y" /* yacc.c:1646  */
     { extra_type = xstrdup(nmstr); /*}*/
  insert_after(2, "</AST_Section1_Options_ExtraType>");
  insert_before(0, "<AST_Section1_Options_ExtraType>");
  }
-#line 1636 "parse.c" /* yacc.c:1646  */
+#line 1645 "parse.c" /* yacc.c:1646  */
     break;
 
   case 19:
-#line 235 "parse.y" /* yacc.c:1646  */
+#line 238 "parse.y" /* yacc.c:1646  */
     { prefix = xstrdup(nmstr);
                           if (strchr(prefix, '[') || strchr(prefix, ']'))
                               flexerror(_("Prefix must not contain [ or ]")); /*}*/
  insert_after(2, "</AST_Section1_Options_Prefix>");
  insert_before(0, "<AST_Section1_Options_Prefix>");
  }
-#line 1647 "parse.c" /* yacc.c:1646  */
+#line 1656 "parse.c" /* yacc.c:1646  */
     break;
 
   case 20:
-#line 242 "parse.y" /* yacc.c:1646  */
+#line 245 "parse.y" /* yacc.c:1646  */
     { yyclass = xstrdup(nmstr); /*}*/
  insert_after(2, "</AST_Section1_Options_YYClass>");
  insert_before(0, "<AST_Section1_Options_YYClass>");
  }
-#line 1656 "parse.c" /* yacc.c:1646  */
+#line 1665 "parse.c" /* yacc.c:1646  */
     break;
 
   case 21:
-#line 247 "parse.y" /* yacc.c:1646  */
+#line 250 "parse.y" /* yacc.c:1646  */
     { headerfilename = xstrdup(nmstr); /*}*/
  insert_after(2, "</AST_Section1_Options_HeaderFile>");
  insert_before(0, "<AST_Section1_Options_HeaderFile>");
  }
-#line 1665 "parse.c" /* yacc.c:1646  */
+#line 1674 "parse.c" /* yacc.c:1646  */
     break;
 
   case 22:
-#line 252 "parse.y" /* yacc.c:1646  */
+#line 255 "parse.y" /* yacc.c:1646  */
     { tablesext = true; tablesfilename = xstrdup(nmstr); /*}*/
  insert_after(2, "</AST_Section1_Options_TablesFile>");
  insert_before(0, "<AST_Section1_Options_TablesFile>");
  }
-#line 1674 "parse.c" /* yacc.c:1646  */
+#line 1683 "parse.c" /* yacc.c:1646  */
     break;
 
   case 23:
-#line 259 "parse.y" /* yacc.c:1646  */
+#line 262 "parse.y" /* yacc.c:1646  */
     { scon_stk_ptr = (yyvsp[-3]); /*}*/
  insert_after(4, "</AST_Section2_Rule>");
  insert_before(1, "<AST_Section2_Rule>");
  }
-#line 1683 "parse.c" /* yacc.c:1646  */
+#line 1692 "parse.c" /* yacc.c:1646  */
     break;
 
   case 24:
-#line 264 "parse.y" /* yacc.c:1646  */
+#line 267 "parse.y" /* yacc.c:1646  */
     { scon_stk_ptr = (yyvsp[-3]); /*}*/
  insert_after(4, "</AST_Section2_CompoundRule>");
  insert_before(1, "<AST_Section2_CompoundRule>");
  }
-#line 1692 "parse.c" /* yacc.c:1646  */
+#line 1701 "parse.c" /* yacc.c:1646  */
     break;
 
   case 26:
-#line 272 "parse.y" /* yacc.c:1646  */
+#line 275 "parse.y" /* yacc.c:1646  */
     {
                        /* Initialize for a parse of one rule. */
                        trlcontxt = variable_trail_rule = varlength = false;
@@ -1714,11 +1723,11 @@ yyreduce:
 
                        new_rule();
                        }
-#line 1707 "parse.c" /* yacc.c:1646  */
+#line 1716 "parse.c" /* yacc.c:1646  */
     break;
 
   case 27:
-#line 285 "parse.y" /* yacc.c:1646  */
+#line 288 "parse.y" /* yacc.c:1646  */
     {
                        pat = (yyvsp[0]);
                        finish_rule( pat, variable_trail_rule,
@@ -1755,11 +1764,11 @@ yyreduce:
  insert_after(1, "</AST_Section2_Rule_FLexRule>");
  insert_before(0, "<AST_Section2_Rule_FLexRule bol=\"true\">");
                        }
-#line 1748 "parse.c" /* yacc.c:1646  */
+#line 1757 "parse.c" /* yacc.c:1646  */
     break;
 
   case 28:
-#line 323 "parse.y" /* yacc.c:1646  */
+#line 326 "parse.y" /* yacc.c:1646  */
     {
                        pat = (yyvsp[0]);
                        finish_rule( pat, variable_trail_rule,
@@ -1784,11 +1793,11 @@ yyreduce:
  insert_after(0, "</AST_Section2_Rule_FLexRule>");
  insert_before(0, "<AST_Section2_Rule_FLexRule bol=\"false\">");
                        }
-#line 1777 "parse.c" /* yacc.c:1646  */
+#line 1786 "parse.c" /* yacc.c:1646  */
     break;
 
   case 29:
-#line 349 "parse.y" /* yacc.c:1646  */
+#line 352 "parse.y" /* yacc.c:1646  */
     {
                        if ( scon_stk_ptr > 0 )
                                build_eof_action();
@@ -1812,32 +1821,32 @@ yyreduce:
  insert_after(0, "</AST_Section2_Rule_EOFRule>");
  insert_before(0, "<AST_Section2_Rule_EOFRule>");
                        }
-#line 1805 "parse.c" /* yacc.c:1646  */
+#line 1814 "parse.c" /* yacc.c:1646  */
     break;
 
   case 30:
-#line 374 "parse.y" /* yacc.c:1646  */
+#line 377 "parse.y" /* yacc.c:1646  */
     { synerr( _("unrecognized rule") ); }
-#line 1811 "parse.c" /* yacc.c:1646  */
+#line 1820 "parse.c" /* yacc.c:1646  */
     break;
 
   case 31:
-#line 378 "parse.y" /* yacc.c:1646  */
+#line 381 "parse.y" /* yacc.c:1646  */
     { (yyval) = scon_stk_ptr; }
-#line 1817 "parse.c" /* yacc.c:1646  */
+#line 1826 "parse.c" /* yacc.c:1646  */
     break;
 
   case 32:
-#line 382 "parse.y" /* yacc.c:1646  */
+#line 385 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-2]); /*}*/
  insert_after(3, "</AST_Section2_StartConditions>");
  insert_before(0, "<AST_Section2_StartConditions>");
  }
-#line 1826 "parse.c" /* yacc.c:1646  */
+#line 1835 "parse.c" /* yacc.c:1646  */
     break;
 
   case 33:
-#line 388 "parse.y" /* yacc.c:1646  */
+#line 391 "parse.y" /* yacc.c:1646  */
     {
                        (yyval) = scon_stk_ptr;
 
@@ -1855,11 +1864,11 @@ yyreduce:
  insert_after(2, "</AST_Section2_StartConditions>");
  insert_before(0, "<AST_Section2_StartConditions wildcard=\"true\">");
                        }
-#line 1848 "parse.c" /* yacc.c:1646  */
+#line 1857 "parse.c" /* yacc.c:1646  */
     break;
 
   case 34:
-#line 407 "parse.y" /* yacc.c:1646  */
+#line 410 "parse.y" /* yacc.c:1646  */
     { (yyval) = scon_stk_ptr; /*}*/
  /* in this case, want empty rule associated with stuff on the right of us */
  /* therefore, move inter-token text from the right of us over to the left */
@@ -1871,17 +1880,17 @@ yyreduce:
  piece[piece2 - 1] = temp;
  insert_before(0, "<AST_Section2_StartConditions />");
  }
-#line 1864 "parse.c" /* yacc.c:1646  */
+#line 1873 "parse.c" /* yacc.c:1646  */
     break;
 
   case 37:
-#line 425 "parse.y" /* yacc.c:1646  */
+#line 428 "parse.y" /* yacc.c:1646  */
     { synerr( _("bad start condition list") ); }
-#line 1870 "parse.c" /* yacc.c:1646  */
+#line 1879 "parse.c" /* yacc.c:1646  */
     break;
 
   case 38:
-#line 429 "parse.y" /* yacc.c:1646  */
+#line 432 "parse.y" /* yacc.c:1646  */
     {
                        if ( (scnum = sclookup( nmstr )) == 0 )
                                format_pinpoint_message(
@@ -1902,11 +1911,11 @@ yyreduce:
                                        scon_stk[++scon_stk_ptr] = scnum;
                                }
                        }
-#line 1895 "parse.c" /* yacc.c:1646  */
+#line 1904 "parse.c" /* yacc.c:1646  */
     break;
 
   case 39:
-#line 456 "parse.y" /* yacc.c:1646  */
+#line 459 "parse.y" /* yacc.c:1646  */
     {
                        if ( transchar[lastst[(yyvsp[0])]] != SYM_EPSILON )
                                /* Provide final transition \now/ so it
@@ -1961,17 +1970,17 @@ yyreduce:
 
                        (yyval) = link_machines( (yyvsp[-1]), (yyvsp[0]) );
                        }
-#line 1954 "parse.c" /* yacc.c:1646  */
+#line 1963 "parse.c" /* yacc.c:1646  */
     break;
 
   case 40:
-#line 512 "parse.y" /* yacc.c:1646  */
+#line 515 "parse.y" /* yacc.c:1646  */
     { synerr( _("trailing context used twice") ); }
-#line 1960 "parse.c" /* yacc.c:1646  */
+#line 1969 "parse.c" /* yacc.c:1646  */
     break;
 
   case 41:
-#line 515 "parse.y" /* yacc.c:1646  */
+#line 518 "parse.y" /* yacc.c:1646  */
     {
                        headcnt = 0;
                        trailcnt = 1;
@@ -2015,11 +2024,11 @@ yyreduce:
  insert_after(1, "</RegexCharacterLiteral>");
  insert_before(1, "<RegexCharacterLiteral character_set=\"10 11\">");
                        }
-#line 2008 "parse.c" /* yacc.c:1646  */
+#line 2017 "parse.c" /* yacc.c:1646  */
     break;
 
   case 42:
-#line 560 "parse.y" /* yacc.c:1646  */
+#line 563 "parse.y" /* yacc.c:1646  */
     {
                        (yyval) = (yyvsp[0]);
 
@@ -2035,28 +2044,28 @@ yyreduce:
                                }
  insert_after(0, "<RegexEmpty />");
                        }
-#line 2028 "parse.c" /* yacc.c:1646  */
+#line 2037 "parse.c" /* yacc.c:1646  */
     break;
 
   case 43:
-#line 579 "parse.y" /* yacc.c:1646  */
+#line 582 "parse.y" /* yacc.c:1646  */
     {
                        varlength = true;
                        (yyval) = mkor( (yyvsp[-2]), (yyvsp[0]) );
  insert_after(2, "</RegexOr>");
  insert_before(0, "<RegexOr>");
                        }
-#line 2039 "parse.c" /* yacc.c:1646  */
+#line 2048 "parse.c" /* yacc.c:1646  */
     break;
 
   case 44:
-#line 587 "parse.y" /* yacc.c:1646  */
+#line 590 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2045 "parse.c" /* yacc.c:1646  */
+#line 2054 "parse.c" /* yacc.c:1646  */
     break;
 
   case 45:
-#line 592 "parse.y" /* yacc.c:1646  */
+#line 595 "parse.y" /* yacc.c:1646  */
     {
                        /* This rule is written separately so the
                         * reduction will occur before the trailing
@@ -2081,11 +2090,11 @@ yyreduce:
                        current_state_type = STATE_TRAILING_CONTEXT;
                        (yyval) = (yyvsp[-1]);
                        }
-#line 2074 "parse.c" /* yacc.c:1646  */
+#line 2083 "parse.c" /* yacc.c:1646  */
     break;
 
   case 46:
-#line 619 "parse.y" /* yacc.c:1646  */
+#line 622 "parse.y" /* yacc.c:1646  */
     {
                        /* This is where concatenation of adjacent patterns
                         * gets done.
@@ -2094,17 +2103,17 @@ yyreduce:
  insert_after(1, "</RegexSequence>");
  insert_before(0, "<RegexSequence>");
                        }
-#line 2087 "parse.c" /* yacc.c:1646  */
+#line 2096 "parse.c" /* yacc.c:1646  */
     break;
 
   case 47:
-#line 629 "parse.y" /* yacc.c:1646  */
+#line 632 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2093 "parse.c" /* yacc.c:1646  */
+#line 2102 "parse.c" /* yacc.c:1646  */
     break;
 
   case 48:
-#line 632 "parse.y" /* yacc.c:1646  */
+#line 635 "parse.y" /* yacc.c:1646  */
     {
                        varlength = true;
 
@@ -2134,11 +2143,11 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\" count1=\"%d\">", (yyvsp[-3]), (yyvsp[-1]));
  insert_before(0, piece_temp);
                        }
-#line 2127 "parse.c" /* yacc.c:1646  */
+#line 2136 "parse.c" /* yacc.c:1646  */
     break;
 
   case 49:
-#line 663 "parse.y" /* yacc.c:1646  */
+#line 666 "parse.y" /* yacc.c:1646  */
     {
                        varlength = true;
 
@@ -2154,11 +2163,11 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\">", (yyvsp[-2]));
  insert_before(0, piece_temp);
                        }
-#line 2147 "parse.c" /* yacc.c:1646  */
+#line 2156 "parse.c" /* yacc.c:1646  */
     break;
 
   case 50:
-#line 680 "parse.y" /* yacc.c:1646  */
+#line 683 "parse.y" /* yacc.c:1646  */
     {
                        /* The series could be something like "(foo)",
                         * in which case we have no idea what its length
@@ -2180,11 +2189,11 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\" count1=\"%d\">", (yyvsp[-1]), (yyvsp[-1]));
  insert_before(0, piece_temp);
                        }
-#line 2173 "parse.c" /* yacc.c:1646  */
+#line 2182 "parse.c" /* yacc.c:1646  */
     break;
 
   case 51:
-#line 705 "parse.y" /* yacc.c:1646  */
+#line 708 "parse.y" /* yacc.c:1646  */
     {
                        varlength = true;
 
@@ -2192,33 +2201,33 @@ yyreduce:
  insert_after(1, "</RegexRepeat>");
  insert_before(0, "<RegexRepeat count0=\"0\">");
                        }
-#line 2185 "parse.c" /* yacc.c:1646  */
+#line 2194 "parse.c" /* yacc.c:1646  */
     break;
 
   case 52:
-#line 714 "parse.y" /* yacc.c:1646  */
+#line 717 "parse.y" /* yacc.c:1646  */
     {
                        varlength = true;
                        (yyval) = mkposcl( (yyvsp[-1]) );
  insert_after(1, "</RegexRepeat>");
  insert_before(0, "<RegexRepeat count0=\"1\">");
                        }
-#line 2196 "parse.c" /* yacc.c:1646  */
+#line 2205 "parse.c" /* yacc.c:1646  */
     break;
 
   case 53:
-#line 722 "parse.y" /* yacc.c:1646  */
+#line 725 "parse.y" /* yacc.c:1646  */
     {
                        varlength = true;
                        (yyval) = mkopt( (yyvsp[-1]) );
  insert_after(1, "</RegexRepeat>");
  insert_before(0, "<RegexRepeat count0=\"0\" count1=\"1\">");
                        }
-#line 2207 "parse.c" /* yacc.c:1646  */
+#line 2216 "parse.c" /* yacc.c:1646  */
     break;
 
   case 54:
-#line 730 "parse.y" /* yacc.c:1646  */
+#line 733 "parse.y" /* yacc.c:1646  */
     {
                        varlength = true;
 
@@ -2248,11 +2257,11 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\" count1=\"%d\">", (yyvsp[-3]), (yyvsp[-1]));
  insert_before(0, piece_temp);
                        }
-#line 2241 "parse.c" /* yacc.c:1646  */
+#line 2250 "parse.c" /* yacc.c:1646  */
     break;
 
   case 55:
-#line 761 "parse.y" /* yacc.c:1646  */
+#line 764 "parse.y" /* yacc.c:1646  */
     {
                        varlength = true;
 
@@ -2268,11 +2277,11 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\">", (yyvsp[-2]));
  insert_before(0, piece_temp);
                        }
-#line 2261 "parse.c" /* yacc.c:1646  */
+#line 2270 "parse.c" /* yacc.c:1646  */
     break;
 
   case 56:
-#line 778 "parse.y" /* yacc.c:1646  */
+#line 781 "parse.y" /* yacc.c:1646  */
     {
                        /* The singleton could be something like "(foo)",
                         * in which case we have no idea what its length
@@ -2293,11 +2302,11 @@ yyreduce:
  sprintf(piece_temp, "<RegexRepeat count0=\"%d\" count1=\"%d\">", (yyvsp[-1]), (yyvsp[-1]));
  insert_before(0, piece_temp);
                        }
-#line 2286 "parse.c" /* yacc.c:1646  */
+#line 2295 "parse.c" /* yacc.c:1646  */
     break;
 
   case 57:
-#line 800 "parse.y" /* yacc.c:1646  */
+#line 803 "parse.y" /* yacc.c:1646  */
     {
                        if ( ! madeany )
                                {
@@ -2338,11 +2347,11 @@ yyreduce:
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 10 11 256\">");
  }
                        }
-#line 2331 "parse.c" /* yacc.c:1646  */
+#line 2340 "parse.c" /* yacc.c:1646  */
     break;
 
   case 58:
-#line 842 "parse.y" /* yacc.c:1646  */
+#line 845 "parse.y" /* yacc.c:1646  */
     {
                                /* Sort characters for fast searching.
                                 */
@@ -2359,11 +2368,11 @@ yyreduce:
 
                        (yyval) = mkstate( -(yyvsp[0]) );
                        }
-#line 2352 "parse.c" /* yacc.c:1646  */
+#line 2361 "parse.c" /* yacc.c:1646  */
     break;
 
   case 59:
-#line 860 "parse.y" /* yacc.c:1646  */
+#line 863 "parse.y" /* yacc.c:1646  */
     {
                        ++rulelen;
 
@@ -2372,50 +2381,59 @@ yyreduce:
 
                        (yyval) = mkstate( -(yyvsp[0]) );
                        }
-#line 2365 "parse.c" /* yacc.c:1646  */
+#line 2374 "parse.c" /* yacc.c:1646  */
     break;
 
   case 60:
-#line 870 "parse.y" /* yacc.c:1646  */
+#line 873 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 2371 "parse.c" /* yacc.c:1646  */
+#line 2380 "parse.c" /* yacc.c:1646  */
     break;
 
   case 61:
-#line 873 "parse.y" /* yacc.c:1646  */
+#line 876 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); /*}*/
  insert_after(2, "</RegexGroup>");
  insert_before(0, "<RegexGroup>");
  }
-#line 2380 "parse.c" /* yacc.c:1646  */
+#line 2389 "parse.c" /* yacc.c:1646  */
     break;
 
   case 62:
-#line 879 "parse.y" /* yacc.c:1646  */
+#line 882 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 2386 "parse.c" /* yacc.c:1646  */
+#line 2395 "parse.c" /* yacc.c:1646  */
     break;
 
   case 63:
-#line 882 "parse.y" /* yacc.c:1646  */
+#line 885 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); /*}*/
  insert_after(3, "</RegexGroupName>");
  insert_before(0, "<RegexGroupName>");
 }
-#line 2395 "parse.c" /* yacc.c:1646  */
+#line 2404 "parse.c" /* yacc.c:1646  */
     break;
 
   case 64:
-#line 888 "parse.y" /* yacc.c:1646  */
+#line 891 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); /*}*/
  insert_after(3, "</RegexGroupAction>");
  insert_before(0, "<RegexGroupAction>");
 }
-#line 2404 "parse.c" /* yacc.c:1646  */
+#line 2413 "parse.c" /* yacc.c:1646  */
     break;
 
   case 65:
-#line 894 "parse.y" /* yacc.c:1646  */
+#line 896 "parse.y" /* yacc.c:1646  */
+    { (yyval) = (yyvsp[-1]); /*}*/
+ insert_after(3, "</RegexGroupElement>");
+ insert_before(0, "<RegexGroupElement>");
+}
+#line 2422 "parse.c" /* yacc.c:1646  */
+    break;
+
+  case 66:
+#line 902 "parse.y" /* yacc.c:1646  */
     {
                        ++rulelen;
 
@@ -2431,48 +2449,48 @@ yyreduce:
  sprintf(piece_temp, "<RegexCharacterLiteral character_set=\"%d %d\">", (yyvsp[0]), (yyvsp[0]) + 1);
  insert_before(0, piece_temp);
                        }
-#line 2424 "parse.c" /* yacc.c:1646  */
+#line 2442 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 66:
-#line 911 "parse.y" /* yacc.c:1646  */
+  case 67:
+#line 919 "parse.y" /* yacc.c:1646  */
     { (yyval) = ccl_set_diff  ((yyvsp[-2]), (yyvsp[0])); /*}*/
  insert_after(2, "</RegexCharacterAnd>");
  insert_after(2, "</RegexCharacterNot>");
  insert_before(2, "<RegexCharacterNot>");
  insert_before(0, "<RegexCharacterAnd>");
  }
-#line 2435 "parse.c" /* yacc.c:1646  */
+#line 2453 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 67:
-#line 917 "parse.y" /* yacc.c:1646  */
+  case 68:
+#line 925 "parse.y" /* yacc.c:1646  */
     { (yyval) = ccl_set_union ((yyvsp[-2]), (yyvsp[0])); /*}*/
  insert_after(2, "</RegexCharacterOr>");
  insert_before(0, "<RegexCharacterOr>");
  }
-#line 2444 "parse.c" /* yacc.c:1646  */
+#line 2462 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 69:
-#line 926 "parse.y" /* yacc.c:1646  */
+  case 70:
+#line 934 "parse.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 2450 "parse.c" /* yacc.c:1646  */
+#line 2468 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 70:
-#line 929 "parse.y" /* yacc.c:1646  */
+  case 71:
+#line 937 "parse.y" /* yacc.c:1646  */
     {
                        cclnegate( (yyvsp[-1]) );
                        (yyval) = (yyvsp[-1]);
  insert_after(2, "</RegexCharacterNot>");
  insert_before(1, "<RegexCharacterNot>");
                        }
-#line 2461 "parse.c" /* yacc.c:1646  */
+#line 2479 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 71:
-#line 938 "parse.y" /* yacc.c:1646  */
+  case 72:
+#line 946 "parse.y" /* yacc.c:1646  */
     {
 
                        if (sf_case_ins())
@@ -2536,11 +2554,11 @@ yyreduce:
  insert_before(1, piece_temp);
  insert_before(0, "<RegexCharacterOr>");
                        }
-#line 2529 "parse.c" /* yacc.c:1646  */
+#line 2547 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 72:
-#line 1003 "parse.y" /* yacc.c:1646  */
+  case 73:
+#line 1011 "parse.y" /* yacc.c:1646  */
     {
                        ccladd( (yyvsp[-1]), (yyvsp[0]) );
                        cclsorted = cclsorted && ((yyvsp[0]) > lastchar);
@@ -2562,11 +2580,11 @@ yyreduce:
  insert_before(1, piece_temp);
  insert_before(0, "<RegexCharacterOr>");
                        }
-#line 2555 "parse.c" /* yacc.c:1646  */
+#line 2573 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 73:
-#line 1026 "parse.y" /* yacc.c:1646  */
+  case 74:
+#line 1034 "parse.y" /* yacc.c:1646  */
     {
                        /* Too hard to properly maintain cclsorted. */
                        cclsorted = false;
@@ -2574,76 +2592,76 @@ yyreduce:
  insert_after(1, "</RegexCharacterOr>");
  insert_before(0, "<RegexCharacterOr>");
                        }
-#line 2567 "parse.c" /* yacc.c:1646  */
+#line 2585 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 74:
-#line 1035 "parse.y" /* yacc.c:1646  */
+  case 75:
+#line 1043 "parse.y" /* yacc.c:1646  */
     {
                        cclsorted = true;
                        lastchar = 0;
                        currccl = (yyval) = cclinit();
  insert_before(0, "<RegexCharacterLiteral character_set=\"\" />");
                        }
-#line 2578 "parse.c" /* yacc.c:1646  */
+#line 2596 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 75:
-#line 1044 "parse.y" /* yacc.c:1646  */
+  case 76:
+#line 1052 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isalnum); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"48 58 65 91 97 123\">");
  }
-#line 2587 "parse.c" /* yacc.c:1646  */
+#line 2605 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 76:
-#line 1048 "parse.y" /* yacc.c:1646  */
+  case 77:
+#line 1056 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isalpha); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"65 91 97 123\">");
  }
-#line 2596 "parse.c" /* yacc.c:1646  */
+#line 2614 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 77:
-#line 1052 "parse.y" /* yacc.c:1646  */
+  case 78:
+#line 1060 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(IS_BLANK); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"9 10 32 33\">");
  }
-#line 2605 "parse.c" /* yacc.c:1646  */
+#line 2623 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 78:
-#line 1056 "parse.y" /* yacc.c:1646  */
+  case 79:
+#line 1064 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(iscntrl); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 32\">");
  }
-#line 2614 "parse.c" /* yacc.c:1646  */
+#line 2632 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 79:
-#line 1060 "parse.y" /* yacc.c:1646  */
+  case 80:
+#line 1068 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isdigit); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"48 58\">");
  }
-#line 2623 "parse.c" /* yacc.c:1646  */
+#line 2641 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 80:
-#line 1064 "parse.y" /* yacc.c:1646  */
+  case 81:
+#line 1072 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isgraph); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"33 127\">");
  }
-#line 2632 "parse.c" /* yacc.c:1646  */
+#line 2650 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 81:
-#line 1068 "parse.y" /* yacc.c:1646  */
+  case 82:
+#line 1076 "parse.y" /* yacc.c:1646  */
     { 
                           CCL_EXPR(islower);
                           if (sf_case_ins())
@@ -2658,47 +2676,47 @@ yyreduce:
  insert_before(0, "<RegexCharacterLiteral character_set=\"97 123\">");
  }
                         }
-#line 2651 "parse.c" /* yacc.c:1646  */
+#line 2669 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 82:
-#line 1082 "parse.y" /* yacc.c:1646  */
+  case 83:
+#line 1090 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isprint); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"32 127\">");
  }
-#line 2660 "parse.c" /* yacc.c:1646  */
+#line 2678 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 83:
-#line 1086 "parse.y" /* yacc.c:1646  */
+  case 84:
+#line 1094 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(ispunct); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"33 48 58 65 91 97 123 127\">");
  }
-#line 2669 "parse.c" /* yacc.c:1646  */
+#line 2687 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 84:
-#line 1090 "parse.y" /* yacc.c:1646  */
+  case 85:
+#line 1098 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isspace); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"9 14 32 33\">");
  }
-#line 2678 "parse.c" /* yacc.c:1646  */
+#line 2696 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 85:
-#line 1094 "parse.y" /* yacc.c:1646  */
+  case 86:
+#line 1102 "parse.y" /* yacc.c:1646  */
     { CCL_EXPR(isxdigit); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"48 58 65 71 97 103\">");
  }
-#line 2687 "parse.c" /* yacc.c:1646  */
+#line 2705 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 86:
-#line 1098 "parse.y" /* yacc.c:1646  */
+  case 87:
+#line 1106 "parse.y" /* yacc.c:1646  */
     {
                     CCL_EXPR(isupper);
                     if (sf_case_ins())
@@ -2713,101 +2731,101 @@ yyreduce:
  insert_before(0, "<RegexCharacterLiteral character_set=\"65 91\">");
  }
                                }
-#line 2706 "parse.c" /* yacc.c:1646  */
+#line 2724 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 87:
-#line 1113 "parse.y" /* yacc.c:1646  */
+  case 88:
+#line 1121 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isalnum); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 48 58 65 91 97 123 256\">");
  }
-#line 2715 "parse.c" /* yacc.c:1646  */
+#line 2733 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 88:
-#line 1117 "parse.y" /* yacc.c:1646  */
+  case 89:
+#line 1125 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isalpha); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 65 91 97 123 256\">");
  }
-#line 2724 "parse.c" /* yacc.c:1646  */
+#line 2742 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 89:
-#line 1121 "parse.y" /* yacc.c:1646  */
+  case 90:
+#line 1129 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(IS_BLANK); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 9 10 32 33 256\">");
  }
-#line 2733 "parse.c" /* yacc.c:1646  */
+#line 2751 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 90:
-#line 1125 "parse.y" /* yacc.c:1646  */
+  case 91:
+#line 1133 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(iscntrl); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"32 256\">");
  }
-#line 2742 "parse.c" /* yacc.c:1646  */
+#line 2760 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 91:
-#line 1129 "parse.y" /* yacc.c:1646  */
+  case 92:
+#line 1137 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isdigit); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 48 58 256\">");
  }
-#line 2751 "parse.c" /* yacc.c:1646  */
+#line 2769 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 92:
-#line 1133 "parse.y" /* yacc.c:1646  */
+  case 93:
+#line 1141 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isgraph); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 33 127 256\">");
  }
-#line 2760 "parse.c" /* yacc.c:1646  */
+#line 2778 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 93:
-#line 1137 "parse.y" /* yacc.c:1646  */
+  case 94:
+#line 1145 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isprint); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 32 127 256\">");
  }
-#line 2769 "parse.c" /* yacc.c:1646  */
+#line 2787 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 94:
-#line 1141 "parse.y" /* yacc.c:1646  */
+  case 95:
+#line 1149 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(ispunct); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 33 48 58 65 91 97 123 127 256\">");
  }
-#line 2778 "parse.c" /* yacc.c:1646  */
+#line 2796 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 95:
-#line 1145 "parse.y" /* yacc.c:1646  */
+  case 96:
+#line 1153 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isspace); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 9 14 32 33 256\">");
  }
-#line 2787 "parse.c" /* yacc.c:1646  */
+#line 2805 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 96:
-#line 1149 "parse.y" /* yacc.c:1646  */
+  case 97:
+#line 1157 "parse.y" /* yacc.c:1646  */
     { CCL_NEG_EXPR(isxdigit); /*}*/
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 48 58 65 71 97 103 256\">");
  }
-#line 2796 "parse.c" /* yacc.c:1646  */
+#line 2814 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 97:
-#line 1153 "parse.y" /* yacc.c:1646  */
+  case 98:
+#line 1161 "parse.y" /* yacc.c:1646  */
     { 
                                if ( sf_case_ins() )
                                        lwarn(_("[:^lower:] is ambiguous in case insensitive scanner"));
@@ -2816,11 +2834,11 @@ yyreduce:
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 97 123 256\">");
                                }
-#line 2809 "parse.c" /* yacc.c:1646  */
+#line 2827 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 98:
-#line 1161 "parse.y" /* yacc.c:1646  */
+  case 99:
+#line 1169 "parse.y" /* yacc.c:1646  */
     {
                                if ( sf_case_ins() )
                                        lwarn(_("[:^upper:] ambiguous in case insensitive scanner"));
@@ -2829,11 +2847,11 @@ yyreduce:
  insert_after(0, "</RegexCharacterLiteral>");
  insert_before(0, "<RegexCharacterLiteral character_set=\"0 65 91 256\">");
                                }
-#line 2822 "parse.c" /* yacc.c:1646  */
+#line 2840 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 99:
-#line 1172 "parse.y" /* yacc.c:1646  */
+  case 100:
+#line 1180 "parse.y" /* yacc.c:1646  */
     {
                        if ( (yyvsp[0]) == nlch )
                                rule_has_nl[num_rules] = true;
@@ -2852,19 +2870,19 @@ yyreduce:
  insert_before(1, piece_temp);
  insert_before(0, "<RegexSequence>");
                        }
-#line 2845 "parse.c" /* yacc.c:1646  */
+#line 2863 "parse.c" /* yacc.c:1646  */
     break;
 
-  case 100:
-#line 1192 "parse.y" /* yacc.c:1646  */
+  case 101:
+#line 1200 "parse.y" /* yacc.c:1646  */
     { (yyval) = mkstate( SYM_EPSILON ); /*}*/
  insert_before(0, "<RegexEmpty />");
  }
-#line 2853 "parse.c" /* yacc.c:1646  */
+#line 2871 "parse.c" /* yacc.c:1646  */
     break;
 
 
-#line 2857 "parse.c" /* yacc.c:1646  */
+#line 2875 "parse.c" /* yacc.c:1646  */
       default: break;
     }
  int i;
@@ -3109,7 +3127,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 1198 "parse.y" /* yacc.c:1906  */
+#line 1206 "parse.y" /* yacc.c:1906  */
 
 
 
index 68eaa56..a4abb4f 100644 (file)
@@ -86,10 +86,12 @@ extern int yydebug;
     CCE_NEG_XDIGIT = 296,
     CCL_OP_DIFF = 297,
     CCL_OP_UNION = 298,
-    BEGIN_REPEAT_POSIX = 299,
-    END_REPEAT_POSIX = 300,
-    BEGIN_REPEAT_FLEX = 301,
-    END_REPEAT_FLEX = 302
+    TOK_ACTION_GROUP = 299,
+    TOK_ELEMENT_GROUP = 300,
+    BEGIN_REPEAT_POSIX = 301,
+    END_REPEAT_POSIX = 302,
+    BEGIN_REPEAT_FLEX = 303,
+    END_REPEAT_FLEX = 304
   };
 #endif
 /* Tokens.  */
@@ -134,10 +136,12 @@ extern int yydebug;
 #define CCE_NEG_XDIGIT 296
 #define CCL_OP_DIFF 297
 #define CCL_OP_UNION 298
-#define BEGIN_REPEAT_POSIX 299
-#define END_REPEAT_POSIX 300
-#define BEGIN_REPEAT_FLEX 301
-#define END_REPEAT_FLEX 302
+#define TOK_ACTION_GROUP 299
+#define TOK_ELEMENT_GROUP 300
+#define BEGIN_REPEAT_POSIX 301
+#define END_REPEAT_POSIX 302
+#define BEGIN_REPEAT_FLEX 303
+#define END_REPEAT_FLEX 304
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
index aa85ec6..8811acc 100644 (file)
@@ -12,6 +12,9 @@
 
 %left CCL_OP_DIFF CCL_OP_UNION
 
+/* Nick extra rules for action groups */
+%token TOK_ACTION_GROUP TOK_ELEMENT_GROUP
+
 /*
  *POSIX and AT&T lex place the
  * precedence of the repeat operator, {}, below that of concatenation.
@@ -884,11 +887,16 @@ singleton :  singleton '*'
  insert_before(0, "<RegexGroupName>");
 }
                /* Nick extra rules for action groups */
-               | '(' '{' re ')'
+               | '(' TOK_ACTION_GROUP re ')'
                        { $$ = $3; /*}*/
  insert_after(3, "</RegexGroupAction>");
  insert_before(0, "<RegexGroupAction>");
 }
+               | '(' TOK_ELEMENT_GROUP re ')'
+                       { $$ = $3; /*}*/
+ insert_after(3, "</RegexGroupElement>");
+ insert_before(0, "<RegexGroupElement>");
+}
 
                |  CHAR
                        {
index b7ef69b..6df26e6 100644 (file)
@@ -378,8 +378,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 269
-#define YY_END_OF_BUFFER 270
+#define YY_NUM_RULES 271
+#define YY_END_OF_BUFFER 272
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -387,135 +387,135 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[1153] =
+static yyconst flex_int16_t yy_accept[1158] =
     {   0,
-        0,    0,    0,    0,    0,    0,  249,  249,   40,   40,
+        0,    0,    0,    0,    0,    0,  250,  250,   40,   40,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,   21,   21,
-      242,  242,    0,    0,    0,    0,    0,    0,    0,    0,
+      243,  243,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,   21,   21,
-      253,  253,  242,  242,    0,    0,  264,  264,  264,  264,
-      270,  268,    9,   20,  268,   18,    1,   19,  268,  268,
-      268,  268,   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,  249,
-
-      250,  250,   40,   42,   40,   41,   40,   40,   41,   41,
-       41,   50,   49,   51,  268,  169,  169,  164,  169,  165,
-      166,  168,  170,  221,  222,  221,  219,  218,  220,  171,
-      173,  171,  172,  171,  188,  188,  188,  188,  190,  192,
-      190,  190,  190,  190,  191,  231,  236,  231,  235,  234,
-      237,  232,  232,  232,  237,  237,  229,  230,  268,  130,
-      268,   21,   23,   21,   22,   22,   22,  238,  244,  238,
-      239,  245,  245,  245,  227,  227,  228,  227,  227,  227,
-      227,  227,  227,  227,  129,   53,   52,  129,  129,  129,
-      129,   54,  129,  129,  129,  129,  129,  129,  129,  129,
+      254,  254,  243,  243,    0,    0,    0,    0,  266,  266,
+      266,  266,  272,  270,    9,   20,  270,   18,    1,   19,
+      270,  270,  270,  270,   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,  250,  251,  251,   40,   42,   40,   41,   40,   40,
+       41,   41,   41,   50,   49,   51,  270,  169,  169,  164,
+      169,  165,  166,  168,  170,  222,  223,  222,  220,  219,
+      221,  171,  173,  171,  172,  171,  189,  189,  189,  189,
+      191,  193,  191,  191,  191,  191,  192,  232,  237,  232,
+      236,  235,  238,  233,  233,  233,  238,  238,  230,  231,
+      270,  130,  270,   21,   23,   21,   22,   22,   22,  239,
+      245,  239,  240,  246,  246,  246,  228,  228,  229,  228,
+      228,  228,  228,  228,  228,  228,  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,   36,   33,   36,   34,   48,   45,  268,
-       48,   48,   44,   43,  268,  178,  177,  268,  179,  180,
-      181,  176,  182,  183,  184,  185,   31,   32,   31,   30,
-       28,   29,   28,   27,   22,  253,  254,  254,  240,  240,
-      241,  267,  266,  267,  258,  257,  267,  255,  256,  262,
-      262,  263,  267,  260,  260,  261,    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,
-
-      246,  246,  246,    0,    0,  142,    0,  147,  137,    0,
-        0,    0,  139,  140,  152,  138,    0,  136,  134,  133,
-      131,  132,  249,  247,  248,   40,   42,   40,   40,   37,
-       38,    0,   50,   49,   51,    0,  164,    0,  164,  167,
-      168,  222,  218,  173,    0,  186,  187,  192,  189,  231,
-      236,    0,    0,  224,  232,  232,  232,    0,  130,    0,
-       21,   23,   24,  238,  244,  243,  242,  243,    0,    0,
-      228,  223,    0,    0,   53,   52,    0,  128,    0,    0,
-      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,   36,   33,   36,   34,   48,
+       45,  270,   48,   48,   44,   43,  270,  179,  178,  270,
+      270,  180,  181,  182,  176,  183,  184,  185,  186,   31,
+       32,   31,   30,   28,   29,   28,   27,   22,  254,  255,
+      255,  241,  241,  242,  269,  268,  269,  260,  259,  269,
+      256,  257,  258,  264,  264,  265,  269,  262,  262,  263,
+        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,  247,  247,  247,    0,    0,  142,
+        0,  147,  137,    0,    0,    0,  139,  140,  152,  138,
+        0,  136,  134,  133,  131,  132,  250,  248,  249,   40,
+       42,   40,   40,   37,   38,    0,   50,   49,   51,    0,
+      164,    0,  164,  167,  168,  223,  219,  173,    0,  187,
+      188,  193,  190,  232,  237,    0,    0,  225,  233,  233,
+      233,    0,  130,    0,   21,   23,   24,  239,  245,  244,
+      243,  244,    0,    0,  229,  224,    0,    0,   53,   52,
+        0,  128,    0,    0,  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,    0,
-        0,   31,   32,   29,   26,   25,  253,  251,  252,  240,
-      266,  259,  262,  265,  264,  265,  260,    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,  246,  246,  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,  233,  232,  232,    0,    0,
-
-      223,    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,   55,  129,  129,  129,  129,  129,
+      129,  129,  129,  129,  129,  129,    0,   35,   34,   48,
+       45,   46,   47,    0,    0,  177,   31,   32,   29,   26,
+       25,  254,  252,  253,  241,  268,  261,  264,  267,  266,
+      267,  262,    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,
+      247,  247,  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,
+
+      234,  233,  233,    0,    0,  224,    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,    0,  174,    0,    0,  175,    0,    0,    0,    0,
-        0,   14,    0,    0,    0,    0,    0,    0,    4,    8,
-        5,    0,  153,  153,  153,  153,  153,  153,  153,  246,
-      156,    0,    0,   40,   40,    0,    0,    0,    0,    0,
+      129,  129,  129,  129,  129,  129,    0,  174,    0,    0,
+      175,    0,    0,    0,    0,    0,   14,    0,    0,    0,
+        0,    0,    0,    4,    8,    5,    0,  153,  153,  153,
+      153,  153,  153,  153,  247,  156,    0,    0,   40,   40,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,  232,  232,    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,  217,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,  232,  232,    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,  233,  233,    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,  218,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  225,  226,  225,  226,  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,  233,  233,    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,
-      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,  193,
-      194,  195,  196,  197,  198,  199,  200,  201,  202,  203,
+
+      226,  227,  226,  227,  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,  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,  204,  205,
-      206,  207,  208,  209,  210,  211,  212,  213,  214,  215,
-        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,  216,  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
+        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,  194,  195,  196,  197,  198,  199,
+      200,  201,  202,  203,  204,    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,  205,  206,  207,  208,  209,  210,  211,
+      212,  213,  214,  215,  216,    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,  217,  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 yyconst flex_int32_t yy_ec[256] =
@@ -563,864 +563,868 @@ static yyconst flex_int32_t yy_meta[85] =
        16,   21,    1,   22
     } ;
 
-static yyconst flex_int16_t yy_base[1278] =
+static yyconst flex_int16_t yy_base[1283] =
     {   0,
         0,   84,  167,  250,  171,  184,  135,  142,  220,  231,
-      196,  200,  334,    0, 3801, 3800,  211,  416,  203,  212,
+      196,  200,  334,    0, 3820, 3819,  211,  416,  203,  212,
       189,  225,  266,  417,  500,    0,  207,  208,  234,  421,
       424,  436,  583,  588,  669,    0,  294,  304,  584,  751,
-      745,  748,  417,  576,  287,  306,  241,  441,  591,  595,
-      169,  238,  440,  600,  757,  777,  783,  795,  606,  800,
-     3854, 5052,  325, 5052, 3846,    0,  446, 5052, 3845,  430,
-      853, 3834,    0, 5052,  810, 5052, 3833, 5052,  453, 3805,
-     5052, 5052, 3792, 3780,  129,  746,  445,  862, 5052, 3800,
-      198, 3766, 5052, 5052, 5052, 3785,    0, 3781,  214,    0,
-
-     3729, 3726,    0, 5052, 3767, 5052,  420,  119, 3713, 3706,
-     3675,    0, 3725, 5052, 3719, 5052,  482, 3717, 3714, 5052,
-     3647,    0, 5052, 5052, 5052, 3699, 5052,  598, 5052, 5052,
-     5052, 3677, 5052,  789, 5052, 3653,  812,  180, 5052, 5052,
-     3672,    0, 3651,  823, 5052,    0, 5052, 3670, 5052, 3596,
-     3610,    0,  563,  167, 3569, 3566, 5052, 5052,  326, 5052,
-      420,    0, 5052, 3605, 3588, 3548, 3544,    0, 5052, 3587,
-     5052, 3531,  444, 3504, 5052,  471, 5052, 3555, 3473, 3541,
-      570,  189, 3500, 3496, 5052, 3531, 5052, 3526, 3520,  586,
-      748, 5052,  777,  824,  830,  785,  827,  861,    0,  813,
-
-      831,  874,  884,  888,  240,  899,  852,  381,  889,  881,
-      891,  904,  571, 5052, 5052, 3519,  935,    0, 5052, 3521,
-     3467, 3460, 5052, 5052,    0, 5052, 5052,    0, 5052, 5052,
-     5052, 5052, 5052, 5052, 5052, 5052,    0, 5052, 3510, 5052,
-     5052, 5052, 3508, 3488, 3471,    0, 3414, 3409,    0, 3460,
-     5052, 5052, 5052, 3459, 5052, 5052, 3446, 5052, 5052,    0,
-     3455, 5052,  604,    0, 3453, 5052,  771, 5052, 3432,    0,
-      874, 5052, 3431,  895,  901,    0,    0,  963,  967,  972,
-      976,    0,  934,    0,  457, 5052,    0,  998, 5052, 3426,
-     3345,  483, 5052, 3412, 3405, 5052,  948,  560,  967,  985,
-
-     5052,  610,    0, 3323, 3321, 5052, 3284, 1014, 5052, 3362,
-     3282, 3350, 3310, 5052,    0, 5052,  967, 5052,    0, 3310,
-        0,    0,    0, 5052, 5052,    0, 5052,  972,  971, 5052,
-     5052,  621,    0, 3307, 5052,  946, 3305, 3298, 3275, 5052,
-        0, 5052, 1005, 5052, 1070, 5052, 5052, 5052, 5052,    0,
-     5052, 3265,    0, 5052,    0,  975,  973,  644, 5052,  660,
-        0, 5052, 5052,    0, 5052, 5052, 3215, 2735,  776, 2651,
-     5052,    0,  977,  982, 2730, 5052, 2724, 5052,  992,  994,
-        0,  997,  747, 1004,  956, 2710,  994, 1020, 1000, 1008,
-     1010, 1018, 1031, 1019, 1010, 1052, 1058, 1020,    0, 1076,
-
-     5052, 1080, 1107, 1117, 1123, 1129, 1136, 1129, 1129, 1115,
-     1124, 1175, 2715, 5052, 1052,    0, 5052, 5052, 5052, 2708,
-     2686,    0, 5052, 5052, 5052, 5052,    0, 5052, 5052,    0,
-     5052, 5052,    0, 5052, 2607, 2613,    0, 1129,    0,    0,
-     1208, 5052, 2547, 1221, 1130, 1130, 1135,    0, 1139,    0,
-      754, 5052,  863, 5052, 1083, 5052, 1171, 5052, 1144,  905,
-     1194, 1217, 1297, 1199, 1363, 1058,    0, 5052, 5052, 2349,
-     1253, 5052, 5052, 1199,    0, 1192,    0,    0, 1214, 1209,
-     1175, 5052, 1257, 1363, 1364, 1365, 1374, 2328, 1367, 1366,
-     1382, 1375, 1376, 1378, 1437, 5052, 1227, 1221, 2292, 2219,
-
-        0, 1233, 1224, 1146, 1224, 1370, 1379, 1385, 1376, 1385,
-     1378,    0, 1396, 1352, 1403,    0, 1390, 1399, 1403, 1416,
-     1404, 1422, 2203, 1425, 1421, 1435, 1437, 1437, 1440, 1433,
-     1442, 1446, 1455, 1448, 1458, 1461, 1469, 1455, 1407, 1454,
-     1478, 1472, 1476, 1479, 1477, 1491, 1489, 1484, 1495, 1496,
-     1485, 1493, 5052, 2197, 2095, 5052, 2108, 2046, 1500, 1264,
-     1558, 5052, 1270, 1562, 1275, 1514, 1508, 1505,    0,  788,
-        0, 1537, 1600, 1666, 1702, 1765, 2066, 1672, 1831, 5052,
-     5052, 1531, 1654, 1658, 1653, 1976, 1666, 1671, 1667, 1672,
-     1680, 1678, 1674, 1670, 1842, 1673, 1679, 1832, 1833, 1834,
-
-     1831, 1835, 1843, 1850, 1845, 1853, 1681, 1839, 1829, 1847,
-     1834, 5052, 5052, 1840, 1831, 1832, 1839, 1869, 1865, 1898,
-     1876, 1869, 1891,    0,    0, 1888, 1875, 1878, 1895,    0,
-        0, 1992, 1883, 1893, 1928, 1886, 1884, 1894,    0, 1892,
-     1911, 1904, 1902, 1897, 1915, 1906, 1907, 1906,    0, 1917,
-     1930, 1931, 1918, 1925, 1924, 1942, 1928, 1948, 1937, 1950,
-     1939, 1936, 5052, 1279, 1283, 1932, 1945, 1942,    0,  791,
-     1289, 1906,  204, 1865, 1971, 2007, 1532, 1480, 1496, 1959,
-     1860, 1954, 1970, 5052, 1972, 1980, 1982, 1974, 1976, 1998,
-     1984, 2010, 2020, 2024, 2029, 2021, 2033, 2034, 2011, 2041,
-
-     2049, 2036, 2037, 2055, 2060, 2056, 2059, 2043, 2031, 2047,
-     2065,    0, 2055,    0, 2055,    0, 1866, 2066, 2060, 2077,
-        0, 2071, 1862, 2068,    0, 2086, 2074, 2085, 1804, 2081,
-     2077, 2092, 1752, 2080, 2088, 2087,    0, 2099, 2091, 2097,
-     2105,    0, 2099, 2106, 2106, 2117, 1702, 2121, 2123, 2117,
-     1698, 2114, 2115, 2115, 2131, 2121, 1742, 1549, 2127, 2137,
-     1586, 5052, 1710, 1679, 1539, 1542, 1544, 1674, 1629,    0,
-        0, 2152, 2148, 2157, 2154, 2150, 2147, 2168, 2161, 2173,
-     2177, 2179, 2178, 2180, 2181, 2188, 2182, 2194, 2192, 2208,
-     2195, 2211, 2215, 2220, 2187,    0,    0, 5052, 5052, 1583,
-
-        0, 2219, 2191, 2201, 2208, 2204, 2207, 2208, 1574, 2231,
-     2224, 2237, 2232, 2237, 2240, 2229, 2246,    0, 2252,    0,
-     2238,    0, 1559,    0, 2249, 2256, 2243,    0, 2273, 2246,
-        0, 2253, 2294,    0, 1514, 2258, 2260, 1490, 1744, 5052,
-     1745, 5052, 2245, 5052, 1512, 5052, 1506, 1432, 1428, 1388,
-     1329, 1267, 1264, 1260, 1256, 1251, 1247, 2277, 2273, 2304,
-     2306, 2298, 2305, 2315, 2323, 2317, 2318, 2325, 2324, 2335,
-     2318, 2314, 2319, 2324, 2331,    0, 2329,    0, 2324, 2340,
-     2330, 2335, 2336, 2338,    0, 2340,    0, 2343, 2345,    0,
-     2363,    0,    0,    0, 2357, 2341, 2349, 2378, 2347, 2368,
-
-     2365, 2376, 2390, 2374, 2382, 2393, 2380, 2385, 1150, 1142,
-     2388, 1748, 5052, 1135, 1129, 1124, 1118, 1113, 1107, 1104,
-     1036, 1027, 1013,  999, 1027, 1012,  940,  920,  916,  878,
-      833,  811,  806,  801,  795,  779, 2420, 2394, 2400, 2408,
-     2407, 2399,    0, 2403, 2413, 2414, 2423,    0, 2408, 2416,
-     2421, 2417, 2434, 2440, 2444, 2428, 5052, 2436, 2437, 2440,
-     2455, 2438, 2435,    0, 2457, 2460, 2445, 5052, 2449, 2452,
-     2467, 2450, 2451, 2453, 2472, 2458, 1749, 5052, 1753, 5052,
-     5052, 5052, 5052, 5052, 5052, 5052, 5052, 5052, 5052, 5052,
-      724,  715,  612,  566,  441,  426,  420,  267,  253,  247,
-
-      230,  183,  181, 2459, 2478, 2482, 2470, 2480, 2490, 2484,
-     2480, 2483, 2500, 2491, 2490,    0, 2498, 2497, 2495, 2499,
-     2504, 2513, 2518, 2510, 5052, 2504,    0, 2506, 2510, 2524,
-     2527, 2521, 5052, 2533, 2517, 2518, 2522, 2546, 5052, 5052,
-     5052, 5052, 5052, 5052, 5052, 5052, 5052, 5052, 5052, 5052,
-      122, 2544, 2543, 2534, 2536, 2538,    0, 2556, 2557,    0,
-     2547, 2547, 2568, 2565, 2564, 2567, 2574, 5052, 2562, 5052,
-     5052, 5052, 2571, 2580, 2568, 5052, 5052, 2565, 2585, 2582,
-     2570, 2575, 2575, 5052, 2579, 2593, 2592, 2593, 2598,    0,
-        0, 2608,    0, 2593,    0, 2604, 5052, 5052, 2600, 5052,
-
-     5052, 2602, 2615, 2603, 2615, 2620, 2618, 2624, 2629,    0,
-     2618, 2615, 2614, 2635,    0, 2616, 5052, 5052, 5052, 2638,
-     2639, 2627, 2634, 5052, 2646, 2639, 2645, 2651, 2638,    0,
-     5052, 2643, 5052, 2655, 2646, 2648, 2647,    0, 2662, 5052,
-     5052, 2663,    0, 2671, 2658, 2659,    0, 2672, 2677,    0,
-        0, 5052, 2739, 2761, 2783, 2805, 2827, 2849, 2871, 2893,
-     2915, 2937, 2959, 2981, 3003, 3025, 3047, 3069, 3091, 3113,
-     3135, 3157, 3179, 3201, 3223, 3245, 3258, 3278, 3290, 3310,
-     3332, 3346, 3366, 3388, 3410, 3432, 3445, 3465, 3487, 3509,
-     3527, 3540, 3560, 3582, 3604, 3626, 3648, 3662, 2292, 3678,
-
-     3700, 2700, 2711, 3720, 3742, 3764, 3786, 3808, 3830, 3843,
-     3863, 3885, 3256, 3288, 3907, 3920, 3940, 3962, 3984,  619,
-     3997, 4019, 4041, 4063, 4085, 4107, 4129, 4151, 4173, 4186,
-     4206, 4224, 4237, 4257, 4279, 4301, 4323, 4345, 4359, 4375,
-     4397, 4412, 4423, 4443, 4465, 4487, 4509, 4531, 4553, 4575,
-     4597, 4610, 4621, 4641, 4663, 4685,  893, 4698, 4720, 4742,
-     4764, 4786, 4808, 3344, 4821, 4841, 4863, 4877, 4888, 4899,
-     4919, 4941, 4954, 4974, 4987, 5007, 5029
+      826,  899,  417,  576,  287,  306,  241,  441,  591,  595,
+      169,  238,  440,  600,  755,  761,  771,  777,  793,  810,
+      606,  765, 3873, 5071,  325, 5071, 3865,    0,  446, 5071,
+     3864,  430,  973, 3853,    0, 5071,  783, 5071, 3852, 5071,
+      453, 3824, 5071, 5071, 3811, 3799,  129,  743,  445,  865,
+     5071, 3819,  198, 3785, 5071, 5071, 5071, 3804,    0, 3800,
+
+      214,    0, 3748, 3745,    0, 5071, 3786, 5071,  420,  119,
+     3732, 3725, 3694,    0, 3744, 5071, 3738, 5071,  482, 3736,
+     3733, 5071, 3666,    0, 5071, 5071, 5071, 3718, 5071,  598,
+     5071, 5071, 5071, 3696, 5071,  771, 5071, 3672,  789,  180,
+     5071, 5071, 3691,    0, 3670,  805, 5071,    0, 5071, 3689,
+     5071, 3615, 3629,    0,  563,  167, 3588, 3585, 5071, 5071,
+      326, 5071,  420,    0, 5071, 3624, 3607, 3567, 3563,    0,
+     5071, 3606, 5071, 3550,  444, 3523, 5071,  471, 5071, 3574,
+     3492, 3560,  570,  189, 3519, 3515, 5071, 3550, 5071, 3545,
+     3539,  586,  743, 5071,  758,  824,  786,  769,  824,  852,
+
+        0,  779,  816,  862,  875,  854,  240,  885,  849,  381,
+      867,  861,  880,  885,  571, 5071, 5071, 3538,  919,    0,
+     5071, 3540, 3486, 3479, 5071, 5071,    0, 5071, 5071,    0,
+     3450, 5071, 5071, 5071, 5071, 5071, 5071, 5071, 5071,    0,
+     5071, 3527, 5071, 5071, 5071, 3522, 3490, 3468,    0, 3430,
+     3427,    0, 3478, 5071, 5071, 5071, 3475, 5071, 5071, 3464,
+     5071, 5071, 5071,    0, 3472, 5071,  604,    0, 3451, 5071,
+      949, 5071, 3450,    0,  953, 5071, 3445,  895,  878,    0,
+        0,  964,  968, 1037, 1049,    0,  877,    0,  457, 5071,
+        0,  989, 5071, 3443, 3352,  483, 5071, 3428, 3419, 5071,
+
+      914,  560,  954, 1009, 5071,  610,    0, 3340, 3303, 5071,
+     3300, 1072, 5071, 3380, 3300, 3366, 3354, 5071,    0, 5071,
+      931, 5071,    0, 3374,    0,    0,    0, 5071, 5071,    0,
+     5071,  935,  940, 5071, 5071,  621,    0, 3351, 5071,  994,
+     3329, 3325, 3325, 5071,    0, 5071, 1042, 5071, 1128, 5071,
+     5071, 5071, 5071,    0, 5071, 3316,    0, 5071,    0,  958,
+      960,  644, 5071,  660,    0, 5071, 5071,    0, 5071, 5071,
+     3269, 3319,  803, 3236, 5071,    0,  967,  966, 3294, 5071,
+     3289, 5071,  977, 1001,    0, 1029,  710, 1046,  732, 3280,
+      830, 1053,  845,  974, 1027, 1044, 1056, 1051, 1027, 1044,
+
+     1051, 1050,    0, 1051, 5071, 1054, 1058, 1073, 1056, 1182,
+     1092, 1075, 1175, 1066, 1080, 1222, 2751, 5071, 1116,    0,
+     5071, 5071, 5071, 2745, 2728, 5071,    0, 5071, 5071, 5071,
+     5071,    0, 5071, 5071,    0, 5071, 5071,    0, 5071, 2699,
+     2746,    0, 1110,    0,    0, 1210, 5071, 2745, 1255, 1171,
+     1170, 1116,    0, 1178,    0,  754, 5071,  823, 5071,  868,
+     5071,  957, 5071, 1181,  776, 1210, 1215, 1301, 1367, 1403,
+      859,    0, 5071, 5071, 2663, 1139, 5071, 5071, 1192,    0,
+     1197,    0,    0, 1211, 1217, 1128, 5071, 1142, 1368, 1369,
+     1370, 1373, 2720, 1197, 1371, 1381, 1367, 1372, 1366, 1444,
+
+     5071, 1356, 1356, 2734, 2680,    0, 1368, 1370, 1189, 1370,
+     1380, 1391, 1419, 1412, 1421, 1410,    0, 1422, 1411, 1440,
+        0, 1415, 1423, 1432, 1445, 1437, 1447, 2684, 1454, 1452,
+     1468, 1465, 1467, 1474, 1469, 1475, 1479, 1484, 1477, 1488,
+     1492, 1489, 1489, 1487, 1486, 1500, 1494, 1497, 1499, 1498,
+     1507, 1508, 1504, 1515, 1517, 1506, 1510, 5071, 2439, 2373,
+     5071, 2330, 2270, 1522, 1180, 1568, 5071, 1222, 1589, 1285,
+     1539, 1539, 1541,    0,  836,    0, 1560, 1623, 1689, 1725,
+     1788, 2295, 1695, 1854, 5071, 5071, 1554, 1677, 1681, 1533,
+     2254, 1689, 1693, 1690, 1695, 1694, 1700, 1697, 1854, 1703,
+
+     1696, 1702, 1855, 1857, 1856, 1865, 1858, 1866, 1875, 1867,
+     1868, 1704, 1704, 1847, 1869, 1848, 5071, 5071, 1859, 1852,
+     1853, 1858, 1872, 1868, 1903, 1884, 1880, 1915,    0,    0,
+     1912, 1899, 1902, 1920,    0,    0, 2274, 1908, 1915, 2229,
+     1907, 1904, 1920,    0, 1911, 1929, 1922, 1920, 1915, 1932,
+     1920, 1921, 1923,    0, 1930, 1942, 1939, 1930, 1937, 1940,
+     1951, 1941, 1965, 1956, 1972, 1963, 2159, 5071, 1223, 1400,
+     1955, 1968, 1965,    0, 1010, 1596, 2101,  204, 2066, 1996,
+     2032, 1245,  969,  973, 1980, 2008, 1971, 1993, 5071, 1996,
+     2003, 1988, 1997, 2001, 2023, 2007, 2004, 2047, 2049, 2025,
+
+     2051, 2035, 2058, 2057, 2065, 2061, 2033, 2074, 2059, 2090,
+     2078, 2075, 2055, 2073, 2056, 2082,    0, 2071,    0, 2077,
+        0, 2015, 2088, 2075, 2093,    0, 2087, 2006, 2083,    0,
+     2108, 2095, 2106, 2005, 2100, 2097, 2111, 1987, 2094, 2102,
+     2102,    0, 2117, 2111, 2113, 2129,    0, 2116, 2122, 2124,
+     2133, 1905, 2140, 2143, 2138, 1888, 2136, 2137, 2136, 2156,
+     2142, 1900, 1278, 2145, 2157, 1601, 5071, 1840, 1765, 1560,
+     1184, 1240, 1756, 1755,    0,    0, 2158, 2169, 2170, 2173,
+     2177, 2178, 2180, 2183, 2194, 2199, 2181, 2197, 2198, 2200,
+     2195, 2206, 2211, 2209, 2216, 2217, 2214, 2226, 2237, 2234,
+
+        0,    0, 5071, 5071, 1762,    0, 2233, 2223, 2235, 2232,
+     2204, 2229, 2234, 1758, 2243, 2243, 2254, 2249, 2255, 2257,
+     2246, 2263,    0, 2267,    0, 2253,    0, 1751,    0, 2264,
+     2274, 2260,    0, 2300, 2266,    0, 2269, 2309,    0, 1679,
+     2281, 2281, 1671, 1396, 5071, 1597, 5071, 2276, 5071, 1698,
+     5071, 1655, 1598, 1572, 1558, 1541, 1537, 1509, 1471, 1468,
+     1446, 1430, 2307, 2288, 2321, 2289, 2320, 2330, 2332, 2337,
+     2333, 2340, 2341, 2345, 2362, 2329, 2339, 2332, 2340, 2347,
+        0, 2345,    0, 2340, 2360, 2349, 2351, 2354, 2360,    0,
+     2359,    0, 2363, 2366,    0, 2377,    0,    0,    0, 2376,
+
+     2361, 2373, 2407, 2374, 2385, 2385, 2388, 2401, 2385, 2393,
+     2409, 2394, 2404, 1391, 1359, 2406, 1613, 5071, 1351, 1301,
+     1249, 1229, 1223, 1192, 1167, 1094, 1091, 1050, 1044, 1043,
+     1009,  994,  945,  930,  913,  876,  870,  811,  798,  794,
+      787, 2430, 2413, 2423, 2431, 2430, 2420,    0, 2424, 2432,
+     2434, 2444,    0, 2427, 2438, 2442, 2439, 2447, 2456, 2461,
+     2446, 5071, 2453, 2455, 2457, 2473, 2457, 2454,    0, 2477,
+     2479, 2464, 5071, 2468, 2472, 2488, 2472, 2474, 2477, 2496,
+     2480, 1614, 5071, 1617, 5071, 5071, 5071, 5071, 5071, 5071,
+     5071, 5071, 5071, 5071, 5071,  738,  714,  612,  566,  441,
+
+      426,  420,  267,  253,  247,  230,  183,  181, 2481, 2486,
+     2502, 2491, 2499, 2504, 2504, 2492, 2498, 2517, 2506, 2510,
+        0, 2515, 2513, 2511, 2516, 2529, 2532, 2537, 2529, 5071,
+     2525,    0, 2527, 2531, 2537, 2547, 2539, 5071, 2553, 2538,
+     2543, 2539, 2554, 5071, 5071, 5071, 5071, 5071, 5071, 5071,
+     5071, 5071, 5071, 5071, 5071,  122, 2557, 2558, 2549, 2554,
+     2555,    0, 2571, 2574,    0, 2564, 2563, 2585, 2584, 2581,
+     2584, 2593, 5071, 2582, 5071, 5071, 5071, 2592, 2599, 2587,
+     5071, 5071, 2583, 2604, 2601, 2590, 2595, 2594, 5071, 2597,
+     2603, 2608, 2609, 2613,    0,    0, 2622,    0, 2605,    0,
+
+     2621, 5071, 5071, 2613, 5071, 5071, 2618, 2629, 2616, 2634,
+     2636, 2636, 2641, 2648,    0, 2635, 2635, 2634, 2648,    0,
+     2634, 5071, 5071, 5071, 2655, 2656, 2647, 2648, 5071, 2664,
+     2654, 2660, 2667, 2654,    0, 5071, 2659, 5071, 2671, 2662,
+     2664, 2664,    0, 2678, 5071, 5071, 2680,    0, 2688, 2674,
+     2678,    0, 2689, 2696,    0,    0, 5071, 2758, 2780, 2802,
+     2824, 2846, 2868, 2890, 2912, 2934, 2956, 2978, 3000, 3022,
+     3044, 3066, 3088, 3110, 3132, 3154, 3176, 3198, 3220, 3242,
+     3264, 3277, 3297, 3309, 3329, 3351, 3365, 3385, 3407, 3429,
+     3451, 3464, 3484, 3506, 3528, 3546, 3559, 3579, 3601, 3623,
+
+     3645, 3667, 3681, 1755, 3697, 3719, 1757, 1760, 3739, 3761,
+     3783, 3805, 3827, 3849, 3862, 3882, 3904, 2716, 2725, 3926,
+     3939, 3959, 3981, 4003,  619, 4016, 4038, 4060, 4082, 4104,
+     4126, 4148, 4170, 4192, 4205, 4225, 4243, 4256, 4276, 4298,
+     4320, 4342, 4364, 4378, 4394, 4416, 4431, 4442, 4462, 4484,
+     4506, 4528, 4550, 4572, 4594, 4616, 4629, 4640, 4660, 4682,
+     4704,  963, 4717, 4739, 4761, 4783, 4805, 4827, 3275, 4840,
+     4860, 4882, 4896, 4907, 4918, 4938, 4960, 4973, 4993, 5006,
+     5026, 5048
     } ;
 
-static yyconst flex_int16_t yy_def[1278] =
+static yyconst flex_int16_t yy_def[1283] =
     {   0,
-     1152, 1152, 1153, 1153, 1154, 1155, 1156, 1156, 1157, 1157,
-     1158, 1158, 1152,   13, 1159, 1159, 1160, 1160, 1161, 1161,
-     1162, 1162, 1163, 1163, 1152,   25, 1164, 1164, 1165, 1165,
-     1166, 1166, 1167, 1167, 1152,   35, 1168, 1168, 1169, 1169,
-     1159, 1159, 1159, 1159, 1170, 1170, 1171, 1171, 1165, 1165,
-     1172, 1172, 1173, 1173, 1174, 1174, 1175, 1175, 1176, 1176,
-     1152, 1152, 1152, 1152, 1152, 1177, 1152, 1152, 1152, 1152,
-     1178, 1152, 1179, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1180, 1181, 1182, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1183, 1152, 1183, 1184,
-
-     1152, 1152, 1185, 1152, 1185, 1152, 1185, 1185, 1152, 1152,
-     1152, 1186, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1187, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1181, 1152, 1152, 1181, 1188, 1152, 1152,
-     1152, 1189, 1152, 1181, 1152, 1190, 1152, 1190, 1152, 1191,
-     1152, 1192, 1192, 1192, 1152, 1152, 1152, 1152, 1193, 1152,
-     1193, 1194, 1152, 1194, 1152, 1152, 1152, 1195, 1152, 1195,
-     1152, 1152, 1196, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1197, 1152,
-     1152, 1152, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
-
-     1198, 1198, 1198, 1199, 1198, 1198, 1198, 1198, 1198, 1198,
-     1198, 1198, 1198, 1152, 1152, 1200, 1152, 1201, 1152, 1152,
-     1152, 1152, 1152, 1152, 1202, 1152, 1152, 1203, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1204, 1152, 1204, 1152,
-     1152, 1152, 1152, 1152, 1152, 1205, 1152, 1152, 1206, 1206,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1207,
-     1207, 1152, 1208, 1209, 1209, 1152, 1152, 1152, 1152, 1210,
-     1152, 1152, 1152, 1152, 1152, 1211, 1212, 1152, 1152, 1152,
-     1152, 1213, 1211, 1214, 1215, 1152, 1216, 1152, 1152, 1152,
-     1152, 1217, 1152, 1152, 1152, 1152, 1152, 1218, 1218, 1219,
-
-     1152, 1152, 1220, 1152, 1152, 1152, 1221, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1222, 1152, 1152, 1152, 1223, 1152,
-     1224, 1225, 1226, 1152, 1152, 1227, 1152, 1227, 1227, 1152,
-     1152, 1228, 1229, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1230, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1231,
-     1152, 1152, 1232, 1152, 1233, 1233, 1233, 1234, 1152, 1234,
-     1235, 1152, 1152, 1236, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1237, 1152, 1152, 1152, 1152, 1238, 1152, 1152, 1152,
-     1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239,
-     1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239,
-
-     1152, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239,
-     1239, 1239, 1240, 1152, 1152, 1241, 1152, 1152, 1152, 1242,
-     1243, 1244, 1152, 1152, 1152, 1152, 1245, 1152, 1152, 1246,
-     1152, 1152, 1247, 1152, 1152, 1152, 1248, 1152, 1249, 1250,
-     1251, 1152, 1152, 1152, 1152, 1152, 1152, 1252, 1249, 1253,
-     1254, 1152, 1254, 1152, 1255, 1152, 1255, 1152, 1152, 1256,
-     1256, 1256, 1152, 1256, 1256, 1152, 1257, 1152, 1152, 1258,
-     1152, 1152, 1152, 1152, 1259, 1152, 1260, 1261, 1262, 1262,
-     1263, 1152, 1263, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
-     1264, 1264, 1264, 1264, 1264, 1152, 1265, 1265, 1152, 1266,
-
-     1267, 1152, 1152, 1152, 1152, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1152, 1152, 1269, 1270, 1152, 1152, 1271, 1152, 1272,
-     1272, 1152, 1272, 1272, 1152, 1152, 1152, 1152, 1273, 1274,
-     1275, 1152, 1152, 1256,  465, 1152,  576, 1256,  465, 1152,
-     1152, 1152, 1152, 1262, 1262, 1152, 1264, 1264, 1264, 1264,
-     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
-
-     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1265, 1265, 1152,
-     1152, 1152, 1152, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1152, 1152,
-     1152, 1152, 1152, 1272, 1272, 1152, 1152, 1152, 1274, 1274,
-     1274, 1152,  573,  573, 1256,  465, 1256, 1256, 1256, 1152,
-     1152, 1262, 1262, 1152, 1264, 1264, 1264, 1264, 1264, 1264,
-     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
+     1157, 1157, 1158, 1158, 1159, 1160, 1161, 1161, 1162, 1162,
+     1163, 1163, 1157,   13, 1164, 1164, 1165, 1165, 1166, 1166,
+     1167, 1167, 1168, 1168, 1157,   25, 1169, 1169, 1170, 1170,
+     1171, 1171, 1172, 1172, 1157,   35, 1173, 1173, 1174, 1174,
+     1164, 1164, 1164, 1164, 1175, 1175, 1176, 1176, 1170, 1170,
+     1177, 1177, 1178, 1178, 1179, 1179, 1179, 1179, 1180, 1180,
+     1181, 1181, 1157, 1157, 1157, 1157, 1157, 1182, 1157, 1157,
+     1157, 1157, 1183, 1157, 1184, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1185, 1186, 1187, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1188, 1157,
+
+     1188, 1189, 1157, 1157, 1190, 1157, 1190, 1157, 1190, 1190,
+     1157, 1157, 1157, 1191, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1192, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1186, 1157, 1157, 1186, 1193,
+     1157, 1157, 1157, 1194, 1157, 1186, 1157, 1195, 1157, 1195,
+     1157, 1196, 1157, 1197, 1197, 1197, 1157, 1157, 1157, 1157,
+     1198, 1157, 1198, 1199, 1157, 1199, 1157, 1157, 1157, 1200,
+     1157, 1200, 1157, 1157, 1201, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1202, 1157, 1157, 1157, 1203, 1203, 1203, 1203, 1203, 1203,
+
+     1203, 1203, 1203, 1203, 1203, 1204, 1203, 1203, 1203, 1203,
+     1203, 1203, 1203, 1203, 1203, 1157, 1157, 1205, 1157, 1206,
+     1157, 1157, 1157, 1157, 1157, 1157, 1207, 1157, 1157, 1208,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1209,
+     1157, 1209, 1157, 1157, 1157, 1157, 1157, 1157, 1210, 1157,
+     1157, 1211, 1211, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1212, 1212, 1157, 1213, 1214, 1214, 1157,
+     1157, 1157, 1157, 1215, 1157, 1157, 1157, 1157, 1157, 1216,
+     1217, 1157, 1157, 1157, 1157, 1218, 1216, 1219, 1220, 1157,
+     1221, 1157, 1157, 1157, 1157, 1222, 1157, 1157, 1157, 1157,
+
+     1157, 1223, 1223, 1224, 1157, 1157, 1225, 1157, 1157, 1157,
+     1226, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1227, 1157,
+     1157, 1157, 1228, 1157, 1229, 1230, 1231, 1157, 1157, 1232,
+     1157, 1232, 1232, 1157, 1157, 1233, 1234, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1235, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1236, 1157, 1157, 1237, 1157, 1238, 1238,
+     1238, 1239, 1157, 1239, 1240, 1157, 1157, 1241, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1242, 1157, 1157, 1157, 1157,
+     1243, 1157, 1157, 1157, 1244, 1244, 1244, 1244, 1244, 1244,
+     1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,
 
-     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1265, 1265, 1152,
-     1152, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1152, 1152, 1152, 1152, 1152, 1276, 1152, 1152,
-     1274, 1152, 1274, 1152, 1256, 1256, 1256, 1152, 1152, 1262,
-     1262, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
-     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
-     1264, 1264, 1264, 1264, 1264, 1265, 1265, 1152, 1152, 1268,
+     1244, 1244, 1244, 1244, 1157, 1244, 1244, 1244, 1244, 1244,
+     1244, 1244, 1244, 1244, 1244, 1244, 1245, 1157, 1157, 1246,
+     1157, 1157, 1157, 1247, 1248, 1157, 1249, 1157, 1157, 1157,
+     1157, 1250, 1157, 1157, 1251, 1157, 1157, 1252, 1157, 1157,
+     1157, 1253, 1157, 1254, 1255, 1256, 1157, 1157, 1157, 1157,
+     1157, 1157, 1257, 1254, 1258, 1259, 1157, 1259, 1157, 1260,
+     1157, 1260, 1157, 1157, 1261, 1261, 1261, 1157, 1261, 1261,
+     1157, 1262, 1157, 1157, 1263, 1157, 1157, 1157, 1157, 1264,
+     1157, 1265, 1266, 1267, 1267, 1268, 1157, 1268, 1269, 1269,
+     1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
+
+     1157, 1270, 1270, 1157, 1271, 1272, 1157, 1157, 1157, 1157,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1157, 1157, 1274, 1275,
+     1157, 1157, 1276, 1157, 1277, 1277, 1157, 1277, 1277, 1157,
+     1157, 1157, 1157, 1278, 1279, 1280, 1157, 1157, 1261,  470,
+     1157,  581, 1261,  470, 1157, 1157, 1157, 1157, 1267, 1267,
+     1157, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
+
+     1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
+     1269, 1269, 1270, 1270, 1157, 1157, 1157, 1157, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1157, 1157, 1157, 1157, 1157, 1277, 1277,
+     1157, 1157, 1157, 1279, 1279, 1279, 1157,  578,  578, 1261,
+      470, 1261, 1261, 1261, 1157, 1157, 1267, 1267, 1157, 1269,
+     1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
+
+     1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
+     1269, 1269, 1270, 1270, 1157, 1157, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1157, 1157, 1157,
+     1157, 1157, 1281, 1157, 1157, 1279, 1157, 1279, 1157, 1261,
+     1261, 1261, 1157, 1157, 1267, 1267, 1269, 1269, 1269, 1269,
+     1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
+     1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
+
+     1270, 1270, 1157, 1157, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1157, 1273, 1273, 1273, 1157, 1273, 1157,
+     1157, 1157, 1157, 1281, 1157, 1281, 1157, 1157, 1157, 1157,
+     1157, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
+     1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
+     1269, 1269, 1269, 1269, 1269, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1157,
+
+     1157, 1157, 1157, 1157, 1157, 1273, 1273, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1282, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1269,
+     1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
+     1269, 1269, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1273, 1273,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1282, 1157, 1282, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
 
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1152, 1268,
-     1268, 1268, 1152, 1268, 1152, 1152, 1152, 1152, 1276, 1152,
-     1276, 1152, 1152, 1152, 1152, 1152, 1264, 1264, 1264, 1264,
-     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
-     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1152, 1152, 1152, 1152, 1152, 1152,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1269, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1273, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+
+     1273, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+     1273, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1273,
+     1273, 1273, 1273, 1273, 1273, 1157, 1157, 1157, 1157, 1273,
+     1273, 1273, 1273, 1273, 1157, 1157, 1273, 1273, 1273, 1273,
+     1273, 1273, 1273, 1273, 1273, 1273,    0, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
 
-     1268, 1268, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1277, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1264, 1264, 1264, 1264, 1264, 1264,
-     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1268, 1268, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1277, 1152, 1277, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-
-     1152, 1152, 1264, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1268, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1152, 1152, 1152, 1152,
-
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1268, 1268,
-     1268, 1268, 1268, 1268, 1268, 1268, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1268, 1268, 1268, 1268, 1268, 1268,
-     1152, 1152, 1152, 1152, 1268, 1268, 1268, 1268, 1268, 1152,
-     1152, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
-     1268,    0, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157
     } ;
 
-static yyconst flex_int16_t yy_nxt[5137] =
+static yyconst flex_int16_t yy_nxt[5156] =
     {   0,
-       62,   63,   64,   62,   65,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   66,   66,   66,
-       66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
-       66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
-       66,   66,   62,   62,   62,   62,   66,   66,   66,   66,
-       66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
-       66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
-       66,   62,   62,   62,   62,   67,   68,   62,   69,   62,
-       70,   62,   71,   62,   62,   62,   62,   62,   62,   62,
-
-       62,   72,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   73,   73,   73,   73,   73,   73,   73,   73,   73,
-       73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
-       73,   73,   73,   73,   73,   73,   62,   62,   62,   62,
-       73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
-       73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
-       73,   73,   73,   73,   73,   62,   62,   62,   75,   76,
-      329,   77,   78,   95,   79,   96, 1084,   80,   81,   82,
-       82,  299,  300,   82,   83,   98,   95,  101,   96,  102,
-       84,   62,   99,   82,  101,  347,  102,  113,  114,  329,
-
-      115,  113,  114, 1051,  115,  131,  315,  132,  133,  160,
-      160,  161,  161,  125,  131,  126,  132,  133,  357,   85,
-       86,  247,  104,  248,  105,  127,  765,   62,  106,  128,
-      128,  128,  128,  104,  347,  105,  163, 1050,  164,  111,
-      374,  136,  137,  242,  138,  243,  165,  357,   87,   82,
-       82,   88,   89,  244,   90,   78,  134,   79,   91,  460,
-       80,   81,   82,   82,  107,  134,   82,   83,  140,  374,
-      141,  108,  109,   92,  110,  107,   82,  136,  137,  316,
-      138,  142,  108,  109, 1049,  110,  166,  402,  167,  238,
-      247,  239,  248,  107,  129,  321,  215,  322,  240,  216,
-
-      108, 1048,   85,   86,  107,   93,  215, 1047,  238,  216,
-      239,  108,  217,  217,  217,  217,  402,  240,  143,  144,
-      145, 1046,  217,  217,  217,  217,  267,  268,  359,  269,
-      360,   87,   82,   82,  116,  117,  118,  116,  119,  116,
-      116,  116,  116,  116,  116,  116,  120,  116,  120,  116,
-      116,  116,  116,  116,  116,  116,  116,  116,  116,  121,
-      116,  122,  122,  122,  122,  122,  122,  122,  122,  122,
-      122,  122,  122,  122,  122,  122,  122,  122,  122,  122,
-      122,  122,  122,  122,  122,  122,  116,  116,  116,  116,
-      122,  122,  122,  122,  122,  122,  122,  122,  122,  122,
-
-      122,  122,  122,  122,  122,  122,  122,  122,  122,  122,
-      122,  122,  122,  122,  122,  116,  116,  116,  125,  140,
-      126,  141,  359,  163,  360,  164,  169,  407,  170,  171,
-      127,  274,  142,  165,  128,  128,  128,  128,  169,  233,
-      170,  171,  169,  242,  250,  243,  367,  271,  272,  251,
-      273,  328,  234,  244,  293,  293,  407,  294,  304,  452,
-      305,  453,  235,  306,  306,  306,  306,  236,  275,  143,
-      144,  145,  369,  166, 1045,  167,  172,  173,  174,  370,
-     1044,  328,  234,  336,  337,  456,  338,  457,  172,  173,
-      174,  235,  172,  173,  174, 1043,  236,  368,  275,  129,
-
-      146,  146,  147,  146,  148,  149,  146,  146,  146,  150,
-      146,  146,  146,  146,  146,  146,  146,  151,  146,  146,
-      146,  146,  146,  146,  146,  146,  146,  152,  152,  152,
-      152,  152,  152,  152,  152,  152,  152,  152,  152,  152,
-      152,  152,  152,  152,  153,  152,  152,  152,  152,  152,
-      152,  154,  155,  146,  156,  146,  152,  152,  152,  152,
-      152,  152,  152,  152,  152,  152,  152,  152,  152,  152,
-      152,  152,  152,  153,  152,  152,  152,  152,  152,  152,
-      154,  157,  146,  158,  176,  177,  219,  178,  220,  176,
-      177,  179,  178,  163,  356,  164,  179,  163,  233,  164,
-
-      180,  373,  169,  245,  250,  180,  435,  245,  253,  251,
-      265,  234,  461,  462,  379,  266,  343,  343,  343,  343,
-     1042,  235,  412,  482,  356,  483,  236,  181,  466,  466,
-      467,  373,  181,  467,  182,  183,  221,  184,  222,  182,
-      183,  234,  184,  166,  379,  167,  359,  166,  360,  167,
-      235,  412,  172,  173,  174,  236,  181,  436,  252,  263,
-      252,  181,  359,  182,  360,  223, 1041,  224,  182,  185,
-      186,  187,  185,  188,  189,  185,  185,  185,  185,  185,
-      185,  185,  185,  185,  185,  185,  185,  185,  190,  191,
-      185,  185,  185,  192,  185,  185,  193,  194,  195,  196,
-
-      197,  198,  199,  200,  201,  199,  199,  202,  203,  204,
-      205,  206,  199,  207,  208,  209,  210,  211,  212,  199,
-      213,  185,  185,  185,  185,  185,  193,  194,  195,  196,
-      197,  198,  199,  200,  201,  199,  199,  202,  203,  204,
-      205,  206,  207,  208,  209,  210,  211,  212,  199,  213,
-      185,  185,  185,  219,  225,  220,  452,  225,  453,  253,
-      226,  254,  255,  226,  302,  302,  256,  227,  228, 1040,
-      227,  228,  267,  268,  257,  269,  380,  369, 1039,  253,
-      229,  254,  255,  229,  370,  253,  256,  261,  262,  670,
-      230,  508,  670,  230,  257,  231,  303,  253,  231,  261,
-
-      262, 1002,  253,  221,  265,  222,  380,  302,  302,  266,
-      229,  288,  289,  229,  290,  382,  388, 1001,  291,  230,
-      508,  383,  230, 1000,  231,  303,  232,  231,  999,  232,
-      302,  302,  223,  998,  224,  252,  263,  252,  258,  303,
-      259,  302,  302,  386,  393,  382,  388,  252,  263,  252,
-      383,  384,  252,  263,  252,  997,  389,  387,  258,  385,
-      259,  277,  303,  308,  309,  452,  310,  453,  303,  671,
-      311,  394,  671,  303,  393,  271,  272,  390,  273,  312,
-      278,  384,  279,  406,  279,  313,  389,  387,  391,  385,
-      279,  303,  292,  279,  280,  281,  274,  279,  282,  283,
-
-      996,  394,  303,  284,  580,  395,  390,  580,  392,  396,
-      278,  397,  279,  406,  279,  398,  408,  314,  391,  400,
-      279,  409,  410,  279,  280,  281,  279,  282,  283,  401,
-      403,  411,  284,  275,  285,  395,  438,  392,  995,  396,
-      404,  397,  994,  405,  292,  398,  408,  336,  337,  400,
-      338,  409,  410,  415,  415,  415,  415,  461,  462,  401,
-      403,  411,  993,  275,  441,  442,  438,  443,  441,  442,
-      404,  443,  405,  441,  442,  449,  443,  441,  442,  459,
-      443,  444,  444,  444,  444,  444,  444,  444,  444,  463,
-      444,  444,  444,  444,  444,  444,  444,  444,  476,  288,
-
-      289,  511,  290,  464,  464,  449,  291,  445,  479,  459,
-      480,  497,  498,  502,  446,  308,  309,  447,  310,  461,
-      462,  503,  311,  343,  343,  343,  343,  504,  476,  505,
-      511,  312,  506,  509,  992,  465,  445,  313,  479,  513,
-      480,  497,  498,  502,  446,  516,  507,  447,  514,  991,
-      510,  503,  515,  990,  517,  518,  519,  504,  520,  505,
-      523,  521,  506,  509,  465,  522,  526,  989,  513,  314,
-      415,  415,  415,  415,  516,  507,  301,  301,  514,  510,
-      292,  988,  515,  517,  518,  456,  519,  457,  520,  523,
-      987,  521,  524,  525,  522,  526,  292,  484,  485,  486,
-
-      487,  488,  488,  489,  488,  488,  488,  488,  490,  488,
-      488,  488,  491,  488,  488,  492,  488,  493,  488,  488,
-      494,  488,  524,  525,  527,  495,  528,  484,  485,  486,
-      487,  488,  488,  489,  488,  488,  488,  488,  490,  488,
-      488,  488,  491,  488,  492,  488,  493,  488,  488,  494,
-      488,  529,  530,  527,  532,  528,  533,  538,  986,  541,
-      534,  985,  531,  536,  539,  535,  537,  984,  542,  559,
-      568,  540,  983,  456,  566,  457,  567,  482,  982,  483,
-      529,  570,  530,  981,  532,  572,  533,  538,  541,  980,
-      534,  531,  612,  536,  539,  535,  537,  542,  975,  559,
-
-      568,  540,  543,  566,  544,  567,  974,  545,  546,  561,
-      562,  570,  563,  547,  548,  572,  573,  578,  578,  549,
-      550,  612,  565,  442,  551,  443,  564,  564,  564,  564,
-      582,  552,  543,  583,  544,  574,  574,  545,  546,  444,
-      444,  444,  444,  547,  548,  584,  461,  462,  549,  550,
-      585,  461,  462,  551,  581,  581,  581,  581,  608,  482,
-      582,  483,  609,  583,  610,  611,  663,  575,  664,  924,
-      613,  460,  562,  923,  664,  584,  565,  442,  922,  443,
-      585,  663,  921,  664,  665,  562,  920,  563,  608,  919,
-      761,  762,  609,  763,  610,  611,  575,  460,  460,  613,
-
-      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
-      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
-      460,  460,  460,  460,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  461,
-      462,  918,  577,  460,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  460,  460,
-      460,  579,  579,  579,  579,  586,  586,  586,  586,  586,
-      579,  579,  579,  579,  579,  579,  586,  586,  586,  621,
-
-      586,  587,  588,  614,  586,  589,  615,  592,  597,  590,
-      917,  591,  616,  617,  618,  461,  462,  595,  596,  619,
-      579,  579,  579,  579,  579,  579,  593,  620,  621,  594,
-      622,  587,  588,  614,  623,  589,  615,  592,  597,  590,
-      591,  625,  616,  617,  618,  624,  626,  595,  596,  619,
-      916,  627,  646,  628,  915,  593,  630,  620,  594, 1152,
-      622,  631,  632,  623,  598,  599,  600,  601,  633,  634,
-      602,  625,  635,  636,  624,  603,  626,  637,  638,  604,
-      627,  646,  605,  628,  606,  639,  630,  607,  640,  641,
-      642,  631,  632,  645,  598,  599,  600,  601,  633,  634,
-
-      602,  647,  635,  636,  643,  603,  648,  637,  638,  604,
-      644,  605,  649,  606,  650,  639,  607,  651,  640,  641,
-      642,  652,  653,  645,  654,  655,  656,  657,  914,  658,
-      647,  662,  461,  462,  643,  659,  648,  913,  660,  661,
-      644,  666,  649,  667,  650,  668,  911,  651,  461,  462,
-      652,  840,  653,  841,  654,  655,  656,  657,  658,  561,
-      562,  662,  563,  665,  562,  659,  563,  660,  661,  672,
-      908,  666,  680,  667,  891,  668,  564,  564,  564,  564,
-      564,  564,  564,  564,  461,  462,  298,  761,  762,  880,
-      763,  461,  462,  460,  461,  462,  461,  462,  871,  672,
-
-      460,  460,  680,  460,  460,  460,  460,  460,  460,  460,
-      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
-      460,  460,  460,  460,  460,  460,  460,  673,  673,  673,
-      673,  673,  673,  673,  673,  673,  673,  673,  673,  673,
-      673,  673,  673,  673,  673,  673,  673,  673,  673,  673,
-      673,  673,  461,  462,  846,  674,  460,  673,  673,  673,
-      673,  673,  673,  673,  673,  673,  673,  673,  673,  673,
-      673,  673,  673,  673,  673,  673,  673,  673,  673,  673,
-      673,  460,  460,  460,  675,  675,  681,  682,  586,  586,
-      678,  678,  586,  586,  586,  586,  586,  683,  687,  845,
-
-      586,  586,  586,  586,  844,  689,  685,  690,  686,  692,
-      693,  707,  762,  688,  696,  695,  681,  682,  461,  462,
-      676,  676,  676,  676,  461,  462,  683,  691,  687,  676,
-      676,  676,  676,  676,  676,  689,  685,  690,  686,  692,
-      693,  707,  688,  757,  696,  695,  840,  840,  841,  841,
-      978,  978,  979,  979,  833,  978,  691,  979,  829,  676,
-      676,  676,  676,  676,  676,  460,  460,  817,  460,  460,
-      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
-      460,  460,  460,  460,  460,  460,  460,  677,  460,  460,
-      460,  460,  576,  576,  576,  576,  576,  576,  576,  576,
-
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  461,  462,  813,
-      460,  460,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  460,  460,  460,  679,
-      679,  679,  679,  586,  586,  586,  586,  586,  679,  679,
-      679,  679,  679,  679,  586,  586,  700,  586,  708,  694,
-      697,  698,  586,  709,  699,  586,  710,  808,  711,  701,
-      712,  802,  713,  714,  702,  769,  715,  705,  679,  679,
-      679,  679,  679,  679,  703,  706,  700,  704,  708,  694,
-
-      697,  698,  709,  716,  699,  717,  710,  711,  701,  721,
-      712,  713,  714,  718,  702,  715,  722,  705,  723,  724,
-      460,  725,  726,  703,  727,  706,  704,  729,  730,  734,
-      719,  764,  732,  716,  733,  717,  720,  757,  735,  721,
-      736,  737,  738,  731,  739,  722,  740,  743,  723,  724,
-      725,  726,  741,  742,  727,  744,  729,  745,  730,  734,
-      719,  732,  746,  733,  747,  748,  720,  735,  749,  750,
-      736,  737,  738,  739,  751,  752,  740,  743,  753,  755,
-      756,  741,  742,  758,  754,  744,  759,  745,  760,  766,
-      766,  768,  746,  747,  586,  748,  586,  749,  586,  750,
-
-      770,  771,  586,  751,  586,  752,  586,  728,  753,  755,
-      756,  776,  758,  754,  773,  778,  759,  760,  775,  772,
-      586,  768,  774,  461,  462,  767,  767,  767,  767,  770,
-      684,  771,  586,  586,  767,  767,  767,  767,  767,  767,
-      777,  776,  586,  586,  773,  778,  586,  775,  772,  780,
-      779,  586,  774,  781,  783,  586,  586,  787,  586,  586,
-      782,  786,  797,  586,  767,  767,  767,  767,  767,  767,
-      777,  586,  791,  784,  788,  785,  789,  586,  586,  780,
-      779,  586,  586,  781,  783,  790,  787,  793,  460,  796,
-      782,  786,  797,  798,  795,  792,  799,  801,  794,  436,
-
-      800,  803,  791,  784,  788,  785,  789,  805,  806,  807,
-      435,  804,  809,  810,  790,  811,  812,  793,  796,  814,
-      556,  815,  798,  816,  795,  792,  799,  801,  794,  800,
-      818,  803,  819,  820,  821,  824,  805,  822,  806,  807,
-      804,  809,  823,  810,  825,  811,  812,  826,  828,  814,
-      815,  827,  830,  816,  831,  832,  834,  835,  837,  818,
-      836,  819,  820,  838,  821,  824,  822,  842,  843,  586,
-      586,  823,  586,  825,  586,  848,  586,  826,  828,  586,
-      827,  852,  830,  586,  831,  832,  834,  835,  837,  836,
-      586,  847,  850,  838,  849,  586,  851,  842,  843,  586,
-
-      586,  586,  586,  586,  586,  848,  553,  854,  856,  586,
-      586,  852,  853,  858,  586,  860,  586,  586,  629,  855,
-      870,  847,  850,  857,  849,  851,  862,  859,  861,  863,
-      586,  874,  875,  586,  864,  866,  854,  586,  856,  865,
-      867,  853,  586,  858,  868,  860,  876,  872,  855,  877,
-      870,  869,  857,  878,  879,  862,  859,  873,  861,  863,
-      881,  874,  875,  882,  864,  866,  883,  884,  885,  865,
-      867,  886,  368,  887,  868,  888,  876,  872,  877,  889,
-      892,  869,  878,  879,  890,  893,  901,  873,  894,  912,
-      881,  902,  909,  882,  367,  586,  883,  884,  885,  586,
-
-      910,  886,  887,  895,  896,  888,  399,  399,  897,  889,
-      892,  898,  926,  890,  899,  893,  901,  894,  912,  900,
-      586,  902,  909,  925,  903,  904,  586,  586,  586,  905,
-      910,  927,  906,  895,  896,  907,  929,  586,  897,  586,
-      586,  898,  926,  928,  899,  586,  586,  586,  900,  931,
-      586,  930,  925,  938,  903,  904,  935,  586,  939,  905,
-      940,  927,  906,  933,  934,  907,  929,  932,  936,  941,
-      937,  942,  945,  928,  943,  944,  946,  947,  949,  931,
-      930,  948,  950,  938,  951,  952,  935,  939,  955,  957,
-      940,  956,  933,  934,  962,  953,  932,  936,  941,  963,
-
-      937,  942,  945,  943,  944,  946,  964,  947,  949,  958,
-      948,  954,  950,  959,  951,  952,  960,  965,  955,  957,
-      956,  966,  968,  962,  967,  953,  961,  972,  969,  963,
-      973,  970,  471,  976, 1004, 1005,  964, 1006, 1007,  958,
-      954,  971,  586,  959, 1008, 1009,  960,  965, 1010, 1011,
-     1012,  966,  968,  967, 1013,  961,  972, 1014,  969,  973,
-     1015,  970,  976, 1016, 1004, 1005, 1003, 1006, 1007, 1017,
-      971, 1018, 1019, 1008, 1020, 1009, 1021, 1022, 1010, 1011,
-     1012, 1023, 1024, 1013, 1025, 1026, 1027, 1014, 1028, 1030,
-     1015, 1029, 1016, 1031, 1032, 1003, 1033, 1034, 1035, 1017,
-
-     1036, 1018, 1019, 1020, 1038, 1052, 1021, 1022, 1053, 1054,
-     1055, 1023, 1024, 1025, 1026, 1056, 1027, 1037, 1028, 1030,
-     1029, 1057, 1058, 1031, 1032, 1033, 1034, 1035, 1059, 1060,
-     1036, 1061, 1063, 1038, 1052, 1062, 1064, 1068, 1053, 1054,
-     1055, 1065, 1066, 1067, 1069, 1056, 1037, 1070, 1071,  442,
-     1072, 1057, 1058, 1073, 1074, 1075, 1076, 1059, 1060, 1077,
-     1078, 1061, 1063, 1079, 1062, 1080, 1064, 1068, 1082, 1081,
-     1065, 1066, 1067, 1083, 1069, 1085, 1086, 1070, 1071, 1072,
-     1087, 1088, 1073, 1074, 1089, 1075, 1076, 1090, 1091, 1077,
-     1078, 1092, 1079, 1093, 1080, 1094, 1095, 1082, 1081, 1096,
-
-     1097, 1098, 1099, 1083, 1100, 1085, 1086, 1101, 1102, 1087,
-     1088, 1103, 1104, 1089, 1105,  558, 1106, 1090, 1091, 1107,
-     1092, 1108, 1093, 1109, 1110, 1094, 1095, 1111, 1112, 1096,
-     1097, 1098, 1099, 1113, 1100, 1114, 1116, 1101, 1102, 1115,
-     1103, 1117, 1104, 1118, 1105, 1106, 1119, 1121, 1107, 1120,
-     1108, 1122, 1109, 1123, 1110, 1124, 1125, 1111, 1112, 1126,
-      557, 1127, 1128, 1113, 1129, 1114, 1116, 1130, 1115, 1131,
-     1132, 1117, 1133, 1118, 1134, 1135, 1119, 1121, 1120, 1136,
-     1137, 1122, 1138, 1123, 1139, 1124, 1125, 1140, 1141, 1126,
-     1127, 1128, 1142, 1143, 1129, 1144, 1130, 1145, 1146, 1131,
-
-     1132, 1133, 1147, 1150, 1134, 1135, 1148, 1149, 1151, 1136,
-     1137,  556, 1138, 1139,  420,  420, 1140,  553, 1141,  420,
-      414, 1142, 1143,  512, 1144,  421,  421, 1145, 1146,  378,
-      421,  375, 1147, 1150,  372, 1148, 1149,  500, 1151,   74,
-       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
-       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
-       74,   94,   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,   97,  100,  100,  100,  100,  100,
-      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
-      100,  100,  100,  100,  100,  100,  100,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,  124,  124,  124,  124,  124,  124,  124,
+       64,   65,   66,   64,   67,   64,   64,   64,   64,   64,
+       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
+       64,   64,   64,   64,   64,   64,   64,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   64,   64,   64,   64,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   64,   64,   64,   64,   69,   70,   64,   71,   64,
+       72,   64,   73,   64,   64,   64,   64,   64,   64,   64,
+
+       64,   74,   64,   64,   64,   64,   64,   64,   64,   64,
+       64,   75,   75,   75,   75,   75,   75,   75,   75,   75,
+       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
+       75,   75,   75,   75,   75,   75,   64,   64,   64,   64,
+       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
+       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
+       75,   75,   75,   75,   75,   64,   64,   64,   77,   78,
+      333,   79,   80,   97,   81,   98, 1089,   82,   83,   84,
+       84,  303,  304,   84,   85,  100,   97,  103,   98,  104,
+       86,   64,  101,   84,  103,  351,  104,  115,  116,  333,
+
+      117,  115,  116, 1056,  117,  133,  319,  134,  135,  162,
+      162,  163,  163,  127,  133,  128,  134,  135,  361,   87,
+       88,  250,  106,  251,  107,  129,  770,   64,  108,  130,
+      130,  130,  130,  106,  351,  107,  165, 1055,  166,  113,
+      378,  138,  139,  245,  140,  246,  167,  361,   89,   84,
+       84,   90,   91,  247,   92,   80,  136,   81,   93,  465,
+       82,   83,   84,   84,  109,  136,   84,   85,  142,  378,
+      143,  110,  111,   94,  112,  109,   84,  138,  139,  320,
+      140,  144,  110,  111, 1054,  112,  168,  406,  169,  241,
+      250,  242,  251,  109,  131,  325,  217,  326,  243,  218,
+
+      110, 1053,   87,   88,  109,   95,  217, 1052,  241,  218,
+      242,  110,  219,  219,  219,  219,  406,  243,  145,  146,
+      147, 1051,  219,  219,  219,  219,  271,  272,  363,  273,
+      364,   89,   84,   84,  118,  119,  120,  118,  121,  118,
+      118,  118,  118,  118,  118,  118,  122,  118,  122,  118,
+      118,  118,  118,  118,  118,  118,  118,  118,  118,  123,
+      118,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,  124,  124,  124,  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,  124,  124,  124,  124,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  135,  135,  135,
-      135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
-      135,  135,  135,  135,  135,  135,  135,  135,  135,  139,
-      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
-      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
-      139,  159,  159,  159,  159,  159,  159,  159,  159,  159,
-      159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
-
-      159,  159,  159,  162,  162,  162,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  168,  168,  168,  168,  168,
-      168,  168,  168,  168,  168,  168,  168,  168,  168,  168,
-      168,  168,  168,  168,  168,  168,  168,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  214,
-      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
-      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
-      214,  218,  218,  218,  218,  218,  218,  218,  218,  218,
-
-      218,  218,  218,  218,  218,  218,  218,  218,  218,  218,
-      218,  218,  218,  237,  237,  237,  237,  237,  237,  237,
-      237,  237,  237,  237,  237,  237,  237,  237,  237,  237,
-      237,  237,  237,  237,  237,  241,  241,  241,  241,  241,
-      241,  241,  241,  241,  241,  241,  241,  241,  241,  241,
-      241,  241,  241,  241,  241,  241,  241,  246,  246,  246,
-      246,  246,  246,  246,  246,  246,  246,  246,  246,  246,
-      246,  246,  246,  246,  246,  246,  246,  246,  246,  249,
-      249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
+      124,  124,  124,  124,  124,  118,  118,  118,  127,  142,
+      128,  143,  363,  165,  364,  166,  171,  411,  172,  173,
+      129,  278,  144,  167,  130,  130,  130,  130,  171,  236,
+      172,  173,  171,  245,  253,  246,  371,  275,  276,  254,
+      277,  332,  237,  247,  297,  297,  411,  298,  308,  457,
+      309,  458,  238,  310,  310,  310,  310,  239,  279,  145,
+      146,  147,  373,  168, 1050,  169,  174,  175,  176,  374,
+     1049,  332,  237,  340,  341,  461,  342,  462,  174,  175,
+      176,  238,  174,  175,  176, 1048,  239,  372,  279,  131,
+
+      148,  148,  149,  148,  150,  151,  148,  148,  148,  152,
+      148,  148,  148,  148,  148,  148,  148,  153,  148,  148,
+      148,  148,  148,  148,  148,  148,  148,  154,  154,  154,
+      154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
+      154,  154,  154,  154,  155,  154,  154,  154,  154,  154,
+      154,  156,  157,  148,  158,  148,  154,  154,  154,  154,
+      154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
+      154,  154,  154,  155,  154,  154,  154,  154,  154,  154,
+      156,  159,  148,  160,  178,  179,  221,  180,  222,  178,
+      179,  181,  180,  165,  360,  166,  181,  165,  236,  166,
+
+      182,  377,  171,  248,  253,  182,  440,  248,  256,  254,
+      269,  237,  466,  467,  383,  270,  347,  347,  347,  347,
+     1047,  238,  416,  487,  360,  488,  239,  183,  471,  471,
+      472,  377,  183,  472,  184,  185,  223,  186,  224,  184,
+      185,  237,  186,  168,  383,  169,  363,  168,  364,  169,
+      238,  416,  174,  175,  176,  239,  183,  441,  255,  267,
+      255,  183,  363,  184,  364,  225, 1046,  226,  184,  187,
+      188,  189,  187,  190,  191,  187,  187,  187,  187,  187,
+      187,  187,  187,  187,  187,  187,  187,  187,  192,  193,
+      187,  187,  187,  194,  187,  187,  195,  196,  197,  198,
+
+      199,  200,  201,  202,  203,  201,  201,  204,  205,  206,
+      207,  208,  201,  209,  210,  211,  212,  213,  214,  201,
+      215,  187,  187,  187,  187,  187,  195,  196,  197,  198,
+      199,  200,  201,  202,  203,  201,  201,  204,  205,  206,
+      207,  208,  209,  210,  211,  212,  213,  214,  201,  215,
+      187,  187,  187,  221,  513,  222,  457,  256,  458,  257,
+      258,  306,  306,  256,  259,  257,  258,  256, 1045,  269,
+      259,  384,  260,  256,  270,  257,  258,  516,  260,  256,
+      259,  257,  258,  513,  292,  293,  259,  294,  260,  306,
+      306,  295, 1044,  307,  260,  256,  386,  265,  266,  390,
+
+      392,  384,  387,  223,  373,  224,  516,  306,  306, 1007,
+      397,  374,  256,  391,  265,  266, 1006,  255,  267,  255,
+     1005,  307,  307,  306,  306,  457,  386,  458,  466,  467,
+      392,  387,  225, 1004,  226,  227,  261,  675,  262,  307,
+      397,  228,  261,  391,  262,  255,  267,  255,  229,  230,
+      307,  388,  261,  393,  263,  307,  398,  231,  261,  389,
+      263,  232,  255,  267,  255,  296,  312,  313,  307,  314,
+      461,  233,  462,  315,  394,  518,  234,  305,  305,  395,
+      410,  388,  316,  393,  307,  404,  398,  231,  317,  389,
+      521,  232, 1003,  399,  412,  405,  278,  400, 1002,  396,
+
+      233,  413,  401,  394,  518,  234,  402,  235,  227,  395,
+      410,  414,  415,  443,  228,  404,  407,  676,  454,  521,
+      318,  229,  230,  399,  412,  405,  408,  400,  396,  409,
+      231,  413,  401,  279,  232, 1001,  402,  419,  419,  419,
+      419,  414,  415,  443,  233,  464,  407,  296,  454,  234,
+      271,  272, 1000,  273,  275,  276,  408,  277,  409,  461,
+      231,  462,  481,  279,  232,  446,  447,  999,  448,  446,
+      447,  484,  448,  233,  585,  464,  468,  585,  234,  485,
+      235,  281,  449,  449,  449,  449,  449,  449,  449,  449,
+      292,  293,  481,  294,  502,  340,  341,  295,  342,  503,
+
+      282,  484,  283,  507,  283,  508,  466,  467,  450,  485,
+      283,  675,  509,  283,  284,  285,  998,  283,  286,  287,
+      522,  466,  467,  288,  502,  466,  467,  469,  469,  503,
+      282,  997,  283,  507,  283,  508,  510,  450,  446,  447,
+      283,  448,  509,  283,  284,  285,  283,  286,  287,  522,
+      446,  447,  288,  448,  289,  449,  449,  449,  449,  470,
+      347,  347,  347,  347,  511,  996,  510,  449,  449,  449,
+      449,  296,  523,  312,  313,  514,  314,  528,  512,  451,
+      315,  519,  524,  525,  529,  520,  530,  537,  470,  316,
+      452,  676,  515,  526,  511,  317,  531,  527,  995,  532,
+
+      533,  523,  534,  543,  994,  514,  528,  512,  535,  451,
+      546,  519,  524,  525,  529,  520,  530,  537,  536,  541,
+      452,  515,  542,  526,  547,  531,  527,  318,  532,  533,
+      487,  534,  488,  543,  419,  419,  419,  419,  535,  546,
+      586,  586,  586,  586,  487,  993,  488,  536,  992,  541,
+      564,  573,  542,  547,  296,  489,  490,  491,  492,  493,
+      493,  494,  493,  493,  493,  493,  495,  493,  493,  493,
+      496,  493,  493,  497,  493,  498,  493,  493,  499,  493,
+      564,  573,  668,  500,  669,  489,  490,  491,  492,  493,
+      493,  494,  493,  493,  493,  493,  495,  493,  493,  493,
+
+      496,  493,  497,  493,  498,  493,  493,  499,  493,  538,
+      544,  566,  567,  539,  568,  571,  572,  545,  540,  591,
+      575,  991,  577,  587,  567,  668,  669,  669,  569,  569,
+      569,  569,  578,  579,  579,  617,  466,  467,  588,  538,
+      544,  596,  589,  539,  571,  572,  990,  545,  540,  548,
+      575,  549,  577,  587,  550,  551,  570,  447,  590,  448,
+      552,  553,  466,  467,  617,  580,  554,  555,  588,  465,
+      596,  556,  589,  449,  449,  449,  449,  989,  557,  548,
+      845,  549,  846,  988,  550,  551,  570,  447,  590,  448,
+      552,  553,  466,  467,  580,  554,  555,  466,  467,  302,
+
+      556,  465,  465,  987,  465,  465,  465,  465,  465,  465,
+      465,  465,  465,  465,  465,  465,  465,  465,  465,  465,
+      465,  465,  465,  465,  465,  465,  465,  465,  581,  581,
+      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
+      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
+      581,  581,  581,  466,  467,  986,  582,  465,  581,  581,
+      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
+      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
+      581,  581,  465,  465,  465,  583,  583,  613,  591,  591,
+      591,  591,  591,  591,  591,  591,  602,  614,  845,  615,
+
+      846,  670,  567,  591,  568,  985,  592,  593,  595,  600,
+      594,  616,  597,  619,  601,  980,  618,  613,  620,  466,
+      467,  584,  584,  584,  584,  598,  602,  614,  599,  615,
+      584,  584,  584,  584,  584,  584,  592,  593,  595,  600,
+      594,  616,  597,  619,  601,  618,  621,  979,  620,  622,
+      623,  624,  929,  625,  598,  466,  467,  599,  626,  628,
+      584,  584,  584,  584,  584,  584, 1157,  627,  928,  629,
+      630,  603,  604,  605,  606,  631,  621,  607,  633,  622,
+      623,  624,  608,  625,  632,  635,  609,  626,  628,  610,
+      927,  611,  636,  926,  612,  637,  638,  627,  629,  639,
+
+      630,  603,  604,  605,  606,  631,  640,  607,  633,  641,
+      642,  643,  608,  632,  644,  635,  609,  645,  610,  646,
+      611,  647,  636,  612,  648,  637,  638,  650,  653,  639,
+      649,  925,  651,  652,  654,  655,  640,  656,  658,  641,
+      642,  643,  657,  659,  644,  660,  661,  645,  662,  646,
+      663,  647,  664,  667,  648,  665,  666,  650,  653,  924,
+      649,  651,  652,  923,  654,  655,  671,  656,  658,  566,
+      567,  657,  568,  659,  672,  660,  661,  688,  662,  663,
+      922,  673,  664,  667,  665,  666,  569,  569,  569,  569,
+      670,  567,  677,  568,  921,  685,  671,  766,  767,  845,
+
+      768,  846,  766,  767,  672,  768,  688,  569,  569,  569,
+      569,  673,  466,  467,  465,  983,  983,  984,  984,  983,
+      920,  984,  677,  465,  465,  685,  465,  465,  465,  465,
+      465,  465,  465,  465,  465,  465,  465,  465,  465,  465,
+      465,  465,  465,  465,  465,  465,  465,  465,  465,  465,
+      678,  678,  678,  678,  678,  678,  678,  678,  678,  678,
+      678,  678,  678,  678,  678,  678,  678,  678,  678,  678,
+      678,  678,  678,  678,  678,  466,  467,  919,  679,  465,
+      678,  678,  678,  678,  678,  678,  678,  678,  678,  678,
+      678,  678,  678,  678,  678,  678,  678,  678,  678,  678,
+
+      678,  678,  678,  678,  465,  465,  465,  680,  680,  686,
+      687,  591,  591,  683,  683,  591,  591,  591,  591,  591,
+      692,  695,  591,  918,  591,  591,  591,  916,  694,  690,
+      699,  691,  697,  713,  712,  913,  693,  701,  700,  686,
+      687,  466,  467,  681,  681,  681,  681,  466,  467,  696,
+      692,  695,  681,  681,  681,  681,  681,  681,  694,  690,
+      699,  691,  697,  713,  712,  693,  896,  701,  700,  403,
+      403,  424,  424,  885,  425,  425,  424,  876,  696,  425,
+      851,  850,  681,  681,  681,  681,  681,  681,  465,  465,
+      849,  465,  465,  465,  465,  465,  465,  465,  465,  465,
+
+      465,  465,  465,  465,  465,  465,  465,  465,  465,  465,
+      682,  465,  465,  465,  465,  581,  581,  581,  581,  581,
+      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
+      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
+      466,  467,  767,  465,  465,  581,  581,  581,  581,  581,
+      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
+      581,  581,  581,  581,  581,  581,  581,  581,  581,  465,
+      465,  465,  684,  684,  684,  684,  591,  591,  591,  591,
+      591,  684,  684,  684,  684,  684,  684,  591,  591,  591,
+      591,  714,  716,  702,  698,  703,  704,  591,  715,  717,
+
+      705,  762,  706,  718,  719,  720,  721,  707,  722,  710,
+      711,  684,  684,  684,  684,  684,  684,  726,  723,  708,
+      714,  716,  709,  702,  698,  703,  704,  727,  715,  717,
+      705,  706,  718,  719,  720,  724,  721,  707,  722,  710,
+      711,  725,  728,  729,  838,  730,  731,  726,  708,  732,
+      735,  709,  734,  737,  738,  739,  727,  740,  741,  742,
+      743,  834,  744,  745,  748,  724,  746,  747,  749,  750,
+      751,  725,  728,  729,  730,  731,  752,  753,  755,  732,
+      735,  734,  737,  738,  754,  739,  740,  756,  741,  742,
+      743,  744,  757,  745,  748,  746,  747,  758,  749,  750,
+
+      751,  760,  822,  759,  761,  752,  763,  753,  755,  764,
+      591,  765,  773,  754,  771,  771,  756,  775,  591,  591,
+      818,  813,  757,  591,  776,  591,  591,  758,  779,  591,
+      807,  760,  759,  774,  761,  763,  781,  778,  783,  764,
+      765,  780,  773,  777,  784,  591,  775,  591,  466,  467,
+      772,  772,  772,  772,  776,  591,  787,  591,  779,  772,
+      772,  772,  772,  772,  772,  782,  781,  778,  783,  591,
+      780,  591,  777,  591,  784,  789,  785,  790,  786,  591,
+      591,  591,  795,  591,  788,  791,  787,  591,  794,  772,
+      772,  772,  772,  772,  772,  782,  591,  591,  793,  797,
+
+      591,  801,  803,  792,  802,  789,  785,  790,  786,  796,
+      800,  795,  591,  804,  788,  791,  805,  798,  794,  806,
+      799,  465,  810,  808,  811,  812,  769,  814,  793,  797,
+      801,  803,  792,  809,  802,  815,  816,  817,  819,  796,
+      800,  820,  821,  804,  823,  805,  824,  798,  825,  806,
+      799,  810,  826,  808,  811,  812,  814,  827,  828,  829,
+      762,  830,  809,  831,  833,  815,  816,  817,  819,  832,
+      820,  835,  821,  823,  836,  824,  837,  825,  839,  840,
+      591,  841,  826,  842,  843,  847,  827,  828,  848,  829,
+      830,  591,  591,  831,  833,  591,  853,  852,  832,  591,
+
+      591,  835,  591,  591,  836,  591,  837,  854,  839,  840,
+      841,  855,  857,  842,  843,  847,  591,  591,  848,  591,
+      591,  591,  591,  856,  858,  862,  853,  852,  591,  859,
+      861,  591,  863,  591,  865,  866,  591,  854,  591,  591,
+      860,  855,  857,  872,  736,  864,  868,  870,  591,  882,
+      867,  869,  856,  858,  862,  873,  591,  871,  859,  591,
+      861,  877,  863,  879,  865,  866,  880,  875,  874,  860,
+      881,  878,  886,  872,  864,  883,  868,  870,  882,  867,
+      884,  869,  887,  888,  889,  873,  890,  871,  891,  733,
+      892,  877,  893,  879,  894,  897,  880,  875,  874,  895,
+
+      881,  878,  886,  898,  883,  899,  906,  907,  689,  884,
+      591,  591,  887,  888,  889,  914,  890,  465,  891,  892,
+      917,  915,  893,  441,  894,  897,  933,  931,  895,  591,
+      900,  901,  440,  898,  899,  902,  906,  907,  903,  908,
+      909,  904,  591,  591,  910,  914,  905,  911,  932,  917,
+      912,  915,  591,  930,  591,  591,  933,  931,  934,  591,
+      900,  901,  591,  591,  943,  902,  936,  591,  903,  908,
+      909,  904,  940,  945,  910,  905,  935,  911,  932,  938,
+      912,  937,  930,  944,  591,  946,  939,  947,  934,  941,
+      948,  949,  950,  952,  943,  951,  936,  942,  561,  953,
+
+      954,  955,  940,  945,  956,  935,  957,  960,  938,  958,
+      937,  961,  944,  962,  946,  939,  968,  947,  941,  948,
+      949,  967,  950,  952,  951,  959,  969,  942,  953,  970,
+      954,  955,  971,  973,  956,  972,  957,  960,  963,  958,
+      961,  977,  964,  962,  974,  965,  968,  975,  558,  978,
+      967,  981,  591, 1009,  959,  966,  969,  976, 1010,  970,
+     1011, 1012,  971,  973,  972, 1013, 1014, 1015,  963, 1016,
+      977, 1017,  964, 1018,  974,  965, 1008,  975,  978, 1019,
+      981, 1020, 1022, 1009,  966, 1021,  976, 1023, 1010, 1024,
+     1011, 1012, 1025, 1026, 1013, 1027, 1014, 1015, 1028, 1016,
+
+     1029, 1017, 1018, 1030, 1031, 1008, 1032, 1033, 1035, 1019,
+     1034, 1020, 1022, 1036, 1021, 1037, 1058, 1023, 1038, 1024,
+     1039, 1025, 1040, 1026, 1041, 1027, 1043, 1057, 1028, 1059,
+     1029, 1060, 1030, 1031, 1061, 1062, 1032, 1033, 1035, 1034,
+     1064, 1042, 1063, 1036, 1065, 1037, 1058, 1038, 1066, 1039,
+     1067, 1040, 1068, 1069, 1041, 1043, 1057, 1070, 1071, 1059,
+     1072, 1060, 1073, 1074, 1061, 1062, 1075, 1076, 1080, 1064,
+     1042, 1077, 1063, 1065, 1078, 1079, 1081, 1082, 1066, 1067,
+     1083, 1088, 1068, 1069, 1084, 1087, 1070, 1071, 1090, 1072,
+     1085, 1091, 1073, 1074, 1086, 1092, 1075, 1076, 1080, 1093,
+
+     1077, 1094, 1095, 1078, 1079, 1096, 1081, 1082, 1097, 1098,
+     1083, 1088, 1099, 1084, 1087, 1100, 1101, 1102, 1090, 1085,
+     1103, 1091, 1104, 1086, 1092, 1105, 1106, 1107, 1093, 1108,
+     1094, 1109, 1095, 1110, 1115, 1096, 1111, 1097, 1098, 1112,
+     1113, 1114, 1099, 1116, 1117, 1100, 1101, 1102, 1118, 1119,
+     1103, 1120, 1104, 1121, 1122, 1105, 1106, 1107, 1108, 1123,
+     1124, 1109, 1125, 1110, 1115, 1111, 1126, 1127, 1112, 1113,
+     1114, 1128, 1129, 1116, 1117, 1130, 1131, 1134, 1118, 1119,
+     1120, 1132, 1133, 1121, 1122, 1135, 1136, 1137, 1139, 1123,
+     1124, 1125, 1138, 1140, 1141, 1142, 1126, 1127, 1143,  634,
+
+     1144, 1128, 1129, 1145, 1146, 1130, 1131, 1134, 1147, 1148,
+     1132, 1133, 1149, 1150, 1135, 1151, 1136, 1137, 1139, 1152,
+     1155, 1138, 1153, 1140, 1141, 1142, 1154, 1156, 1143, 1144,
+      453,  453, 1145,  372, 1146,  453,  371, 1147, 1148,  455,
+      455, 1149,  591, 1150,  455, 1151,  476,  447,  563, 1152,
+     1155, 1153,  562,  561,  558, 1154,  418, 1156,   76,   76,
+       76,   76,   76,   76,   76,   76,   76,   76,   76,   76,
+       76,   76,   76,   76,   76,   76,   76,   76,   76,   76,
+       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
+       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
+
+       96,   96,   99,   99,   99,   99,   99,   99,   99,   99,
+       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
+       99,   99,   99,   99,  102,  102,  102,  102,  102,  102,
+      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
+      102,  102,  102,  102,  102,  102,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,  114,  114,
+      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
+      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
+       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
+
+       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
+       64,   64,  126,  126,  126,  126,  126,  126,  126,  126,
+      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
+      126,  126,  126,  126,  132,  132,  132,  132,  132,  132,
+      132,  132,  132,  132,  132,  132,  132,  132,  132,  132,
+      132,  132,  132,  132,  132,  132,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  137,  141,  141,
+      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
+      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
+
+      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
+      161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
+      161,  161,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  170,  170,  170,  170,  170,  170,
+      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
+      170,  170,  170,  170,  170,  170,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  177,  177,  177,  177,  177,  177,  216,  216,
+      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
+
+      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
+      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
+      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
+      220,  220,  240,  240,  240,  240,  240,  240,  240,  240,
+      240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
+      240,  240,  240,  240,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  249,  249,  249,  249,
       249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
+      249,  249,  249,  249,  249,  249,  249,  249,  252,  252,
 
-      249,  252,  252,  252,  252,  252,  252,  252,  252,  252,
       252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
-      252,  252,  252,  260,  260,  260,  260,  260,  260,  260,
-      260,  260,  260,  260,  260,  260,  260,  260,  260,  260,
-      260,  260,  260,  260,  260,  264,  264,  264,  264,  264,
+      252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
+      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+      255,  255,  264,  264,  264,  264,  264,  264,  264,  264,
       264,  264,  264,  264,  264,  264,  264,  264,  264,  264,
-      264,  264,  264,  264,  264,  264,  264,  270,  499,  270,
-      448,  448,  270,  270,  496,  448,  339,  270,  276,  276,
-      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
-      276,  276,  276,  276,  276,  276,  276,  276,  276,  287,
-
-      337,  287,  450,  450,  287,  287,  339,  450,  334,  287,
-      298,  320,  298,  298,  298,  298,  298,  298,  298,  298,
-      298,  298,  298,  298,  298,  298,  298,  298,  298,  298,
-      298,  298,  301,  474,  301,  301,  301,  301,  301,  301,
-      301,  301,  301,  301,  301,  301,  301,  301,  301,  301,
-      301,  301,  301,  301,  307,  307,  488,  307,  488,  488,
-      307,  307,  473,  472,  309,  307,  319,  471,  319,  319,
-      319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
-      319,  319,  319,  319,  319,  319,  319,  319,  323,  323,
+      264,  264,  264,  264,  268,  268,  268,  268,  268,  268,
+      268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
+      268,  268,  268,  268,  268,  268,  274,  493,  274,  493,
+      493,  274,  274,  517,  382,  379,  274,  280,  280,  280,
+
+      280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
+      280,  280,  280,  280,  280,  280,  280,  280,  291,  376,
+      291,  505,  504,  291,  291,  501,  343,  341,  291,  302,
+      343,  302,  302,  302,  302,  302,  302,  302,  302,  302,
+      302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
+      302,  305,  338,  305,  305,  305,  305,  305,  305,  305,
+      305,  305,  305,  305,  305,  305,  305,  305,  305,  305,
+      305,  305,  305,  311,  311,  324,  311,  479,  478,  311,
+      311,  477,  313,  476,  311,  323,  474,  323,  323,  323,
       323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
 
-      323,  323,  323,  323,  469,  323,  468,  323,  323,  323,
-      326,  458,  326,  326,  293,  326,  326,  326,  326,  326,
-      326,  326,  326,  326,  326,  326,  454,  326,  289,  326,
-      326,  326,  333,  272,  268,  333,  333,  333,  333,  333,
-      333,  333,  333,  333,  333,  333,  333,  333,  333,  333,
-      333,  333,  333,  333,  341,  431,  341,  431,  432,  341,
-      341,  431,  365,  429,  341,  346,  428,  346,  346,  346,
-      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
-      346,  346,  346,  346,  346,  346,  346,  349,  426,  349,
-      349,  349,  349,  349,  349,  349,  349,  349,  349,  349,
-
-      349,  349,  349,  349,  349,  425,  349,  349,  349,  350,
-      424,  350,  423,  350,  419,  350,  350,  350,  350,  418,
-      350,  350,  350,  417,  414,  378,  350,  352,  376,  352,
-      352,  352,  375,  352,  352,  352,  352,  352,  352,  352,
-      352,  352,  352,  352,  352,  352,  352,  352,  352,  355,
-      331,  355,  330,  354,  355,  355,  372,  371,  331,  355,
-      358,  358,  358,  358,  358,  358,  358,  358,  358,  358,
-      358,  358,  358,  358,  358,  358,  358,  358,  358,  358,
-      358,  358,  361,  330,  361,  361,  361,  361,  361,  365,
-      361,  361,  361,  361,  361,  361,  361,  361,  331,  361,
-
-      330,  361,  361,  361,  364,  363,  364,  362,  364,  364,
-      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
-      331,  330,  354,  364,  364,  364,  366,  366,  366,  366,
-      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
-      366,  366,  366,  366,  366,  366,  366,  366,  377,  353,
-      377,  377,  377,  377,  377,  377,  377,  377,  377,  377,
-      377,  377,  377,  377,  377,  377,  377,  377,  377,  377,
-      381,  381,  351,  345,  348,  345,  381,  381,  413,  344,
-      413,  413,  413,  413,  413,  413,  413,  413,  413,  413,
-      413,  413,  413,  413,  413,  413,  413,  413,  413,  413,
-
-      416,  342,  340,  416,  416,  416,  416,  416,  416,  416,
-      416,  416,  416,  416,  416,  416,  337,  416,  339,  416,
-      422,  335,  422,  422,  422,  422,  334,  422,  422,  422,
-      422,  422,  422,  422,  422,  422,  422,  422,  422,  422,
-      422,  422,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  332,  427,
-      331,  427,  427,  427,  430,  330,  430,  430,  430,  327,
-      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
-      325,  324,  320,  430,  430,  430,  433,  318,  433,  317,
-      433,  433,  433,  433,  433,  433,  433,  433,  433,  433,
-
-      433,  433,  309,  297,  296,  433,  433,  433,  434,  434,
-      434,  434,  434,  434,  434,  434,  434,  434,  434,  434,
-      434,  434,  434,  434,  434,  434,  434,  434,  434,  434,
-      437,  295,  437,  437,  437,  289,  437,  437,  437,  437,
-      437,  437,  437,  437,  437,  437,  286,  272,  268,  437,
-      437,  437,  270, 1152,  270,  123,  123,  270,  270, 1152,
-     1152, 1152,  270,  439, 1152,  439,  439,  439,  439,  439,
+      323,  323,  323,  323,  323,  323,  323,  327,  327,  327,
+      327,  327,  327,  327,  327,  327,  327,  327,  327,  327,
+      327,  327,  327,  473,  327,  463,  327,  327,  327,  330,
+      297,  330,  330,  459,  330,  330,  330,  330,  330,  330,
+      330,  330,  330,  330,  330,  293,  330,  276,  330,  330,
+      330,  337,  272,  436,  337,  337,  337,  337,  337,  337,
+      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
+      337,  337,  337,  345,  436,  345,  437,  436,  345,  345,
+      369,  434,  433,  345,  350,  431,  350,  350,  350,  350,
+      350,  350,  350,  350,  350,  350,  350,  350,  350,  350,
+
+      350,  350,  350,  350,  350,  350,  353,  430,  353,  353,
+      353,  353,  353,  353,  353,  353,  353,  353,  353,  353,
+      353,  353,  353,  353,  429,  353,  353,  353,  354,  428,
+      354,  426,  354,  423,  354,  354,  354,  354,  422,  354,
+      354,  354,  421,  418,  382,  354,  356,  380,  356,  356,
+      356,  379,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  359,  335,
+      359,  334,  358,  359,  359,  376,  375,  335,  359,  362,
+      362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
+      362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
+
+      362,  365,  334,  365,  365,  365,  365,  365,  369,  365,
+      365,  365,  365,  365,  365,  365,  365,  335,  365,  334,
+      365,  365,  365,  368,  367,  368,  366,  368,  368,  368,
+      368,  368,  368,  368,  368,  368,  368,  368,  368,  335,
+      334,  358,  368,  368,  368,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  381,  357,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  385,
+      385,  355,  349,  352,  349,  385,  385,  417,  348,  417,
+
+      417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
+      417,  417,  417,  417,  417,  417,  417,  417,  417,  420,
+      346,  344,  420,  420,  420,  420,  420,  420,  420,  420,
+      420,  420,  420,  420,  420,  341,  420,  343,  420,  427,
+      339,  427,  427,  427,  427,  338,  427,  427,  427,  427,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      427,  432,  432,  432,  432,  432,  432,  432,  432,  432,
+      432,  432,  432,  432,  432,  432,  432,  336,  432,  335,
+      432,  432,  432,  435,  334,  435,  435,  435,  331,  435,
+      435,  435,  435,  435,  435,  435,  435,  435,  435,  329,
+
+      328,  324,  435,  435,  435,  438,  322,  438,  321,  438,
+      438,  438,  438,  438,  438,  438,  438,  438,  438,  438,
+      438,  313,  301,  300,  438,  438,  438,  439,  439,  439,
       439,  439,  439,  439,  439,  439,  439,  439,  439,  439,
-      439,  439,  439,  439,  439,  440, 1152,  440,  440,  440,
-      440,  440,  440,  440,  440,  440,  440,  440,  440,  440,
-
-      440,  440,  440,  440,  440,  440,  440,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  287,
-     1152,  287, 1152, 1152,  287,  287, 1152, 1152, 1152,  287,
-      455,  455,  455,  455,  455,  455,  455,  455,  455,  455,
-      455,  455,  455,  455,  455,  455,  455,  455,  455,  455,
-      455,  455,  460, 1152,  460,  460,  460,  460,  460,  460,
+      439,  439,  439,  439,  439,  439,  439,  439,  439,  442,
+      299,  442,  442,  442,  293,  442,  442,  442,  442,  442,
+      442,  442,  442,  442,  442,  290,  276,  272,  442,  442,
+      442,  274, 1157,  274,  125,  125,  274,  274, 1157, 1157,
+     1157,  274,  444, 1157,  444,  444,  444,  444,  444,  444,
+      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
+
+      444,  444,  444,  444,  445, 1157,  445,  445,  445,  445,
+      445,  445,  445,  445,  445,  445,  445,  445,  445,  445,
+      445,  445,  445,  445,  445,  445,  456,  456,  456,  456,
+      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
+      456,  456,  456,  456,  456,  456,  456,  456,  291, 1157,
+      291, 1157, 1157,  291,  291, 1157, 1157, 1157,  291,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
       460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
-     1152,  460,  460,  460,  298, 1152,  298,  298,  298,  298,
-      298,  298,  298,  298,  298,  298,  298,  298,  298,  298,
-
-      298,  298,  298,  298,  298,  298,  470, 1152,  470, 1152,
-     1152,  470,  470, 1152, 1152, 1152,  470, 1152,  470,  475,
-     1152,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  319, 1152,  319,  319,  319,  319,  319,  319,  319,
-      319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
-      319,  319,  319,  477, 1152,  477,  477,  477,  477,  477,
-      477,  477,  477,  477,  477,  477,  477,  477,  477,  477,
-      477,  477,  477,  477,  477,  478, 1152,  478,  478,  478,
-      478,  478,  478,  478,  478,  478,  478,  478,  478,  478,
-
-      478,  478,  478,  478,  478,  478,  478,  323,  323,  323,
+      460,  465, 1157,  465,  465,  465,  465,  465,  465,  465,
+      465,  465,  465,  465,  465,  465,  465,  465,  465, 1157,
+
+      465,  465,  465,  302, 1157,  302,  302,  302,  302,  302,
+      302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
+      302,  302,  302,  302,  302,  475, 1157,  475, 1157, 1157,
+      475,  475, 1157, 1157, 1157,  475, 1157,  475,  480, 1157,
+      480,  480,  480,  480,  480,  480,  480,  480,  480,  480,
+      480,  480,  480,  480,  480,  480,  480,  480,  480,  480,
+      323, 1157,  323,  323,  323,  323,  323,  323,  323,  323,
       323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
-      323,  323,  323, 1152,  323, 1152,  323,  323,  323,  326,
-     1152,  326,  326, 1152,  326,  326,  326,  326,  326,  326,
-      326,  326,  326,  326,  326, 1152,  326, 1152,  326,  326,
-      326,  481,  481,  481,  481,  481,  481,  481,  481,  481,
-      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
-      481,  481,  481,  333, 1152, 1152,  333,  333,  333,  333,
-      333,  333,  333,  333,  333,  333,  333,  333,  333,  333,
-      333,  333,  333,  333,  333,  341, 1152,  341, 1152, 1152,
-
-      341,  341, 1152, 1152, 1152,  341,  350, 1152,  350, 1152,
-      350, 1152,  350,  350,  350,  350, 1152,  350,  350,  350,
-     1152, 1152, 1152,  350,  352, 1152,  352,  352,  352,  352,
-      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
-      352,  352,  352,  352,  352,  352,  355, 1152,  355, 1152,
-     1152,  355,  355, 1152, 1152, 1152,  355,  358,  358,  358,
-      358,  358,  358,  358,  358,  358,  358,  358,  358,  358,
-      358,  358,  358,  358,  358,  358,  358,  358,  358,  361,
-     1152,  361,  361,  361,  361,  361, 1152,  361,  361,  361,
-      361,  361,  361,  361,  361, 1152,  361, 1152,  361,  361,
-
-      361,  364, 1152,  364, 1152,  364,  364,  364,  364,  364,
-      364,  364,  364,  364,  364,  364,  364, 1152, 1152, 1152,
-      364,  364,  364,  501, 1152,  501,  501,  501,  501,  501,
-      501,  501,  501,  501,  501,  501,  501,  501,  501,  501,
-      501,  501,  501,  501,  501,  377, 1152,  377,  377,  377,
-      377,  377,  377,  377,  377,  377,  377,  377,  377,  377,
-      377,  377,  377,  377,  377,  377,  377,  381,  381, 1152,
-     1152, 1152, 1152,  381,  381,  413, 1152,  413,  413,  413,
-      413,  413,  413,  413,  413,  413,  413,  413,  413,  413,
-      413,  413,  413,  413,  413,  413,  413,  416, 1152, 1152,
-
-      416,  416,  416,  416,  416,  416,  416,  416,  416,  416,
-      416,  416,  416, 1152,  416, 1152,  416,  554, 1152, 1152,
-     1152,  554, 1152,  554, 1152, 1152,  554,  554, 1152, 1152,
-     1152,  554,  555, 1152,  555, 1152,  555,  555,  555, 1152,
-     1152, 1152,  555,  422, 1152,  422,  422,  422,  422, 1152,
-      422,  422,  422,  422,  422,  422,  422,  422,  422,  422,
-      422,  422,  422,  422,  422,  427,  427,  427,  427,  427,
+      323,  323,  482, 1157,  482,  482,  482,  482,  482,  482,
+      482,  482,  482,  482,  482,  482,  482,  482,  482,  482,
+
+      482,  482,  482,  482,  483, 1157,  483,  483,  483,  483,
+      483,  483,  483,  483,  483,  483,  483,  483,  483,  483,
+      483,  483,  483,  483,  483,  483,  327,  327,  327,  327,
+      327,  327,  327,  327,  327,  327,  327,  327,  327,  327,
+      327,  327, 1157,  327, 1157,  327,  327,  327,  330, 1157,
+      330,  330, 1157,  330,  330,  330,  330,  330,  330,  330,
+      330,  330,  330,  330, 1157,  330, 1157,  330,  330,  330,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  337, 1157, 1157,  337,  337,  337,  337,  337,
+
+      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
+      337,  337,  337,  337,  345, 1157,  345, 1157, 1157,  345,
+      345, 1157, 1157, 1157,  345,  354, 1157,  354, 1157,  354,
+     1157,  354,  354,  354,  354, 1157,  354,  354,  354, 1157,
+     1157, 1157,  354,  356, 1157,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  359, 1157,  359, 1157, 1157,
+      359,  359, 1157, 1157, 1157,  359,  362,  362,  362,  362,
+      362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
+      362,  362,  362,  362,  362,  362,  362,  362,  365, 1157,
+
+      365,  365,  365,  365,  365, 1157,  365,  365,  365,  365,
+      365,  365,  365,  365, 1157,  365, 1157,  365,  365,  365,
+      368, 1157,  368, 1157,  368,  368,  368,  368,  368,  368,
+      368,  368,  368,  368,  368,  368, 1157, 1157, 1157,  368,
+      368,  368,  506, 1157,  506,  506,  506,  506,  506,  506,
+      506,  506,  506,  506,  506,  506,  506,  506,  506,  506,
+      506,  506,  506,  506,  381, 1157,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  385,  385, 1157, 1157,
+     1157, 1157,  385,  385,  417, 1157,  417,  417,  417,  417,
+
+      417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
+      417,  417,  417,  417,  417,  417,  420, 1157, 1157,  420,
+      420,  420,  420,  420,  420,  420,  420,  420,  420,  420,
+      420,  420, 1157,  420, 1157,  420,  559, 1157, 1157, 1157,
+      559, 1157,  559, 1157, 1157,  559,  559, 1157, 1157, 1157,
+      559,  560, 1157,  560, 1157,  560,  560,  560, 1157, 1157,
+     1157,  560,  427, 1157,  427,  427,  427,  427, 1157,  427,
       427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427, 1152,  427, 1152,  427,  427,  427,  430, 1152,  430,
-      430,  430, 1152,  430,  430,  430,  430,  430,  430,  430,
-
-      430,  430,  430, 1152, 1152, 1152,  430,  430,  430,  433,
-     1152,  433, 1152,  433,  433,  433,  433,  433,  433,  433,
-      433,  433,  433,  433,  433, 1152, 1152, 1152,  433,  433,
-      433,  437, 1152,  437,  437,  437, 1152,  437,  437,  437,
-      437,  437,  437,  437,  437,  437,  437, 1152, 1152, 1152,
-      437,  437,  437,  439, 1152,  439,  439,  439,  439,  439,
-      439,  439,  439,  439,  439,  439,  439,  439,  439,  439,
-      439,  439,  439,  439,  439,  440, 1152,  440,  440,  440,
-      440,  440,  440,  440,  440,  440,  440,  440,  440,  440,
-      440,  440,  440,  440,  440,  440,  440,  560,  560,  560,
-
-      560,  560,  560,  560,  560,  560,  560,  560,  560,  560,
-      560,  560,  560,  560,  560,  560,  560,  560,  560,  569,
-     1152,  569, 1152, 1152,  569,  569, 1152, 1152, 1152,  569,
-      571, 1152,  571, 1152, 1152,  571,  571, 1152, 1152, 1152,
-      571,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  451,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  455,  455,  455,  455,  455,  455,  455,
-      455,  455,  455,  455,  455,  455,  455,  455,  455,  455,
-      455,  455,  455,  455,  455,  460, 1152,  460,  460,  460,
+      427,  427,  427,  427,  432,  432,  432,  432,  432,  432,
+      432,  432,  432,  432,  432,  432,  432,  432,  432,  432,
+
+     1157,  432, 1157,  432,  432,  432,  435, 1157,  435,  435,
+      435, 1157,  435,  435,  435,  435,  435,  435,  435,  435,
+      435,  435, 1157, 1157, 1157,  435,  435,  435,  438, 1157,
+      438, 1157,  438,  438,  438,  438,  438,  438,  438,  438,
+      438,  438,  438,  438, 1157, 1157, 1157,  438,  438,  438,
+      442, 1157,  442,  442,  442, 1157,  442,  442,  442,  442,
+      442,  442,  442,  442,  442,  442, 1157, 1157, 1157,  442,
+      442,  442,  444, 1157,  444,  444,  444,  444,  444,  444,
+      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
+      444,  444,  444,  444,  445, 1157,  445,  445,  445,  445,
+
+      445,  445,  445,  445,  445,  445,  445,  445,  445,  445,
+      445,  445,  445,  445,  445,  445,  565,  565,  565,  565,
+      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
+      565,  565,  565,  565,  565,  565,  565,  565,  574, 1157,
+      574, 1157, 1157,  574,  574, 1157, 1157, 1157,  574,  576,
+     1157,  576, 1157, 1157,  576,  576, 1157, 1157, 1157,  576,
+      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
+      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
+      456,  456,  460,  460,  460,  460,  460,  460,  460,  460,
       460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
 
-      460,  460,  460, 1152,  460,  460,  460,  470, 1152,  470,
-     1152, 1152,  470,  470, 1152, 1152, 1152,  470, 1152,  470,
-      475, 1152,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  477, 1152,  477,  477,  477,  477,  477,  477,
-      477,  477,  477,  477,  477,  477,  477,  477,  477,  477,
-      477,  477,  477,  477,  478, 1152,  478,  478,  478,  478,
-      478,  478,  478,  478,  478,  478,  478,  478,  478,  478,
-      478,  478,  478,  478,  478,  478,  326, 1152,  326,  326,
-     1152,  326,  326,  326,  326,  326,  326,  326,  326,  326,
-
-      326,  326, 1152,  326, 1152,  326,  326,  326,  481,  481,
-      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
-      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
-      355, 1152,  355, 1152, 1152,  355,  355, 1152, 1152, 1152,
-      355,  366, 1152,  366,  366,  366,  366,  366,  366,  366,
-      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
-      366,  366,  366,  501, 1152,  501,  501,  501,  501,  501,
-      501,  501,  501,  501,  501,  501,  501,  501,  501,  501,
-      501,  501,  501,  501,  501,  381,  381, 1152, 1152, 1152,
-     1152,  381,  381,  554, 1152, 1152, 1152,  554, 1152,  554,
-
-     1152, 1152,  554,  554, 1152, 1152, 1152,  554,  555, 1152,
-      555, 1152,  555,  555,  555, 1152, 1152, 1152,  555,  434,
-     1152,  434,  434,  434,  434,  434,  434,  434,  434,  434,
-      434,  434,  434,  434,  434,  434,  434,  434,  434,  434,
-      434,  560,  560,  560,  560,  560,  560,  560,  560,  560,
-      560,  560,  560,  560,  560,  560,  560,  560,  560,  560,
-      560,  560,  560,  569, 1152,  569, 1152, 1152,  569,  569,
-     1152, 1152, 1152,  569,  669, 1152,  669,  669,  669,  669,
-      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
-      669,  669,  669,  669,  669,  669,  571, 1152,  571, 1152,
-
-     1152,  571,  571, 1152, 1152, 1152,  571,  839,  839,  839,
-      839,  839,  839,  839,  839,  839,  839,  839,  839,  839,
-      839,  839,  839,  839,  839,  839,  839,  839,  839,  977,
-      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
-      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
-      977,   61, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152
+      460,  460,  460,  460,  465, 1157,  465,  465,  465,  465,
+      465,  465,  465,  465,  465,  465,  465,  465,  465,  465,
+      465,  465, 1157,  465,  465,  465,  475, 1157,  475, 1157,
+     1157,  475,  475, 1157, 1157, 1157,  475, 1157,  475,  480,
+     1157,  480,  480,  480,  480,  480,  480,  480,  480,  480,
+      480,  480,  480,  480,  480,  480,  480,  480,  480,  480,
+      480,  482, 1157,  482,  482,  482,  482,  482,  482,  482,
+      482,  482,  482,  482,  482,  482,  482,  482,  482,  482,
+      482,  482,  482,  483, 1157,  483,  483,  483,  483,  483,
+      483,  483,  483,  483,  483,  483,  483,  483,  483,  483,
+
+      483,  483,  483,  483,  483,  330, 1157,  330,  330, 1157,
+      330,  330,  330,  330,  330,  330,  330,  330,  330,  330,
+      330, 1157,  330, 1157,  330,  330,  330,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  359,
+     1157,  359, 1157, 1157,  359,  359, 1157, 1157, 1157,  359,
+      370, 1157,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  506, 1157,  506,  506,  506,  506,  506,  506,
+      506,  506,  506,  506,  506,  506,  506,  506,  506,  506,
+
+      506,  506,  506,  506,  385,  385, 1157, 1157, 1157, 1157,
+      385,  385,  559, 1157, 1157, 1157,  559, 1157,  559, 1157,
+     1157,  559,  559, 1157, 1157, 1157,  559,  560, 1157,  560,
+     1157,  560,  560,  560, 1157, 1157, 1157,  560,  439, 1157,
+      439,  439,  439,  439,  439,  439,  439,  439,  439,  439,
+      439,  439,  439,  439,  439,  439,  439,  439,  439,  439,
+      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
+      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
+      565,  565,  574, 1157,  574, 1157, 1157,  574,  574, 1157,
+     1157, 1157,  574,  674, 1157,  674,  674,  674,  674,  674,
+
+      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
+      674,  674,  674,  674,  674,  576, 1157,  576, 1157, 1157,
+      576,  576, 1157, 1157, 1157,  576,  844,  844,  844,  844,
+      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
+      844,  844,  844,  844,  844,  844,  844,  844,  982,  982,
+      982,  982,  982,  982,  982,  982,  982,  982,  982,  982,
+      982,  982,  982,  982,  982,  982,  982,  982,  982,  982,
+       63, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157
     } ;
 
-static yyconst flex_int16_t yy_chk[5137] =
+static yyconst flex_int16_t yy_chk[5156] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1440,25 +1444,25 @@ static yyconst flex_int16_t yy_chk[5137] =
         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,
-      108,    3,    3,    5,    3,    5, 1051,    3,    3,    3,
-        3,   85,   85,    3,    3,    6,    6,    7,    6,    7,
-        3,   21,    6,    3,    8,  138,    8,   11,   11,  108,
-
-       11,   12,   12, 1003,   12,   19,   91,   19,   19,   27,
-       28,   27,   28,   17,   20,   17,   20,   20,  154,    3,
-        3,   51,    9,   51,    9,   17,  673,   22,    9,   17,
-       17,   17,   17,   10,  138,   10,   29, 1002,   29,   10,
-      182,   21,   21,   47,   21,   47,   29,  154,    3,    3,
-        3,    4,    4,   47,    4,    4,   19,    4,    4,  673,
-        4,    4,    4,    4,    9,   20,    4,    4,   23,  182,
-       23,    9,    9,    4,    9,   10,    4,   22,   22,   91,
-       22,   23,   10,   10, 1001,   10,   29,  205,   29,   45,
-       52,   45,   52,    9,   17,   99,   37,   99,   45,   37,
-
-        9, 1000,    4,    4,   10,    4,   38,  999,   46,   38,
-       46,   10,   37,   37,   37,   37,  205,   46,   23,   23,
-       23,  998,   38,   38,   38,   38,   63,   63,  159,   63,
-      159,    4,    4,    4,   13,   13,   13,   13,   13,   13,
+      110,    3,    3,    5,    3,    5, 1056,    3,    3,    3,
+        3,   87,   87,    3,    3,    6,    6,    7,    6,    7,
+        3,   21,    6,    3,    8,  140,    8,   11,   11,  110,
+
+       11,   12,   12, 1008,   12,   19,   93,   19,   19,   27,
+       28,   27,   28,   17,   20,   17,   20,   20,  156,    3,
+        3,   51,    9,   51,    9,   17,  678,   22,    9,   17,
+       17,   17,   17,   10,  140,   10,   29, 1007,   29,   10,
+      184,   21,   21,   47,   21,   47,   29,  156,    3,    3,
+        3,    4,    4,   47,    4,    4,   19,    4,    4,  678,
+        4,    4,    4,    4,    9,   20,    4,    4,   23,  184,
+       23,    9,    9,    4,    9,   10,    4,   22,   22,   93,
+       22,   23,   10,   10, 1006,   10,   29,  207,   29,   45,
+       52,   45,   52,    9,   17,  101,   37,  101,   45,   37,
+
+        9, 1005,    4,    4,   10,    4,   38, 1004,   46,   38,
+       46,   10,   37,   37,   37,   37,  207,   46,   23,   23,
+       23, 1003,   38,   38,   38,   38,   65,   65,  161,   65,
+      161,    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,
@@ -1468,14 +1472,14 @@ static yyconst flex_int16_t yy_chk[5137] =
 
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   18,   24,
-       18,   24,  161,   30,  161,   30,   31,  208,   31,   31,
-       18,   70,   24,   30,   18,   18,   18,   18,   32,   43,
-       32,   32,   53,   48,   53,   48,  173,   67,   67,   53,
-       67,  107,   43,   48,   79,   79,  208,   79,   87,  285,
-       87,  285,   43,   87,   87,   87,   87,   43,   70,   24,
-       24,   24,  176,   30,  997,   30,   31,   31,   31,  176,
-      996,  107,   43,  117,  117,  292,  117,  292,   32,   32,
-       32,   43,   53,   53,   53,  995,   43,  173,   70,   18,
+       18,   24,  163,   30,  163,   30,   31,  210,   31,   31,
+       18,   72,   24,   30,   18,   18,   18,   18,   32,   43,
+       32,   32,   53,   48,   53,   48,  175,   69,   69,   53,
+       69,  109,   43,   48,   81,   81,  210,   81,   89,  289,
+       89,  289,   43,   89,   89,   89,   89,   43,   72,   24,
+       24,   24,  178,   30, 1002,   30,   31,   31,   31,  178,
+     1001,  109,   43,  119,  119,  296,  119,  296,   32,   32,
+       32,   43,   53,   53,   53, 1000,   43,  175,   72,   18,
 
        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
@@ -1486,15 +1490,15 @@ static yyconst flex_int16_t yy_chk[5137] =
        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,   49,  153,   49,   34,   50,   44,   50,
-
-       33,  181,   54,   49,   54,   34,  263,   50,   59,   54,
-       59,   44,  298,  298,  190,   59,  128,  128,  128,  128,
-      994,   44,  213,  332,  153,  332,   44,   33,  302,  302,
-     1220,  181,   34, 1220,   33,   33,   39,   33,   39,   34,
-       34,   44,   34,   49,  190,   49,  358,   50,  358,   50,
-       44,  213,   54,   54,   54,   44,   33,  263,   59,   59,
-       59,   34,  360,   33,  360,   39,  993,   39,   34,   35,
+       34,   33,   34,   49,  155,   49,   34,   50,   44,   50,
+
+       33,  183,   54,   49,   54,   34,  267,   50,   61,   54,
+       61,   44,  302,  302,  192,   61,  130,  130,  130,  130,
+      999,   44,  215,  336,  155,  336,   44,   33,  306,  306,
+     1225,  183,   34, 1225,   33,   33,   39,   33,   39,   34,
+       34,   44,   34,   49,  192,   49,  362,   50,  362,   50,
+       44,  215,   54,   54,   54,   44,   33,  267,   61,   61,
+       61,   34,  364,   33,  364,   39,  998,   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,
@@ -1504,489 +1508,491 @@ static yyconst flex_int16_t yy_chk[5137] =
        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,   41,   40,  451,   42,  451,   55,
-       41,   55,   55,   42,   86,   86,   55,   41,   41,  992,
-       42,   42,  267,  267,   55,  267,  191,  369,  991,   56,
-       41,   56,   56,   42,  369,   57,   56,   57,   57,  570,
-       41,  383,  670,   42,   56,   41,   86,   58,   42,   58,
-
-       58,  936,   60,   40,   60,   40,  191,  134,  134,   60,
-       41,   75,   75,   42,   75,  193,  196,  935,   75,   41,
-      383,  193,   42,  934,   41,   86,   41,   42,  933,   42,
-      137,  137,   40,  932,   40,   57,   57,   57,   55,  134,
-       55,  144,  144,  195,  200,  193,  196,   58,   58,   58,
-      193,  194,   60,   60,   60,  931,  197,  195,   56,  194,
-       56,   71,  137,   88,   88,  453,   88,  453,  134,  570,
-       88,  201,  670,  144,  200,  271,  271,  197,  271,   88,
-       71,  194,   71,  207,   71,   88,  197,  195,  198,  194,
-       71,  137,   75,   71,   71,   71,  274,   71,   71,   71,
-
-      930,  201,  144,   71, 1257,  202,  197, 1257,  198,  202,
-       71,  203,   71,  207,   71,  203,  209,   88,  198,  204,
-       71,  210,  211,   71,   71,   71,   71,   71,   71,  204,
-      206,  212,   71,  274,   71,  202,  275,  198,  929,  202,
-      206,  203,  928,  206,   88,  203,  209,  336,  336,  204,
-      336,  210,  211,  217,  217,  217,  217,  460,  460,  204,
-      206,  212,  927,  274,  278,  278,  275,  278,  279,  279,
-      206,  279,  206,  280,  280,  283,  280,  281,  281,  297,
-      281,  278,  278,  278,  278,  279,  279,  279,  279,  299,
-      280,  280,  280,  280,  281,  281,  281,  281,  317,  288,
-
-      288,  385,  288,  300,  300,  283,  288,  278,  328,  297,
-      329,  356,  357,  373,  280,  308,  308,  281,  308,  299,
-      299,  374,  308,  343,  343,  343,  343,  379,  317,  380,
-      385,  308,  382,  384,  926,  300,  278,  308,  328,  387,
-      329,  356,  357,  373,  280,  389,  382,  281,  388,  925,
-      384,  374,  388,  924,  390,  391,  392,  379,  393,  380,
-      395,  394,  382,  384,  300,  394,  398,  923,  387,  308,
-      415,  415,  415,  415,  389,  382,  466,  466,  388,  384,
-      288,  922,  388,  390,  391,  455,  392,  455,  393,  395,
-      921,  394,  396,  397,  394,  398,  308,  345,  345,  345,
-
-      345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
-      345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
-      345,  345,  396,  397,  400,  345,  402,  345,  345,  345,
-      345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
-      345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
-      345,  403,  404,  400,  405,  402,  406,  408,  920,  410,
-      406,  919,  404,  407,  409,  406,  407,  918,  411,  438,
-      447,  409,  917,  457,  445,  457,  446,  481,  916,  481,
-      403,  449,  404,  915,  405,  459,  406,  408,  410,  914,
-      406,  404,  504,  407,  409,  406,  407,  411,  910,  438,
-
-      447,  409,  412,  445,  412,  446,  909,  412,  412,  441,
-      441,  449,  441,  412,  412,  459,  461,  464,  464,  412,
-      412,  504,  444,  444,  412,  444,  441,  441,  441,  441,
-      474,  412,  412,  476,  412,  462,  462,  412,  412,  444,
-      444,  444,  444,  412,  412,  479,  461,  461,  412,  412,
-      480,  464,  464,  412,  471,  471,  471,  471,  497,  483,
-      474,  483,  498,  476,  502,  503,  560,  462,  560,  857,
-      505,  462,  563,  856,  563,  479,  565,  565,  855,  565,
-      480,  664,  854,  664,  665,  665,  853,  665,  497,  852,
-      671,  671,  498,  671,  502,  503,  462,  463,  463,  505,
-
-      463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
-      463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
-      463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
-      463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
-      463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
-      463,  851,  463,  463,  463,  463,  463,  463,  463,  463,
-      463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
-      463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
-      463,  465,  465,  465,  465,  484,  485,  486,  490,  489,
-      465,  465,  465,  465,  465,  465,  487,  492,  493,  514,
-
-      494,  484,  485,  506,  491,  486,  507,  490,  494,  487,
-      850,  489,  508,  509,  510,  465,  465,  492,  493,  511,
-      465,  465,  465,  465,  465,  465,  491,  513,  514,  491,
-      515,  484,  485,  506,  517,  486,  507,  490,  494,  487,
-      489,  519,  508,  509,  510,  518,  520,  492,  493,  511,
-      849,  521,  539,  522,  848,  491,  524,  513,  491,  495,
-      515,  525,  526,  517,  495,  495,  495,  495,  527,  528,
-      495,  519,  529,  530,  518,  495,  520,  531,  532,  495,
-      521,  539,  495,  522,  495,  533,  524,  495,  534,  535,
-      536,  525,  526,  538,  495,  495,  495,  495,  527,  528,
-
-      495,  540,  529,  530,  537,  495,  541,  531,  532,  495,
-      537,  495,  542,  495,  543,  533,  495,  544,  534,  535,
-      536,  545,  546,  538,  547,  548,  549,  550,  847,  551,
-      540,  559,  678,  678,  537,  552,  541,  845,  552,  552,
-      537,  566,  542,  567,  543,  568,  838,  544,  679,  679,
-      545,  758,  546,  758,  547,  548,  549,  550,  551,  561,
-      561,  559,  561,  564,  564,  552,  564,  552,  552,  572,
-      835,  566,  582,  567,  823,  568,  561,  561,  561,  561,
-      564,  564,  564,  564,  677,  677,  677,  761,  761,  809,
-      761,  765,  765,  765,  766,  766,  767,  767,  800,  572,
-
-      573,  573,  582,  573,  573,  573,  573,  573,  573,  573,
-      573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
-      573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
-      573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
-      573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
-      573,  573,  573,  573,  769,  573,  573,  573,  573,  573,
-      573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
-      573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
-      573,  573,  573,  573,  574,  574,  583,  584,  587,  589,
-      578,  578,  594,  588,  590,  596,  593,  585,  588,  768,
-
-      592,  597,  591,  607,  764,  590,  587,  591,  587,  593,
-      594,  607,  763,  589,  597,  596,  583,  584,  574,  574,
-      575,  575,  575,  575,  578,  578,  585,  592,  588,  575,
-      575,  575,  575,  575,  575,  590,  587,  591,  587,  593,
-      594,  607,  589,  757,  597,  596,  839,  841,  839,  841,
-      912,  977,  912,  977,  751,  979,  592,  979,  747,  575,
-      575,  575,  575,  575,  575,  576,  576,  733,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  729,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  579,
-      579,  579,  579,  601,  598,  599,  600,  602,  579,  579,
-      579,  579,  579,  579,  595,  603,  601,  605,  608,  595,
-      598,  599,  604,  609,  600,  606,  610,  723,  611,  602,
-      614,  717,  615,  616,  603,  681,  617,  605,  579,  579,
-      579,  579,  579,  579,  604,  606,  601,  604,  608,  595,
-
-      598,  599,  609,  618,  600,  619,  610,  611,  602,  621,
-      614,  615,  616,  620,  603,  617,  622,  605,  623,  626,
-      674,  627,  628,  604,  629,  606,  604,  633,  634,  638,
-      620,  672,  636,  618,  637,  619,  620,  662,  640,  621,
-      641,  642,  643,  635,  644,  622,  645,  648,  623,  626,
-      627,  628,  646,  647,  629,  650,  633,  651,  634,  638,
-      620,  636,  652,  637,  653,  654,  620,  640,  655,  656,
-      641,  642,  643,  644,  657,  658,  645,  648,  659,  660,
-      661,  646,  647,  666,  659,  650,  667,  651,  668,  675,
-      675,  680,  652,  653,  685,  654,  688,  655,  689,  656,
-
-      682,  683,  686,  657,  687,  658,  691,  632,  659,  660,
-      661,  689,  666,  659,  686,  691,  667,  668,  688,  685,
-      690,  680,  687,  675,  675,  676,  676,  676,  676,  682,
-      586,  683,  692,  699,  676,  676,  676,  676,  676,  676,
-      690,  689,  693,  696,  686,  691,  694,  688,  685,  693,
-      692,  695,  687,  694,  696,  697,  698,  699,  702,  703,
-      695,  698,  709,  700,  676,  676,  676,  676,  676,  676,
-      690,  701,  703,  697,  700,  697,  701,  704,  706,  693,
-      692,  707,  705,  694,  696,  702,  699,  705,  577,  708,
-      695,  698,  709,  710,  707,  704,  711,  715,  706,  558,
-
-      713,  718,  703,  697,  700,  697,  701,  719,  720,  722,
-      557,  718,  724,  726,  702,  727,  728,  705,  708,  730,
-      555,  731,  710,  732,  707,  704,  711,  715,  706,  713,
-      734,  718,  735,  736,  738,  741,  719,  739,  720,  722,
-      718,  724,  740,  726,  743,  727,  728,  744,  746,  730,
-      731,  745,  748,  732,  749,  750,  752,  753,  755,  734,
-      754,  735,  736,  756,  738,  741,  739,  759,  760,  777,
-      773,  740,  776,  743,  772,  773,  775,  744,  746,  774,
-      745,  777,  748,  779,  749,  750,  752,  753,  755,  754,
-      778,  772,  775,  756,  774,  780,  776,  759,  760,  781,
-
-      783,  782,  784,  785,  787,  773,  554,  779,  781,  795,
-      786,  777,  778,  783,  789,  785,  788,  791,  523,  780,
-      795,  772,  775,  782,  774,  776,  787,  784,  786,  788,
-      790,  803,  804,  792,  789,  791,  779,  793,  781,  790,
-      792,  778,  794,  783,  793,  785,  805,  802,  780,  806,
-      795,  794,  782,  807,  808,  787,  784,  802,  786,  788,
-      810,  803,  804,  811,  789,  791,  812,  813,  814,  790,
-      792,  815,  500,  816,  793,  817,  805,  802,  806,  819,
-      825,  794,  807,  808,  821,  826,  830,  802,  827,  843,
-      810,  832,  836,  811,  499,  859,  812,  813,  814,  858,
-
-      837,  815,  816,  829,  829,  817, 1199, 1199,  829,  819,
-      825,  829,  859,  821,  829,  826,  830,  827,  843,  829,
-      862,  832,  836,  858,  833,  833,  860,  863,  861,  833,
-      837,  860,  833,  829,  829,  833,  862,  864,  829,  866,
-      867,  829,  859,  861,  829,  865,  869,  868,  829,  864,
-      488,  863,  858,  871,  833,  833,  868,  870,  872,  833,
-      873,  860,  833,  866,  867,  833,  862,  865,  869,  874,
-      870,  875,  880,  861,  877,  879,  881,  882,  884,  864,
-      863,  883,  886,  871,  888,  889,  868,  872,  895,  897,
-      873,  896,  866,  867,  899,  891,  865,  869,  874,  900,
-
-      870,  875,  880,  877,  879,  881,  901,  882,  884,  898,
-      883,  891,  886,  898,  888,  889,  898,  902,  895,  897,
-      896,  903,  905,  899,  904,  891,  898,  907,  906,  900,
-      908,  906,  470,  911,  938,  939,  901,  940,  941,  898,
-      891,  906,  937,  898,  942,  944,  898,  902,  945,  946,
-      947,  903,  905,  904,  949,  898,  907,  950,  906,  908,
-      951,  906,  911,  952,  938,  939,  937,  940,  941,  953,
-      906,  954,  955,  942,  956,  944,  958,  959,  945,  946,
-      947,  960,  961,  949,  962,  963,  965,  950,  966,  969,
-      951,  967,  952,  970,  971,  937,  972,  973,  974,  953,
-
-      975,  954,  955,  956,  976, 1004,  958,  959, 1005, 1006,
-     1007,  960,  961,  962,  963, 1008,  965,  975,  966,  969,
-      967, 1009, 1010,  970,  971,  972,  973,  974, 1011, 1012,
-      975, 1013, 1015,  976, 1004, 1014, 1017, 1021, 1005, 1006,
-     1007, 1018, 1019, 1020, 1022, 1008,  975, 1023, 1024,  443,
-     1026, 1009, 1010, 1028, 1029, 1030, 1031, 1011, 1012, 1032,
-     1034, 1013, 1015, 1035, 1014, 1036, 1017, 1021, 1037, 1036,
-     1018, 1019, 1020, 1038, 1022, 1052, 1053, 1023, 1024, 1026,
-     1054, 1055, 1028, 1029, 1056, 1030, 1031, 1058, 1059, 1032,
-     1034, 1061, 1035, 1062, 1036, 1063, 1064, 1037, 1036, 1065,
-
-     1066, 1067, 1069, 1038, 1073, 1052, 1053, 1074, 1075, 1054,
-     1055, 1078, 1079, 1056, 1080,  436, 1081, 1058, 1059, 1082,
-     1061, 1083, 1062, 1085, 1086, 1063, 1064, 1087, 1088, 1065,
-     1066, 1067, 1069, 1089, 1073, 1092, 1096, 1074, 1075, 1094,
-     1078, 1099, 1079, 1102, 1080, 1081, 1103, 1105, 1082, 1104,
-     1083, 1106, 1085, 1107, 1086, 1108, 1109, 1087, 1088, 1111,
-      435, 1112, 1113, 1089, 1114, 1092, 1096, 1116, 1094, 1120,
-     1121, 1099, 1122, 1102, 1123, 1125, 1103, 1105, 1104, 1126,
-     1127, 1106, 1128, 1107, 1129, 1108, 1109, 1132, 1134, 1111,
-     1112, 1113, 1135, 1136, 1114, 1137, 1116, 1139, 1142, 1120,
-
-     1121, 1122, 1144, 1148, 1123, 1125, 1145, 1146, 1149, 1126,
-     1127,  421, 1128, 1129, 1202, 1202, 1132,  420, 1134, 1202,
-      413, 1135, 1136,  386, 1137, 1203, 1203, 1139, 1142,  377,
-     1203,  375, 1144, 1148,  370, 1145, 1146,  368, 1149, 1153,
-     1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
-     1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
-     1153, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
-     1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
-     1154, 1154, 1154, 1155, 1155, 1155, 1155, 1155, 1155, 1155,
-     1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,
-
-     1155, 1155, 1155, 1155, 1155, 1156, 1156, 1156, 1156, 1156,
-     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
-     1156, 1156, 1156, 1156, 1156, 1156, 1156, 1157, 1157, 1157,
-     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
-     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1158,
+       35,   35,   35,   40,  387,   40,  456,   55,  456,   55,
+       55,   88,   88,   56,   55,   56,   56,   62,  997,   62,
+       56,  193,   55,   57,   62,   57,   57,  389,   56,   58,
+       57,   58,   58,  387,   77,   77,   58,   77,   57,  136,
+      136,   77,  996,   88,   58,   59,  195,   59,   59,  197,
+
+      198,  193,  195,   40,  373,   40,  389,  139,  139,  941,
+      202,  373,   60,  197,   60,   60,  940,   62,   62,   62,
+      939,  136,   88,  146,  146,  458,  195,  458,  465,  465,
+      198,  195,   40,  938,   40,   41,   55,  575,   55,  139,
+      202,   41,   56,  197,   56,   59,   59,   59,   41,   41,
+      136,  196,   57,  199,   57,  146,  203,   41,   58,  196,
+       58,   41,   60,   60,   60,   77,   90,   90,  139,   90,
+      460,   41,  460,   90,  199,  391,   41,  471,  471,  200,
+      209,  196,   90,  199,  146,  206,  203,   41,   90,  196,
+      393,   41,  937,  204,  211,  206,  278,  204,  936,  200,
+
+       41,  212,  205,  199,  391,   41,  205,   41,   42,  200,
+      209,  213,  214,  279,   42,  206,  208,  575,  287,  393,
+       90,   42,   42,  204,  211,  206,  208,  204,  200,  208,
+       42,  212,  205,  278,   42,  935,  205,  219,  219,  219,
+      219,  213,  214,  279,   42,  301,  208,   90,  287,   42,
+      271,  271,  934,  271,  275,  275,  208,  275,  208,  462,
+       42,  462,  321,  278,   42,  282,  282,  933,  282,  283,
+      283,  332,  283,   42, 1262,  301,  303, 1262,   42,  333,
+       42,   73,  282,  282,  282,  282,  283,  283,  283,  283,
+      292,  292,  321,  292,  360,  340,  340,  292,  340,  361,
+
+       73,  332,   73,  377,   73,  378,  303,  303,  282,  333,
+       73,  675,  383,   73,   73,   73,  932,   73,   73,   73,
+      394,  683,  683,   73,  360,  684,  684,  304,  304,  361,
+       73,  931,   73,  377,   73,  378,  384,  282,  284,  284,
+       73,  284,  383,   73,   73,   73,   73,   73,   73,  394,
+      285,  285,   73,  285,   73,  284,  284,  284,  284,  304,
+      347,  347,  347,  347,  386,  930,  384,  285,  285,  285,
+      285,  292,  395,  312,  312,  388,  312,  399,  386,  284,
+      312,  392,  396,  397,  400,  392,  401,  409,  304,  312,
+      285,  675,  388,  398,  386,  312,  402,  398,  929,  404,
+
+      406,  395,  407,  412,  928,  388,  399,  386,  408,  284,
+      414,  392,  396,  397,  400,  392,  401,  409,  408,  411,
+      285,  388,  411,  398,  415,  402,  398,  312,  404,  406,
+      486,  407,  486,  412,  419,  419,  419,  419,  408,  414,
+      476,  476,  476,  476,  488,  927,  488,  408,  926,  411,
+      443,  452,  411,  415,  312,  349,  349,  349,  349,  349,
+      349,  349,  349,  349,  349,  349,  349,  349,  349,  349,
+      349,  349,  349,  349,  349,  349,  349,  349,  349,  349,
+      443,  452,  565,  349,  565,  349,  349,  349,  349,  349,
+      349,  349,  349,  349,  349,  349,  349,  349,  349,  349,
+
+      349,  349,  349,  349,  349,  349,  349,  349,  349,  410,
+      413,  446,  446,  410,  446,  450,  451,  413,  410,  494,
+      454,  925,  464,  479,  568,  669,  568,  669,  446,  446,
+      446,  446,  466,  467,  467,  509,  771,  771,  481,  410,
+      413,  494,  484,  410,  450,  451,  924,  413,  410,  416,
+      454,  416,  464,  479,  416,  416,  449,  449,  485,  449,
+      416,  416,  466,  466,  509,  467,  416,  416,  481,  467,
+      494,  416,  484,  449,  449,  449,  449,  923,  416,  416,
+      763,  416,  763,  922,  416,  416,  570,  570,  485,  570,
+      416,  416,  772,  772,  467,  416,  416,  682,  682,  682,
+
+      416,  468,  468,  921,  468,  468,  468,  468,  468,  468,
+      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
+      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
+      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
+      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
+      468,  468,  468,  468,  468,  920,  468,  468,  468,  468,
+      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
+      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
+      468,  468,  468,  468,  468,  469,  469,  502,  499,  497,
+      489,  490,  491,  495,  498,  492,  499,  503,  844,  507,
+
+      844,  670,  670,  496,  670,  919,  489,  490,  492,  497,
+      491,  508,  495,  511,  498,  915,  510,  502,  512,  469,
+      469,  470,  470,  470,  470,  496,  499,  503,  496,  507,
+      470,  470,  470,  470,  470,  470,  489,  490,  492,  497,
+      491,  508,  495,  511,  498,  510,  513,  914,  512,  514,
+      515,  516,  862,  518,  496,  470,  470,  496,  519,  522,
+      470,  470,  470,  470,  470,  470,  500,  520,  861,  523,
+      524,  500,  500,  500,  500,  525,  513,  500,  527,  514,
+      515,  516,  500,  518,  526,  529,  500,  519,  522,  500,
+      860,  500,  530,  859,  500,  531,  532,  520,  523,  533,
+
+      524,  500,  500,  500,  500,  525,  534,  500,  527,  535,
+      536,  537,  500,  526,  538,  529,  500,  539,  500,  540,
+      500,  541,  530,  500,  542,  531,  532,  543,  546,  533,
+      542,  858,  544,  545,  547,  548,  534,  549,  551,  535,
+      536,  537,  550,  552,  538,  553,  554,  539,  555,  540,
+      556,  541,  557,  564,  542,  557,  557,  543,  546,  857,
+      542,  544,  545,  856,  547,  548,  571,  549,  551,  566,
+      566,  550,  566,  552,  572,  553,  554,  590,  555,  556,
+      855,  573,  557,  564,  557,  557,  566,  566,  566,  566,
+      569,  569,  577,  569,  854,  587,  571,  676,  676,  846,
+
+      676,  846,  766,  766,  572,  766,  590,  569,  569,  569,
+      569,  573,  770,  770,  770,  917,  982,  917,  982,  984,
+      853,  984,  577,  578,  578,  587,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  852,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+
+      578,  578,  578,  578,  578,  578,  578,  579,  579,  588,
+      589,  592,  594,  583,  583,  593,  596,  595,  601,  598,
+      593,  596,  597,  850,  602,  600,  612,  843,  595,  592,
+      600,  592,  598,  613,  612,  840,  594,  602,  601,  588,
+      589,  579,  579,  580,  580,  580,  580,  583,  583,  597,
+      593,  596,  580,  580,  580,  580,  580,  580,  595,  592,
+      600,  592,  598,  613,  612,  594,  828,  602,  601, 1204,
+     1204, 1207, 1207,  814, 1208, 1208, 1207,  805,  597, 1208,
+      774,  773,  580,  580,  580,  580,  580,  580,  581,  581,
+      769,  581,  581,  581,  581,  581,  581,  581,  581,  581,
+
+      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
+      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
+      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
+      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
+      581,  581,  768,  581,  581,  581,  581,  581,  581,  581,
+      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
+      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
+      581,  581,  584,  584,  584,  584,  599,  603,  605,  604,
+      607,  584,  584,  584,  584,  584,  584,  606,  608,  610,
+      611,  614,  616,  603,  599,  604,  605,  609,  615,  619,
+
+      606,  762,  607,  620,  621,  622,  623,  608,  624,  610,
+      611,  584,  584,  584,  584,  584,  584,  626,  625,  609,
+      614,  616,  609,  603,  599,  604,  605,  627,  615,  619,
+      606,  607,  620,  621,  622,  625,  623,  608,  624,  610,
+      611,  625,  628,  631,  756,  632,  633,  626,  609,  634,
+      639,  609,  638,  641,  642,  643,  627,  645,  646,  647,
+      648,  752,  649,  650,  653,  625,  651,  652,  655,  656,
+      657,  625,  628,  631,  632,  633,  658,  659,  661,  634,
+      639,  638,  641,  642,  660,  643,  645,  662,  646,  647,
+      648,  649,  663,  650,  653,  651,  652,  664,  655,  656,
+
+      657,  665,  738,  664,  666,  658,  671,  659,  661,  672,
+      692,  673,  685,  660,  680,  680,  662,  687,  690,  693,
+      734,  728,  663,  694,  688,  691,  697,  664,  692,  696,
+      722,  665,  664,  686,  666,  671,  694,  691,  696,  672,
+      673,  693,  685,  690,  697,  695,  687,  700,  680,  680,
+      681,  681,  681,  681,  688,  707,  700,  702,  692,  681,
+      681,  681,  681,  681,  681,  695,  694,  691,  696,  698,
+      693,  699,  690,  701,  697,  702,  698,  702,  699,  704,
+      703,  709,  707,  706,  701,  703,  700,  705,  706,  681,
+      681,  681,  681,  681,  681,  695,  708,  712,  705,  709,
+
+      711,  713,  715,  704,  714,  702,  698,  702,  699,  708,
+      712,  707,  710,  716,  701,  703,  718,  710,  706,  720,
+      711,  679,  724,  723,  725,  727,  677,  729,  705,  709,
+      713,  715,  704,  723,  714,  731,  732,  733,  735,  708,
+      712,  736,  737,  716,  739,  718,  740,  710,  741,  720,
+      711,  724,  743,  723,  725,  727,  729,  744,  745,  746,
+      667,  748,  723,  749,  751,  731,  732,  733,  735,  750,
+      736,  753,  737,  739,  754,  740,  755,  741,  757,  758,
+      777,  759,  743,  760,  761,  764,  744,  745,  765,  746,
+      748,  778,  779,  749,  751,  780,  778,  777,  750,  781,
+
+      782,  753,  783,  787,  754,  784,  755,  779,  757,  758,
+      759,  780,  782,  760,  761,  764,  785,  791,  765,  788,
+      789,  786,  790,  781,  783,  787,  778,  777,  792,  784,
+      786,  794,  788,  793,  790,  791,  797,  779,  795,  796,
+      785,  780,  782,  797,  640,  789,  793,  795,  798,  811,
+      792,  794,  781,  783,  787,  798,  800,  796,  784,  799,
+      786,  807,  788,  808,  790,  791,  809,  800,  799,  785,
+      810,  807,  815,  797,  789,  812,  793,  795,  811,  792,
+      813,  794,  816,  817,  818,  798,  819,  796,  820,  637,
+      821,  807,  822,  808,  824,  830,  809,  800,  799,  826,
+
+      810,  807,  815,  831,  812,  832,  835,  837,  591,  813,
+      864,  866,  816,  817,  818,  841,  819,  582,  820,  821,
+      848,  842,  822,  563,  824,  830,  866,  864,  826,  863,
+      834,  834,  562,  831,  832,  834,  835,  837,  834,  838,
+      838,  834,  867,  865,  838,  841,  834,  838,  865,  848,
+      838,  842,  868,  863,  869,  871,  866,  864,  867,  870,
+      834,  834,  872,  873,  876,  834,  869,  874,  834,  838,
+      838,  834,  873,  878,  838,  834,  868,  838,  865,  871,
+      838,  870,  863,  877,  875,  879,  872,  880,  867,  874,
+      882,  884,  885,  887,  876,  886,  869,  875,  560,  888,
+
+      889,  891,  873,  878,  893,  868,  894,  900,  871,  896,
+      870,  901,  877,  902,  879,  872,  905,  880,  874,  882,
+      884,  904,  885,  887,  886,  896,  906,  875,  888,  907,
+      889,  891,  908,  910,  893,  909,  894,  900,  903,  896,
+      901,  912,  903,  902,  911,  903,  905,  911,  559,  913,
+      904,  916,  942,  943,  896,  903,  906,  911,  944,  907,
+      945,  946,  908,  910,  909,  947,  949,  950,  903,  951,
+      912,  952,  903,  954,  911,  903,  942,  911,  913,  955,
+      916,  956,  958,  943,  903,  957,  911,  959,  944,  960,
+      945,  946,  961,  963,  947,  964,  949,  950,  965,  951,
+
+      966,  952,  954,  967,  968,  942,  970,  971,  974,  955,
+      972,  956,  958,  975,  957,  976, 1010,  959,  977,  960,
+      978,  961,  979,  963,  980,  964,  981, 1009,  965, 1011,
+      966, 1012,  967,  968, 1013, 1014,  970,  971,  974,  972,
+     1016,  980, 1015,  975, 1017,  976, 1010,  977, 1018,  978,
+     1019,  979, 1020, 1022,  980,  981, 1009, 1023, 1024, 1011,
+     1025, 1012, 1026, 1027, 1013, 1014, 1028, 1029, 1035, 1016,
+      980, 1031, 1015, 1017, 1033, 1034, 1036, 1037, 1018, 1019,
+     1039, 1043, 1020, 1022, 1040, 1042, 1023, 1024, 1057, 1025,
+     1041, 1058, 1026, 1027, 1041, 1059, 1028, 1029, 1035, 1060,
+
+     1031, 1061, 1063, 1033, 1034, 1064, 1036, 1037, 1066, 1067,
+     1039, 1043, 1068, 1040, 1042, 1069, 1070, 1071, 1057, 1041,
+     1072, 1058, 1074, 1041, 1059, 1078, 1079, 1080, 1060, 1083,
+     1061, 1084, 1063, 1085, 1091, 1064, 1086, 1066, 1067, 1087,
+     1088, 1090, 1068, 1092, 1093, 1069, 1070, 1071, 1094, 1097,
+     1072, 1099, 1074, 1101, 1104, 1078, 1079, 1080, 1083, 1107,
+     1108, 1084, 1109, 1085, 1091, 1086, 1110, 1111, 1087, 1088,
+     1090, 1112, 1113, 1092, 1093, 1114, 1116, 1119, 1094, 1097,
+     1099, 1117, 1118, 1101, 1104, 1121, 1125, 1126, 1128, 1107,
+     1108, 1109, 1127, 1130, 1131, 1132, 1110, 1111, 1133,  528,
+
+     1134, 1112, 1113, 1137, 1139, 1114, 1116, 1119, 1140, 1141,
+     1117, 1118, 1142, 1144, 1121, 1147, 1125, 1126, 1128, 1149,
+     1153, 1127, 1150, 1130, 1131, 1132, 1151, 1154, 1133, 1134,
+     1218, 1218, 1137,  505, 1139, 1218,  504, 1140, 1141, 1219,
+     1219, 1142,  493, 1144, 1219, 1147,  475,  448,  441, 1149,
+     1153, 1150,  440,  425,  424, 1151,  417, 1154, 1158, 1158,
      1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
      1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
-     1158, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
      1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
-     1159, 1159, 1159, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
+     1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
 
+     1159, 1159, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
      1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
-     1160, 1160, 1160, 1160, 1160, 1161, 1161, 1161, 1161, 1161,
+     1160, 1160, 1160, 1160, 1161, 1161, 1161, 1161, 1161, 1161,
      1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
-     1161, 1161, 1161, 1161, 1161, 1161, 1161, 1162, 1162, 1162,
+     1161, 1161, 1161, 1161, 1161, 1161, 1162, 1162, 1162, 1162,
      1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
-     1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1163,
+     1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1163, 1163,
      1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
      1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
-     1163, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
      1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
 
-     1164, 1164, 1164, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
+     1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
+     1164, 1164, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
      1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1166, 1166, 1166, 1166, 1166,
+     1165, 1165, 1165, 1165, 1166, 1166, 1166, 1166, 1166, 1166,
      1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166,
-     1166, 1166, 1166, 1166, 1166, 1166, 1166, 1167, 1167, 1167,
+     1166, 1166, 1166, 1166, 1166, 1166, 1167, 1167, 1167, 1167,
      1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167,
-     1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1168,
+     1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1168, 1168,
      1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168,
      1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168,
-     1168, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169,
 
      1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169,
-     1169, 1169, 1169, 1170, 1170, 1170, 1170, 1170, 1170, 1170,
+     1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169,
+     1169, 1169, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170,
      1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170,
-     1170, 1170, 1170, 1170, 1170, 1171, 1171, 1171, 1171, 1171,
+     1170, 1170, 1170, 1170, 1171, 1171, 1171, 1171, 1171, 1171,
      1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1172, 1172, 1172,
+     1171, 1171, 1171, 1171, 1171, 1171, 1172, 1172, 1172, 1172,
      1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,
-     1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1173,
-     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+     1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1173, 1173,
      1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
 
-     1173, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+     1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174,
      1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174,
-     1174, 1174, 1174, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
+     1174, 1174, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
      1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
-     1175, 1175, 1175, 1175, 1175, 1176, 1176, 1176, 1176, 1176,
+     1175, 1175, 1175, 1175, 1176, 1176, 1176, 1176, 1176, 1176,
      1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176,
-     1176, 1176, 1176, 1176, 1176, 1176, 1176, 1177,  367, 1177,
-     1213, 1213, 1177, 1177,  352, 1213,  339, 1177, 1178, 1178,
-     1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
-     1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1179,
+     1176, 1176, 1176, 1176, 1176, 1176, 1177, 1177, 1177, 1177,
+     1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,
+     1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1178, 1178,
 
-      338, 1179, 1214, 1214, 1179, 1179,  337, 1214,  334, 1179,
-     1180,  320, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
+     1178, 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, 1179, 1179, 1179, 1179, 1179,
+     1179, 1179, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
      1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
-     1180, 1180, 1181,  313, 1181, 1181, 1181, 1181, 1181, 1181,
+     1180, 1180, 1180, 1180, 1181, 1181, 1181, 1181, 1181, 1181,
      1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
-     1181, 1181, 1181, 1181, 1182, 1182, 1264, 1182, 1264, 1264,
-     1182, 1182,  312,  311,  310, 1182, 1183,  307, 1183, 1183,
-     1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183,
-     1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1184, 1184,
-     1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
+     1181, 1181, 1181, 1181, 1181, 1181, 1182, 1269, 1182, 1269,
+     1269, 1182, 1182,  390,  381,  379, 1182, 1183, 1183, 1183,
 
-     1184, 1184, 1184, 1184,  305, 1184,  304, 1184, 1184, 1184,
-     1185,  295, 1185, 1185,  294, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185,  291, 1185,  290, 1185,
-     1185, 1185, 1186,  273,  269, 1186, 1186, 1186, 1186, 1186,
+     1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183,
+     1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1184,  374,
+     1184,  372,  371, 1184, 1184,  356,  343,  342, 1184, 1185,
+      341, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
+     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
+     1185, 1186,  338, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
      1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
-     1186, 1186, 1186, 1186, 1187,  265, 1187,  261,  257, 1187,
-     1187,  254,  250,  248, 1187, 1188,  247, 1188, 1188, 1188,
+     1186, 1186, 1186, 1187, 1187,  324, 1187,  317,  316, 1187,
+     1187,  315,  314,  311, 1187, 1188,  309, 1188, 1188, 1188,
      1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
-     1188, 1188, 1188, 1188, 1188, 1188, 1188, 1189,  245, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
 
-     1189, 1189, 1189, 1189, 1189,  244, 1189, 1189, 1189, 1190,
-      243, 1190,  239, 1190,  222, 1190, 1190, 1190, 1190,  221,
-     1190, 1190, 1190,  220,  216,  189, 1190, 1191,  188, 1191,
-     1191, 1191,  186, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1192,
-      184, 1192,  183,  180, 1192, 1192,  179,  178,  174, 1192,
-     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+     1188, 1188, 1188, 1188, 1188, 1188, 1188, 1189, 1189, 1189,
+     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
+     1189, 1189, 1189,  308, 1189,  299, 1189, 1189, 1189, 1190,
+      298, 1190, 1190,  295, 1190, 1190, 1190, 1190, 1190, 1190,
+     1190, 1190, 1190, 1190, 1190,  294, 1190,  277, 1190, 1190,
+     1190, 1191,  273,  269, 1191, 1191, 1191, 1191, 1191, 1191,
+     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
+     1191, 1191, 1191, 1192,  265, 1192,  260,  257, 1192, 1192,
+      253,  251,  250, 1192, 1193,  248, 1193, 1193, 1193, 1193,
      1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
-     1193, 1193, 1194,  172, 1194, 1194, 1194, 1194, 1194,  170,
-     1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,  167, 1194,
-
-      166, 1194, 1194, 1194, 1195,  165, 1195,  164, 1195, 1195,
-     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
-      156,  155,  151, 1195, 1195, 1195, 1196, 1196, 1196, 1196,
-     1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
-     1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1197,  150,
-     1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
-     1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
-     1198, 1198,  148,  143,  141,  136, 1198, 1198, 1200,  132,
-     1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,
-     1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,
-
-     1201,  126,  121, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
-     1201, 1201, 1201, 1201, 1201, 1201,  119, 1201,  118, 1201,
-     1204,  115, 1204, 1204, 1204, 1204,  113, 1204, 1204, 1204,
-     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
-     1204, 1204, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,  111, 1205,
-      110, 1205, 1205, 1205, 1206,  109, 1206, 1206, 1206,  105,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-      102,  101,   98, 1206, 1206, 1206, 1207,   96, 1207,   92,
-     1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207,
-
-     1207, 1207,   90,   84,   83, 1207, 1207, 1207, 1208, 1208,
-     1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208,
-     1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208,
-     1209,   80, 1209, 1209, 1209,   77, 1209, 1209, 1209, 1209,
-     1209, 1209, 1209, 1209, 1209, 1209,   72,   69,   65, 1209,
-     1209, 1209, 1210,   61, 1210,   16,   15, 1210, 1210,    0,
-        0,    0, 1210, 1211,    0, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
-     1211, 1211, 1211, 1211, 1211, 1212,    0, 1212, 1212, 1212,
-     1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212,
 
-     1212, 1212, 1212, 1212, 1212, 1212, 1212, 1215, 1215, 1215,
-     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
-     1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1216,
-        0, 1216,    0,    0, 1216, 1216,    0,    0,    0, 1216,
-     1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
+     1193, 1193, 1193, 1193, 1193, 1193, 1194,  247, 1194, 1194,
+     1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
+     1194, 1194, 1194, 1194,  246, 1194, 1194, 1194, 1195,  242,
+     1195,  231, 1195,  224, 1195, 1195, 1195, 1195,  223, 1195,
+     1195, 1195,  222,  218,  191, 1195, 1196,  190, 1196, 1196,
+     1196,  188, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
+     1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1197,  186,
+     1197,  185,  182, 1197, 1197,  181,  180,  176, 1197, 1198,
+     1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
+     1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
+
+     1198, 1199,  174, 1199, 1199, 1199, 1199, 1199,  172, 1199,
+     1199, 1199, 1199, 1199, 1199, 1199, 1199,  169, 1199,  168,
+     1199, 1199, 1199, 1200,  167, 1200,  166, 1200, 1200, 1200,
+     1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,  158,
+      157,  153, 1200, 1200, 1200, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1202,  152, 1202,
+     1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
+     1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1203,
+     1203,  150,  145,  143,  138, 1203, 1203, 1205,  134, 1205,
+
+     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
+     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1206,
+      128,  123, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
+     1206, 1206, 1206, 1206, 1206,  121, 1206,  120, 1206, 1209,
+      117, 1209, 1209, 1209, 1209,  115, 1209, 1209, 1209, 1209,
+     1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
+     1209, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210,
+     1210, 1210, 1210, 1210, 1210, 1210, 1210,  113, 1210,  112,
+     1210, 1210, 1210, 1211,  111, 1211, 1211, 1211,  107, 1211,
+     1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,  104,
+
+      103,  100, 1211, 1211, 1211, 1212,   98, 1212,   94, 1212,
+     1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212,
+     1212,   92,   86,   85, 1212, 1212, 1212, 1213, 1213, 1213,
+     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
+     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1214,
+       82, 1214, 1214, 1214,   79, 1214, 1214, 1214, 1214, 1214,
+     1214, 1214, 1214, 1214, 1214,   74,   71,   67, 1214, 1214,
+     1214, 1215,   63, 1215,   16,   15, 1215, 1215,    0,    0,
+        0, 1215, 1216,    0, 1216, 1216, 1216, 1216, 1216, 1216,
+     1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216,
+
+     1216, 1216, 1216, 1216, 1217,    0, 1217, 1217, 1217, 1217,
      1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
-     1217, 1217, 1218,    0, 1218, 1218, 1218, 1218, 1218, 1218,
-     1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
-        0, 1218, 1218, 1218, 1219,    0, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-
-     1219, 1219, 1219, 1219, 1219, 1219, 1221,    0, 1221,    0,
-        0, 1221, 1221,    0,    0,    0, 1221,    0, 1221, 1222,
-        0, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+     1217, 1217, 1217, 1217, 1217, 1217, 1220, 1220, 1220, 1220,
+     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
+     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1221,    0,
+     1221,    0,    0, 1221, 1221,    0,    0,    0, 1221, 1222,
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
      1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
      1222, 1223,    0, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
-     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,    0,
+
      1223, 1223, 1223, 1224,    0, 1224, 1224, 1224, 1224, 1224,
      1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224,
-     1224, 1224, 1224, 1224, 1224, 1225,    0, 1225, 1225, 1225,
-     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
-
-     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1226, 1226, 1226,
-     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
-     1226, 1226, 1226,    0, 1226,    0, 1226, 1226, 1226, 1227,
-        0, 1227, 1227,    0, 1227, 1227, 1227, 1227, 1227, 1227,
-     1227, 1227, 1227, 1227, 1227,    0, 1227,    0, 1227, 1227,
-     1227, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228,
+     1224, 1224, 1224, 1224, 1224, 1226,    0, 1226,    0,    0,
+     1226, 1226,    0,    0,    0, 1226,    0, 1226, 1227,    0,
+     1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227,
+     1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227,
+     1228,    0, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228,
      1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228,
-     1228, 1228, 1228, 1229,    0,    0, 1229, 1229, 1229, 1229,
+     1228, 1228, 1229,    0, 1229, 1229, 1229, 1229, 1229, 1229,
      1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229,
-     1229, 1229, 1229, 1229, 1229, 1230,    0, 1230,    0,    0,
-
-     1230, 1230,    0,    0,    0, 1230, 1231,    0, 1231,    0,
-     1231,    0, 1231, 1231, 1231, 1231,    0, 1231, 1231, 1231,
-        0,    0,    0, 1231, 1232,    0, 1232, 1232, 1232, 1232,
-     1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
-     1232, 1232, 1232, 1232, 1232, 1232, 1233,    0, 1233,    0,
-        0, 1233, 1233,    0,    0,    0, 1233, 1234, 1234, 1234,
-     1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
-     1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1235,
-        0, 1235, 1235, 1235, 1235, 1235,    0, 1235, 1235, 1235,
-     1235, 1235, 1235, 1235, 1235,    0, 1235,    0, 1235, 1235,
 
-     1235, 1236,    0, 1236,    0, 1236, 1236, 1236, 1236, 1236,
-     1236, 1236, 1236, 1236, 1236, 1236, 1236,    0,    0,    0,
-     1236, 1236, 1236, 1237,    0, 1237, 1237, 1237, 1237, 1237,
+     1229, 1229, 1229, 1229, 1230,    0, 1230, 1230, 1230, 1230,
+     1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+     1230, 1230, 1230, 1230, 1230, 1230, 1231, 1231, 1231, 1231,
+     1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+     1231, 1231,    0, 1231,    0, 1231, 1231, 1231, 1232,    0,
+     1232, 1232,    0, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
+     1232, 1232, 1232, 1232,    0, 1232,    0, 1232, 1232, 1232,
+     1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
+     1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
+     1233, 1233, 1234,    0,    0, 1234, 1234, 1234, 1234, 1234,
+
+     1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+     1234, 1234, 1234, 1234, 1235,    0, 1235,    0,    0, 1235,
+     1235,    0,    0,    0, 1235, 1236,    0, 1236,    0, 1236,
+        0, 1236, 1236, 1236, 1236,    0, 1236, 1236, 1236,    0,
+        0,    0, 1236, 1237,    0, 1237, 1237, 1237, 1237, 1237,
      1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237,
-     1237, 1237, 1237, 1237, 1237, 1238,    0, 1238, 1238, 1238,
-     1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238,
-     1238, 1238, 1238, 1238, 1238, 1238, 1238, 1239, 1239,    0,
-        0,    0,    0, 1239, 1239, 1240,    0, 1240, 1240, 1240,
-     1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
-     1240, 1240, 1240, 1240, 1240, 1240, 1240, 1241,    0,    0,
-
-     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
-     1241, 1241, 1241,    0, 1241,    0, 1241, 1242,    0,    0,
-        0, 1242,    0, 1242,    0,    0, 1242, 1242,    0,    0,
-        0, 1242, 1243,    0, 1243,    0, 1243, 1243, 1243,    0,
-        0,    0, 1243, 1244,    0, 1244, 1244, 1244, 1244,    0,
-     1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,
-     1244, 1244, 1244, 1244, 1244, 1245, 1245, 1245, 1245, 1245,
+     1237, 1237, 1237, 1237, 1237, 1238,    0, 1238,    0,    0,
+     1238, 1238,    0,    0,    0, 1238, 1239, 1239, 1239, 1239,
+     1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239,
+     1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1240,    0,
+
+     1240, 1240, 1240, 1240, 1240,    0, 1240, 1240, 1240, 1240,
+     1240, 1240, 1240, 1240,    0, 1240,    0, 1240, 1240, 1240,
+     1241,    0, 1241,    0, 1241, 1241, 1241, 1241, 1241, 1241,
+     1241, 1241, 1241, 1241, 1241, 1241,    0,    0,    0, 1241,
+     1241, 1241, 1242,    0, 1242, 1242, 1242, 1242, 1242, 1242,
+     1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242,
+     1242, 1242, 1242, 1242, 1243,    0, 1243, 1243, 1243, 1243,
+     1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
+     1243, 1243, 1243, 1243, 1243, 1243, 1244, 1244,    0,    0,
+        0,    0, 1244, 1244, 1245,    0, 1245, 1245, 1245, 1245,
+
      1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
-     1245,    0, 1245,    0, 1245, 1245, 1245, 1246,    0, 1246,
-     1246, 1246,    0, 1246, 1246, 1246, 1246, 1246, 1246, 1246,
-
-     1246, 1246, 1246,    0,    0,    0, 1246, 1246, 1246, 1247,
-        0, 1247,    0, 1247, 1247, 1247, 1247, 1247, 1247, 1247,
-     1247, 1247, 1247, 1247, 1247,    0,    0,    0, 1247, 1247,
-     1247, 1248,    0, 1248, 1248, 1248,    0, 1248, 1248, 1248,
-     1248, 1248, 1248, 1248, 1248, 1248, 1248,    0,    0,    0,
-     1248, 1248, 1248, 1249,    0, 1249, 1249, 1249, 1249, 1249,
+     1245, 1245, 1245, 1245, 1245, 1245, 1246,    0,    0, 1246,
+     1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246,
+     1246, 1246,    0, 1246,    0, 1246, 1247,    0,    0,    0,
+     1247,    0, 1247,    0,    0, 1247, 1247,    0,    0,    0,
+     1247, 1248,    0, 1248,    0, 1248, 1248, 1248,    0,    0,
+        0, 1248, 1249,    0, 1249, 1249, 1249, 1249,    0, 1249,
      1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249,
-     1249, 1249, 1249, 1249, 1249, 1250,    0, 1250, 1250, 1250,
+     1249, 1249, 1249, 1249, 1250, 1250, 1250, 1250, 1250, 1250,
      1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250,
-     1250, 1250, 1250, 1250, 1250, 1250, 1250, 1251, 1251, 1251,
 
-     1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251,
-     1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1252,
-        0, 1252,    0,    0, 1252, 1252,    0,    0,    0, 1252,
-     1253,    0, 1253,    0,    0, 1253, 1253,    0,    0,    0,
-     1253, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
+        0, 1250,    0, 1250, 1250, 1250, 1251,    0, 1251, 1251,
+     1251,    0, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251,
+     1251, 1251,    0,    0,    0, 1251, 1251, 1251, 1252,    0,
+     1252,    0, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252,
+     1252, 1252, 1252, 1252,    0,    0,    0, 1252, 1252, 1252,
+     1253,    0, 1253, 1253, 1253,    0, 1253, 1253, 1253, 1253,
+     1253, 1253, 1253, 1253, 1253, 1253,    0,    0,    0, 1253,
+     1253, 1253, 1254,    0, 1254, 1254, 1254, 1254, 1254, 1254,
      1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
-     1254, 1254, 1254, 1255, 1255, 1255, 1255, 1255, 1255, 1255,
+     1254, 1254, 1254, 1254, 1255,    0, 1255, 1255, 1255, 1255,
+
      1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255,
-     1255, 1255, 1255, 1255, 1255, 1256,    0, 1256, 1256, 1256,
+     1255, 1255, 1255, 1255, 1255, 1255, 1256, 1256, 1256, 1256,
      1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256,
-
-     1256, 1256, 1256,    0, 1256, 1256, 1256, 1258,    0, 1258,
-        0,    0, 1258, 1258,    0,    0,    0, 1258,    0, 1258,
-     1259,    0, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259,
+     1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1257,    0,
+     1257,    0,    0, 1257, 1257,    0,    0,    0, 1257, 1258,
+        0, 1258,    0,    0, 1258, 1258,    0,    0,    0, 1258,
+     1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259,
      1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259,
-     1259, 1259, 1260,    0, 1260, 1260, 1260, 1260, 1260, 1260,
+     1259, 1259, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260,
      1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260,
+
      1260, 1260, 1260, 1260, 1261,    0, 1261, 1261, 1261, 1261,
      1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261,
-     1261, 1261, 1261, 1261, 1261, 1261, 1262,    0, 1262, 1262,
-        0, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262,
-
-     1262, 1262,    0, 1262,    0, 1262, 1262, 1262, 1263, 1263,
-     1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263,
-     1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263,
-     1265,    0, 1265,    0,    0, 1265, 1265,    0,    0,    0,
-     1265, 1266,    0, 1266, 1266, 1266, 1266, 1266, 1266, 1266,
+     1261, 1261,    0, 1261, 1261, 1261, 1263,    0, 1263,    0,
+        0, 1263, 1263,    0,    0,    0, 1263,    0, 1263, 1264,
+        0, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
+     1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264,
+     1264, 1265,    0, 1265, 1265, 1265, 1265, 1265, 1265, 1265,
+     1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265,
+     1265, 1265, 1265, 1266,    0, 1266, 1266, 1266, 1266, 1266,
      1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266,
-     1266, 1266, 1266, 1267,    0, 1267, 1267, 1267, 1267, 1267,
-     1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
-     1267, 1267, 1267, 1267, 1267, 1268, 1268,    0,    0,    0,
-        0, 1268, 1268, 1269,    0,    0,    0, 1269,    0, 1269,
 
-        0,    0, 1269, 1269,    0,    0,    0, 1269, 1270,    0,
-     1270,    0, 1270, 1270, 1270,    0,    0,    0, 1270, 1271,
-        0, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1266, 1266, 1266, 1266, 1266, 1267,    0, 1267, 1267,    0,
+     1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
+     1267,    0, 1267,    0, 1267, 1267, 1267, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1270,
+        0, 1270,    0,    0, 1270, 1270,    0,    0,    0, 1270,
+     1271,    0, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
      1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-     1271, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272,
+     1271, 1271, 1272,    0, 1272, 1272, 1272, 1272, 1272, 1272,
      1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272,
-     1272, 1272, 1272, 1273,    0, 1273,    0,    0, 1273, 1273,
-        0,    0,    0, 1273, 1274,    0, 1274, 1274, 1274, 1274,
-     1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274,
-     1274, 1274, 1274, 1274, 1274, 1274, 1275,    0, 1275,    0,
 
-        0, 1275, 1275,    0,    0,    0, 1275, 1276, 1276, 1276,
+     1272, 1272, 1272, 1272, 1273, 1273,    0,    0,    0,    0,
+     1273, 1273, 1274,    0,    0,    0, 1274,    0, 1274,    0,
+        0, 1274, 1274,    0,    0,    0, 1274, 1275,    0, 1275,
+        0, 1275, 1275, 1275,    0,    0,    0, 1275, 1276,    0,
+     1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276,
      1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276,
-     1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1277,
      1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277,
      1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277,
-     1277, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152
+     1277, 1277, 1278,    0, 1278,    0,    0, 1278, 1278,    0,
+        0,    0, 1278, 1279,    0, 1279, 1279, 1279, 1279, 1279,
+
+     1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279,
+     1279, 1279, 1279, 1279, 1279, 1280,    0, 1280,    0,    0,
+     1280, 1280,    0,    0,    0, 1280, 1281, 1281, 1281, 1281,
+     1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
+     1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1282, 1282,
+     1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282,
+     1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -2162,7 +2168,7 @@ static void markup_option(const char *name, int sense);
 
 /* Nick extra rules for action groups */
 
-#line 2157 "scan.c"
+#line 2163 "scan.c"
 
 #define INITIAL 0
 #define SECT2 1
@@ -2191,9 +2197,10 @@ static void markup_option(const char *name, int sense);
 #define CODE_COMMENT 24
 #define SECT3_NOESCAPE 25
 #define CHARACTER_CONSTANT 26
-#define BRACE_ACTION 27
-#define DOUBLE_QUOTED 28
-#define SINGLE_QUOTED 29
+#define ACTION_GROUP 27
+#define ELEMENT_GROUP 28
+#define DOUBLE_QUOTED 29
+#define SINGLE_QUOTED 30
 
 #ifndef YY_NO_UNISTD_H
 /* Special case for "unistd.h", since it is non-ANSI. We include it way
@@ -2400,7 +2407,7 @@ YY_DECL
        char nmdef[MAXLINE];
 
 
-#line 2395 "scan.c"
+#line 2402 "scan.c"
 
        if ( !(yy_init) )
                {
@@ -2465,13 +2472,13 @@ yy_match:
                        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 >= 1153 )
+                               if ( yy_current_state >= 1158 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 5052 );
+               while ( yy_base[yy_current_state] != 5071 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -3942,7 +3949,7 @@ YY_RULE_SETUP
 #line 971 "scan.l"
 {
                 BEGIN(SECT2);
-                yy_push_state(BRACE_ACTION);
+                yy_push_state(ACTION_GROUP);
                bracelevel = 1;
  piece_flush(strlen(yytext));
  piece_append("<RegexGroupAction_Text>");
@@ -3951,97 +3958,108 @@ YY_RULE_SETUP
 case 177:
 YY_RULE_SETUP
 #line 978 "scan.l"
-BEGIN(SECT2); return ':'; /* Nick added return, unnumbered group */
+{
+                BEGIN(SECT2);
+                yy_push_state(ELEMENT_GROUP);
+               bracelevel = 1;
+ piece_flush(strlen(yytext));
+ piece_append("<RegexGroupElement_Text>");
+            }
        YY_BREAK
 case 178:
 YY_RULE_SETUP
-#line 979 "scan.l"
-BEGIN(GROUP_MINUS_PARAMS);
+#line 985 "scan.l"
+BEGIN(SECT2); return ':'; /* Nick added return, unnumbered group */
        YY_BREAK
 case 179:
 YY_RULE_SETUP
-#line 980 "scan.l"
-sf_set_case_ins(1);
+#line 986 "scan.l"
+BEGIN(GROUP_MINUS_PARAMS);
        YY_BREAK
 case 180:
 YY_RULE_SETUP
-#line 981 "scan.l"
-sf_set_dot_all(1);
+#line 987 "scan.l"
+sf_set_case_ins(1);
        YY_BREAK
 case 181:
 YY_RULE_SETUP
-#line 982 "scan.l"
+#line 988 "scan.l"
+sf_set_dot_all(1);
+       YY_BREAK
+case 182:
+YY_RULE_SETUP
+#line 989 "scan.l"
 sf_set_skip_ws(1);
        YY_BREAK
 
 
-case 182:
+case 183:
 YY_RULE_SETUP
-#line 985 "scan.l"
+#line 992 "scan.l"
 BEGIN(SECT2); return ':'; /* Nick added return, unnumbered group */
        YY_BREAK
-case 183:
+case 184:
 YY_RULE_SETUP
-#line 986 "scan.l"
+#line 993 "scan.l"
 sf_set_case_ins(0);
        YY_BREAK
-case 184:
+case 185:
 YY_RULE_SETUP
-#line 987 "scan.l"
+#line 994 "scan.l"
 sf_set_dot_all(0);
        YY_BREAK
-case 185:
+case 186:
 YY_RULE_SETUP
-#line 988 "scan.l"
+#line 995 "scan.l"
 sf_set_skip_ws(0);
        YY_BREAK
 
 
-case 186:
+case 187:
 *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 992 "scan.l"
+#line 999 "scan.l"
 BEGIN(CCL); return '^';
        YY_BREAK
-case 187:
+case 188:
 *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 993 "scan.l"
+#line 1000 "scan.l"
 return '^';
        YY_BREAK
-case 188:
+case 189:
 YY_RULE_SETUP
-#line 994 "scan.l"
+#line 1001 "scan.l"
 BEGIN(CCL); RETURNCHAR;
        YY_BREAK
 
 
-case 189:
+case 190:
 *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 998 "scan.l"
+#line 1005 "scan.l"
 return '-';
        YY_BREAK
-case 190:
+case 191:
 YY_RULE_SETUP
-#line 999 "scan.l"
+#line 1006 "scan.l"
 RETURNCHAR;
        YY_BREAK
-case 191:
+case 192:
 YY_RULE_SETUP
-#line 1000 "scan.l"
+#line 1007 "scan.l"
 BEGIN(SECT2); return ']';
        YY_BREAK
-case 192:
-/* rule 192 can match eol */
+case 193:
+/* rule 193 can match eol */
 YY_RULE_SETUP
-#line 1001 "scan.l"
+#line 1008 "scan.l"
 {
                        synerr( _( "bad character class" ) );
                        BEGIN(SECT2);
@@ -4050,129 +4068,129 @@ YY_RULE_SETUP
        YY_BREAK
 
 
-case 193:
+case 194:
 YY_RULE_SETUP
-#line 1009 "scan.l"
+#line 1016 "scan.l"
 BEGIN(CCL); return CCE_ALNUM;
        YY_BREAK
-case 194:
+case 195:
 YY_RULE_SETUP
-#line 1010 "scan.l"
+#line 1017 "scan.l"
 BEGIN(CCL); return CCE_ALPHA;
        YY_BREAK
-case 195:
+case 196:
 YY_RULE_SETUP
-#line 1011 "scan.l"
+#line 1018 "scan.l"
 BEGIN(CCL); return CCE_BLANK;
        YY_BREAK
-case 196:
+case 197:
 YY_RULE_SETUP
-#line 1012 "scan.l"
+#line 1019 "scan.l"
 BEGIN(CCL); return CCE_CNTRL;
        YY_BREAK
-case 197:
+case 198:
 YY_RULE_SETUP
-#line 1013 "scan.l"
+#line 1020 "scan.l"
 BEGIN(CCL); return CCE_DIGIT;
        YY_BREAK
-case 198:
+case 199:
 YY_RULE_SETUP
-#line 1014 "scan.l"
+#line 1021 "scan.l"
 BEGIN(CCL); return CCE_GRAPH;
        YY_BREAK
-case 199:
+case 200:
 YY_RULE_SETUP
-#line 1015 "scan.l"
+#line 1022 "scan.l"
 BEGIN(CCL); return CCE_LOWER;
        YY_BREAK
-case 200:
+case 201:
 YY_RULE_SETUP
-#line 1016 "scan.l"
+#line 1023 "scan.l"
 BEGIN(CCL); return CCE_PRINT;
        YY_BREAK
-case 201:
+case 202:
 YY_RULE_SETUP
-#line 1017 "scan.l"
+#line 1024 "scan.l"
 BEGIN(CCL); return CCE_PUNCT;
        YY_BREAK
-case 202:
+case 203:
 YY_RULE_SETUP
-#line 1018 "scan.l"
+#line 1025 "scan.l"
 BEGIN(CCL); return CCE_SPACE;
        YY_BREAK
-case 203:
+case 204:
 YY_RULE_SETUP
-#line 1019 "scan.l"
+#line 1026 "scan.l"
 BEGIN(CCL); return CCE_UPPER;
        YY_BREAK
-case 204:
+case 205:
 YY_RULE_SETUP
-#line 1020 "scan.l"
+#line 1027 "scan.l"
 BEGIN(CCL); return CCE_XDIGIT;
        YY_BREAK
-case 205:
+case 206:
 YY_RULE_SETUP
-#line 1022 "scan.l"
+#line 1029 "scan.l"
 BEGIN(CCL); return CCE_NEG_ALNUM;
        YY_BREAK
-case 206:
+case 207:
 YY_RULE_SETUP
-#line 1023 "scan.l"
+#line 1030 "scan.l"
 BEGIN(CCL); return CCE_NEG_ALPHA;
        YY_BREAK
-case 207:
+case 208:
 YY_RULE_SETUP
-#line 1024 "scan.l"
+#line 1031 "scan.l"
 BEGIN(CCL); return CCE_NEG_BLANK;
        YY_BREAK
-case 208:
+case 209:
 YY_RULE_SETUP
-#line 1025 "scan.l"
+#line 1032 "scan.l"
 BEGIN(CCL); return CCE_NEG_CNTRL;
        YY_BREAK
-case 209:
+case 210:
 YY_RULE_SETUP
-#line 1026 "scan.l"
+#line 1033 "scan.l"
 BEGIN(CCL); return CCE_NEG_DIGIT;
        YY_BREAK
-case 210:
+case 211:
 YY_RULE_SETUP
-#line 1027 "scan.l"
+#line 1034 "scan.l"
 BEGIN(CCL); return CCE_NEG_GRAPH;
        YY_BREAK
-case 211:
+case 212:
 YY_RULE_SETUP
-#line 1028 "scan.l"
+#line 1035 "scan.l"
 BEGIN(CCL); return CCE_NEG_LOWER;
        YY_BREAK
-case 212:
+case 213:
 YY_RULE_SETUP
-#line 1029 "scan.l"
+#line 1036 "scan.l"
 BEGIN(CCL); return CCE_NEG_PRINT;
        YY_BREAK
-case 213:
+case 214:
 YY_RULE_SETUP
-#line 1030 "scan.l"
+#line 1037 "scan.l"
 BEGIN(CCL); return CCE_NEG_PUNCT;
        YY_BREAK
-case 214:
+case 215:
 YY_RULE_SETUP
-#line 1031 "scan.l"
+#line 1038 "scan.l"
 BEGIN(CCL); return CCE_NEG_SPACE;
        YY_BREAK
-case 215:
+case 216:
 YY_RULE_SETUP
-#line 1032 "scan.l"
+#line 1039 "scan.l"
 BEGIN(CCL); return CCE_NEG_UPPER;
        YY_BREAK
-case 216:
+case 217:
 YY_RULE_SETUP
-#line 1033 "scan.l"
+#line 1040 "scan.l"
 BEGIN(CCL); return CCE_NEG_XDIGIT;
        YY_BREAK
-case 217:
+case 218:
 YY_RULE_SETUP
-#line 1034 "scan.l"
+#line 1041 "scan.l"
 {
                        format_synerr(
                                _( "bad character class expression: %s" ),
@@ -4182,22 +4200,22 @@ YY_RULE_SETUP
        YY_BREAK
 
 
-case 218:
+case 219:
 YY_RULE_SETUP
-#line 1043 "scan.l"
+#line 1050 "scan.l"
 {
                        yylval = myctoi( yytext );
                        return NUMBER;
                        }
        YY_BREAK
-case 219:
+case 220:
 YY_RULE_SETUP
-#line 1048 "scan.l"
+#line 1055 "scan.l"
 return ',';
        YY_BREAK
-case 220:
+case 221:
 YY_RULE_SETUP
-#line 1049 "scan.l"
+#line 1056 "scan.l"
 {
                        BEGIN(SECT2);
                        if ( lex_compat || posix_compat )
@@ -4206,19 +4224,19 @@ YY_RULE_SETUP
                                return END_REPEAT_FLEX;
                        }
        YY_BREAK
-case 221:
+case 222:
 YY_RULE_SETUP
-#line 1057 "scan.l"
+#line 1064 "scan.l"
 {
                        synerr( _( "bad character inside {}'s" ) );
                        BEGIN(SECT2);
                        return '}';
                        }
        YY_BREAK
-case 222:
-/* rule 222 can match eol */
+case 223:
+/* rule 223 can match eol */
 YY_RULE_SETUP
-#line 1063 "scan.l"
+#line 1070 "scan.l"
 {
                        synerr( _( "missing }" ) );
                        BEGIN(SECT2);
@@ -4228,43 +4246,43 @@ YY_RULE_SETUP
        YY_BREAK
 
 
-case 223:
+case 224:
 YY_RULE_SETUP
-#line 1073 "scan.l"
+#line 1080 "scan.l"
 bracelevel = 0; piece_append("</AST_Text>");
        YY_BREAK
-case 224:
+case 225:
 YY_RULE_SETUP
-#line 1075 "scan.l"
+#line 1082 "scan.l"
 ACTION_ECHO; yy_push_state( CODE_COMMENT );
        YY_BREAK
 
-case 225:
+case 226:
 YY_RULE_SETUP
-#line 1078 "scan.l"
+#line 1085 "scan.l"
 {
             ACTION_ECHO;
             CHECK_REJECT(yytext);
         }
        YY_BREAK
-case 226:
+case 227:
 YY_RULE_SETUP
-#line 1082 "scan.l"
+#line 1089 "scan.l"
 {
             ACTION_ECHO;
             CHECK_YYMORE(yytext);
         }
        YY_BREAK
 
-case 227:
+case 228:
 YY_RULE_SETUP
-#line 1088 "scan.l"
+#line 1095 "scan.l"
 ACTION_ECHO;
        YY_BREAK
-case 228:
-/* rule 228 can match eol */
+case 229:
+/* rule 229 can match eol */
 YY_RULE_SETUP
-#line 1089 "scan.l"
+#line 1096 "scan.l"
 {
                ++linenum;
                ACTION_ECHO;
@@ -4285,45 +4303,45 @@ YY_RULE_SETUP
 
 /* Reject and YYmore() are checked for above, in PERCENT_BRACE_ACTION */
 
-case 229:
+case 230:
 YY_RULE_SETUP
-#line 1110 "scan.l"
+#line 1117 "scan.l"
 ACTION_ECHO; ++bracelevel;
        YY_BREAK
-case 230:
+case 231:
 YY_RULE_SETUP
-#line 1111 "scan.l"
+#line 1118 "scan.l"
 ACTION_ECHO; --bracelevel;
        YY_BREAK
-case 231:
+case 232:
 YY_RULE_SETUP
-#line 1112 "scan.l"
+#line 1119 "scan.l"
 ACTION_ECHO;
        YY_BREAK
-case 232:
+case 233:
 YY_RULE_SETUP
-#line 1113 "scan.l"
+#line 1120 "scan.l"
 ACTION_ECHO;
        YY_BREAK
-case 233:
+case 234:
 YY_RULE_SETUP
-#line 1114 "scan.l"
+#line 1121 "scan.l"
 ACTION_ECHO; /* character constant */
        YY_BREAK
-case 234:
+case 235:
 YY_RULE_SETUP
-#line 1115 "scan.l"
+#line 1122 "scan.l"
 ACTION_ECHO; BEGIN(CHARACTER_CONSTANT);
        YY_BREAK
-case 235:
+case 236:
 YY_RULE_SETUP
-#line 1116 "scan.l"
+#line 1123 "scan.l"
 ACTION_ECHO; BEGIN(ACTION_STRING);
        YY_BREAK
-case 236:
-/* rule 236 can match eol */
+case 237:
+/* rule 237 can match eol */
 YY_RULE_SETUP
-#line 1117 "scan.l"
+#line 1124 "scan.l"
 {
                 ++linenum;
                 ACTION_ECHO;
@@ -4340,73 +4358,74 @@ YY_RULE_SETUP
                 }
              }
        YY_BREAK
-case 237:
+case 238:
 YY_RULE_SETUP
-#line 1132 "scan.l"
+#line 1139 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 
 
-case 238:
+case 239:
 YY_RULE_SETUP
-#line 1136 "scan.l"
+#line 1143 "scan.l"
 ACTION_ECHO;
        YY_BREAK
-case 239:
+case 240:
 YY_RULE_SETUP
-#line 1137 "scan.l"
+#line 1144 "scan.l"
 ACTION_ECHO; BEGIN(ACTION);
        YY_BREAK
 
 
-case 240:
+case 241:
 YY_RULE_SETUP
-#line 1140 "scan.l"
+#line 1147 "scan.l"
 ACTION_ECHO;
        YY_BREAK
-case 241:
+case 242:
 YY_RULE_SETUP
-#line 1141 "scan.l"
+#line 1148 "scan.l"
 ACTION_ECHO; BEGIN(ACTION);
        YY_BREAK
 
 
-case 242:
-/* rule 242 can match eol */
-YY_RULE_SETUP
-#line 1144 "scan.l"
-ACTION_ECHO;
-       YY_BREAK
 case 243:
 /* rule 243 can match eol */
 YY_RULE_SETUP
-#line 1145 "scan.l"
+#line 1151 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 case 244:
 /* rule 244 can match eol */
 YY_RULE_SETUP
-#line 1146 "scan.l"
-++linenum; ACTION_ECHO; if (bracelevel <= 0) { BEGIN(SECT2); piece_flush(strlen(yytext)); if (doing_rule_action) markup_action("</AST_Text></AST_Section2_Rule_Action>"); } else { BEGIN(ACTION); }
+#line 1152 "scan.l"
+ACTION_ECHO;
        YY_BREAK
 case 245:
+/* rule 245 can match eol */
 YY_RULE_SETUP
-#line 1147 "scan.l"
+#line 1153 "scan.l"
+++linenum; ACTION_ECHO; if (bracelevel <= 0) { BEGIN(SECT2); piece_flush(strlen(yytext)); if (doing_rule_action) markup_action("</AST_Text></AST_Section2_Rule_Action>"); } else { BEGIN(ACTION); }
+       YY_BREAK
+case 246:
+YY_RULE_SETUP
+#line 1154 "scan.l"
 ACTION_ECHO;
        YY_BREAK
 
 /* Nick extra rules for action groups */
-/* Nick added: BRACE_ACTION,DOUBLE_QUOTED,SINGLE_QUOTED */
+/* Nick added: ACTION_GROUP,ELEMENT_GROUP,DOUBLE_QUOTED,SINGLE_QUOTED */
 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):
-case YY_STATE_EOF(BRACE_ACTION):
+case YY_STATE_EOF(ACTION_GROUP):
+case YY_STATE_EOF(ELEMENT_GROUP):
 case YY_STATE_EOF(DOUBLE_QUOTED):
 case YY_STATE_EOF(SINGLE_QUOTED):
-#line 1152 "scan.l"
+#line 1159 "scan.l"
 {
                        synerr( _( "EOF encountered inside an action" ) );
                        yyterminate();
@@ -4415,15 +4434,15 @@ case YY_STATE_EOF(SINGLE_QUOTED):
 case YY_STATE_EOF(EXTENDED_COMMENT):
 case YY_STATE_EOF(GROUP_WITH_PARAMS):
 case YY_STATE_EOF(GROUP_MINUS_PARAMS):
-#line 1157 "scan.l"
+#line 1164 "scan.l"
 {
                        synerr( _( "EOF encountered inside pattern" ) );
                        yyterminate();
                        }
        YY_BREAK
-case 246:
+case 247:
 YY_RULE_SETUP
-#line 1162 "scan.l"
+#line 1169 "scan.l"
 {
                        yylval = myesc( (unsigned char *) yytext );
 
@@ -4434,29 +4453,29 @@ YY_RULE_SETUP
                        }
        YY_BREAK
 
-case 247:
+case 248:
 YY_RULE_SETUP
-#line 1172 "scan.l"
+#line 1179 "scan.l"
 fputs(escaped_qstart, yyout);
        YY_BREAK
-case 248:
+case 249:
 YY_RULE_SETUP
-#line 1173 "scan.l"
+#line 1180 "scan.l"
 fputs(escaped_qend, yyout);
        YY_BREAK
-case 249:
-/* rule 249 can match eol */
+case 250:
+/* rule 250 can match eol */
 YY_RULE_SETUP
-#line 1174 "scan.l"
+#line 1181 "scan.l"
 ECHO;
        YY_BREAK
-case 250:
+case 251:
 YY_RULE_SETUP
-#line 1175 "scan.l"
+#line 1182 "scan.l"
 ECHO;
        YY_BREAK
 case YY_STATE_EOF(SECT3):
-#line 1176 "scan.l"
+#line 1183 "scan.l"
 {
         sectnum = 0;
 #if 1
@@ -4471,29 +4490,29 @@ case YY_STATE_EOF(SECT3):
        YY_BREAK
 
 
-case 251:
+case 252:
 YY_RULE_SETUP
-#line 1189 "scan.l"
+#line 1196 "scan.l"
 fprintf(yyout, "[""[%s]""]", escaped_qstart);
        YY_BREAK
-case 252:
+case 253:
 YY_RULE_SETUP
-#line 1190 "scan.l"
+#line 1197 "scan.l"
 fprintf(yyout, "[""[%s]""]", escaped_qend);
        YY_BREAK
-case 253:
-/* rule 253 can match eol */
+case 254:
+/* rule 254 can match eol */
 YY_RULE_SETUP
-#line 1191 "scan.l"
+#line 1198 "scan.l"
 ECHO;
        YY_BREAK
-case 254:
+case 255:
 YY_RULE_SETUP
-#line 1192 "scan.l"
+#line 1199 "scan.l"
 ECHO;
        YY_BREAK
 case YY_STATE_EOF(SECT3_NOESCAPE):
-#line 1193 "scan.l"
+#line 1200 "scan.l"
 {
        sectnum = 0;
 #if 1
@@ -4509,101 +4528,118 @@ case YY_STATE_EOF(SECT3_NOESCAPE):
 
 /* Nick extra rules for action groups */
 
-case 255:
+case 256:
 YY_RULE_SETUP
-#line 1208 "scan.l"
+#line 1215 "scan.l"
 ++bracelevel;
        YY_BREAK
-case 256:
+
+
+case 257:
 YY_RULE_SETUP
-#line 1209 "scan.l"
+#line 1218 "scan.l"
 {
                            if (--bracelevel == 0) {
                                yy_pop_state();
  piece_append("</RegexGroupAction_Text>");
-                               return '{';
+                               return TOK_ACTION_GROUP;
                            }
                        }
        YY_BREAK
-case 257:
-YY_RULE_SETUP
-#line 1216 "scan.l"
-yy_push_state(SINGLE_QUOTED);
-       YY_BREAK
+
+
 case 258:
 YY_RULE_SETUP
-#line 1217 "scan.l"
-yy_push_state(DOUBLE_QUOTED);
+#line 1227 "scan.l"
+{
+                           if (--bracelevel == 0) {
+                               yy_pop_state();
+ piece_append("</RegexGroupElement_Text>");
+                               return TOK_ELEMENT_GROUP;
+                           }
+                       }
        YY_BREAK
+
+
 case 259:
 YY_RULE_SETUP
-#line 1218 "scan.l"
-yy_push_state(COMMENT_DISCARD);
+#line 1236 "scan.l"
+yy_push_state(SINGLE_QUOTED);
        YY_BREAK
-
-
 case 260:
 YY_RULE_SETUP
-#line 1221 "scan.l"
-
+#line 1237 "scan.l"
+yy_push_state(DOUBLE_QUOTED);
        YY_BREAK
 case 261:
 YY_RULE_SETUP
-#line 1222 "scan.l"
-yy_pop_state();
+#line 1238 "scan.l"
+yy_push_state(COMMENT_DISCARD);
        YY_BREAK
 
 
 case 262:
 YY_RULE_SETUP
-#line 1225 "scan.l"
+#line 1241 "scan.l"
 
        YY_BREAK
 case 263:
 YY_RULE_SETUP
-#line 1226 "scan.l"
+#line 1242 "scan.l"
 yy_pop_state();
        YY_BREAK
 
 
 case 264:
-/* rule 264 can match eol */
 YY_RULE_SETUP
-#line 1229 "scan.l"
+#line 1245 "scan.l"
 
        YY_BREAK
 case 265:
-/* rule 265 can match eol */
 YY_RULE_SETUP
-#line 1230 "scan.l"
-
+#line 1246 "scan.l"
+yy_pop_state();
        YY_BREAK
 
 
 case 266:
 /* rule 266 can match eol */
 YY_RULE_SETUP
-#line 1233 "scan.l"
-++linenum;
+#line 1249 "scan.l"
+
        YY_BREAK
 case 267:
+/* rule 267 can match eol */
 YY_RULE_SETUP
-#line 1234 "scan.l"
+#line 1250 "scan.l"
 
        YY_BREAK
 
+
 case 268:
 /* rule 268 can match eol */
 YY_RULE_SETUP
-#line 1237 "scan.l"
-format_synerr( _( "bad character: %s" ), yytext );
+#line 1253 "scan.l"
+++linenum;
        YY_BREAK
 case 269:
 YY_RULE_SETUP
-#line 1239 "scan.l"
+#line 1254 "scan.l"
+
+       YY_BREAK
+
+case 270:
+/* rule 270 can match eol */
+YY_RULE_SETUP
+#line 1257 "scan.l"
+format_synerr( _( "bad character: %s" ), yytext );
+       YY_BREAK
+case 271:
+YY_RULE_SETUP
+#line 1259 "scan.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
-#line 4593 "scan.c"
+#line 4629 "scan.c"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(CODEBLOCK):
 case YY_STATE_EOF(PICKUPDEF):
@@ -4908,7 +4944,7 @@ static int yy_get_next_buffer (void)
                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 >= 1153 )
+                       if ( yy_current_state >= 1158 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -4936,11 +4972,11 @@ static int yy_get_next_buffer (void)
        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 >= 1153 )
+               if ( yy_current_state >= 1158 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 1152);
+       yy_is_jam = (yy_current_state == 1157);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5656,7 +5692,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 1239 "scan.l"
+#line 1259 "scan.l"
 
 
 
index fdee5fd..ed1ad3a 100644 (file)
@@ -159,7 +159,7 @@ static void markup_option(const char *name, int sense);
 %x SECT3_NOESCAPE
 %x CHARACTER_CONSTANT
 /* Nick extra rules for action groups */
-%x BRACE_ACTION DOUBLE_QUOTED SINGLE_QUOTED
+%x ACTION_GROUP ELEMENT_GROUP DOUBLE_QUOTED SINGLE_QUOTED
 
 WS             [[:blank:]]+
 OPTWS          [[:blank:]]*
@@ -970,11 +970,18 @@ nmstr[yyleng - 2 - end_is_ws] = '\0';  /* chop trailing brace */
     /* Nick extra rules for action groups */
     "{" {
                 BEGIN(SECT2);
-                yy_push_state(BRACE_ACTION);
+                yy_push_state(ACTION_GROUP);
                bracelevel = 1;
  piece_flush(strlen(yytext));
  piece_append("<RegexGroupAction_Text>");
             }
+    "E{" {
+                BEGIN(SECT2);
+                yy_push_state(ELEMENT_GROUP);
+               bracelevel = 1;
+ piece_flush(strlen(yytext));
+ piece_append("<RegexGroupElement_Text>");
+            }
     ":"     BEGIN(SECT2); return ':'; /* Nick added return, unnumbered group */
     "-"     BEGIN(GROUP_MINUS_PARAMS);
     i       sf_set_case_ins(1);
@@ -1148,8 +1155,8 @@ nmstr[yyleng - 2 - end_is_ws] = '\0';  /* chop trailing brace */
 }
 
  /* Nick extra rules for action groups */
- /* Nick added: BRACE_ACTION,DOUBLE_QUOTED,SINGLE_QUOTED */
-<COMMENT,CODE_COMMENT,COMMENT_DISCARD,ACTION,ACTION_STRING,CHARACTER_CONSTANT,BRACE_ACTION,DOUBLE_QUOTED,SINGLE_QUOTED><<EOF>> {
+ /* Nick added: ACTION_GROUP,ELEMENT_GROUP,DOUBLE_QUOTED,SINGLE_QUOTED */
+<COMMENT,CODE_COMMENT,COMMENT_DISCARD,ACTION,ACTION_STRING,CHARACTER_CONSTANT,ACTION_GROUP,ELEMENT_GROUP,DOUBLE_QUOTED,SINGLE_QUOTED><<EOF>>   {
                        synerr( _( "EOF encountered inside an action" ) );
                        yyterminate();
                        }
@@ -1204,15 +1211,28 @@ nmstr[yyleng - 2 - end_is_ws] = '\0';  /* chop trailing brace */
 }
 
  /* Nick extra rules for action groups */
-<BRACE_ACTION>{
+<ACTION_GROUP,ELEMENT_GROUP>{
        "{"             ++bracelevel;
+}
+<ACTION_GROUP>{
        "}"             {
                            if (--bracelevel == 0) {
                                yy_pop_state();
  piece_append("</RegexGroupAction_Text>");
-                               return '{';
+                               return TOK_ACTION_GROUP;
+                           }
+                       }
+}
+<ELEMENT_GROUP>{
+       "}"             {
+                           if (--bracelevel == 0) {
+                               yy_pop_state();
+ piece_append("</RegexGroupElement_Text>");
+                               return TOK_ELEMENT_GROUP;
                            }
                        }
+}
+<ACTION_GROUP,ELEMENT_GROUP>{
        "'"             yy_push_state(SINGLE_QUOTED);
        \"              yy_push_state(DOUBLE_QUOTED);
        "/*"            yy_push_state(COMMENT_DISCARD);
@@ -1229,7 +1249,7 @@ nmstr[yyleng - 2 - end_is_ws] = '\0';  /* chop trailing brace */
         (\\\n)*
        \\(\\\n)*.
 }
-<BRACE_ACTION,SINGLE_QUOTED,DOUBLE_QUOTED>{
+<ACTION_GROUP,ELEMENT_GROUP,SINGLE_QUOTED,DOUBLE_QUOTED>{
        {NL}            ++linenum;
         .
 }