Imported Upstream version 1.6.9p6
[debian/sudo] / lex.yy.c
index fc26e0e8d0eeb70c6731d2103e0f2a7eefac9a2e..47cd239dbbab4c433df820bc2a49382d3183791d 100644 (file)
--- a/lex.yy.c
+++ b/lex.yy.c
@@ -1,9 +1,9 @@
-/*     $OpenBSD: flex.skl,v 1.8 2004/02/09 11:38:31 espie Exp $        */
+/*     $OpenBSD: flex.skl,v 1.10 2007/01/26 14:38:19 tsi Exp $ */
 
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
- * $Header: /home/cvs/courtesan/sudo/lex.yy.c,v 1.46 2004/05/17 22:10:20 millert Exp $
+ * $Header: /home/cvs/courtesan/sudo/Attic/lex.yy.c,v 1.46.2.8 2007/08/25 02:48:01 millert Exp $
  */
 
 #define FLEX_SCANNER
@@ -285,47 +285,77 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 39
-#define YY_END_OF_BUFFER 40
-static yyconst short int yy_accept[336] =
+#define YY_NUM_RULES 47
+#define YY_END_OF_BUFFER 48
+static yyconst short int yy_accept[610] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   40,   29,   35,   34,   33,   38,   29,   23,
-       38,   29,   30,   29,   29,   29,   29,   32,   31,   24,
-       24,   24,   24,   38,   29,   24,   24,   24,   24,   24,
-       25,   38,   25,   26,   25,   25,   25,   25,   25,   24,
-       24,   24,   24,   38,   25,    1,   12,   11,   12,   11,
-       11,   38,   38,    2,    8,    8,    8,    3,    8,    4,
-       38,   29,    0,   35,   33,    0,   37,   20,    0,   19,
-        0,   28,   28,    0,   29,   29,   29,   29,   29,   24,
-       24,   24,   24,   29,   36,   29,   29,   29,   29,   29,
-
-       29,   25,    0,   25,   20,    0,   19,    0,   25,    0,
-       25,   25,   25,   25,   25,   24,   24,   24,   24,   25,
-       25,    1,   12,   12,   10,    9,   10,    0,    2,    8,
-        0,    8,    0,    0,    5,    6,    8,    8,    0,   29,
-       29,   29,   24,   24,   24,   24,   29,   29,   29,   29,
-       29,   29,   25,   25,   25,   24,   24,   24,   24,   25,
-        7,    7,    0,    7,    8,   29,   29,   29,   29,   29,
-       24,   24,   24,   24,   29,   29,   29,   29,   25,   25,
-       25,   25,   25,   24,   24,   24,   24,   25,    7,   29,
-       29,   29,    0,   18,   24,   24,   24,   29,   29,   29,
-
-       25,   25,   25,   24,   24,   24,   25,   29,   29,   29,
-       29,   29,   24,   24,   24,   29,   29,   29,   25,   25,
-       25,   25,   25,   24,   24,   24,   25,   21,   21,   21,
-        0,   17,   24,    0,   16,   29,   29,   29,   21,   21,
-       21,   24,   25,   29,   21,   21,   21,   21,   24,   27,
-       29,   13,   25,   21,   21,   21,   21,   24,   25,   29,
-       22,   22,   22,    0,   15,   29,   13,   25,   22,   22,
-       22,   29,   29,   22,   22,   22,   22,   22,   14,   25,
-       25,   22,   22,   22,   22,   22,   29,   29,   29,   22,
-       22,   25,   25,   25,   22,   22,   29,   29,   29,   29,
-
-       29,   25,   25,   25,   25,   25,   29,   29,   29,   25,
-       25,   25,   29,   29,   29,   29,   29,   25,   25,   25,
-       25,   25,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,    0
+        0,    0,    0,    0,   48,   37,   43,   42,   41,   46,
+       37,   30,   46,   37,   38,   37,   37,   37,   37,   40,
+       39,   31,   31,   31,   31,   31,   31,   46,   37,   37,
+       31,   31,   31,   31,   31,   32,   46,   32,   34,   32,
+       32,   32,   32,   32,   31,   31,   31,   31,   31,   31,
+       46,   32,   32,    1,   15,   14,   15,   14,   14,   46,
+       46,    2,    8,    7,    8,    3,    8,    4,   46,   11,
+       11,   11,   10,   11,   37,    0,   43,   41,    0,   45,
+       25,    0,   24,    0,   36,   36,    0,   37,   37,    0,
+
+       37,   37,   37,   37,    0,   28,   31,   31,   31,   31,
+       31,   31,   37,   44,   37,   37,   37,   37,   37,   37,
+       32,    0,    0,   32,   25,    0,   24,    0,   32,    0,
+       32,   32,   32,   32,   32,   32,   31,   31,   31,   31,
+       31,   31,   32,   32,    1,   15,   15,   13,   12,   13,
+        0,    2,    8,    0,    5,    6,    8,    8,   11,   11,
+       11,   11,   11,    9,    0,   37,   37,   37,   37,   37,
+        0,    0,   28,   28,   31,   31,   31,   31,   31,   31,
+       31,   37,   37,   37,   37,   37,   37,    0,   33,   32,
+       32,   32,   32,   32,   31,   31,   31,   31,   31,   31,
+
+       31,   32,    9,   37,   37,   37,   37,   37,   37,    0,
+       29,   29,   29,    0,    0,   28,   28,   28,   28,   28,
+       28,   28,   31,   31,   31,   31,   31,   31,   31,   37,
+       37,   37,   37,   32,   32,   32,   32,   32,   32,   31,
+       31,   31,   31,   31,   31,   31,   32,   37,   37,   37,
+        0,    0,   29,   29,   29,    0,   28,   28,    0,   28,
+       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+        0,   21,   31,   31,   31,   31,   31,   37,   37,   37,
+       32,   32,   32,   31,   31,   31,   31,   31,   32,   37,
+       37,   37,   37,   37,    0,   29,    0,   28,   28,   28,
+
+        0,    0,    0,   28,   28,   28,   28,   28,   28,   28,
+       28,   28,   28,   28,   28,   28,   31,   31,   31,   31,
+       31,   37,   37,   37,   32,   32,   32,   32,   32,   31,
+       31,   31,   31,   31,   32,   26,   26,   26,    0,    0,
+       28,   28,   28,   28,   28,   28,   28,    0,    0,    0,
+        0,    0,   28,   28,   28,   28,   28,   28,   28,   28,
+       28,   28,   28,   28,   28,   28,    0,   20,   31,   31,
+        0,   19,    0,   22,   37,   37,   37,   26,   26,   26,
+       31,   31,   32,   37,   26,   26,   26,   26,    0,   28,
+        0,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+
+       28,   28,    0,    0,    0,   28,   28,   28,   28,   28,
+       28,   28,   28,   28,   28,   28,   28,   28,   31,   31,
+       35,   37,   16,   32,   26,   26,   26,   26,   31,   31,
+       32,   37,   27,   27,   27,   28,    0,    0,    0,   28,
+       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+       28,   28,    0,    0,    0,    0,    0,   28,   28,   28,
+       28,   28,   28,   28,   28,    0,   18,    0,   23,   37,
+       16,   32,   27,   27,   27,   37,   37,   27,   27,   27,
+       27,   27,    0,    0,    0,    0,    0,   28,   28,   28,
+       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+
+       28,   28,   28,   28,   28,   28,   28,   17,   32,   32,
+       27,   27,   27,   27,   27,   37,   37,   37,   27,   27,
+        0,    0,    0,   28,   28,   28,   28,   28,   28,   28,
+       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+       28,   32,   32,   32,   27,   27,   37,   37,   37,   37,
+       37,    0,    0,    0,    0,    0,   28,   28,   28,   28,
+       28,   28,   28,   28,   32,   32,   32,   32,   32,   37,
+       37,   37,   28,   28,   28,   28,   28,   28,   32,   32,
+       32,   37,   37,   37,   37,   37,   28,   28,   28,   28,
+       28,   32,   32,   32,   32,   32,   26,   26,   26,   26,
+
+       26,   26,   26,   26,   26,   26,   26,   26,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -335,15 +365,15 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    2,    4,    5,    6,    1,    7,    1,    1,    8,
         9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
-       19,   20,   21,   22,   22,   22,   22,   23,    1,    1,
-       24,   25,   10,   25,   26,   27,   28,   29,   30,   27,
-       27,   31,   27,   27,   27,   27,   27,   32,   33,   34,
-       27,   35,   36,   27,   37,   27,   38,   39,   27,   27,
-       10,   40,   10,    1,   41,    1,   42,   43,   43,   44,
-
-       45,   46,   43,   43,   47,   43,   43,   48,   49,   50,
-       51,   43,   43,   52,   53,   54,   55,   43,   43,   43,
-       43,   43,    1,    1,    1,    1,    1,    1,    1,    1,
+       19,   20,   21,   22,   22,   22,   23,   24,    1,    1,
+       25,   26,   10,   26,   27,   28,   29,   30,   31,   28,
+       32,   33,   32,   32,   32,   32,   32,   34,   35,   36,
+       32,   37,   38,   39,   40,   41,   42,   43,   32,   32,
+       10,   44,   10,    1,   45,    1,   46,   47,   47,   48,
+
+       49,   50,   51,   51,   52,   51,   51,   53,   54,   55,
+       56,   51,   51,   57,   58,   59,   60,   51,   51,   51,
+       51,   51,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -360,496 +390,1024 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[56] =
+static yyconst int yy_meta[61] =
     {   0,
-        1,    2,    2,    3,    1,    4,    1,    3,    3,    1,
-        1,    2,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    5,    4,    3,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    6,
-        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7
+        1,    2,    3,    4,    5,    6,    1,    4,    4,    1,
+        1,    2,    7,    8,    9,   10,   10,   10,   10,   10,
+       10,   10,   10,   11,    6,    4,   12,   12,   12,   12,
+       12,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,   13,   14,   15,   15,   15,   15,   15,
+       14,   14,   14,   14,   14,   14,   14,   14,   14,   14
     } ;
 
-static yyconst short int yy_base[355] =
+static yyconst short int yy_base[681] =
     {   0,
-        0,   28,   65,    0,   56,  119,  120,  127,  166,  220,
-      274,  313, 1244, 1195, 1224, 1708, 1211, 1211, 1166, 1708,
-     1708, 1157, 1708,  133,  340,  158,  136, 1708, 1708,  380,
-     1153, 1150, 1148,  434,   94, 1116, 1111, 1096, 1074, 1065,
-     1077,  168, 1073, 1708, 1064,  157,  446,  182,  175,  486,
-     1049, 1046, 1044,  540,  107, 1059,    0, 1708, 1048,    0,
-     1708,  564,   58,    0,  992,  287,  124, 1708,  201, 1708,
-      133,  982,  603, 1016, 1003,  989, 1708,  951,  627,  935,
-      651,  296,  924,  675,  211,  131,    0,    0,  928,    0,
-      904,  129,  873,  241, 1708,  194,   88,  100,  195,  196,
-
-      197,  853,  699,  236,  844,  723,  835,  747,  298,  771,
-      312,  268,    0,    0,  844,    0,  827,  254,  812,  307,
-      251,  837,    0,  810,  237, 1708, 1708,  294,    0,  758,
-      339,  364,  254,  337, 1708, 1708,  753,  310,  449,  460,
-      537,  561,  764,  742,  752,  738,  295,  299,  205,  324,
-      261,  331,  575,  600,  624,  729,  699,  711,  700,  304,
-      694, 1708,  344,  666,  690,  699,  308,  744,  768,  783,
-      363,  703,  677,  671,  328,  334,  399,  339,  790,  430,
-      799,  815,  824,  380,  674,  652,  647,  405,  443,  833,
-      842,  851,  467, 1708,  652,  594,  571,  409,  445,  444,
-
-      860,  869,  878,  544,  514,  466,  412,  885,  531,  894,
-      910,  919,  486,  456,  487,  522,  550,  507,  926,  546,
-      935,  951,  960,  583,  437,  600,  561,  968,  806,  724,
-      601, 1708,  418,  611, 1708,  607,  585,  458,  994,  901,
-      942,  412,  608,  977,  649,    0,    0,  383,  635,  349,
-      614,  642,  984,  651,    0,    0,  350,  647,  280, 1009,
-     1019, 1028, 1037,  671, 1708,  657, 1708, 1046, 1055, 1064,
-     1073, 1080,  559, 1089, 1105, 1114, 1123, 1098,  243, 1132,
-      570, 1141, 1150, 1159, 1168, 1177, 1182, 1191, 1202, 1211,
-      751, 1220, 1229, 1238, 1247, 1003, 1254,  672, 1263, 1279,
-
-     1288, 1295,  712, 1304, 1320, 1329, 1338, 1347, 1356, 1365,
-     1374, 1383, 1392,  714, 1401, 1410, 1419, 1428,  736, 1437,
-     1446, 1455, 1464, 1473, 1482, 1491, 1500, 1509,  210, 1516,
-     1523,  165, 1529, 1541, 1708, 1581, 1588, 1595, 1602, 1609,
-     1616, 1623, 1630, 1637, 1644, 1651, 1658, 1665,  176, 1672,
-     1679, 1686, 1693, 1700
+        0,   32,   72,    0,   62,  131,  132,  139,  182,  241,
+      300,  343,  145,  150, 3100, 3055, 3096, 3790, 3093, 3093,
+     3051, 3790, 3790, 3028, 3790,  161,  374,  179,  161, 3038,
+     3790,  424, 3009,  469, 3005, 3012, 3007,  518,  190,  102,
+     2983, 2987, 2957, 2943, 2935, 2939,  201, 2929, 3790, 2919,
+      306,  531,  232,  240,  581, 2910,  626, 2882, 2881, 2867,
+      675,  248,  114, 2888,    0, 3790, 2875,    0, 3790,  314,
+       64,    0, 2825, 3790,  115, 3790,  146, 3790,  158, 2805,
+      171,  275, 3790,  278, 2804,  355, 2845, 2842, 2842, 3790,
+     2794,  684, 2778,  709,  325, 2767,  718,  355,  729, 2777,
+
+     2769,  390,  485,  256, 2749,  151,  764,    0, 2732,  292,
+     2715, 2660,  338, 3790,  124,  148,  232,  263,  287,  316,
+     2652,  794, 2692,    0, 2644,  819, 2633,  828,  530,  853,
+      549,  864, 2645,  642,  745,  493,  899,    0, 2618,  497,
+     2599, 2597,  382,  318, 2633,    0, 2630,  306, 3790, 3790,
+      333,    0, 2566,  700, 3790, 3790, 2524,  492, 2508,  384,
+      529,  339,  692, 2549,  844,  936,  880,  650,  967, 2535,
+     2509, 1002,  201, 1038, 1073, 2503, 2488, 2471, 2453, 2445,
+     2445,  371,  388, 2419,  219,  147,  373, 2459, 3790, 1110,
+      915,  753, 1141, 2433, 1176, 2405, 2372, 2387, 2327, 2291,
+
+     2283,  481, 2311,  947,  356,    0,    0,  330,  539, 2288,
+     2271,  955,  687, 2270, 2236,  508,  983, 1213, 1018,  854,
+     1249, 1056, 2222,  582, 2214, 2200, 2188, 2182, 2158,  370,
+      405,  695,  532, 1090,  372,    0,    0,  518,  563, 2167,
+      683, 2128, 2119, 2102, 2097, 2089,  679, 1121, 1159, 1194,
+     2098, 2097, 1129, 2096, 2080, 2079, 2033,  665, 1229,  717,
+     1265,  775, 1286,    0, 1304, 1323, 1339,  888, 1359, 1377,
+      714, 3790, 2027, 2007, 2007, 2007, 1962,  541,  502,  638,
+     1396, 1406, 1416, 1973, 1951, 1957, 1927, 1915,  753, 1424,
+      791, 1434, 1444, 1455, 1931, 1930, 1929, 1927, 1484,  792,
+
+     1936, 1884, 1463,  793,  824,  827, 1471,  852, 1521,    0,
+     1502, 1558, 1537,  923, 1594, 1576,  802, 1855, 1862,  958,
+     1040,   19,  771,  670, 1610,  819, 1639, 1649, 1631, 1081,
+     1839, 1846, 1112, 1251, 1019, 1661, 1669,  991, 1855, 1819,
+     1801, 1677, 1692, 1708, 1273, 1727, 1745, 1762, 1810, 1773,
+     1757, 1772,  834, 1101, 1387, 1622, 1778, 1788, 1799,    0,
+     1817, 1836, 1788, 1347, 1872, 1854, 1324, 3790, 1723, 1711,
+     1325, 3790, 1522, 3790,  984, 1122,  696, 1908, 1888, 1545,
+     1688, 1660, 1038, 1916,  845,    0,    0,  629, 1615, 1614,
+     1924,  313, 1945,  937, 1955,    0, 1966, 1977, 1993, 1716,
+
+     2012, 2030, 1621, 1620, 2049, 1141, 1185, 1934, 2040, 2057,
+     2067, 2078,    0, 2096, 2115, 2067, 1896, 2133, 1523, 1837,
+     1576,  844, 1194, 2150, 1377,    0,    0,  675, 1838, 1957,
+     1575, 2181, 2158, 2166,  907, 1579, 1570, 1569, 2191, 1505,
+     1435, 1577, 2199, 1650, 2212,    0, 2223, 2234, 2250, 2001,
+     2269, 2287, 2304, 1496, 1482, 1464, 2314, 1745, 1854, 2322,
+      978, 1030, 2333,    0, 2324, 1968, 3790, 2116, 3790, 1451,
+     3790, 2343, 2351, 2359, 1167, 2372, 1483, 2380, 2388, 2401,
+     2409, 2419, 2422, 1456, 1417, 1390, 2432, 1379, 1361, 1693,
+     2134, 2438, 2182, 2450,    0, 2461, 2472, 2488, 2258, 2507,
+
+     2525, 1369, 1315, 2543, 2287, 1259, 1032, 1214, 2553, 1484,
+     2561, 2569, 2577, 2585, 2595, 2600, 2610, 2624, 2634, 2368,
+     1225, 1172, 2644, 1143, 1093, 2235, 2473, 2652, 2526, 2662,
+        0, 2673, 2684, 2700, 2496, 2721, 1012,  947,  849, 2730,
+      832, 2738, 2748, 2758, 2768, 2692, 2776, 1659, 2786, 2796,
+     2807, 2813,  815,  808,  795, 2823,  764,  729, 2601,  723,
+      550, 2836,    0, 1058, 2844, 2146, 2854, 2864, 2875, 2883,
+     2893, 2904, 2912, 2920, 2928,  533,    0,  419, 2938, 2948,
+     2958, 2968, 2179, 2978, 2988, 2998, 3790, 3004, 3012, 2708,
+     3790, 3027, 2369, 3037, 3047, 3057, 3063, 3071, 3100, 3108,
+
+     3116, 3145,  240, 3153, 3137,  123, 3182, 3166, 3790, 3226,
+     3241, 3256, 3271, 3286, 3301, 3316, 3331, 3346, 3352, 3367,
+     3382, 3397, 3412, 3427, 3442, 1084, 3457, 3472, 3487, 3502,
+     3508, 3515, 3530, 1108, 3536, 3543, 3549, 3555, 3561, 3568,
+     3574, 3580, 3586, 3593, 3601, 3607, 3613, 3619, 1211, 1246,
+     3626, 3634, 3640, 3646, 3653, 3661, 3667, 3675, 1247, 1321,
+     3682, 3690, 1592, 1694, 3696, 3704, 3711, 3719, 3725, 3733,
+     1192, 1302, 3740, 1762, 1834, 3746, 3754, 3760, 3768, 3774
     } ;
 
-static yyconst short int yy_def[355] =
+static yyconst short int yy_def[681] =
     {   0,
-      335,    1,  335,    3,    1,    1,  336,  336,  337,  337,
-      338,  338,  335,  339,  335,  335,  335,  340,  341,  335,
-      335,  342,  335,  343,  339,   25,   25,  335,  335,  335,
-       30,   30,   30,  339,  339,   30,   30,   30,   30,   30,
-      344,  335,  345,  335,  346,  347,  344,   47,   47,  335,
-       50,   50,   50,  344,  344,  335,  348,  335,  348,  348,
-      335,  335,  335,  349,  350,  351,  350,  335,  350,  335,
-      352,  339,  339,  335,  335,  340,  335,  341,  341,  342,
-      342,  343,  353,  339,  339,  339,   25,   25,   25,   30,
-       30,   30,   30,  339,  335,  339,  339,  339,  339,  339,
-
-      339,  344,  344,  335,  345,  345,  346,  346,  347,  344,
-      344,  344,   47,   47,   47,   50,   50,   50,   50,  344,
-      344,  335,  348,  348,  335,  335,  335,  335,  349,  350,
-      350,  351,  354,  351,  335,  335,  350,  350,  335,   25,
-       25,   25,   30,   30,   30,   30,  339,  339,  339,  339,
-      339,  339,   47,   47,   47,   50,   50,   50,   50,  344,
-      350,  335,  354,  351,  351,  339,  339,   25,   25,   25,
-       30,   30,   30,   30,  339,  339,  339,  339,  344,  344,
-       47,   47,   47,   50,   50,   50,   50,  344,  354,   25,
-       25,   25,  335,  335,   30,   30,   30,  339,  339,  339,
-
-       47,   47,   47,   50,   50,   50,  344,  339,  339,   25,
-       25,   25,   30,   30,   30,  339,  339,  339,  344,  344,
-       47,   47,   47,   50,   50,   50,  344,  339,  228,  228,
-      335,  335,   30,  335,  335,  339,  339,  339,  344,  239,
-      239,   50,  344,  339,  339,  228,  228,  228,   30,  339,
-      339,  339,  344,  344,  239,  239,  239,   50,  344,   25,
-       25,   25,   25,  335,  335,  339,  335,   47,   47,   47,
-       47,  339,  339,   25,   25,   25,   25,  339,  339,   47,
-      344,   47,   47,   47,   47,  344,   25,   25,   25,   25,
-      339,   47,   47,   47,   47,  344,  339,  339,   25,   25,
-
-       25,  344,  344,   47,   47,   47,   25,   25,   25,   47,
-       47,   47,   25,  339,   25,   25,   25,   47,  344,   47,
-       47,   47,   25,   25,   25,   47,   47,   47,  339,  339,
-      339,  344,  344,  344,    0,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335
+      609,    1,  609,    3,    1,    1,  610,  610,  611,  611,
+      612,  612,  613,  613,  609,  614,  609,  609,  609,  615,
+      616,  609,  609,  617,  609,  618,  614,   27,   27,  619,
+      609,  609,   32,   32,   34,   34,   34,  614,   27,  614,
+       32,   32,   34,   34,   34,  620,  621,  622,  609,  623,
+      624,  620,   52,   52,  609,   55,   55,   57,   57,   57,
+      620,   52,  620,  609,  625,  609,  625,  625,  609,  609,
+      609,  626,  627,  609,  627,  609,  627,  609,  628,  629,
+      629,  629,  609,  629,  614,  614,  609,  609,  615,  609,
+      616,  616,  617,  617,  618,  630,  614,  614,   27,  619,
+
+       99,   99,   99,   99,  631,  632,   32,   34,   34,   34,
+       34,   34,  614,  609,  614,  614,   99,  614,  614,  614,
+      620,  620,  633,  634,  622,  622,  623,  623,  624,  620,
+      620,   52,  132,  132,  132,  132,   55,   57,   57,   57,
+       57,   57,  620,  620,  609,  625,  625,  609,  609,  609,
+      609,  626,  627,  627,  609,  609,  627,  627,  629,  629,
+      629,  629,  629,  609,  609,  614,  166,  166,   99,  169,
+      635,  609,  636,  609,   32,   34,   34,   34,   34,   34,
+       34,  614,  614,  169,  614,  614,  614,  633,  609,  620,
+      190,  190,  132,  193,   55,   57,   57,   57,   57,   57,
+
+       57,  620,  609,  614,  614,  166,  166,  166,  614,  637,
+      638,  638,  212,  639,  638,  640,  174,  609,  218,  218,
+      609,  218,   34,   34,   34,   34,   34,   34,   34,  614,
+      614,  614,  614,  620,  620,  190,  190,  190,  620,   57,
+       57,   57,   57,   57,   57,   57,  620,  166,  166,  166,
+      609,  641,  641,  253,  641,  642,  643,  644,  609,  645,
+      221,  645,  609,  263,  645,  609,  266,  266,  609,  266,
+      609,  609,   34,   34,   34,   34,   34,  614,  614,  614,
+      190,  190,  190,   57,   57,   57,   57,   57,  620,  614,
+      614,  166,  166,  614,  646,  646,  647,  648,  609,  609,
+
+      649,  650,  609,  651,  651,  652,  269,  652,  609,  309,
+      652,  609,  312,  312,  609,  312,   34,   34,   34,   34,
+       34,  614,  614,  614,  620,  620,  190,  190,  620,   57,
+       57,   57,   57,   57,  620,  614,  336,  336,  609,  653,
+      654,  299,  609,  343,  343,  609,  343,  609,  609,  649,
+      649,  609,  609,  655,  655,  656,  315,  656,  609,  359,
+      656,  609,  362,  362,  609,  362,  609,  609,   34,   34,
+      609,  609,  609,  609,  614,  614,  614,  620,  378,  378,
+       57,   57,  620,  614,  614,  336,  336,  336,  609,  657,
+      609,  658,  346,  658,  658,  395,  658,  609,  398,  398,
+
+      609,  398,  659,  660,  609,  609,  661,  661,  662,  365,
+      662,  609,  412,  662,  609,  415,  415,  415,   34,   34,
+      614,  614,  614,  620,  620,  378,  378,  378,   57,   57,
+      620,  614,  432,  432,  432,  609,  663,  664,  609,  665,
+      665,  666,  401,  666,  666,  445,  666,  609,  448,  448,
+      609,  448,  609,  609,  659,  659,  609,  609,  667,  667,
+      668,  668,  668,  463,  668,  609,  609,  609,  609,  614,
+      609,  620,  472,  472,  472,  614,  614,  432,  432,  432,
+      432,  614,  609,  609,  663,  663,  609,  609,  669,  669,
+      670,  451,  670,  670,  494,  670,  609,  497,  497,  609,
+
+      497,  671,  672,  609,  609,  673,  673,  614,  472,  620,
+      472,  472,  472,  472,  620,  432,  432,  432,  432,  614,
+      674,  675,  609,  609,  676,  676,  677,  500,  677,  677,
+      530,  677,  609,  533,  533,  533,  609,  671,  671,  609,
+      609,  472,  472,  472,  472,  620,  614,  614,  432,  432,
+      614,  609,  609,  674,  674,  609,  609,  678,  678,  679,
+      679,  679,  562,  562,  620,  620,  472,  472,  620,  432,
+      432,  432,  609,  609,  609,  609,  680,  680,  472,  472,
+      472,  432,  614,  432,  432,  614,  609,  609,  609,  609,
+      609,  472,  620,  472,  472,  620,  614,  614,  614,  620,
+
+      620,  620,  614,  614,  614,  620,  620,  620,    0,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609
     } ;
 
-static yyconst short int yy_nxt[1764] =
+static yyconst short int yy_nxt[3851] =
     {   0,
-       14,   15,   16,   17,   14,   18,   19,   20,   21,   14,
-       22,   23,   14,   14,   24,   25,   26,   27,   25,   25,
-       25,   25,   28,   29,   21,   30,   30,   30,   30,   31,
-       30,   32,   30,   33,   30,   30,   30,   30,   30,   34,
-       14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,   14,   35,   14,   14,   36,   37,   56,   38,  128,
-       95,   21,   39,   21,   40,   41,   15,   16,   17,   41,
-       42,   43,   21,   44,   41,   45,   23,   41,   41,   46,
-       47,   48,   49,   47,   47,   47,   47,   28,   29,   21,
-       50,   50,   50,   50,   51,   50,   52,   50,   53,   50,
-
-       50,   50,   50,   50,   54,   41,   41,   41,   41,   41,
-       41,   41,   41,   41,   41,   41,   41,   55,   41,   41,
-       56,   15,   58,   59,   21,   60,   21,   73,   15,   58,
-       59,   61,   60,   73,  138,   95,   83,  148,   61,   73,
-       83,   83,   61,   60,   85,  149,  103,  135,   96,   61,
-       60,   88,   88,   88,   88,   88,   89,   83,  144,   62,
-       83,  121,  145,  131,   83,   83,   62,   15,   16,   17,
-       73,   18,   84,   87,   87,   87,   87,   87,   87,   87,
-      104,   83,  129,  104,  104,  104,  104,  104,  104,  104,
-      114,  114,  114,  114,  114,  115,  110,  113,  113,  113,
-
-      113,  113,  113,  113,  103,   63,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   15,   16,   17,  136,   18,  140,  141,  142,  140,
-      140,  140,  140,   73,   73,   73,   73,  147,  128,   95,
-      131,  152,  128,   95,   73,  151,  177,  150,  104,   73,
-       73,  104,  104,  104,  104,  104,  104,  104,  162,   63,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   15,   16,   17,   66,   18,
-       73,  111,   73,  157,   67,   68,   69,  158,  133,  133,
-      103,  130,  133,  163,  160,  128,   95,   70,  133,   83,
-
-       73,   83,  178,   83,   83,   83,   83,  103,  128,   95,
-      133,  128,   95,   71,   15,   16,   17,   66,   18,  103,
-       83,  166,   83,   67,   68,   69,  134,  153,  154,  155,
-      153,  153,  153,  153,   73,   84,   70,  110,   73,  133,
-      130,  164,  176,  103,  130,  175,  103,   73,  189,  131,
-      130,  103,   71,   85,  188,   86,   86,   86,   86,   86,
-       86,   86,  130,   73,  193,  133,  133,   73,  161,  133,
-       73,  102,  198,   73,  199,  133,  165,  176,   73,   73,
-       72,  193,  176,  163,   72,  194,   72,  133,   73,   72,
-       72,  176,   72,   72,   72,   90,   90,   90,   90,   90,
-
-       90,   90,  194,  134,   72,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   73,
-       90,   72,   72,   72,   72,   72,   72,   72,   72,   72,
-       72,   72,   72,   72,   72,   94,   95,   72,   73,   72,
-      258,   72,   72,  179,  103,   72,  249,  162,   73,  207,
-       83,  103,  216,  200,   83,  227,   72,   72,   72,  111,
-       83,  112,  112,  112,  112,  112,  112,  112,  193,  103,
-      217,   83,   83,  166,  242,  167,  167,  167,  167,  167,
-      167,  167,  163,   73,   73,  103,  102,  231,  234,  194,
-      102,  218,  102,  233,  226,  102,  102,   73,  102,  102,
-
-      102,  116,  116,  116,  116,  116,  116,  116,  232,  235,
-      252,  116,  116,  116,  116,  116,  116,  116,  116,  116,
-      116,  116,  116,  116,  116,  103,  116,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  120,   95,  102,  208,  102,   73,  102,  102,  225,
-      166,  102,  168,  168,  168,  168,  168,  168,  168,  219,
-      238,   73,  102,  102,  102,  125,   95,  126,  236,  127,
-       73,  224,  272,  126,  166,  127,  169,  169,  169,  169,
-      169,  170,  167,  280,  231,  103,  127,  127,  179,   73,
-      180,  180,  180,  180,  180,  180,  180,  237,   73,  215,
-
-      103,  234,  231,  127,   72,  232,   72,  243,   72,  103,
-       72,   72,  234,  179,   72,  181,  181,  181,  181,  181,
-      181,  181,  235,  232,   73,   72,   72,   72,   78,  214,
-       78,  251,   78,  235,   78,   78,  264,  179,   78,  182,
-      182,  182,  182,  182,  183,  180,   73,  103,  264,   78,
-       78,   78,   80,   73,   80,  266,   80,  265,   80,   80,
-      250,  259,   80,  244,  267,  253,  267,  133,  133,  265,
-      161,  133,  264,   80,   80,   80,   82,  133,   72,  213,
-       82,   73,   72,   72,  206,  297,   82,  205,   73,  133,
-      103,  133,  133,  265,  164,  133,   73,   82,   82,   72,
-
-      102,  133,  102,  204,  102,  134,  102,  102,  197,  279,
-      102,   73,  196,  133,  190,  191,  192,  190,  190,  190,
-      190,  102,  102,  102,  105,  302,  105,  313,  105,  134,
-      105,  105,  195,  131,  105,  187,  186,  185,   73,  247,
-      247,  247,  247,  247,  248,  105,  105,  105,  107,  318,
-      107,  103,  107,   73,  107,  107,  184,  166,  107,  167,
-      167,  167,  167,  167,  167,  167,  291,  291,  291,  107,
-      107,  107,  109,  174,  102,  103,  109,  173,  102,  102,
-      172,  166,  109,  167,  167,  167,  167,  167,  167,  167,
-       73,  171,  131,  109,  109,  102,  166,  131,  167,  167,
-
-      167,  167,  167,  167,   72,  201,  202,  203,  201,  201,
-      201,  201,  179,  124,  180,  180,  180,  180,  180,  180,
-      180,  246,  246,  246,  246,  246,  246,  246,  179,  103,
-      180,  180,  180,  180,  180,  180,  180,  179,  122,  180,
-      180,  180,  180,  180,  180,  102,  208,  159,  209,  209,
-      209,  209,  209,  209,  209,  208,  156,  210,  210,  210,
-      210,  210,  210,  210,  208,  102,  211,  211,  211,  211,
-      211,  212,  209,  219,  108,  220,  220,  220,  220,  220,
-      220,  220,  219,  106,  221,  221,  221,  221,  221,  221,
-      221,  219,  103,  222,  222,  222,  222,  222,  223,  220,
-
-      228,  229,  230,  228,  228,  228,  228,  208,  146,  209,
-      209,  209,  209,  209,  209,  209,  255,  255,  255,  255,
-      255,  255,  255,  208,   73,  209,  209,  209,  209,  209,
-      209,  209,  208,  143,  209,  209,  209,  209,  209,  209,
-       72,  239,  240,  241,  239,  239,  239,  239,  219,   72,
-      220,  220,  220,  220,  220,  220,  220,  256,  256,  256,
-      256,  256,  257,  139,  219,  103,  220,  220,  220,  220,
-      220,  220,  220,  219,   81,  220,  220,  220,  220,  220,
-      220,  102,  244,  245,  245,  245,  245,  245,  245,  245,
-       79,   77,  260,  261,  262,  263,  260,  260,  260,  268,
-
-      269,  270,  271,  268,  268,  268,   75,   73,  253,  254,
-      254,  254,  254,  254,  254,  254,   73,   74,  296,  296,
-      296,   73,  272,  103,  273,  273,  273,  273,  273,  273,
-      273,  131,  272,  103,  274,  274,  274,  274,  274,  274,
-      274,  272,  103,  275,  275,  275,  275,  275,  276,  277,
-      272,  124,  278,  278,  278,  273,  273,  273,  273,  280,
-      122,  281,  281,  281,  281,  281,  281,  281,  280,  119,
-      282,  282,  282,  282,  282,  282,  282,  280,  118,  283,
-      283,  283,  283,  283,  284,  285,  280,  117,  286,  286,
-      286,  281,  281,  281,  281,  287,  288,  289,  287,  287,
-
-      287,  287,  272,  108,  277,  277,  277,  277,  277,  277,
-      277,  272,  106,  291,  291,  291,  103,  101,  272,   73,
-      277,  277,  277,  277,  277,  277,  277,  272,  100,  277,
-      277,  277,  277,  277,  277,  290,  272,   73,  290,  290,
-      290,  290,  290,  290,  290,  102,   99,  292,  293,  294,
-      292,  292,  292,  292,  280,   98,  285,  285,  285,  285,
-      285,  285,  285,  280,   97,  285,  285,  285,  285,  285,
-      285,  285,  280,   93,  285,  285,  285,  285,  285,  285,
-      295,  280,   92,  295,  295,  295,  295,  295,  295,  295,
-      280,   91,  296,  296,  296,  297,   81,  298,  298,  298,
-
-      298,  298,  298,  298,  297,   79,  299,  299,  299,  299,
-      299,  299,  299,   77,   75,  297,  103,  300,  300,  300,
-      300,  300,  301,  298,   72,   74,  290,  290,  290,  290,
-      290,  290,  290,  302,   73,  303,  303,  303,  303,  303,
-      303,  303,  302,  335,  304,  304,  304,  304,  304,  304,
-      304,  302,  335,  305,  305,  305,  305,  305,  306,  303,
-      102,  335,  295,  295,  295,  295,  295,  295,  295,  307,
-      308,  309,  307,  307,  307,  307,  297,  335,  298,  298,
-      298,  298,  298,  298,  298,  335,  335,  335,  335,  335,
-      335,  335,  297,   73,  298,  298,  298,  298,  298,  298,
-
-      298,  297,  335,  298,  298,  298,  298,  298,  298,   72,
-      310,  311,  312,  310,  310,  310,  310,  302,  335,  303,
-      303,  303,  303,  303,  303,  303,  335,  335,  335,  335,
-      335,  335,  335,  302,  103,  303,  303,  303,  303,  303,
-      303,  303,  302,  335,  303,  303,  303,  303,  303,  303,
-      102,  313,  335,  314,  314,  314,  314,  314,  314,  314,
-      313,  335,  315,  315,  315,  315,  315,  315,  315,  313,
-      335,  316,  316,  316,  316,  316,  317,  314,  318,  335,
-      319,  319,  319,  319,  319,  319,  319,  318,  335,  320,
-      320,  320,  320,  320,  320,  320,  318,  335,  321,  321,
-
-      321,  321,  321,  322,  319,   72,  335,  323,  324,  325,
-      323,  323,  323,  323,  313,  335,  314,  314,  314,  314,
-      314,  314,  314,  313,  335,  314,  314,  314,  314,  314,
-      314,  314,  313,  335,  314,  314,  314,  314,  314,  314,
-       72,  102,  335,  326,  327,  328,  326,  326,  326,  326,
-      318,  335,  319,  319,  319,  319,  319,  319,  319,  318,
-      335,  319,  319,  319,  319,  319,  319,  319,  318,  335,
-      319,  319,  319,  319,  319,  319,  102,   72,  335,  329,
-      329,  329,  329,  329,  329,  329,   72,  335,  323,  323,
-      323,  323,  323,  323,  323,   72,  335,  330,  330,  330,
-
-      330,  330,  331,  329,  102,  335,  332,  332,  332,  332,
-      332,  332,  332,  102,  335,  326,  326,  326,  326,  326,
-      326,  326,  102,  335,  333,  333,  333,  333,  333,  334,
-      332,  329,  329,  329,  329,  329,  329,  329,  329,  329,
-      329,  329,  329,  329,  332,  332,  332,  332,  332,  332,
-      332,  335,  335,  335,  335,   73,  332,  332,  332,  332,
-      332,  332,   73,  335,  335,  335,  335,  335,  103,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      103,   57,   57,   57,   57,   57,   57,   57,   21,   21,
-       21,   21,   21,   21,   21,   65,   65,   65,   65,   65,
-
-       65,   65,   72,  335,  335,  335,  335,   72,   72,   76,
-       76,   76,   76,   76,   76,   76,   78,  335,  335,  335,
-      335,   78,   78,   80,  335,  335,  335,  335,   80,   80,
-       82,  335,   82,  335,  335,   82,   82,  102,  335,  335,
-      335,  335,  102,  102,  105,  335,  335,  335,  335,  105,
-      105,  107,  335,  335,  335,  335,  107,  107,  109,  335,
-      109,  335,  335,  109,  109,  123,  335,  123,  123,  335,
-      335,  123,  130,  335,  130,  335,  130,  130,  130,  132,
-      132,  132,  132,  132,  132,  132,  137,  137,  137,  137,
-      137,  137,  137,   83,  335,   83,  335,  335,   83,   83,
-
-      133,  133,  133,  133,  133,  133,  133,   13,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335
+       16,   17,   18,   19,   16,   20,   21,   22,   23,   16,
+       24,   25,   16,   16,   26,   27,   28,   29,   27,   27,
+       27,   27,   27,   30,   31,   23,   32,   32,   32,   32,
+       33,   34,   34,   35,   34,   36,   34,   37,   34,   34,
+       34,   34,   34,   38,   16,   39,   39,   39,   39,   39,
+       16,   16,   16,   16,   16,   16,   16,   40,   16,   16,
+       41,   42,   86,   64,   43,  151,  114,   23,   44,   23,
+      375,   45,   46,   17,   18,   19,   46,   47,   48,   23,
+       49,   46,   50,   25,   46,   46,   51,   52,   53,   54,
+       52,   52,   52,   52,   52,   30,   31,   23,   55,   55,
+
+       55,   55,   56,   57,   57,   58,   57,   59,   57,   60,
+       57,   57,   57,   57,   57,   61,   46,   62,   62,   62,
+       62,   62,   46,   46,   46,   46,   46,   46,   46,   63,
+       46,   46,   64,   17,   66,   67,   23,   68,   23,  155,
+       17,   66,   67,   69,   68,   86,   81,   18,   82,   83,
+       69,   81,   18,   82,   83,   69,   68,  122,  154,  158,
+      114,  115,   69,   68,   96,  172,  122,   86,   96,   96,
+      156,  182,  161,  144,  174,   70,  103,  103,  103,  103,
+      103,  104,   70,   17,   18,   19,   96,   20,   84,  154,
+       86,   86,  233,   84,  102,  102,  102,  102,  102,  102,
+
+      102,  102,  183,   85,   97,  101,  101,  101,  101,  101,
+      101,  101,  101,  124,  160,  172,  124,  124,  124,  124,
+      124,  124,  124,  124,  217,   71,   72,   72,   72,   72,
+       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
+       72,   72,   17,   18,   19,   85,   20,  134,  134,  134,
+      134,  134,  134,  134,  134,  135,  135,  135,  135,  135,
+      136,  121,   86,  133,  133,  133,  133,  133,  133,  133,
+      133,  170,  170,  170,  170,  170,  170,  231,  162,  163,
+      164,  184,  159,   86,   71,   72,   72,   72,   72,   72,
+       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
+
+       72,   17,   18,   19,   74,   20,   86,  151,  114,   96,
+       75,   76,   77,   96,   96,  148,  114,  149,  160,  150,
+      185,  160,  177,  149,   78,  150,  391,  178,   96,  179,
+       86,   96,   96,   96,  151,  114,  393,  150,  150,  151,
+      114,  186,  162,   79,   17,   18,   19,   74,   20,  130,
+       96,   85,   85,   75,   76,   77,   85,  150,   85,   86,
+       85,  122,   85,   85,  187,  202,   85,   78,   97,  204,
+      166,  167,  168,  166,  166,  166,  166,  166,   85,   85,
+       85,   86,  160,  151,  114,  234,   79,   98,  159,   99,
+       99,   99,   99,   99,   99,   99,   99,  100,   86,   86,
+
+      101,  101,  101,  101,  101,  170,  170,  170,  170,  170,
+      170,  170,  170,   86,   86,  122,   86,   86,  278,  101,
+      101,  101,  101,  101,   85,  122,  230,  160,   85,  231,
+       85,   86,  391,   85,   85,  231,   85,   85,   85,  107,
+      107,  107,  107,  107,  107,  107,  107,  100,   86,  279,
+      107,  107,  107,  107,  107,  108,  108,  108,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,   86,  108,  101,
+      101,  101,  101,  101,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,  108,  108,  108,  108,  108,  108,
+      108,  108,  609,  151,  114,  108,  108,  108,  108,  108,
+
+      170,  170,  170,  170,  170,  170,  170,  170,  194,  194,
+      194,  194,  194,  194,   85,   85,   85,   85,   85,  113,
+      114,   85,  172,   85,  122,   85,   85,  197,  323,   85,
+      161,  217,  198,   96,  199,  154,  247,   96,   96,  121,
+      121,   85,   85,   85,  131,   86,  132,  132,  132,  132,
+      132,  132,  132,  132,  100,   96,  528,  133,  133,  133,
+      133,  133,  100,  609,  190,  191,  192,  190,  190,  190,
+      190,  190,  160,  130,  122,   86,  133,  133,  133,  133,
+      133,  121,   86,  271,   86,  121,  100,  121,  322,  231,
+      121,  121,  122,  121,  121,  121,  137,  137,  137,  137,
+
+      137,  137,  137,  137,  100,  272,  122,  137,  137,  137,
+      137,  137,  138,  138,  138,  138,  138,  138,  138,  138,
+      138,  138,  138,  138,  122,  138,  133,  133,  133,  133,
+      133,  121,  121,  121,  121,  121,  121,  121,  121,  121,
+      121,  138,  138,  138,  138,  138,  138,  138,  138,  609,
+       85,   85,  138,  138,  138,  138,  138,  194,  194,  194,
+      194,  194,  194,  194,  194,  207,  207,  207,  207,  207,
+      208,  121,  121,  121,  121,  121,  143,  114,  121,  172,
+      121,   86,  121,  121,  271,   91,  121,   91,  217,   91,
+      324,   91,   91,  163,  114,   91,  121,  121,  121,  121,
+
+      121,  153,  255,  255,  255,  153,  272,   91,   91,   91,
+       93,  153,   93,   86,   93,  271,   93,   93,  100,   95,
+       93,   85,  122,   95,  153,   85,   85,  289,  377,   95,
+      259,  172,   93,   93,   93,  160,  391,  272,   86,   86,
+      261,   95,   95,   85,  169,  169,  169,  169,  169,  169,
+      169,  169,  528,  423,  280,  169,  169,  169,  169,  169,
+      194,  194,  194,  194,  194,  194,  194,  194,  237,  237,
+      237,  237,  237,  238,  169,  169,  169,  169,  169,  175,
+      175,  175,  175,  175,  175,  175,  175,  492,  609,  172,
+      175,  175,  175,  175,  175,  121,  122,  121,  261,  121,
+
+      335,  121,  121,  367,  290,  121,  172,  172,  552,  169,
+      169,  169,  169,  169,   86,  217,  261,  121,  121,  121,
+      125,  552,  125,  376,  125,  368,  125,  125,  552,  127,
+      125,  127,  325,  127,   86,  127,  127,  259,  172,  127,
+      259,  172,  125,  125,  125,   96,  172,  261,  172,   96,
+      307,  127,  127,  127,  129,   96,  121,  261,  129,  384,
+      121,  121,  122,  172,  129,  609,  172,   96,   96,  264,
+      264,  264,  264,  264,  265,  307,  129,  129,  121,  193,
+      193,  193,  193,  193,  193,  193,  193,   86,   86,  470,
+      193,  193,  193,  193,  193,  206,  206,  206,  206,  206,
+
+      206,  206,  206,  310,  310,  310,  310,  310,  311,  193,
+      193,  193,  193,  193,  195,  195,  195,  195,  195,  195,
+      195,  195,  482,  482,  482,  195,  195,  195,  195,  195,
+      236,  236,  236,  236,  236,  236,  236,  236,  360,  360,
+      360,  360,  360,  361,  193,  193,  193,  193,  193,  204,
+      609,  205,  205,  205,  205,  205,  205,  205,  205,  371,
+      393,  172,  248,  249,  250,  248,  248,  248,  248,  248,
+      253,  253,  254,  255,  255,  255,  255,  255,  214,   86,
+       85,  372,  209,  209,  209,  209,  209,  209,  209,  209,
+       86,  259,  172,  209,  209,  209,  209,  209,  222,  222,
+
+      222,  222,  222,  222,  222,  222,  387,  387,  387,  387,
+      387,  388,  209,  209,  209,  209,  209,  211,  212,  213,
+      213,  213,  213,  213,  213,  214,  172,   86,  215,  215,
+      215,  215,  215,  263,  263,  263,  263,  263,  263,  263,
+      263,  373,  421,  609,  172,  259,  172,  215,  215,  215,
+      215,  215,  172,  218,  219,  220,  218,  218,  218,  218,
+      218,  221,  122,  374,  222,  222,  222,  222,  222,  609,
+      383,  262,  262,  262,  262,  262,  262,  262,  262,  577,
+      577,  122,  367,  222,  222,  222,  222,  222,  223,  223,
+      223,  223,  223,  223,  223,  223,  431,  152,  152,  223,
+
+      223,  223,  223,  223,  368,  281,  282,  283,  281,  281,
+      281,  281,  281,  371,  124,  172,  492,  124,  209,  209,
+      209,  209,  209,  234,  307,  235,  235,  235,  235,  235,
+      235,  235,  235,  122,  290,  372,  291,  291,  291,  291,
+      291,  291,  291,  291,  296,  296,  296,  296,  296,  296,
+      296,  296,  214,  122,  121,  172,  239,  239,  239,  239,
+      239,  239,  239,  239,  307,   86,  443,  239,  239,  239,
+      239,  239,  290,  422,  292,  292,  292,  292,  292,  292,
+      292,  292,  515,  515,  515,  552,  239,  239,  239,  239,
+      239,  240,  240,  240,  240,  240,  240,  240,  240,  172,
+
+      537,  537,  240,  240,  240,  240,  240,  290,  357,  293,
+      293,  293,  293,  293,  294,  291,  291,  471,  349,  471,
+      349,  239,  239,  239,  239,  239,  259,  172,  260,  260,
+      260,  260,  260,  260,  260,  260,  261,   86,  552,  262,
+      262,  262,  262,  262,  301,  302,  303,  301,  301,  301,
+      301,  301,  373,  350,  454,  350,  454,   86,  262,  262,
+      262,  262,  262,  172,  266,  267,  268,  266,  266,  266,
+      266,  266,  269,  172,  374,  270,  270,  270,  270,  270,
+      270,  270,  270,  270,  270,  270,  270,  270,  396,  396,
+      396,  396,  396,  397,  270,  270,  270,  270,  270,  259,
+
+      172,  305,  305,  305,  305,  305,  305,  305,  305,  261,
+      538,  538,  304,  304,  304,  304,  304,  259,  172,  305,
+      305,  305,  305,  305,  305,  367,  371,  261,  455,  172,
+      455,  304,  304,  304,  304,  304,  259,  172,  306,  306,
+      306,  306,  306,  306,  306,  306,  307,  368,  372,  308,
+      308,  308,  308,  308,  309,  309,  309,  309,  309,  309,
+      309,  309,  413,  413,  413,  413,  413,  414,  308,  308,
+      308,  308,  308,  172,  312,  313,  314,  312,  312,  312,
+      312,  312,  315,  172,  443,  316,  316,  316,  316,  316,
+      609,  424,  308,  308,  308,  308,  308,  308,  308,  308,
+
+      259,  172,  393,  483,  316,  316,  316,  316,  316,  325,
+      307,  326,  326,  326,  326,  326,  326,  326,  326,  325,
+      122,  327,  327,  327,  327,  327,  327,  327,  327,  325,
+      483,  328,  328,  328,  328,  328,  329,  326,  326,  336,
+      337,  338,  336,  336,  336,  336,  336,  290,  391,  291,
+      291,  291,  291,  291,  291,  291,  291,  290,  393,  291,
+      291,  291,  291,  291,  291,  291,  291,   86,  290,  483,
+      291,  291,  291,  291,  291,  291,  348,  453,  351,  351,
+      351,  351,  351,  352,  349,  349,  316,  316,  316,  316,
+      316,  316,  316,  316,   86,  453,  476,  509,   86,  343,
+
+      344,  345,  343,  343,  343,  343,  343,  346,  508,  453,
+      347,  347,  347,  347,  347,  259,  172,  355,  355,  355,
+      355,  355,  355,  373,  466,  307,   86,  122,  393,  347,
+      347,  347,  347,  347,  259,  172,  355,  355,  355,  355,
+      355,  355,  355,  355,  307,  374,  467,  354,  354,  354,
+      354,  354,  359,  359,  359,  359,  359,  359,  359,  359,
+      427,  427,  427,  427,  427,  428,  354,  354,  354,  354,
+      354,  259,  172,  356,  356,  356,  356,  356,  356,  356,
+      356,  357,  483,  483,  358,  358,  358,  358,  358,  609,
+      391,  358,  358,  358,  358,  358,  358,  358,  358,  484,
+
+      443,  484,  342,  358,  358,  358,  358,  358,  172,  362,
+      363,  364,  362,  362,  362,  362,  362,  365,  122,   86,
+      366,  366,  366,  366,  366,  378,  379,  380,  378,  378,
+      378,  378,  378,  453,  453,  259,  172,  342,  257,  366,
+      366,  366,  366,  366,  325,  357,  326,  326,  326,  326,
+      326,  326,  325,  122,  326,  326,  326,  326,  326,  326,
+      326,  326,  325,  609,  326,  326,  326,  326,  326,  326,
+      326,  326,  547,  443,  122,  384,  385,  385,  385,  385,
+      385,  385,  385,  385,  386,  386,  386,  386,  386,  386,
+      386,  386,  347,  347,  347,  347,  347,  347,  347,  347,
+
+      430,  485,   86,  485,   86,  391,  391,  392,  392,  392,
+      392,  392,  392,  392,  392,  393,  443,  429,  394,  394,
+      394,  394,  394,  395,  395,  395,  395,  395,  395,  395,
+      395,  446,  446,  446,  446,  446,  447,  394,  394,  394,
+      394,  394,  398,  399,  400,  398,  398,  398,  398,  398,
+      401,  420,  419,  402,  402,  402,  402,  402,  609,  172,
+      394,  394,  394,  394,  394,  394,  394,  394,  357,  553,
+      348,  553,  402,  402,  402,  402,  402,  403,  404,  405,
+      403,  403,  403,  403,  403,  348,  348,  349,  349,  349,
+      349,  349,  349,  366,  366,  366,  366,  366,  366,  366,
+
+      366,  609,  172,  412,  412,  412,  412,  412,  412,  412,
+      412,  357,  259,  172,  408,  408,  408,  408,  408,  408,
+      408,  408,  357,  348,  342,  407,  407,  407,  407,  407,
+      259,  172,  408,  408,  408,  408,  408,  408,  468,  466,
+      357,  554,  257,  554,  407,  407,  407,  407,  407,  259,
+      172,  409,  409,  409,  409,  409,  409,  409,  409,  410,
+      469,  467,  411,  411,  411,  411,  411,  609,  172,  411,
+      411,  411,  411,  411,  411,  411,  411,  410,  214,  382,
+      381,  411,  411,  411,  411,  411,  172,  415,  416,  417,
+      415,  415,  415,  415,  415,  370,  369,  348,  418,  418,
+
+      418,  418,  418,  426,  426,  426,  426,  426,  426,  426,
+      426,  464,  464,  464,  464,  464,  465,  418,  418,  418,
+      418,  418,  424,  425,  425,  425,  425,  425,  425,  425,
+      425,  432,  433,  434,  435,  432,  432,  432,  432,  437,
+      438,  439,  437,  437,  437,  437,  437,  259,  172,  348,
+      342,  122,  257,  214,  214,  334,  333,  357,  468,   86,
+      402,  402,  402,  402,  402,  402,  402,  402,  391,  466,
+      441,  441,  441,  441,  441,  441,  441,  441,  393,  391,
+      469,  441,  441,  441,  441,  441,  441,  332,  331,  393,
+      391,  467,  442,  442,  442,  442,  442,  442,  442,  442,
+
+      443,  330,  321,  444,  444,  444,  444,  444,  445,  445,
+      445,  445,  445,  445,  445,  445,  495,  495,  495,  495,
+      495,  496,  444,  444,  444,  444,  444,  448,  449,  450,
+      448,  448,  448,  448,  448,  451,  320,  319,  452,  452,
+      452,  452,  452,  609,  318,  444,  444,  444,  444,  444,
+      444,  444,  444,  259,  172,  317,  299,  452,  452,  452,
+      452,  452,  453,  410,  456,  456,  456,  456,  456,  457,
+      454,  454,  418,  418,  418,  418,  418,  418,  418,  418,
+      609,  172,  463,  463,  463,  463,  463,  463,  463,  463,
+      410,  259,  172,  460,  460,  460,  460,  460,  460,  460,
+
+      460,  410,  257,  214,  459,  459,  459,  459,  459,  259,
+      172,  460,  460,  460,  460,  460,  460,  468,  295,  410,
+      214,  106,  288,  459,  459,  459,  459,  459,  259,  172,
+      461,  461,  461,  461,  461,  461,  461,  461,  287,  469,
+      286,  462,  462,  462,  462,  462,  609,  391,  462,  462,
+      462,  462,  462,  462,  462,  462,  285,  492,  284,  565,
+      462,  462,  462,  462,  462,  472,  473,  474,  475,  472,
+      472,  472,  472,  478,  478,  478,  478,  478,  478,  478,
+      478,  479,  479,  479,  479,  479,  480,  481,  481,  122,
+      100,  277,  582,  122,  476,  609,  477,  477,  477,  477,
+
+      477,  477,  477,  477,  483,  492,  486,  486,  486,  486,
+      486,  487,  484,  484,  452,  452,  452,  452,  452,  452,
+      452,  452,   86,  276,   86,  391,  275,  490,  490,  490,
+      490,  490,  490,  490,  490,  443,  391,  274,  490,  490,
+      490,  490,  490,  490,  273,  100,  443,  391,  391,  491,
+      491,  491,  491,  491,  491,  491,  491,  492,  492,  214,
+      493,  493,  493,  493,  493,  494,  494,  494,  494,  494,
+      494,  494,  494,  531,  531,  531,  531,  531,  532,  493,
+      493,  493,  493,  493,  497,  498,  499,  497,  497,  497,
+      497,  497,  500,  257,  214,  501,  501,  501,  501,  501,
+
+      609,  172,  493,  493,  493,  493,  493,  493,  493,  493,
+      410,  106,  203,  246,  501,  501,  501,  501,  501,  502,
+      503,  504,  502,  502,  502,  502,  502,  453,  245,  454,
+      454,  454,  454,  454,  454,  259,  172,  259,  172,  507,
+      507,  507,  507,  507,  507,  410,  259,  172,  507,  507,
+      507,  507,  507,  507,  507,  507,  509,  244,  510,  510,
+      510,  510,  510,  510,  510,  510,  511,  511,  511,  511,
+      511,  511,  511,  511,  512,  512,  512,  512,  512,  513,
+      514,  514,  592,  520,  520,  520,  122,  516,  517,  518,
+      516,  516,  516,  516,  516,  481,  481,  481,  481,  481,
+
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      481,   86,  122,  243,  242,   86,  481,  481,  481,  481,
+      481,  481,  519,  519,  519,  519,  519,  519,  519,  519,
+      519,  519,  476,  241,  520,  520,  520,  521,  522,  523,
+      521,  521,  521,  521,  521,  483,  131,  484,  484,  484,
+      484,  484,  484,  501,  501,  501,  501,  501,  501,  501,
+      501,  189,   86,  391,  232,  526,  526,  526,  526,  526,
+      526,  526,  526,  492,  391,  229,  526,  526,  526,  526,
+      526,  526,  228,  227,  492,  391,  391,  527,  527,  527,
+      527,  527,  527,  527,  527,  528,  528,  226,  529,  529,
+
+      529,  529,  529,  530,  530,  530,  530,  530,  530,  530,
+      530,  563,  563,  563,  563,  563,  564,  529,  529,  529,
+      529,  529,  533,  534,  535,  533,  533,  533,  533,  533,
+      225,  224,  106,  536,  536,  536,  536,  536,  609,  609,
+      529,  529,  529,  529,  529,  529,  529,  529,   98,  528,
+      203,  160,  536,  536,  536,  536,  536,  172,  539,  539,
+      539,  539,  539,  540,  537,  537,  121,  154,  542,  543,
+      544,  542,  542,  542,  542,  542,  514,  514,  514,  514,
+      514,  514,  514,  514,  514,  514,  514,  514,  514,  514,
+      514,  514,  514,  514,  514,  514,  514,  514,  545,  545,
+
+      545,  545,  545,  545,  545,  545,  545,  545,  509,  154,
+      546,  546,  546,  547,  391,  548,  548,  548,  548,  548,
+      548,  548,  548,  547,  528,  549,  549,  549,  549,  549,
+      549,  549,  549,  147,  145,  201,  200,  547,  122,  550,
+      550,  550,  550,  550,  551,  548,  548,   85,  196,  519,
+      519,  519,  519,  519,  519,  519,  519,  552,  121,  555,
+      555,  555,  555,  555,  556,  553,  553,  536,  536,  536,
+      536,  536,  536,  536,  536,  391,  128,  559,  559,  559,
+      559,  559,  559,  559,  559,  528,  391,  126,  559,  559,
+      559,  559,  559,  559,  189,  122,  528,  391,  181,  560,
+
+      560,  560,  560,  560,  560,  560,  560,  546,  546,  546,
+      561,  561,  561,  561,  561,  562,  562,  562,  562,  562,
+      562,  562,  562,  587,  587,  587,  587,  587,  587,  561,
+      561,  561,  561,  561,  609,  122,  561,  561,  561,  561,
+      561,  561,  561,  561,  172,  537,  537,  537,  537,  537,
+      537,  565,  180,  566,  566,  566,  566,  566,  566,  566,
+      566,  565,  176,  567,  567,  567,  567,  567,  567,  567,
+      567,  565,  106,  568,  568,  568,  568,  568,  569,  566,
+      566,  121,   85,  545,  545,  545,  545,  545,  545,  545,
+      545,  570,  571,  572,  570,  570,  570,  570,  570,  547,
+
+      106,  548,  548,  548,  548,  548,  548,  548,  548,  547,
+      165,  548,  548,  548,  548,  548,  548,  548,  548,   86,
+      547,   94,  548,  548,  548,  548,  548,  548,  573,  574,
+      575,  573,  573,  573,  573,  573,  552,   92,  553,  553,
+      553,  553,  553,  553,   90,   88,   87,   86,  160,  391,
+       86,  578,  578,  578,  578,  578,  578,  578,  578,  579,
+      580,  581,  579,  579,  579,  579,  579,  565,  154,  566,
+      566,  566,  566,  566,  566,  566,  566,  565,  147,  566,
+      566,  566,  566,  566,  566,  566,  566,  122,  565,  145,
+      566,  566,  566,  566,  566,  566,  582,  142,  583,  583,
+
+      583,  583,  583,  583,  583,  583,  582,  141,  584,  584,
+      584,  584,  584,  584,  584,  584,  140,  582,  122,  585,
+      585,  585,  585,  585,  586,  583,  583,  587,  587,  587,
+      587,  587,  587,  587,  587,  588,  588,  588,  588,  588,
+      588,  588,  588,  589,  589,  589,  589,  589,  590,  587,
+      587,  592,  139,  593,  593,  593,  593,  593,  593,  593,
+      593,  592,  128,  594,  594,  594,  594,  594,  594,  594,
+      594,  592,  126,  595,  595,  595,  595,  595,  596,  593,
+      593,   85,  122,  597,  598,  599,  597,  597,  597,  597,
+      597,  582,  120,  583,  583,  583,  583,  583,  583,  583,
+
+      583,  582,  119,  583,  583,  583,  583,  583,  583,  583,
+      583,  582,  118,  583,  583,  583,  583,  583,  583,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  117,  116,  112,  111,  110,
+      121,   86,  600,  601,  602,  600,  600,  600,  600,  600,
+      592,  109,  593,  593,  593,  593,  593,  593,  593,  593,
+      592,  106,  593,  593,  593,  593,  593,  593,  593,  593,
+      592,   94,  593,  593,  593,  593,  593,  593,  603,  603,
+      603,  603,  603,  603,  603,  603,  597,  597,  597,  597,
+      597,  597,  597,  597,   92,   90,   88,   87,   86,  609,
+
+      122,  609,  609,  609,  609,  609,   86,  609,  609,  609,
+      609,  609,  609,  609,   86,  604,  604,  604,  604,  604,
+      605,  603,  603,  606,  606,  606,  606,  606,  606,  606,
+      606,  600,  600,  600,  600,  600,  600,  600,  600,  609,
+      609,  609,  609,   86,  609,  609,  609,  609,  609,  609,
+      609,  122,  603,  603,  603,  603,  603,  603,  609,  122,
+      607,  607,  607,  607,  607,  608,  606,  606,  603,  603,
+      603,  603,  603,  603,  603,  603,  609,  609,  609,  609,
+       86,  606,  606,  606,  606,  606,  606,  609,  122,  609,
+      609,  609,  609,  609,  609,  609,   86,  606,  606,  606,
+
+      606,  606,  606,  606,  606,  609,  609,  609,  609,  122,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  122,   65,   65,   65,   65,
+       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
+       65,   23,   23,   23,   23,   23,   23,   23,   23,   23,
+       23,   23,   23,   23,   23,   23,   73,   73,   73,   73,
+       73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
+       73,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   85,  609,  609,  609,
+       85,  609,   85,   85,   85,   85,  609,   85,   85,   85,
+
+       85,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   91,  609,  609,  609,
+       91,  609,   91,   91,   91,   91,  609,   91,   91,   91,
+       91,   93,  609,  609,  609,   93,  609,   93,   93,   93,
+       93,  609,   93,   93,   93,   93,   95,  609,  609,   95,
+       95,  609,   95,   95,   95,   95,  609,   95,   95,   95,
+       95,  105,  105,  105,  609,  609,  105,  121,  609,  609,
+      609,  121,  609,  121,  121,  121,  121,  609,  121,  121,
+      121,  121,  123,  123,  123,  123,  123,  123,  123,  123,
+      123,  123,  123,  123,  123,  123,  123,  125,  609,  609,
+
+      609,  125,  609,  125,  125,  125,  125,  609,  125,  125,
+      125,  125,  127,  609,  609,  609,  127,  609,  127,  127,
+      127,  127,  609,  127,  127,  127,  127,  129,  609,  609,
+      129,  129,  609,  129,  129,  129,  129,  609,  129,  129,
+      129,  129,  146,  609,  609,  146,  146,  146,  146,  146,
+      146,  146,  609,  146,  609,  146,  146,  153,  609,  609,
+      153,  153,  609,  153,  153,  153,  153,  153,  153,  153,
+      153,  153,  157,  157,  157,  157,  157,  157,  157,  157,
+      157,  157,  157,  157,  157,  157,  157,  159,  159,  609,
+      159,  609,  159,  159,  159,  159,  159,  159,  159,  159,
+
+      159,  159,   96,  609,  609,   96,   96,  609,   96,   96,
+       96,   96,  609,   96,   96,   96,   96,  171,  171,  171,
+      609,  609,  171,  173,  173,  173,  173,  609,  609,  173,
+      188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
+      188,  188,  188,  188,  188,  210,  210,  210,  609,  609,
+      210,  216,  216,  216,  216,  609,  609,  216,  251,  251,
+      251,  609,  609,  251,  252,  252,  252,  609,  609,  252,
+      256,  256,  256,  609,  609,  256,  258,  258,  258,  258,
+      609,  609,  258,  295,  295,  295,  609,  609,  295,  297,
+      297,  297,  609,  609,  297,  298,  298,  298,  609,  609,
+
+      298,  300,  300,  300,  300,  609,  609,  300,  304,  304,
+      304,  304,  304,  609,  609,  304,  339,  339,  339,  609,
+      609,  339,  340,  340,  340,  609,  609,  340,  341,  341,
+      341,  609,  609,  341,  353,  353,  353,  353,  609,  609,
+      353,  354,  354,  354,  354,  354,  609,  609,  354,  389,
+      389,  389,  609,  609,  389,  390,  390,  390,  609,  609,
+      390,  406,  406,  406,  406,  609,  609,  406,  407,  407,
+      407,  407,  407,  609,  609,  407,  436,  436,  436,  609,
+      609,  436,  440,  609,  440,  440,  440,  609,  609,  440,
+      458,  458,  458,  458,  609,  609,  458,  459,  459,  459,
+
+      459,  459,  609,  609,  459,  488,  488,  488,  609,  609,
+      488,  489,  609,  489,  489,  489,  609,  609,  489,  505,
+      505,  505,  505,  609,  609,  505,  506,  506,  506,  609,
+      506,  609,  609,  506,  524,  524,  524,  609,  609,  524,
+      525,  609,  525,  525,  525,  609,  609,  525,  541,  541,
+      609,  541,  609,  609,  541,  557,  557,  557,  609,  609,
+      557,  558,  609,  558,  558,  558,  609,  609,  558,  576,
+      576,  576,  609,  609,  576,  577,  609,  577,  609,  577,
+      609,  609,  577,  591,  609,  591,  609,  609,  591,   15,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609
     } ;
 
-static yyconst short int yy_chk[1764] =
+static yyconst short int yy_chk[3851] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    2,    2,    5,    2,   63,
-       63,    5,    2,    5,    2,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        2,    2,  322,    5,    2,   71,   71,    5,    2,    5,
+      322,    2,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
 
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        6,    7,    7,    7,    6,    7,    6,   97,    8,    8,
-        8,    7,    8,   35,   71,   71,   24,   97,    8,   98,
-       24,   24,    7,    7,   86,   98,   55,   67,   35,    8,
-        8,   27,   27,   27,   27,   27,   27,   24,   92,    7,
-       46,   55,   92,   67,   46,   46,    8,    9,    9,    9,
-       86,    9,   24,   26,   26,   26,   26,   26,   26,   26,
-       42,   46,  349,   42,   42,   42,   42,   42,   42,   42,
-       49,   49,   49,   49,   49,   49,   46,   48,   48,   48,
-
-       48,   48,   48,   48,  332,    9,    9,    9,    9,    9,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    6,    7,    7,    7,    6,    7,    6,   75,
+        8,    8,    8,    7,    8,   40,   13,   13,   13,   13,
+        8,   14,   14,   14,   14,    7,    7,   63,   75,   79,
+       79,   40,    8,    8,   26,  106,  606,  115,   26,   26,
+       77,  115,   81,   63,  106,    7,   29,   29,   29,   29,
+       29,   29,    8,    9,    9,    9,   26,    9,   13,   77,
+      186,  116,  186,   14,   28,   28,   28,   28,   28,   28,
+
+       28,   28,  116,   39,   26,   39,   39,   39,   39,   39,
+       39,   39,   39,   47,   81,  173,   47,   47,   47,   47,
+       47,   47,   47,   47,  173,    9,    9,    9,    9,    9,
         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,   10,   10,   10,   69,   10,   85,   85,   85,   85,
-       85,   85,   85,   96,   99,  100,  101,   96,  125,  125,
-       69,  101,   94,   94,  149,  100,  149,   99,  104,  329,
-       85,  104,  104,  104,  104,  104,  104,  104,  133,   10,
+        9,    9,   10,   10,   10,  117,   10,   53,   53,   53,
+       53,   53,   53,   53,   53,   54,   54,   54,   54,   54,
+       54,   62,  185,   62,   62,   62,   62,   62,   62,   62,
+       62,  104,  104,  104,  104,  104,  104,  185,   82,   84,
+       84,  117,   84,  603,   10,   10,   10,   10,   10,   10,
        10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
-       10,   10,   10,   10,   10,   11,   11,   11,   11,   11,
-       94,  112,  279,  118,   11,   11,   11,  118,   66,   66,
-      121,   66,   66,  133,  121,  128,  128,   11,   66,   82,
-
-      151,  109,  151,   82,   82,  109,  109,  112,  120,  120,
-       66,  138,  138,   11,   12,   12,   12,   12,   12,  259,
-       82,  167,  109,   12,   12,   12,   66,  111,  111,  111,
-      111,  111,  111,  111,  147,   82,   12,  109,  148,  134,
-      131,  134,  148,  160,  131,  147,  120,  167,  163,  138,
-      131,  111,   12,   25,  160,   25,   25,   25,   25,   25,
-       25,   25,  131,  150,  171,  132,  132,  175,  132,  132,
-      152,  257,  175,  176,  176,  132,  134,  150,  178,   25,
-       30,  184,  152,  163,   30,  171,   30,  132,  250,   30,
-       30,  178,   30,   30,   30,   30,   30,   30,   30,   30,
-
-       30,   30,  184,  132,  248,   30,   30,   30,   30,   30,
-       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
-       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
-       30,   30,   30,   30,   30,   34,   34,   34,  177,   34,
-      242,   34,   34,  180,  188,   34,  233,  189,  198,  188,
-      139,  207,  198,  177,  139,  207,   34,   34,   34,   47,
-      139,   47,   47,   47,   47,   47,   47,   47,  193,  180,
-      199,  139,  139,  140,  225,  140,  140,  140,  140,  140,
-      140,  140,  189,  200,  199,   47,   50,  213,  215,  193,
-       50,  200,   50,  214,  206,   50,   50,  238,   50,   50,
-
-       50,   50,   50,   50,   50,   50,   50,   50,  213,  215,
-      238,   50,   50,   50,   50,   50,   50,   50,   50,   50,
-       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
-       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
-       50,   54,   54,   54,  209,   54,  218,   54,   54,  205,
-      141,   54,  141,  141,  141,  141,  141,  141,  141,  220,
-      218,  216,   54,   54,   54,   62,   62,   62,  216,   62,
-      209,  204,  273,   62,  142,   62,  142,  142,  142,  142,
-      142,  142,  142,  281,  224,  220,   62,   62,  153,  217,
-      153,  153,  153,  153,  153,  153,  153,  217,  273,  197,
-
-      227,  226,  231,   62,   73,  224,   73,  227,   73,  281,
-       73,   73,  234,  154,   73,  154,  154,  154,  154,  154,
-      154,  154,  226,  231,  237,   73,   73,   73,   79,  196,
-       79,  237,   79,  234,   79,   79,  249,  155,   79,  155,
-      155,  155,  155,  155,  155,  155,  236,  243,  258,   79,
-       79,   79,   81,  251,   81,  251,   81,  249,   81,   81,
-      236,  243,   81,  245,  252,  254,  252,  164,  164,  258,
-      164,  164,  264,   81,   81,   81,   84,  164,   84,  195,
-       84,  252,   84,   84,  187,  298,   84,  186,  245,  164,
-      254,  165,  165,  264,  165,  165,  266,   84,   84,   84,
-
-      103,  165,  103,  185,  103,  164,  103,  103,  174,  266,
-      103,  298,  173,  165,  166,  166,  166,  166,  166,  166,
-      166,  103,  103,  103,  106,  303,  106,  314,  106,  165,
-      106,  106,  172,  161,  106,  159,  158,  157,  166,  230,
-      230,  230,  230,  230,  230,  106,  106,  106,  108,  319,
-      108,  303,  108,  314,  108,  108,  156,  168,  108,  168,
-      168,  168,  168,  168,  168,  168,  291,  291,  291,  108,
-      108,  108,  110,  146,  110,  319,  110,  145,  110,  110,
-      144,  169,  110,  169,  169,  169,  169,  169,  169,  169,
-      291,  143,  137,  110,  110,  110,  170,  130,  170,  170,
-
-      170,  170,  170,  170,  170,  179,  179,  179,  179,  179,
-      179,  179,  181,  124,  181,  181,  181,  181,  181,  181,
-      181,  229,  229,  229,  229,  229,  229,  229,  182,  179,
-      182,  182,  182,  182,  182,  182,  182,  183,  122,  183,
-      183,  183,  183,  183,  183,  183,  190,  119,  190,  190,
-      190,  190,  190,  190,  190,  191,  117,  191,  191,  191,
-      191,  191,  191,  191,  192,  115,  192,  192,  192,  192,
-      192,  192,  192,  201,  107,  201,  201,  201,  201,  201,
-      201,  201,  202,  105,  202,  202,  202,  202,  202,  202,
-      202,  203,  102,  203,  203,  203,  203,  203,  203,  203,
-
-      208,  208,  208,  208,  208,  208,  208,  210,   93,  210,
-      210,  210,  210,  210,  210,  210,  240,  240,  240,  240,
-      240,  240,  240,  211,  208,  211,  211,  211,  211,  211,
-      211,  211,  212,   91,  212,  212,  212,  212,  212,  212,
-      212,  219,  219,  219,  219,  219,  219,  219,  221,   89,
-      221,  221,  221,  221,  221,  221,  221,  241,  241,  241,
-      241,  241,  241,   83,  222,  219,  222,  222,  222,  222,
-      222,  222,  222,  223,   80,  223,  223,  223,  223,  223,
-      223,  223,  228,  228,  228,  228,  228,  228,  228,  228,
-       78,   76,  244,  244,  244,  244,  244,  244,  244,  253,
-
-      253,  253,  253,  253,  253,  253,   75,  228,  239,  239,
-      239,  239,  239,  239,  239,  239,  244,   74,  296,  296,
-      296,   72,  260,  253,  260,  260,  260,  260,  260,  260,
-      260,   65,  261,  239,  261,  261,  261,  261,  261,  261,
-      261,  262,  296,  262,  262,  262,  262,  262,  262,  262,
-      263,   59,  263,  263,  263,  263,  263,  263,  263,  268,
-       56,  268,  268,  268,  268,  268,  268,  268,  269,   53,
-      269,  269,  269,  269,  269,  269,  269,  270,   52,  270,
-      270,  270,  270,  270,  270,  270,  271,   51,  271,  271,
-      271,  271,  271,  271,  271,  272,  272,  272,  272,  272,
-
-      272,  272,  274,   45,  274,  274,  274,  274,  274,  274,
-      274,  278,   43,  278,  278,  278,   41,   40,  275,  272,
-      275,  275,  275,  275,  275,  275,  275,  276,   39,  276,
-      276,  276,  276,  276,  276,  276,  277,  278,  277,  277,
-      277,  277,  277,  277,  277,  280,   38,  280,  280,  280,
-      280,  280,  280,  280,  282,   37,  282,  282,  282,  282,
-      282,  282,  282,  283,   36,  283,  283,  283,  283,  283,
-      283,  283,  284,   33,  284,  284,  284,  284,  284,  284,
-      284,  285,   32,  285,  285,  285,  285,  285,  285,  285,
-      286,   31,  286,  286,  286,  287,   22,  287,  287,  287,
-
-      287,  287,  287,  287,  288,   19,  288,  288,  288,  288,
-      288,  288,  288,   18,   17,  289,  286,  289,  289,  289,
-      289,  289,  289,  289,  290,   15,  290,  290,  290,  290,
-      290,  290,  290,  292,   14,  292,  292,  292,  292,  292,
-      292,  292,  293,   13,  293,  293,  293,  293,  293,  293,
-      293,  294,    0,  294,  294,  294,  294,  294,  294,  294,
-      295,    0,  295,  295,  295,  295,  295,  295,  295,  297,
-      297,  297,  297,  297,  297,  297,  299,    0,  299,  299,
-      299,  299,  299,  299,  299,    0,    0,    0,    0,    0,
-        0,    0,  300,  297,  300,  300,  300,  300,  300,  300,
-
-      300,  301,    0,  301,  301,  301,  301,  301,  301,  301,
-      302,  302,  302,  302,  302,  302,  302,  304,    0,  304,
-      304,  304,  304,  304,  304,  304,    0,    0,    0,    0,
-        0,    0,    0,  305,  302,  305,  305,  305,  305,  305,
-      305,  305,  306,    0,  306,  306,  306,  306,  306,  306,
-      306,  307,    0,  307,  307,  307,  307,  307,  307,  307,
-      308,    0,  308,  308,  308,  308,  308,  308,  308,  309,
-        0,  309,  309,  309,  309,  309,  309,  309,  310,    0,
-      310,  310,  310,  310,  310,  310,  310,  311,    0,  311,
-      311,  311,  311,  311,  311,  311,  312,    0,  312,  312,
-
-      312,  312,  312,  312,  312,  313,    0,  313,  313,  313,
-      313,  313,  313,  313,  315,    0,  315,  315,  315,  315,
-      315,  315,  315,  316,    0,  316,  316,  316,  316,  316,
-      316,  316,  317,    0,  317,  317,  317,  317,  317,  317,
-      317,  318,    0,  318,  318,  318,  318,  318,  318,  318,
-      320,    0,  320,  320,  320,  320,  320,  320,  320,  321,
-        0,  321,  321,  321,  321,  321,  321,  321,  322,    0,
-      322,  322,  322,  322,  322,  322,  322,  323,    0,  323,
-      323,  323,  323,  323,  323,  323,  324,    0,  324,  324,
-      324,  324,  324,  324,  324,  325,    0,  325,  325,  325,
-
-      325,  325,  325,  325,  326,    0,  326,  326,  326,  326,
-      326,  326,  326,  327,    0,  327,  327,  327,  327,  327,
-      327,  327,  328,    0,  328,  328,  328,  328,  328,  328,
-      328,  330,  330,  330,  330,  330,  330,  330,  331,  331,
-      331,  331,  331,  331,  333,  333,  333,  333,  333,  333,
-      333,    0,    0,    0,    0,  330,  334,  334,  334,  334,
-      334,  334,  331,    0,    0,    0,    0,    0,  333,    0,
+
+       10,   11,   11,   11,   11,   11,  118,  148,  148,   51,
+       11,   11,   11,   51,   51,   70,   70,   70,   82,   70,
+      118,   84,  110,   70,   11,   70,  392,  110,   95,  110,
+      119,   51,   95,   95,  151,  151,  392,   70,   70,  113,
+      113,  119,  162,   11,   12,   12,   12,   12,   12,   51,
+       95,  208,  208,   12,   12,   12,   86,   70,   86,  120,
+       86,  144,   86,   86,  120,  144,   86,   12,   95,  205,
+       98,   98,   98,   98,   98,   98,   98,   98,   86,   86,
+       86,  113,  162,  143,  143,  235,   12,   27,  160,   27,
+       27,   27,   27,   27,   27,   27,   27,   27,   98,  205,
+
+       27,   27,   27,   27,   27,  102,  102,  102,  102,  102,
+      102,  102,  102,  230,  182,  235,  187,   27,  230,   27,
+       27,   27,   27,   27,   32,  143,  182,  160,   32,  187,
+       32,  183,  578,   32,   32,  183,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,  231,  231,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,  158,  158,   34,   34,   34,   34,   34,
+
+      103,  103,  103,  103,  103,  103,  103,  103,  136,  136,
+      136,  136,  136,  136,   34,   34,   34,   34,   34,   38,
+       38,   38,  216,   38,  202,   38,   38,  140,  279,   38,
+      161,  216,  140,  129,  140,  158,  202,  129,  129,  238,
+      238,   38,   38,   38,   52,  279,   52,   52,   52,   52,
+       52,   52,   52,   52,   52,  129,  576,   52,   52,   52,
+       52,   52,  209,  561,  131,  131,  131,  131,  131,  131,
+      131,  131,  161,  129,   52,  233,   52,   52,   52,   52,
+       52,   55,  209,  224,  278,   55,  239,   55,  278,  233,
+       55,   55,  131,   55,   55,   55,   55,   55,   55,   55,
+
+       55,   55,   55,   55,   55,  224,  239,   55,   55,   55,
+       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
+       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
+       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
+       55,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+      388,  388,   57,   57,   57,   57,   57,  134,  134,  134,
+      134,  134,  134,  134,  134,  168,  168,  168,  168,  168,
+      168,   57,   57,   57,   57,   57,   61,   61,   61,  258,
+       61,  280,   61,   61,  241,   92,   61,   92,  258,   92,
+      280,   92,   92,  163,  163,   92,  428,  428,   61,   61,
+
+       61,  154,  213,  213,  213,  154,  241,   92,   92,   92,
+       94,  154,   94,  324,   94,  271,   94,   94,  232,   97,
+       94,   97,  247,   97,  154,   97,   97,  247,  324,   97,
+      260,  260,   94,   94,   94,  163,  560,  271,  232,  377,
+      260,   97,   97,   97,   99,   99,   99,   99,   99,   99,
+       99,   99,  558,  377,  232,   99,   99,   99,   99,   99,
+      135,  135,  135,  135,  135,  135,  135,  135,  192,  192,
+      192,  192,  192,  192,   99,   99,   99,   99,   99,  107,
+      107,  107,  107,  107,  107,  107,  107,  557,  262,  262,
+      107,  107,  107,  107,  107,  122,  289,  122,  262,  122,
+
+      289,  122,  122,  317,  291,  122,  300,  304,  555,  107,
+      107,  107,  107,  107,  323,  300,  304,  122,  122,  122,
+      126,  554,  126,  323,  126,  317,  126,  126,  553,  128,
+      126,  128,  326,  128,  291,  128,  128,  305,  305,  128,
+      306,  306,  126,  126,  126,  165,  541,  305,  353,  165,
+      306,  128,  128,  128,  130,  165,  130,  353,  130,  385,
+      130,  130,  326,  539,  130,  308,  308,  165,  165,  220,
+      220,  220,  220,  220,  220,  308,  130,  130,  130,  132,
+      132,  132,  132,  132,  132,  132,  132,  422,  385,  422,
+      132,  132,  132,  132,  132,  167,  167,  167,  167,  167,
+
+      167,  167,  167,  268,  268,  268,  268,  268,  268,  132,
+      132,  132,  132,  132,  137,  137,  137,  137,  137,  137,
+      137,  137,  435,  435,  435,  137,  137,  137,  137,  137,
+      191,  191,  191,  191,  191,  191,  191,  191,  314,  314,
+      314,  314,  314,  314,  137,  137,  137,  137,  137,  166,
+      394,  166,  166,  166,  166,  166,  166,  166,  166,  320,
+      394,  538,  204,  204,  204,  204,  204,  204,  204,  204,
+      212,  212,  212,  212,  212,  212,  212,  212,  212,  166,
+      169,  320,  169,  169,  169,  169,  169,  169,  169,  169,
+      204,  461,  461,  169,  169,  169,  169,  169,  217,  217,
+
+      217,  217,  217,  217,  217,  217,  338,  338,  338,  338,
+      338,  338,  169,  169,  169,  169,  169,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  537,  375,  172,  172,
+      172,  172,  172,  219,  219,  219,  219,  219,  219,  219,
+      219,  321,  375,  462,  462,  507,  507,  172,  172,  172,
+      172,  172,  174,  174,  174,  174,  174,  174,  174,  174,
+      174,  174,  335,  321,  174,  174,  174,  174,  174,  222,
+      335,  222,  222,  222,  222,  222,  222,  222,  222,  564,
+      564,  383,  330,  174,  174,  174,  174,  174,  175,  175,
+      175,  175,  175,  175,  175,  175,  383,  626,  626,  175,
+
+      175,  175,  175,  175,  330,  234,  234,  234,  234,  234,
+      234,  234,  234,  333,  634,  354,  525,  634,  175,  175,
+      175,  175,  175,  190,  354,  190,  190,  190,  190,  190,
+      190,  190,  190,  234,  248,  333,  248,  248,  248,  248,
+      248,  248,  248,  248,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  190,  193,  406,  193,  193,  193,  193,
+      193,  193,  193,  193,  406,  376,  524,  193,  193,  193,
+      193,  193,  249,  376,  249,  249,  249,  249,  249,  249,
+      249,  249,  475,  475,  475,  522,  193,  193,  193,  193,
+      193,  195,  195,  195,  195,  195,  195,  195,  195,  407,
+
+      671,  671,  195,  195,  195,  195,  195,  250,  407,  250,
+      250,  250,  250,  250,  250,  250,  250,  423,  649,  423,
+      649,  195,  195,  195,  195,  195,  218,  218,  218,  218,
+      218,  218,  218,  218,  218,  218,  218,  423,  521,  218,
+      218,  218,  218,  218,  259,  259,  259,  259,  259,  259,
+      259,  259,  334,  650,  659,  650,  659,  508,  218,  218,
+      218,  218,  218,  221,  221,  221,  221,  221,  221,  221,
+      221,  221,  221,  506,  334,  221,  221,  221,  221,  221,
+      261,  261,  261,  261,  261,  261,  261,  261,  345,  345,
+      345,  345,  345,  345,  221,  221,  221,  221,  221,  263,
+
+      263,  263,  263,  263,  263,  263,  263,  263,  263,  263,
+      672,  672,  263,  263,  263,  263,  263,  265,  265,  265,
+      265,  265,  265,  265,  265,  367,  371,  265,  660,  503,
+      660,  263,  263,  263,  263,  263,  266,  266,  266,  266,
+      266,  266,  266,  266,  266,  266,  266,  367,  371,  266,
+      266,  266,  266,  266,  267,  267,  267,  267,  267,  267,
+      267,  267,  364,  364,  364,  364,  364,  364,  266,  266,
+      266,  266,  266,  269,  269,  269,  269,  269,  269,  269,
+      269,  269,  269,  502,  489,  269,  269,  269,  269,  269,
+      270,  425,  270,  270,  270,  270,  270,  270,  270,  270,
+
+      355,  355,  488,  486,  269,  269,  269,  269,  269,  281,
+      355,  281,  281,  281,  281,  281,  281,  281,  281,  282,
+      425,  282,  282,  282,  282,  282,  282,  282,  282,  283,
+      485,  283,  283,  283,  283,  283,  283,  283,  283,  290,
+      290,  290,  290,  290,  290,  290,  290,  292,  441,  292,
+      292,  292,  292,  292,  292,  292,  292,  293,  441,  293,
+      293,  293,  293,  293,  293,  293,  293,  290,  294,  484,
+      294,  294,  294,  294,  294,  294,  303,  456,  303,  303,
+      303,  303,  303,  303,  303,  303,  307,  307,  307,  307,
+      307,  307,  307,  307,  470,  455,  477,  510,  294,  299,
+
+      299,  299,  299,  299,  299,  299,  299,  299,  470,  454,
+      299,  299,  299,  299,  299,  311,  311,  311,  311,  311,
+      311,  311,  311,  373,  419,  311,  477,  510,  440,  299,
+      299,  299,  299,  299,  309,  309,  309,  309,  309,  309,
+      309,  309,  309,  309,  309,  373,  419,  309,  309,  309,
+      309,  309,  313,  313,  313,  313,  313,  313,  313,  313,
+      380,  380,  380,  380,  380,  380,  309,  309,  309,  309,
+      309,  312,  312,  312,  312,  312,  312,  312,  312,  312,
+      312,  312,  438,  437,  312,  312,  312,  312,  312,  316,
+      442,  316,  316,  316,  316,  316,  316,  316,  316,  663,
+
+      442,  663,  436,  312,  312,  312,  312,  312,  315,  315,
+      315,  315,  315,  315,  315,  315,  315,  315,  431,  421,
+      315,  315,  315,  315,  315,  325,  325,  325,  325,  325,
+      325,  325,  325,  404,  403,  356,  356,  390,  389,  315,
+      315,  315,  315,  315,  329,  356,  329,  329,  329,  329,
+      329,  329,  327,  325,  327,  327,  327,  327,  327,  327,
+      327,  327,  328,  444,  328,  328,  328,  328,  328,  328,
+      328,  328,  548,  444,  329,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  337,  337,  337,  337,  337,  337,
+      337,  337,  342,  342,  342,  342,  342,  342,  342,  342,
+
+      382,  664,  548,  664,  336,  343,  490,  343,  343,  343,
+      343,  343,  343,  343,  343,  343,  490,  381,  343,  343,
+      343,  343,  343,  344,  344,  344,  344,  344,  344,  344,
+      344,  400,  400,  400,  400,  400,  400,  343,  343,  343,
+      343,  343,  346,  346,  346,  346,  346,  346,  346,  346,
+      346,  370,  369,  346,  346,  346,  346,  346,  347,  458,
+      347,  347,  347,  347,  347,  347,  347,  347,  458,  674,
+      351,  674,  346,  346,  346,  346,  346,  348,  348,  348,
+      348,  348,  348,  348,  348,  352,  350,  352,  352,  352,
+      352,  352,  352,  357,  357,  357,  357,  357,  357,  357,
+
+      357,  358,  358,  363,  363,  363,  363,  363,  363,  363,
+      363,  358,  359,  359,  359,  359,  359,  359,  359,  359,
+      359,  359,  359,  349,  341,  359,  359,  359,  359,  359,
+      361,  361,  361,  361,  361,  361,  361,  361,  420,  429,
+      361,  675,  340,  675,  359,  359,  359,  359,  359,  362,
+      362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
+      420,  429,  362,  362,  362,  362,  362,  366,  459,  366,
+      366,  366,  366,  366,  366,  366,  366,  459,  339,  332,
+      331,  362,  362,  362,  362,  362,  365,  365,  365,  365,
+      365,  365,  365,  365,  365,  319,  318,  302,  365,  365,
+
+      365,  365,  365,  379,  379,  379,  379,  379,  379,  379,
+      379,  417,  417,  417,  417,  417,  417,  365,  365,  365,
+      365,  365,  378,  378,  378,  378,  378,  378,  378,  378,
+      378,  384,  384,  384,  384,  384,  384,  384,  384,  391,
+      391,  391,  391,  391,  391,  391,  391,  408,  408,  301,
+      298,  378,  297,  296,  295,  288,  287,  408,  430,  384,
+      393,  393,  393,  393,  393,  393,  393,  393,  395,  466,
+      395,  395,  395,  395,  395,  395,  395,  395,  395,  397,
+      430,  397,  397,  397,  397,  397,  397,  286,  285,  397,
+      398,  466,  398,  398,  398,  398,  398,  398,  398,  398,
+
+      398,  284,  277,  398,  398,  398,  398,  398,  399,  399,
+      399,  399,  399,  399,  399,  399,  450,  450,  450,  450,
+      450,  450,  398,  398,  398,  398,  398,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  276,  275,  401,  401,
+      401,  401,  401,  402,  274,  402,  402,  402,  402,  402,
+      402,  402,  402,  409,  409,  273,  257,  401,  401,  401,
+      401,  401,  405,  409,  405,  405,  405,  405,  405,  405,
+      405,  405,  410,  410,  410,  410,  410,  410,  410,  410,
+      411,  411,  416,  416,  416,  416,  416,  416,  416,  416,
+      411,  412,  412,  412,  412,  412,  412,  412,  412,  412,
+
+      412,  412,  256,  255,  412,  412,  412,  412,  412,  414,
+      414,  414,  414,  414,  414,  414,  414,  468,  254,  414,
+      252,  251,  246,  412,  412,  412,  412,  412,  415,  415,
+      415,  415,  415,  415,  415,  415,  415,  415,  245,  468,
+      244,  415,  415,  415,  415,  415,  418,  491,  418,  418,
+      418,  418,  418,  418,  418,  418,  243,  491,  242,  566,
+      415,  415,  415,  415,  415,  424,  424,  424,  424,  424,
+      424,  424,  424,  433,  433,  433,  433,  433,  433,  433,
+      433,  434,  434,  434,  434,  434,  434,  434,  434,  566,
+      240,  229,  583,  424,  432,  493,  432,  432,  432,  432,
+
+      432,  432,  432,  432,  439,  493,  439,  439,  439,  439,
+      439,  439,  439,  439,  443,  443,  443,  443,  443,  443,
+      443,  443,  583,  228,  432,  445,  227,  445,  445,  445,
+      445,  445,  445,  445,  445,  445,  447,  226,  447,  447,
+      447,  447,  447,  447,  225,  223,  447,  448,  526,  448,
+      448,  448,  448,  448,  448,  448,  448,  448,  526,  215,
+      448,  448,  448,  448,  448,  449,  449,  449,  449,  449,
+      449,  449,  449,  499,  499,  499,  499,  499,  499,  448,
+      448,  448,  448,  448,  451,  451,  451,  451,  451,  451,
+      451,  451,  451,  214,  211,  451,  451,  451,  451,  451,
+
+      452,  505,  452,  452,  452,  452,  452,  452,  452,  452,
+      505,  210,  203,  201,  451,  451,  451,  451,  451,  453,
+      453,  453,  453,  453,  453,  453,  453,  457,  200,  457,
+      457,  457,  457,  457,  457,  460,  460,  465,  465,  465,
+      465,  465,  465,  465,  465,  460,  463,  463,  463,  463,
+      463,  463,  463,  463,  463,  463,  472,  199,  472,  472,
+      472,  472,  472,  472,  472,  472,  473,  473,  473,  473,
+      473,  473,  473,  473,  474,  474,  474,  474,  474,  474,
+      474,  474,  593,  520,  520,  520,  472,  476,  476,  476,
+      476,  476,  476,  476,  476,  478,  478,  478,  478,  478,
+
+      478,  478,  478,  479,  479,  479,  479,  479,  479,  479,
+      479,  520,  593,  198,  197,  476,  480,  480,  480,  480,
+      480,  480,  480,  480,  481,  481,  481,  481,  481,  481,
+      481,  481,  482,  196,  482,  482,  482,  483,  483,  483,
+      483,  483,  483,  483,  483,  487,  194,  487,  487,  487,
+      487,  487,  487,  492,  492,  492,  492,  492,  492,  492,
+      492,  188,  482,  494,  184,  494,  494,  494,  494,  494,
+      494,  494,  494,  494,  496,  181,  496,  496,  496,  496,
+      496,  496,  180,  179,  496,  497,  527,  497,  497,  497,
+      497,  497,  497,  497,  497,  497,  527,  178,  497,  497,
+
+      497,  497,  497,  498,  498,  498,  498,  498,  498,  498,
+      498,  535,  535,  535,  535,  535,  535,  497,  497,  497,
+      497,  497,  500,  500,  500,  500,  500,  500,  500,  500,
+      177,  176,  171,  500,  500,  500,  500,  500,  501,  529,
+      501,  501,  501,  501,  501,  501,  501,  501,  170,  529,
+      164,  159,  500,  500,  500,  500,  500,  504,  504,  504,
+      504,  504,  504,  504,  504,  504,  509,  157,  509,  509,
+      509,  509,  509,  509,  509,  509,  511,  511,  511,  511,
+      511,  511,  511,  511,  512,  512,  512,  512,  512,  512,
+      512,  512,  513,  513,  513,  513,  513,  513,  513,  513,
+
+      514,  514,  514,  514,  514,  514,  514,  514,  515,  153,
+      515,  515,  515,  516,  559,  516,  516,  516,  516,  516,
+      516,  516,  516,  517,  559,  517,  517,  517,  517,  517,
+      517,  517,  517,  147,  145,  142,  141,  518,  515,  518,
+      518,  518,  518,  518,  518,  518,  518,  519,  139,  519,
+      519,  519,  519,  519,  519,  519,  519,  523,  133,  523,
+      523,  523,  523,  523,  523,  523,  523,  528,  528,  528,
+      528,  528,  528,  528,  528,  530,  127,  530,  530,  530,
+      530,  530,  530,  530,  530,  530,  532,  125,  532,  532,
+      532,  532,  532,  532,  123,  121,  532,  533,  112,  533,
+
+      533,  533,  533,  533,  533,  533,  533,  546,  546,  546,
+      533,  533,  533,  533,  533,  534,  534,  534,  534,  534,
+      534,  534,  534,  590,  590,  590,  590,  590,  590,  533,
+      533,  533,  533,  533,  536,  546,  536,  536,  536,  536,
+      536,  536,  536,  536,  540,  540,  540,  540,  540,  540,
+      540,  542,  111,  542,  542,  542,  542,  542,  542,  542,
+      542,  543,  109,  543,  543,  543,  543,  543,  543,  543,
+      543,  544,  105,  544,  544,  544,  544,  544,  544,  544,
+      544,  545,  101,  545,  545,  545,  545,  545,  545,  545,
+      545,  547,  547,  547,  547,  547,  547,  547,  547,  549,
+
+      100,  549,  549,  549,  549,  549,  549,  549,  549,  550,
+       96,  550,  550,  550,  550,  550,  550,  550,  550,  547,
+      551,   93,  551,  551,  551,  551,  551,  551,  552,  552,
+      552,  552,  552,  552,  552,  552,  556,   91,  556,  556,
+      556,  556,  556,  556,   89,   88,   87,   85,   80,  562,
+      551,  562,  562,  562,  562,  562,  562,  562,  562,  565,
+      565,  565,  565,  565,  565,  565,  565,  567,   73,  567,
+      567,  567,  567,  567,  567,  567,  567,  568,   67,  568,
+      568,  568,  568,  568,  568,  568,  568,  565,  569,   64,
+      569,  569,  569,  569,  569,  569,  570,   60,  570,  570,
+
+      570,  570,  570,  570,  570,  570,  571,   59,  571,  571,
+      571,  571,  571,  571,  571,  571,   58,  572,  569,  572,
+      572,  572,  572,  572,  572,  572,  572,  573,  573,  573,
+      573,  573,  573,  573,  573,  574,  574,  574,  574,  574,
+      574,  574,  574,  575,  575,  575,  575,  575,  575,  575,
+      575,  579,   56,  579,  579,  579,  579,  579,  579,  579,
+      579,  580,   50,  580,  580,  580,  580,  580,  580,  580,
+      580,  581,   48,  581,  581,  581,  581,  581,  581,  581,
+      581,  582,   46,  582,  582,  582,  582,  582,  582,  582,
+      582,  584,   45,  584,  584,  584,  584,  584,  584,  584,
+
+      584,  585,   44,  585,  585,  585,  585,  585,  585,  585,
+      585,  586,   43,  586,  586,  586,  586,  586,  586,  588,
+      588,  588,  588,  588,  588,  588,  588,  589,  589,  589,
+      589,  589,  589,  589,  589,   42,   41,   37,   36,   35,
+      592,  586,  592,  592,  592,  592,  592,  592,  592,  592,
+      594,   33,  594,  594,  594,  594,  594,  594,  594,  594,
+      595,   30,  595,  595,  595,  595,  595,  595,  595,  595,
+      596,   24,  596,  596,  596,  596,  596,  596,  597,  597,
+      597,  597,  597,  597,  597,  597,  598,  598,  598,  598,
+      598,  598,  598,  598,   21,   20,   19,   17,   16,   15,
+
+      596,    0,    0,    0,    0,    0,  597,    0,    0,    0,
+        0,    0,    0,    0,  598,  599,  599,  599,  599,  599,
+      599,  599,  599,  600,  600,  600,  600,  600,  600,  600,
+      600,  601,  601,  601,  601,  601,  601,  601,  601,    0,
+        0,    0,    0,  599,    0,    0,    0,    0,    0,    0,
+        0,  600,  605,  605,  605,  605,  605,  605,    0,  601,
+      602,  602,  602,  602,  602,  602,  602,  602,  604,  604,
+      604,  604,  604,  604,  604,  604,    0,    0,    0,    0,
+      605,  608,  608,  608,  608,  608,  608,    0,  602,    0,
+        0,    0,    0,    0,    0,    0,  604,  607,  607,  607,
+
+      607,  607,  607,  607,  607,    0,    0,    0,    0,  608,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      334,  336,  336,  336,  336,  336,  336,  336,  337,  337,
-      337,  337,  337,  337,  337,  338,  338,  338,  338,  338,
-
-      338,  338,  339,    0,    0,    0,    0,  339,  339,  340,
-      340,  340,  340,  340,  340,  340,  341,    0,    0,    0,
-        0,  341,  341,  342,    0,    0,    0,    0,  342,  342,
-      343,    0,  343,    0,    0,  343,  343,  344,    0,    0,
-        0,    0,  344,  344,  345,    0,    0,    0,    0,  345,
-      345,  346,    0,    0,    0,    0,  346,  346,  347,    0,
-      347,    0,    0,  347,  347,  348,    0,  348,  348,    0,
-        0,  348,  350,    0,  350,    0,  350,  350,  350,  351,
-      351,  351,  351,  351,  351,  351,  352,  352,  352,  352,
-      352,  352,  352,  353,    0,  353,    0,    0,  353,  353,
-
-      354,  354,  354,  354,  354,  354,  354,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335
+        0,    0,    0,    0,    0,  607,  610,  610,  610,  610,
+      610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
+      610,  611,  611,  611,  611,  611,  611,  611,  611,  611,
+      611,  611,  611,  611,  611,  611,  612,  612,  612,  612,
+      612,  612,  612,  612,  612,  612,  612,  612,  612,  612,
+      612,  613,  613,  613,  613,  613,  613,  613,  613,  613,
+      613,  613,  613,  613,  613,  613,  614,    0,    0,    0,
+      614,    0,  614,  614,  614,  614,    0,  614,  614,  614,
+
+      614,  615,  615,  615,  615,  615,  615,  615,  615,  615,
+      615,  615,  615,  615,  615,  615,  616,    0,    0,    0,
+      616,    0,  616,  616,  616,  616,    0,  616,  616,  616,
+      616,  617,    0,    0,    0,  617,    0,  617,  617,  617,
+      617,    0,  617,  617,  617,  617,  618,    0,    0,  618,
+      618,    0,  618,  618,  618,  618,    0,  618,  618,  618,
+      618,  619,  619,  619,    0,    0,  619,  620,    0,    0,
+        0,  620,    0,  620,  620,  620,  620,    0,  620,  620,
+      620,  620,  621,  621,  621,  621,  621,  621,  621,  621,
+      621,  621,  621,  621,  621,  621,  621,  622,    0,    0,
+
+        0,  622,    0,  622,  622,  622,  622,    0,  622,  622,
+      622,  622,  623,    0,    0,    0,  623,    0,  623,  623,
+      623,  623,    0,  623,  623,  623,  623,  624,    0,    0,
+      624,  624,    0,  624,  624,  624,  624,    0,  624,  624,
+      624,  624,  625,    0,    0,  625,  625,  625,  625,  625,
+      625,  625,    0,  625,    0,  625,  625,  627,    0,    0,
+      627,  627,    0,  627,  627,  627,  627,  627,  627,  627,
+      627,  627,  628,  628,  628,  628,  628,  628,  628,  628,
+      628,  628,  628,  628,  628,  628,  628,  629,  629,    0,
+      629,    0,  629,  629,  629,  629,  629,  629,  629,  629,
+
+      629,  629,  630,    0,    0,  630,  630,    0,  630,  630,
+      630,  630,    0,  630,  630,  630,  630,  631,  631,  631,
+        0,    0,  631,  632,  632,  632,  632,    0,    0,  632,
+      633,  633,  633,  633,  633,  633,  633,  633,  633,  633,
+      633,  633,  633,  633,  633,  635,  635,  635,    0,    0,
+      635,  636,  636,  636,  636,    0,    0,  636,  637,  637,
+      637,    0,    0,  637,  638,  638,  638,    0,    0,  638,
+      639,  639,  639,    0,    0,  639,  640,  640,  640,  640,
+        0,    0,  640,  641,  641,  641,    0,    0,  641,  642,
+      642,  642,    0,    0,  642,  643,  643,  643,    0,    0,
+
+      643,  644,  644,  644,  644,    0,    0,  644,  645,  645,
+      645,  645,  645,    0,    0,  645,  646,  646,  646,    0,
+        0,  646,  647,  647,  647,    0,    0,  647,  648,  648,
+      648,    0,    0,  648,  651,  651,  651,  651,    0,    0,
+      651,  652,  652,  652,  652,  652,    0,    0,  652,  653,
+      653,  653,    0,    0,  653,  654,  654,  654,    0,    0,
+      654,  655,  655,  655,  655,    0,    0,  655,  656,  656,
+      656,  656,  656,    0,    0,  656,  657,  657,  657,    0,
+        0,  657,  658,    0,  658,  658,  658,    0,    0,  658,
+      661,  661,  661,  661,    0,    0,  661,  662,  662,  662,
+
+      662,  662,    0,    0,  662,  665,  665,  665,    0,    0,
+      665,  666,    0,  666,  666,  666,    0,    0,  666,  667,
+      667,  667,  667,    0,    0,  667,  668,  668,  668,    0,
+      668,    0,    0,  668,  669,  669,  669,    0,    0,  669,
+      670,    0,  670,  670,  670,    0,    0,  670,  673,  673,
+        0,  673,    0,    0,  673,  676,  676,  676,    0,    0,
+      676,  677,    0,  677,  677,  677,    0,    0,  677,  678,
+      678,  678,    0,    0,  678,  679,    0,  679,    0,  679,
+        0,    0,  679,  680,    0,  680,    0,    0,  680,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
+      609,  609,  609,  609,  609,  609,  609,  609,  609,  609
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -867,7 +1425,8 @@ char *yytext;
 #define INITIAL 0
 #line 2 "parse.lex"
 /*
- * Copyright (c) 1996, 1998-2004 Todd C. Miller <Todd.Miller@courtesan.com>
+ * Copyright (c) 1996, 1998-2004, 2007
+ *     Todd C. Miller <Todd.Miller@courtesan.com>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -889,7 +1448,7 @@ char *yytext;
  * Materiel Command, USAF, under agreement number F39502-99-1-0512.
  */
 
-#include "config.h"
+#include <config.h>
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -921,7 +1480,7 @@ char *yytext;
 #include <sudo.tab.h>
 
 #ifndef lint
-static const char rcsid[] = "$Sudo: lex.yy.c,v 1.46 2004/05/17 22:10:20 millert Exp $";
+__unused static const char rcsid[] = "$Sudo: lex.yy.c,v 1.46.2.8 2007/08/25 02:48:01 millert Exp $";
 #endif /* lint */
 
 #undef yywrap          /* guard against a yywrap macro */
@@ -933,12 +1492,16 @@ static int sawspace = 0;
 static int arg_len = 0;
 static int arg_size = 0;
 
-static void fill               __P((char *, int));
+static int ipv6_valid          __P((const char *s));
+static void _fill              __P((char *, int, int));
+static void append             __P((char *, int));
 static void fill_cmnd          __P((char *, int));
 static void fill_args          __P((char *, int, int));
 extern void reset_aliases      __P((void));
 extern void yyerror            __P((char *));
 
+#define fill(a, b)             _fill(a, b, 0)
+
 /* realloc() to size + COMMANDARGINC to make room for command args */
 #define COMMANDARGINC  64
 
@@ -958,7 +1521,9 @@ extern void yyerror                __P((char *));
 
 #define INDEFS 5
 
-#line 962 "lex.yy.c"
+#define INSTR 6
+
+#line 1527 "lex.yy.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -992,7 +1557,7 @@ static int input YY_PROTO(( void ));
 #endif
 #endif
 
-#if YY_STACK_USED
+#if defined(YY_STACK_USED) && YY_STACK_USED
 static int yy_start_stack_ptr = 0;
 static int yy_start_stack_depth = 0;
 static int *yy_start_stack = 0;
@@ -1112,9 +1677,9 @@ YY_DECL
        register char *yy_cp, *yy_bp;
        register int yy_act;
 
-#line 99 "parse.lex"
+#line 108 "parse.lex"
 
-#line 1118 "lex.yy.c"
+#line 1683 "lex.yy.c"
 
        if ( yy_init )
                {
@@ -1166,13 +1731,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 >= 336 )
+                               if ( yy_current_state >= 610 )
                                        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] != 1708 );
+               while ( yy_base[yy_current_state] != 3790 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1200,12 +1765,12 @@ do_action:      /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 100 "parse.lex"
+#line 109 "parse.lex"
 BEGIN STARTDEFS;
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 102 "parse.lex"
+#line 111 "parse.lex"
 {
                            BEGIN INDEFS;
                            LEXTRACE("DEFVAR ");
@@ -1216,7 +1781,7 @@ YY_RULE_SETUP
 
 case 3:
 YY_RULE_SETUP
-#line 110 "parse.lex"
+#line 119 "parse.lex"
 {
                            BEGIN STARTDEFS;
                            LEXTRACE(", ");
@@ -1225,7 +1790,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 116 "parse.lex"
+#line 125 "parse.lex"
 {
                            LEXTRACE("= ");
                            return('=');
@@ -1233,7 +1798,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 121 "parse.lex"
+#line 130 "parse.lex"
 {
                            LEXTRACE("+= ");
                            return('+');
@@ -1241,7 +1806,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 126 "parse.lex"
+#line 135 "parse.lex"
 {
                            LEXTRACE("-= ");
                            return('-');
@@ -1249,16 +1814,16 @@ YY_RULE_SETUP
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 131 "parse.lex"
+#line 140 "parse.lex"
 {
-                           LEXTRACE("WORD(1) ");
-                           fill(yytext + 1, yyleng - 2);
-                           return(WORD);
+                           LEXTRACE("BEGINSTR ");
+                           yylval.string = NULL;
+                           BEGIN INSTR;
                        }
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 137 "parse.lex"
+#line 146 "parse.lex"
 {
                            LEXTRACE("WORD(2) ");
                            fill(yytext, yyleng);
@@ -1269,7 +1834,39 @@ YY_RULE_SETUP
 
 case 9:
 YY_RULE_SETUP
-#line 145 "parse.lex"
+#line 154 "parse.lex"
+{
+                           /* Line continuation char followed by newline. */
+                           ++sudolineno;
+                           LEXTRACE("\n");
+                       }
+       YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 160 "parse.lex"
+{
+                           LEXTRACE("ENDSTR ");
+                           BEGIN INDEFS;
+                           return(WORD);
+                       }
+       YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 166 "parse.lex"
+{
+                           LEXTRACE("STRBODY ");
+                           /* Push back line continuation char if present */
+                           if (yyleng > 2 && yytext[yyleng - 1] == '\\' &&
+                               isspace((unsigned char)yytext[yyleng - 2]))
+                               yyless(yyleng - 1);
+                           append(yytext, yyleng);
+                       }
+       YY_BREAK
+
+
+case 12:
+YY_RULE_SETUP
+#line 177 "parse.lex"
 {
                            /* quoted fnmatch glob char, pass verbatim */
                            LEXTRACE("QUOTEDCHAR ");
@@ -1277,9 +1874,9 @@ YY_RULE_SETUP
                            sawspace = FALSE;
                        }
        YY_BREAK
-case 10:
+case 13:
 YY_RULE_SETUP
-#line 152 "parse.lex"
+#line 184 "parse.lex"
 {
                            /* quoted sudoers special char, strip backslash */
                            LEXTRACE("QUOTEDCHAR ");
@@ -1287,18 +1884,18 @@ YY_RULE_SETUP
                            sawspace = FALSE;
                        }
        YY_BREAK
-case 11:
+case 14:
 YY_RULE_SETUP
-#line 159 "parse.lex"
+#line 191 "parse.lex"
 {
                            BEGIN INITIAL;
                            unput(*yytext);
                            return(COMMAND);
                        }                       /* end of command line args */
        YY_BREAK
-case 12:
+case 15:
 YY_RULE_SETUP
-#line 165 "parse.lex"
+#line 197 "parse.lex"
 {
                            LEXTRACE("ARG ");
                            fill_args(yytext, yyleng, sawspace);
@@ -1306,9 +1903,9 @@ YY_RULE_SETUP
                        }                       /* a command line arg */
        YY_BREAK
 
-case 13:
+case 16:
 YY_RULE_SETUP
-#line 172 "parse.lex"
+#line 204 "parse.lex"
 {
                            BEGIN GOTDEFS;
                            switch (yytext[8]) {
@@ -1327,9 +1924,9 @@ YY_RULE_SETUP
                            }
                        }
        YY_BREAK
-case 14:
+case 17:
 YY_RULE_SETUP
-#line 190 "parse.lex"
+#line 222 "parse.lex"
 {
                            fill(yytext, yyleng);
                            switch (*yytext) {
@@ -1349,43 +1946,59 @@ YY_RULE_SETUP
                            }
                        }
        YY_BREAK
-case 15:
+case 18:
 YY_RULE_SETUP
-#line 209 "parse.lex"
+#line 241 "parse.lex"
 {
                                /* cmnd does not require passwd for this user */
                                LEXTRACE("NOPASSWD ");
                                return(NOPASSWD);
                        }
        YY_BREAK
-case 16:
+case 19:
 YY_RULE_SETUP
-#line 215 "parse.lex"
+#line 247 "parse.lex"
 {
                                /* cmnd requires passwd for this user */
                                LEXTRACE("PASSWD ");
                                return(PASSWD);
                        }
        YY_BREAK
-case 17:
+case 20:
 YY_RULE_SETUP
-#line 221 "parse.lex"
+#line 253 "parse.lex"
 {
                                LEXTRACE("NOEXEC ");
                                return(NOEXEC);
                        }
        YY_BREAK
-case 18:
+case 21:
 YY_RULE_SETUP
-#line 226 "parse.lex"
+#line 258 "parse.lex"
 {
                                LEXTRACE("EXEC ");
                                return(EXEC);
                        }
        YY_BREAK
-case 19:
+case 22:
+YY_RULE_SETUP
+#line 263 "parse.lex"
+{
+                               LEXTRACE("SETENV ");
+                               return(SETENV);
+                       }
+       YY_BREAK
+case 23:
 YY_RULE_SETUP
-#line 231 "parse.lex"
+#line 268 "parse.lex"
+{
+                               LEXTRACE("NOSETENV ");
+                               return(NOSETENV);
+                       }
+       YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 273 "parse.lex"
 {
                            /* netgroup */
                            fill(yytext, yyleng);
@@ -1393,9 +2006,9 @@ YY_RULE_SETUP
                            return(NETGROUP);
                        }
        YY_BREAK
-case 20:
+case 25:
 YY_RULE_SETUP
-#line 238 "parse.lex"
+#line 280 "parse.lex"
 {
                            /* UN*X group */
                            fill(yytext, yyleng);
@@ -1403,36 +2016,62 @@ YY_RULE_SETUP
                            return(USERGROUP);
                        }
        YY_BREAK
-case 21:
+case 26:
 YY_RULE_SETUP
-#line 245 "parse.lex"
+#line 287 "parse.lex"
 {
                            fill(yytext, yyleng);
                            LEXTRACE("NTWKADDR ");
                            return(NTWKADDR);
                        }
        YY_BREAK
-case 22:
+case 27:
 YY_RULE_SETUP
-#line 251 "parse.lex"
+#line 293 "parse.lex"
 {
                            fill(yytext, yyleng);
                            LEXTRACE("NTWKADDR ");
                            return(NTWKADDR);
                        }
        YY_BREAK
-case 23:
+case 28:
 YY_RULE_SETUP
-#line 257 "parse.lex"
+#line 299 "parse.lex"
+{
+                           if (!ipv6_valid(yytext)) {
+                               LEXTRACE("ERROR ");
+                               return(ERROR);
+                           }
+                           fill(yytext, yyleng);
+                           LEXTRACE("NTWKADDR ");
+                           return(NTWKADDR);
+                       }
+       YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 309 "parse.lex"
+{
+                           if (!ipv6_valid(yytext)) {
+                               LEXTRACE("ERROR ");
+                               return(ERROR);
+                           }
+                           fill(yytext, yyleng);
+                           LEXTRACE("NTWKADDR ");
+                           return(NTWKADDR);
+                       }
+       YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 319 "parse.lex"
 {
                                BEGIN GOTRUNAS;
                                LEXTRACE("RUNAS ");
                                return (RUNAS);
                        }
        YY_BREAK
-case 24:
+case 31:
 YY_RULE_SETUP
-#line 263 "parse.lex"
+#line 325 "parse.lex"
 {
                            if (strcmp(yytext, "ALL") == 0) {
                                LEXTRACE("ALL ");
@@ -1444,9 +2083,9 @@ YY_RULE_SETUP
                            }
                        }
        YY_BREAK
-case 25:
+case 32:
 YY_RULE_SETUP
-#line 274 "parse.lex"
+#line 336 "parse.lex"
 {
                            /* username/uid that user can run command as */
                            fill(yytext, yyleng);
@@ -1454,25 +2093,35 @@ YY_RULE_SETUP
                            return(WORD);
                        }
        YY_BREAK
-case 26:
+case 33:
 YY_RULE_SETUP
-#line 281 "parse.lex"
+#line 343 "parse.lex"
 {
                            BEGIN INITIAL;
+                           ++sudolineno;
+                           LEXTRACE("\n");
+                           return(COMMENT);
                        }
        YY_BREAK
-case 27:
+case 34:
 YY_RULE_SETUP
-#line 285 "parse.lex"
+#line 350 "parse.lex"
+{
+                           BEGIN INITIAL;
+                       }
+       YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 354 "parse.lex"
 {
                            BEGIN GOTCMND;
                            LEXTRACE("COMMAND ");
                            fill_cmnd(yytext, yyleng);
                        }                       /* sudo -e */
        YY_BREAK
-case 28:
+case 36:
 YY_RULE_SETUP
-#line 291 "parse.lex"
+#line 360 "parse.lex"
 {
                            /* directories can't have args... */
                            if (yytext[yyleng - 1] == '/') {
@@ -1486,9 +2135,9 @@ YY_RULE_SETUP
                            }
                        }                       /* a pathname */
        YY_BREAK
-case 29:
+case 37:
 YY_RULE_SETUP
-#line 304 "parse.lex"
+#line 373 "parse.lex"
 {
                            /* a word */
                            fill(yytext, yyleng);
@@ -1496,41 +2145,41 @@ YY_RULE_SETUP
                            return(WORD);
                        }
        YY_BREAK
-case 30:
+case 38:
 YY_RULE_SETUP
-#line 311 "parse.lex"
+#line 380 "parse.lex"
 {
                            LEXTRACE(", ");
                            return(',');
                        }                       /* return ',' */
        YY_BREAK
-case 31:
+case 39:
 YY_RULE_SETUP
-#line 316 "parse.lex"
+#line 385 "parse.lex"
 {
                            LEXTRACE("= ");
                            return('=');
                        }                       /* return '=' */
        YY_BREAK
-case 32:
+case 40:
 YY_RULE_SETUP
-#line 321 "parse.lex"
+#line 390 "parse.lex"
 {
                            LEXTRACE(": ");
                            return(':');
                        }                       /* return ':' */
        YY_BREAK
-case 33:
+case 41:
 YY_RULE_SETUP
-#line 326 "parse.lex"
+#line 395 "parse.lex"
 {
                            if (yyleng % 2 == 1)
                                return('!');    /* return '!' */
                        }
        YY_BREAK
-case 34:
+case 42:
 YY_RULE_SETUP
-#line 331 "parse.lex"
+#line 400 "parse.lex"
 {
                            BEGIN INITIAL;
                            ++sudolineno;
@@ -1538,25 +2187,25 @@ YY_RULE_SETUP
                            return(COMMENT);
                        }                       /* return newline */
        YY_BREAK
-case 35:
+case 43:
 YY_RULE_SETUP
-#line 338 "parse.lex"
+#line 407 "parse.lex"
 {                      /* throw away space/tabs */
                            sawspace = TRUE;    /* but remember for fill_args */
                        }
        YY_BREAK
-case 36:
+case 44:
 YY_RULE_SETUP
-#line 342 "parse.lex"
+#line 411 "parse.lex"
 {
                            sawspace = TRUE;    /* remember for fill_args */
                            ++sudolineno;
                            LEXTRACE("\n\t");
                        }                       /* throw away EOL after \ */
        YY_BREAK
-case 37:
+case 45:
 YY_RULE_SETUP
-#line 348 "parse.lex"
+#line 417 "parse.lex"
 {
                            BEGIN INITIAL;
                            ++sudolineno;
@@ -1564,9 +2213,9 @@ YY_RULE_SETUP
                            return(COMMENT);
                        }                       /* return comments */
        YY_BREAK
-case 38:
+case 46:
 YY_RULE_SETUP
-#line 355 "parse.lex"
+#line 424 "parse.lex"
 {
                            LEXTRACE("ERROR ");
                            return(ERROR);
@@ -1578,7 +2227,8 @@ case YY_STATE_EOF(GOTDEFS):
 case YY_STATE_EOF(GOTCMND):
 case YY_STATE_EOF(STARTDEFS):
 case YY_STATE_EOF(INDEFS):
-#line 360 "parse.lex"
+case YY_STATE_EOF(INSTR):
+#line 429 "parse.lex"
 {
                            if (YY_START != INITIAL) {
                                BEGIN INITIAL;
@@ -1588,12 +2238,12 @@ case YY_STATE_EOF(INDEFS):
                            yyterminate();
                        }
        YY_BREAK
-case 39:
+case 47:
 YY_RULE_SETUP
-#line 369 "parse.lex"
+#line 438 "parse.lex"
 ECHO;
        YY_BREAK
-#line 1597 "lex.yy.c"
+#line 2247 "lex.yy.c"
 
        case YY_END_OF_BUFFER:
                {
@@ -1884,7 +2534,7 @@ static yy_state_type yy_get_previous_state()
                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 >= 336 )
+                       if ( yy_current_state >= 610 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1919,11 +2569,11 @@ yy_state_type yy_current_state;
        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 >= 336 )
+               if ( yy_current_state >= 610 )
                        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 == 335);
+       yy_is_jam = (yy_current_state == 609);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -2180,10 +2830,10 @@ FILE *file;
        b->yy_input_file = file;
        b->yy_fill_buffer = 1;
 
-#if YY_ALWAYS_INTERACTIVE
+#if defined(YY_ALWAYS_INTERACTIVE) && YY_ALWAYS_INTERACTIVE
        b->yy_is_interactive = 1;
 #else
-#if YY_NEVER_INTERACTIVE
+#if defined(YY_NEVER_INTERACTIVE) && YY_NEVER_INTERACTIVE
        b->yy_is_interactive = 0;
 #else
        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
@@ -2475,36 +3125,52 @@ void *ptr;
        free( ptr );
        }
 
-#if YY_MAIN
+#if defined(YY_MAIN) && YY_MAIN
 int main()
        {
        yylex();
        return 0;
        }
 #endif
-#line 369 "parse.lex"
+#line 438 "parse.lex"
 
 static void
-fill(s, len)
-    char *s;
-    int len;
+_fill(src, len, olen)
+    char *src;
+    int len, olen;
 {
     int i, j;
+    char *dst;
 
-    yylval.string = (char *) malloc(len + 1);
-    if (yylval.string == NULL) {
+    dst = olen ? realloc(yylval.string, olen + len + 1) : malloc(len + 1);
+    if (dst == NULL) {
        yyerror("unable to allocate memory");
        return;
     }
+    yylval.string = dst;
 
     /* Copy the string and collapse any escaped characters. */
+    dst += olen;
     for (i = 0, j = 0; i < len; i++, j++) {
-       if (s[i] == '\\' && i != len - 1)
-           yylval.string[j] = s[++i];
+       if (src[i] == '\\' && i != len - 1)
+           dst[j] = src[++i];
        else
-           yylval.string[j] = s[i];
+           dst[j] = src[i];
     }
-    yylval.string[j] = '\0';
+    dst[j] = '\0';
+}
+
+static void
+append(src, len)
+    char *src;
+    int len;
+{
+    int olen = 0;
+
+    if (yylval.string != NULL)
+       olen = strlen(yylval.string);
+
+    _fill(src, len, olen);
 }
 
 static void
@@ -2550,8 +3216,7 @@ fill_args(s, len, addspace)
            (char *) realloc(yylval.command.args, arg_size) :
            (char *) malloc(arg_size);
        if (p == NULL) {
-           if (yylval.command.args != NULL)
-               free(yylval.command.args);
+           efree(yylval.command.args);
            yyerror("unable to allocate memory");
            return;
        } else
@@ -2567,6 +3232,29 @@ fill_args(s, len, addspace)
     arg_len = new_len;
 }
 
+/*
+ * Check to make sure an IPv6 address does not contain multiple instances
+ * of the string "::".  Assumes strlen(s) >= 1.
+ * Returns TRUE if address is valid else FALSE.
+ */
+static int
+ipv6_valid(s)
+    const char *s;
+{
+    int nmatch = 0;
+
+    for (; *s != '\0'; s++) {
+       if (s[0] == ':' && s[1] == ':') {
+           if (++nmatch > 1)
+               break;
+       }
+       if (s[0] == '/')
+           nmatch = 0;                 /* reset if we hit netmask */
+    }
+
+    return (nmatch <= 1);
+}
+
 int
 yywrap()
 {