Imported Upstream version 1.8.7
[debian/sudo] / plugins / sudoers / toke.c
index 6dfe12c54f375d235e0a2c8a861d64c03b831dca..03a979575301e95b5a746399236bf947f55565f0 100644 (file)
@@ -1,4 +1,21 @@
 #include <config.h>
+#define yy_create_buffer sudoers_create_buffer
+#define yy_delete_buffer sudoers_delete_buffer
+#define yy_scan_buffer sudoers_scan_buffer
+#define yy_scan_string sudoers_scan_string
+#define yy_scan_bytes sudoers_scan_bytes
+#define yy_flex_debug sudoers_flex_debug
+#define yy_init_buffer sudoers_init_buffer
+#define yy_flush_buffer sudoers_flush_buffer
+#define yy_load_buffer_state sudoers_load_buffer_state
+#define yy_switch_to_buffer sudoers_switch_to_buffer
+#define yyin sudoersin
+#define yyleng sudoersleng
+#define yylex sudoerslex
+#define yyout sudoersout
+#define yyrestart sudoersrestart
+#define yytext sudoerstext
+
 /*     $OpenBSD: flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $     */
 
 /* A lexical scanner generated by flex */
@@ -289,79 +306,100 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 61
-#define YY_END_OF_BUFFER 62
-static yyconst short int yy_accept[622] =
+#define YY_NUM_RULES 67
+#define YY_END_OF_BUFFER 68
+static yyconst short int yy_accept[814] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   62,   49,   57,   56,   55,   48,   60,   32,
-       50,   51,   32,   52,   49,   49,   49,   49,   54,   53,
-       60,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   60,   49,   49,   57,   60,   44,   44,   44,   44,
-       44,    2,   60,    1,   49,   44,   44,   49,   17,   16,
-       17,   16,   16,   60,   60,   60,    3,    9,    8,    9,
-        4,    9,    5,   60,   13,   13,   13,   11,   12,   49,
-        0,   57,   55,    0,   59,    0,   49,   34,    0,   32,
-        0,   33,    0,   47,   47,    0,   49,   49,    0,   49,
-
-       49,   49,   49,    0,   37,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   49,   58,   49,
-       57,    0,    0,    0,    0,    0,    0,   49,   49,   49,
-       49,   49,    2,    1,    0,    1,   45,   45,    0,   49,
-       17,   17,   15,   14,   15,    0,    0,    3,    9,    0,
-        6,    7,    9,    9,   13,    0,   13,   13,    0,   10,
-        0,    0,    0,   34,   34,    0,    0,   49,   49,   49,
-       49,   49,    0,    0,   37,   37,   44,   39,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       49,    0,    0,    0,    0,    0,    0,   49,   49,   49,
-
-       49,   49,    0,   49,   10,    0,   49,   49,   49,   49,
-       49,   49,    0,   38,   38,   38,    0,    0,   37,   37,
-       37,   37,   37,   37,   37,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   40,   44,   41,   49,    0,
-        0,    0,    0,    0,    0,   49,   49,   49,   49,   49,
-       49,   49,    0,    0,   38,   38,   38,    0,   37,   37,
-        0,   37,   37,   37,   37,   37,   37,   37,   37,   37,
-       37,   37,    0,   25,   44,   44,   44,   44,   44,   44,
-       44,   44,   42,   44,   49,    0,    0,    0,    0,   49,
-       49,   49,   49,   49,   49,   49,   49,    0,   38,    0,
-
-       37,   37,   37,    0,    0,    0,   37,   37,   37,   37,
-       37,   37,   37,   37,   37,   37,   37,   37,   37,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   49,    0,
-        0,    0,   49,   49,   49,   35,   35,   35,    0,    0,
-       37,   37,   37,   37,   37,   37,   37,    0,    0,    0,
-        0,    0,   37,   37,   37,   37,   37,   37,   37,   37,
-       37,   37,   37,   37,   37,   37,   44,   44,   44,    0,
-       24,   44,   44,   44,   44,    0,   23,    0,   26,   49,
-        0,    0,    0,   49,   49,   49,   49,   35,   35,   35,
-       35,    0,   37,    0,   37,   37,   37,   37,   37,   37,
-
-       37,   37,   37,   37,   37,    0,    0,    0,   37,   37,
-       37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
-       37,   44,   44,   44,   44,   44,   44,   44,   46,    0,
-        0,    0,   49,   20,   45,   36,   36,   36,   36,   37,
-        0,    0,    0,   37,   37,   37,   37,   37,   37,   37,
-       37,   37,   37,   37,   37,   37,    0,    0,    0,    0,
-        0,   37,   37,   37,   37,   37,   37,   37,   37,   44,
-       44,   44,   44,   44,    0,   22,    0,   27,    0,   20,
-        0,    0,   49,    0,   49,   49,   49,   36,   36,   36,
-       36,    0,    0,    0,    0,    0,   37,   37,   37,   37,
+        0,    0,    0,    0,   68,   55,   63,   62,   61,   54,
+       66,   34,   56,   57,   34,   58,   55,   55,   55,   55,
+       60,   59,   66,   46,   46,   46,   46,   46,   46,   46,
+       46,   46,   46,   66,   55,   55,   63,   66,   46,   46,
+       46,   46,   46,    2,   66,    1,   55,   46,   46,   55,
+       17,   16,   17,   16,   16,   66,   66,   66,    3,    9,
+        8,    9,    4,    9,    5,   66,   13,   13,   13,   11,
+       12,   66,   19,   19,   18,   18,   18,   19,   18,   18,
+       18,   19,   19,   19,   19,   19,   18,   19,   19,   55,
+
+        0,   63,   61,    0,   65,    0,   55,   36,    0,   34,
+        0,   35,    0,   53,   53,    0,   55,   55,    0,   55,
+       55,   55,   55,    0,   39,   46,   46,   46,   46,   46,
+       46,   46,   46,   46,   46,   46,   46,   55,   64,   55,
+       55,   63,    0,    0,    0,    0,    0,    0,   55,   55,
+       55,   55,   55,    2,    1,    0,    1,   47,   47,    0,
+       55,   17,   17,   15,   14,   15,    0,    0,    3,    9,
+        0,    6,    7,    9,    9,   13,    0,   13,   13,    0,
+       10,   36,    0,    0,   35,   19,   19,    0,   19,    0,
+        0,   18,   18,   18,   18,   18,   18,   19,   19,   46,
+
+       19,   19,   19,   19,   19,   19,   19,    0,    0,    0,
+       36,   55,   55,   55,   55,   55,    0,    0,   39,   39,
+       46,   41,   46,   46,   46,   46,   46,   46,   46,   46,
+       46,   46,   46,   46,   55,   55,    0,    0,    0,    0,
+        0,    0,   55,   55,   55,   55,   55,    0,   55,   10,
+        0,    0,    0,   18,   18,   18,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,    0,   55,   55,
+       55,   55,   55,   55,    0,   40,   40,   40,    0,    0,
+       39,   39,   39,   39,   39,   39,   39,   46,   46,   46,
+       46,   46,   46,   46,   46,   46,   46,   42,   46,   43,
+
+       55,   55,   55,   55,    0,    0,    0,    0,    0,    0,
+       55,   55,   55,   55,    0,    0,    0,    0,    0,   18,
+       18,   19,   46,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   55,   55,   55,    0,    0,   40,   40,
+       40,    0,   39,   39,    0,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,    0,   27,   46,   46,
+       46,   46,   46,   46,   46,   46,   44,   46,   55,   55,
+       55,   55,   55,    0,    0,    0,    0,   55,   55,   55,
+        0,    0,    0,   18,   18,   46,   46,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   55,   55,
+
+       55,   55,   55,    0,   40,    0,   39,   39,   39,    0,
+        0,    0,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   46,   46,   46,   46,   46,
+       46,   46,   46,   46,   48,   49,   50,   51,   55,    0,
+        0,    0,   55,   55,   55,    0,    0,    0,    0,    0,
+       46,   46,   19,   46,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   37,   37,   37,    0,    0,   39,   39,
+       39,   39,   39,   39,   39,    0,    0,    0,    0,    0,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   46,   46,   46,    0,   26,   46,
+
+       46,   46,   46,    0,   25,    0,   28,   55,    0,    0,
+        0,   55,   55,   55,   37,   37,   37,   46,   46,   46,
+       46,   19,   19,   19,   55,   37,   37,   37,   37,    0,
+       39,    0,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,    0,    0,    0,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   46,
+       46,   46,   46,   46,   46,   46,   52,    0,    0,    0,
+       55,   22,   47,    0,   37,   37,   37,   37,   46,   46,
+       46,   46,   19,   19,   19,   38,   38,   38,   38,   39,
+        0,    0,    0,   39,   39,   39,   39,   39,   39,   39,
+
+       39,   39,   39,   39,   39,   39,    0,    0,    0,    0,
+        0,   39,   39,   39,   39,   39,   39,   39,   39,   46,
+       46,   46,   46,   46,    0,   24,    0,   29,    0,   22,
+        0,    0,   55,    0,   55,   38,   38,   38,   38,   46,
+       46,   46,   46,   55,   55,   38,   38,   38,   38,    0,
+        0,    0,    0,    0,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   45,    0,   32,   46,   46,   46,
+        0,    0,    0,   20,    0,   23,   22,    0,    0,    0,
+        0,    0,   22,    0,    0,    0,   38,   38,   38,   38,
+
+       46,   46,   46,   55,   55,   55,    0,    0,    0,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,    0,   30,   46,
+       46,   23,    0,    0,   22,    0,    0,    0,   46,   46,
+       55,   55,   55,   55,   55,    0,    0,    0,    0,    0,
+       39,   39,   39,   39,   39,   39,   39,   39,    0,   33,
+       46,    0,    0,    0,    0,    0,    0,   46,   55,   55,
+       55,   39,   39,   39,   39,   39,   39,    0,   31,    0,
+        0,   21,    0,    0,    0,   55,   55,   55,   55,   55,
+       39,   39,   39,   39,   39,    0,    0,    0,    0,    0,
 
        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
-       37,   37,   37,   37,   37,   37,   43,    0,   30,   44,
-       44,   44,    0,    0,    0,   18,    0,   21,   20,    0,
-        0,    0,    0,    0,   20,    0,   49,   49,   49,    0,
-        0,    0,   37,   37,   37,   37,   37,   37,   37,   37,
-       37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
-        0,   28,   44,   44,   21,    0,    0,   20,   49,   49,
-       49,   49,   49,    0,    0,    0,    0,    0,   37,   37,
-       37,   37,   37,   37,   37,   37,    0,   31,   44,    0,
-       49,   49,   49,   37,   37,   37,   37,   37,   37,    0,
-
-       29,    0,    0,   19,   49,   49,   49,   49,   49,   37,
-       37,   37,   37,   37,   35,   35,   35,   35,   35,   35,
-        0
+       37,   37,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -371,15 +409,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,   23,   24,    1,    1,
-       25,   26,   10,   27,   28,   29,   30,   31,   32,   29,
-       33,   34,   35,   36,   36,   37,   38,   39,   40,   41,
-       36,   42,   43,   44,   45,   46,   47,   48,   49,   36,
-       10,   50,   10,    1,   51,    1,   52,   53,   54,   55,
-
-       56,   57,   58,   58,   59,   58,   58,   60,   61,   62,
-       63,   58,   58,   64,   65,   66,   67,   58,   58,   58,
-       58,   58,    1,    1,    1,    1,    1,    1,    1,    1,
+       19,   20,   21,   22,   23,   24,   25,   26,    1,    1,
+       27,   28,   10,   29,   30,   31,   32,   33,   34,   31,
+       35,   36,   37,   38,   38,   39,   40,   41,   42,   43,
+       38,   44,   45,   46,   47,   48,   49,   50,   51,   38,
+       10,   52,   10,    1,   53,    1,   54,   55,   56,   57,
+
+       58,   59,   60,   61,   62,   60,   60,   63,   64,   65,
+       66,   60,   60,   67,   68,   69,   70,   60,   60,   60,
+       60,   60,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -396,583 +434,858 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[68] =
+static yyconst int yy_meta[71] =
     {   0,
         1,    2,    3,    4,    5,    6,    1,    7,    7,    1,
-        1,    8,    1,    9,   10,   11,   11,   11,   11,   11,
-       11,   11,   11,   12,   13,    7,    1,   11,   11,   11,
-       11,   11,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,   14,
-       15,   16,   16,   16,   16,   16,   16,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15
+        8,    9,   10,   11,   12,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   14,   15,    7,    1,   16,
+       16,   16,   16,   16,   17,   17,   17,   17,   17,   17,
+       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
+       17,   18,   19,   20,   20,   20,   20,   20,   20,   21,
+       21,   21,   21,   21,   21,   21,   21,   21,   21,   21
     } ;
 
-static yyconst short int yy_base[686] =
+static yyconst short int yy_base[931] =
     {   0,
-        0,   66,   68,   76,  119,  124,  173,  239,  148,  197,
-       82,   90, 2937, 2886, 2933, 3595, 2929, 3595,  165,   65,
-     3595, 3595, 2882, 3595,  130,  293,  173,  146, 2907, 3595,
-     3595,  350, 2893,   42,  402,   41, 2889,   74, 2888, 2895,
-     2876,  458,  197,   57,  219,  482,   38,  207, 2854,   37,
-     2851,  117,  249, 2880,  326, 2841, 2852,  105,    0, 3595,
-     2875, 3595,    0,  469,  424,  143,    0, 2828, 3595,   48,
-     3595,  223, 3595,  155, 2827,  202,   97, 3595,  252, 2817,
-      504, 2855, 2852, 2852, 3595,  258,  504,  312,  526,  201,
-      548, 2796,  557,  528, 2795,  582,  579,  614, 2820, 2829,
-
-      593,  601,  266, 2818,  182,  656,    0, 2796, 2791, 2766,
-     2761,  296, 2727, 2725, 2713, 2696, 2691,  426, 3595,   87,
-      659, 2659, 2663, 2655, 2650, 2651,  257,  196,  318,  276,
-      258,  288,  436, 2694,  631, 2693,  655, 2644,  690,  303,
-        0, 2681,  168, 3595, 3595,  701,  352,    0, 2634,  723,
-     3595, 3595, 2633,  447, 2632, 2676,  467,  461,  433, 2670,
-     2659, 2600,  720,  733,  206,  755,  759,  771,  781,  791,
-      828, 2581, 2570,  870,  453,  913,  955,    0, 2563, 2557,
-     2540, 2523, 2530, 2541, 2536, 2516, 2502, 2496, 2475, 2473,
-      277, 2442, 2436, 2402, 2404, 2407,  477,  436, 2405,  424,
-
-      401,  292,  813,  488, 2454, 2450,  845,  438,  855,  890,
-      756,  465, 2428, 2418,  930,  554, 2409, 2408,  463,  898,
-      999,  939,  972, 1042,  980, 2403,  490, 2378,  500, 2380,
-     2338, 2327, 2325, 2321, 2310,    0, 2305,    0,  508, 2274,
-     2238, 2212, 2211, 2176,  515,  517,  615,  527,  529, 1018,
-     1061, 1086, 2212, 2210, 1026, 2209, 2203, 2171, 2166,  565,
-     1069,  754, 1096,  802, 1123,    0, 1106, 1134, 1151, 1159,
-     1177, 1196,  601, 3595, 2136, 2137, 2127, 2131, 2090, 2090,
-     2084, 2078,    0, 2062,  607, 2056, 2024, 2025,  573,  576,
-      578,  676, 1204,  591, 1221, 1239, 1231, 2064, 2031, 2006,
-
-     2004, 1274,  676, 1256, 1293, 1318,  682,  808,  815, 1301,
-      819, 1328,    0, 1339, 1350, 1367, 1247, 1393, 1377, 1955,
-     1915, 1888,  742,  692, 1884, 1891,  794,  980,  777, 1889,
-     1856,  652,  945,  680,  820, 1411, 1420, 1436, 1842, 1824,
-     1800, 1446, 1473, 1455, 1266, 1515, 1492, 1500, 1809, 1534,
-     1559, 1544, 1009, 1052, 1569, 1571, 1580, 1590, 1601,    0,
-     1612, 1623, 1590, 1463, 1666, 1642, 1762, 1737, 1740, 1108,
-     3595, 1696, 1672, 1662, 1628, 1157, 3595, 1158, 3595,  774,
-     1514, 1500,  730, 1152,  697,  913, 1650,  805, 1686, 1709,
-     1695, 1516, 1500, 1721, 1222, 1730, 1474, 1744,    0,  830,
-
-     1755, 1772, 1571, 1797, 1782, 1816, 1841, 1851, 1284, 1377,
-     1832, 1861, 1861, 1872, 1883,    0, 1894, 1905, 1872, 1824,
-     1924, 1414, 1400, 1375, 1336, 1331, 1159, 1483, 1312, 1274,
-     1260, 1539,  606, 1730, 1238, 1949, 1959, 1969, 1984, 1256,
-     1994, 2004, 2019, 1245, 1535, 1915, 1932, 1950, 2029,    0,
-      874, 2040, 2057, 2065, 2082, 2101, 2109, 1214, 2126, 2136,
-     2146, 1633, 1675, 2154,  924,  966, 2165,    0, 1003, 1092,
-     1731, 1087, 1056, 1052, 2042, 3595, 2063, 3595, 1017, 2147,
-     1126,  624, 1311, 2187, 2192, 2183, 1756, 2193, 2203, 2230,
-     1979, 2238,  992, 2248, 2265, 2275,  830,  811, 1970, 2194,
-
-     2281, 2214, 2291,    0, 1111, 2302, 2319, 2256, 2344, 2329,
-     2362, 2371, 2387, 1807,  813, 1170,    0, 2065, 3595, 2228,
-      738,  713,  680,  731, 1201, 3595,  900,  653, 2409, 2414,
-     2419, 2424, 2418, 2436, 2445, 2446, 2459, 2469, 2480, 2494,
-     2504, 2515,  569,  531, 2215, 2217, 2523, 2221, 2533,    0,
-     1278, 2544, 2561, 2569, 2588,  519, 2597, 2606, 2615,  492,
-     2304, 3595, 2393,  452, 3595, 1416, 2621, 2629, 2637, 1981,
-     2647, 2657, 2672, 2682,  345, 2692, 2707, 2717,  305,  264,
-     2303,  245,  191, 2725,    0, 1477, 2441, 3595, 2444, 1632,
-     2735, 2745, 2755, 2770, 2780, 2790,   90,    0,   92, 2482,
-
-     3595,  100, 1647, 3595, 2798, 1982, 2808, 2818, 2833, 3595,
-     2843, 2853, 2763, 3595, 2868, 2876, 2884,   19, 2892, 2903,
-     3595, 2953, 2969, 2985, 3001, 3017, 3033, 3049, 3065, 3081,
-     3087, 3103, 3119, 1676, 3135, 3151, 3167, 3183, 3199, 3215,
-     3231, 3237, 3244, 3260, 3276, 3282, 3289, 3295, 3301, 3307,
-     3314, 3320, 3326, 3332, 3339, 3347, 3353, 3359, 3365, 3372,
-     3380, 3386, 3392, 3399, 3407, 3413, 3421, 3428, 3436, 3442,
-     3450, 3457, 3465, 3481, 3497, 3513, 3519, 3527, 3534, 3540,
-     3548, 3554, 3562, 3578, 2159
+        0,   69,   71,   79,   94,  124,  175,  244,  153,  197,
+       85,  130,  314,    0, 4514, 4461, 4510, 5604, 4507, 5604,
+      382,   86, 5604, 5604, 4458, 5604,  140,  394,  195,  153,
+     4483, 5604, 5604,  453, 4383,   43,  508,   37, 4379,   65,
+     4378, 4385, 4367,  566,  581,   91,  151,  604,   39,   41,
+     4351,   34, 4348,  117, 4402, 4412,  428, 4371, 4382,  136,
+        0, 5604, 4407, 5604,    0,  606,  664,  105,    0, 4358,
+     5604,  115, 5604,  133, 5604,  138, 4357,  152,  171, 5604,
+      188,  383,  641,  694,  737,  235,  245,  794,  843, 4369,
+      157,  898, 4365, 4364, 4375, 4370,  944,    0,  206, 4351,
+
+      266, 4400, 4397, 4397, 5604,  263,  532,  585, 4386,  608,
+      707, 4346,  829,  648, 4345,  968,  981, 1018, 4359, 4370,
+      563,  708,  422, 4357,  371, 1062, 1106, 4343, 4347, 4340,
+     4344,  596, 4333, 4340, 4337, 4329, 4331,  644, 5604,  237,
+      137,  946, 4309, 4314, 4305, 4300, 4301,  121,  225,  530,
+      377,  369,  335,  445, 4366,  720, 4365,  931, 4314, 1018,
+      169,    0, 4361,  160, 5604, 5604,  991,  388,    0, 4312,
+      638, 5604, 5604, 4311,  661, 4310, 4356,  392,  221,  420,
+     4358,  653,  665, 1139, 4296, 1145,    0, 1173, 1201, 1210,
+     1037, 1239, 4333, 1081, 1170,  826, 1288, 1343, 4307,    0,
+
+     4311, 4309,  899, 4298, 4296, 4287, 4283, 4336, 4335, 1222,
+     1258, 1389, 1362,  968, 1428, 4323, 4310, 1472,  520, 1517,
+     1561, 1605, 4303, 4297, 4280, 4282, 4289, 4300, 4295, 4283,
+     4279, 4292, 4291, 4290,  654,  493, 4258, 4252, 4242, 4244,
+     4250,  534,  579, 4253,  491,  407,  506, 1413,  626, 4304,
+     4251, 4239, 1651, 1661, 4227, 1705,    0, 4197, 4164, 4155,
+     4151, 4151, 4135, 4112, 4111,  811, 4067, 4122, 1749,  378,
+        0,    0, 1041,  243, 4098, 4097, 1786,  805, 4096, 4095,
+      623, 1410, 1799, 1447, 1091, 1844, 1890, 4094,  429, 4073,
+      632, 4084, 4082, 4056, 4054, 4050, 4053,    0, 4046,    0,
+
+      929,  638,  544,  561, 4022, 4024, 4008, 4022, 4008,  746,
+      524, 1063,  413,  662, 1491, 4060, 4059, 4058, 1270, 1900,
+     1944,  763,  904, 4037, 4020, 4009, 4007, 3992, 3988,  818,
+     3993, 3988, 3912, 1990, 2002, 2014, 3930, 3929, 2024, 3929,
+     3912, 3911, 3910,  919, 1536, 1003, 1580, 1142, 2037,    0,
+     1626, 2083, 1680, 1372, 2128, 2174,  764, 5604, 3892, 3877,
+     3870, 3884, 3862, 3869, 3879, 3879,    0, 3863,  698,  593,
+      820,  973, 1093, 3857, 3824, 3825,  922,  897,  969, 1097,
+     3866, 3858, 2186, 2196, 3829, 3807, 3800, 3814, 3778, 3784,
+     3794, 3793, 3747, 3726, 3716, 3711, 3696, 3656, 2240, 1017,
+
+     2279, 2291, 1637, 3686, 3662, 3648, 3646, 2301, 1127, 3642,
+     3641, 2347, 1154, 1205, 1209, 1724, 1761, 2359,    0, 1763,
+     2405, 1774, 1457, 2450, 2496, 2521, 1024, 1127, 1181, 1190,
+     1169, 1207, 1224, 1392, 3602, 3584, 3577, 3560, 1240, 3581,
+     3547, 1313, 1391,  874, 1774, 1821, 3584, 3576, 3569, 1503,
+     3523, 3519,  869, 1379, 3515, 3511,  949, 1045,    0,    0,
+        0,    0, 3478, 2577, 1863, 1546, 3510, 3509, 3506, 1919,
+     2616, 1963, 1590, 2660, 2706, 2056, 3517, 3509, 3487, 1692,
+     1879, 1979, 2096, 2104, 2147, 2106, 2718,    0, 2217, 2764,
+     2250, 1734, 2809, 2855, 2880, 2086, 1133, 1088, 5604,  421,
+
+     2087, 1184, 2088, 1369, 5604, 1370, 5604, 1197, 3418, 3389,
+     1282, 2127, 1249, 1368, 3442, 3427, 2936, 3386, 3320, 3309,
+     3295, 2951, 1219, 3272, 3006, 1181, 3044,    0, 1709, 3290,
+     3263, 2260,   58, 2320, 1774, 3083,    0, 2380, 3129, 2424,
+     1831, 3173, 3219, 3270, 3265, 3231, 2336, 2462, 2464, 2471,
+     3256, 2477, 3243,    0, 2589, 3289, 2600, 1929, 3335, 3360,
+     1376, 1087, 1847, 1409, 1542, 1586, 3218, 3184, 3166, 1832,
+     1427, 2060, 3174, 2635, 3210, 3186, 3185, 2435, 3129, 3111,
+     3114, 3066, 3429, 1454,    0, 3486, 2679, 2737, 1483, 3085,
+     2989, 2839, 3525, 2819, 2003, 2280, 2783, 2381, 3537,    0,
+
+     2830, 3583, 3016, 2157, 3627, 3673, 3026, 2821, 2801, 2750,
+     2228, 2472, 2474, 2695, 1189, 1531, 3685,    0, 2647, 1848,
+     1925, 1602, 1522, 1849, 1587, 5604, 1664, 5604, 2692, 1967,
+     1630, 2177, 2014, 2406, 2761, 2674, 2630, 3731, 2272, 1926,
+     2155, 2500, 1927, 3741, 2076, 3780,    0, 1967, 2277, 3054,
+     2598, 2535, 2509, 2841, 2470, 2431, 2485, 2600, 3064, 2617,
+     3819,    0, 3104, 3865, 3148, 3036, 3909, 3955, 2390, 2373,
+     3966, 3118, 2338, 1742, 2298, 2129, 5604, 2743, 1825, 1738,
+     2219, 2153, 1825, 5604, 2062, 2083, 3130, 3172, 3276, 3281,
+     1984, 2880, 1920, 3360, 3192, 1912, 1877, 1858, 3274, 1744,
+
+     2326, 2643, 2745, 3978, 3990, 4002, 1700, 1693, 4014, 1662,
+     1623, 2856, 2951, 3496, 3084, 4026,    0, 3508, 4072, 3556,
+     3074,    0, 1599, 1510, 1503, 3319, 1423, 2328, 5604, 3154,
+     2037, 5604, 2124, 3602, 3646, 1409, 1403, 4118, 2407, 2791,
+     4130, 2334, 4142, 4154, 3659, 3704, 1390, 1286, 1251, 3418,
+     1158, 1087, 3105, 1077, 1056, 4166,    0, 3568, 2499, 5604,
+     3270, 2220, 3751, 1014, 1005,  957, 3614, 2522, 4178, 4190,
+     4202, 3761, 3790, 3800,  684,    0,  683, 2685, 5604,  658,
+     2222, 5604,  522,  382, 4214, 4226, 2335, 4238, 4250, 3840,
+     5604, 3846, 3884, 3202, 5604, 3928,  374,  208,  117, 3716,
+
+     4260, 4297, 4334, 4045, 4091, 4270,   59, 4371, 3941, 5604,
+     4280, 3771, 5604, 4423, 4444, 4465, 4486, 4507, 4528, 4549,
+     4570, 4591, 4600, 2074, 4620, 4641, 2383, 4662, 4683, 4704,
+     4725, 4746, 4767, 4788, 4809, 2337, 4830, 4839, 4847, 4856,
+     4876, 4897, 4918, 2474, 4939, 4960, 4981, 5002, 5011, 5030,
+     5039, 5048, 2421, 2516, 5056, 5064, 5072, 5081, 5089, 5096,
+     5104, 5112, 5121, 5131, 2600, 2694, 5139, 5147, 5155, 2695,
+     2757, 5164, 5174, 5194, 2798, 5203, 5211, 2799, 5220, 5230,
+     5250, 2228, 2615, 5259, 5271, 5280, 5290, 2803, 2825, 5299,
+     5309, 5318, 5338, 2700, 5347, 5359, 2841, 2872, 5368, 5378,
+
+     2873, 5387, 5397, 5417, 5438, 5459, 3115, 3116, 5479, 3168,
+     5486, 5496, 2951, 2967, 5505, 2520, 5525, 3304, 3313, 5534,
+     5544, 3517, 3314, 3318, 5552, 5562, 5582, 3814, 3319, 3430
     } ;
 
-static yyconst short int yy_def[686] =
+static yyconst short int yy_def[931] =
     {   0,
-      621,    1,    1,    1,  622,  622,  623,  623,  624,  624,
-      625,  625,  621,  626,  621,  621,  621,  621,  627,  628,
-      621,  621,  629,  621,  630,  626,   26,   26,  631,  621,
-      621,  621,   32,   32,   32,   35,   35,   35,   35,   35,
-       35,  626,   26,  626,  621,  627,   32,   32,   35,   35,
-       35,  621,  621,  621,  632,   35,   35,  626,  633,  621,
-      633,  621,  633,  621,  627,  621,  634,  635,  621,  635,
-      621,  635,  621,  636,  637,  637,  637,  621,  621,  626,
-      626,  621,  621,  638,  621,  639,  621,  628,  621,  640,
-      628,  629,  629,  630,  641,  626,  626,   26,  631,   98,
-
-       98,   98,   98,  642,  643,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   35,  626,  621,  626,
-      621,  621,  621,  621,  621,  621,  638,  626,   98,  626,
-      626,  626,  621,  621,  621,  621,  632,  644,  626,  626,
-      633,  633,  621,  621,  621,  639,  621,  634,  635,  635,
-      621,  621,  635,  635,  637,  621,  637,  637,  621,  621,
-      638,  645,  621,  621,  640,  640,  621,  626,  626,  626,
-       98,  171,  646,  621,  647,  621,  106,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-      626,  621,  621,  621,  621,  621,  638,  626,  171,  626,
-
-      626,  626,  621,  626,  621,  645,  626,  626,  626,  626,
-      626,  626,  648,  649,  649,  215,  650,  649,  651,  176,
-      621,  221,  221,  621,  221,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,  626,  621,
-      621,  621,  621,  621,  638,  626,  626,  626,  626,  626,
-      626,  626,  621,  652,  652,  255,  652,  653,  654,  655,
-      621,  656,  224,  656,  656,  265,  656,  621,  268,  268,
-      621,  268,  621,  621,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,  626,  621,  621,  621,  638,  626,
-      626,  626,  626,  626,  626,  626,  626,  657,  657,  658,
-
-      659,  621,  621,  621,  621,  621,  660,  660,  661,  271,
-      661,  661,  312,  661,  621,  315,  315,  621,  315,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,  626,  621,
-      621,  638,  626,  626,  626,  626,  626,  626,  621,  662,
-      663,  302,  621,  343,  343,  621,  343,  621,  621,  621,
-      621,  621,  621,  664,  664,  665,  318,  665,  665,  359,
-      665,  621,  362,  362,  621,  362,   35,   35,   35,  621,
-      621,   35,   35,   35,   35,  621,  621,  621,  621,  626,
-      621,  621,  638,  626,  626,  626,  626,  626,  626,  626,
-      626,  621,  666,  621,  667,  346,  667,  667,  398,  398,
-
-      621,  401,  401,  621,  401,  621,  621,  621,  621,  668,
-      668,  669,  365,  669,  669,  415,  669,  621,  418,  418,
-      418,   35,   35,   35,   35,   35,   35,   35,  626,  621,
-      621,  638,  626,  626,  626,  626,  626,  626,  626,  621,
-      621,  621,  621,  670,  670,  671,  404,  671,  671,  449,
-      449,  621,  452,  452,  621,  452,  621,  621,  621,  621,
-      621,  621,  672,  672,  673,  673,  673,  467,  467,   35,
-       35,   35,   35,   35,  621,  621,  621,  621,  621,  621,
-      674,  638,  626,  675,  676,  626,  626,  626,  626,  626,
-      626,  621,  621,  621,  621,  621,  621,  677,  677,  678,
-
-      455,  678,  678,  503,  503,  621,  506,  506,  621,  506,
-      621,  621,  621,  621,  679,  679,   35,  621,  621,   35,
-       35,   35,  621,  674,  674,  621,  638,  626,  675,  675,
-      675,  675,  621,  675,  676,  676,  626,  626,  626,  621,
-      621,  621,  621,  680,  680,  681,  509,  681,  681,  549,
-      549,  621,  552,  552,  552,  621,  621,  621,  621,  621,
-      621,  621,   35,   35,  621,  638,  621,  621,  626,  626,
-      626,  626,  626,  621,  621,  621,  621,  621,  621,  682,
-      682,  683,  683,  683,  584,  584,  621,  621,   35,  684,
-      626,  626,  626,  621,  621,  621,  621,  685,  685,  621,
-
-      621,  684,  684,  621,  626,  626,  626,  626,  626,  621,
-      621,  621,  621,  621,  626,  626,  626,  626,  626,  626,
-        0,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,  621,  621,  621
+      813,    1,    1,    1,  814,  814,  815,  815,  816,  816,
+      817,  817,  813,   13,  813,  818,  813,  813,  813,  813,
+      819,  820,  813,  813,  821,  813,  822,  818,   28,   28,
+      823,  813,  813,  813,   34,   34,   34,   37,   37,   37,
+       37,   37,   37,  818,   28,  818,  813,  819,   34,   34,
+       37,   37,   37,  813,  824,  813,  825,   37,   37,  818,
+      826,  813,  826,  813,  826,  813,  819,  813,  827,  828,
+      813,  828,  813,  828,  813,  829,  830,  830,  830,  813,
+      813,  831,  832,  833,  813,   85,   85,   85,  813,   89,
+       89,   89,   92,   92,   92,   92,   85,   88,   88,  818,
+
+      818,  813,  813,  834,  813,  835,  813,  820,  836,  831,
+      820,  821,  821,  822,  837,  818,  818,   28,  838,  118,
+      118,  118,  118,  839,  840,   37,  126,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  818,  813,  818,
+      818,  813,  813,  813,  813,  813,  813,  834,  818,  118,
+      818,  818,  818,  813,  813,  813,  813,  841,  842,  818,
+      818,  843,  843,  813,  813,  813,  835,  813,  844,  845,
+      845,  813,  813,  845,  845,  830,  813,  830,  830,  813,
+      813,  831,  831,  831,  846,  847,   88,  846,  848,  813,
+      813,   85,  192,  192,  192,  192,  813,  197,  198,  849,
+
+      198,  198,  198,  198,  198,   88,   88,  834,  850,  813,
+      813,  818,  212,  212,  118,  215,  851,  813,  852,  813,
+      127,  221,  222,  222,  222,  222,  222,  222,  222,  222,
+      222,  222,  222,  222,  818,  818,  813,  813,  813,  813,
+      813,  834,  818,  215,  818,  818,  818,  813,  818,  813,
+      853,  854,  813,   88,  254,  197,  198,  198,  198,  198,
+      198,  198,  198,  198,  198,   88,   88,  850,  818,  818,
+      212,  212,  212,  818,  855,  856,  856,  277,  857,  856,
+      858,  220,  813,  283,  283,  813,  283,  222,  222,  222,
+      222,  222,  222,  222,  222,  222,  222,  222,  222,  222,
+
+      818,  818,  818,  818,  813,  813,  813,  813,  813,  834,
+      818,  818,  818,  818,  813,  813,  853,  853,  813,  254,
+      197,  198,  859,  198,  198,  198,  198,  198,  198,   88,
+       88,   88,   88,  212,  212,  212,  813,  860,  860,  339,
+      860,  861,  862,  863,  813,  864,  286,  864,  813,  349,
+      864,  813,  352,  352,  813,  352,  813,  813,  222,  222,
+      222,  222,  222,  222,  222,  222,  222,  222,  818,  818,
+      818,  818,  818,  813,  813,  813,  834,  818,  818,  818,
+      865,  866,  813,   88,  321,  859,  859,  198,  198,  198,
+      198,  198,  198,   88,   88,   88,   88,   88,  818,  818,
+
+      212,  212,  818,  867,  867,  868,  869,  813,  813,  870,
+      871,  813,  872,  872,  873,  355,  873,  813,  418,  873,
+      813,  421,  421,  813,  421,  813,  426,  426,  426,  426,
+      426,  426,  426,  426,  818,  818,  818,  818,  818,  813,
+      813,  874,  818,  818,  818,  813,  813,  875,  875,  813,
+      859,  859,  198,  859,  198,  198,  198,  198,   88,   88,
+       88,   88,   88,  818,  464,  464,  813,  876,  877,  408,
+      813,  471,  471,  813,  471,  813,  813,  878,  878,  813,
+      813,  879,  879,  880,  424,  880,  813,  487,  880,  813,
+      490,  490,  813,  490,  813,  495,  495,  813,  813,  495,
+
+      495,  495,  495,  813,  813,  813,  813,  818,  813,  813,
+      881,  818,  818,  818,  882,  883,  813,  884,  884,  884,
+      884,  813,  522,  885,  818,  818,  818,  527,  527,  813,
+      886,  813,  887,  474,  887,  813,  536,  887,  813,  539,
+      539,  813,  539,  888,  889,  813,  813,  890,  890,  891,
+      892,  891,  813,  553,  891,  813,  556,  556,  556,  813,
+      560,  560,  560,  560,  560,  560,  818,  813,  813,  893,
+      818,  818,  818,  813,  813,  894,  894,  813,  895,  895,
+      895,  895,  813,  583,  896,  818,  586,  586,  586,  813,
+      897,  898,  813,  899,  899,  900,  542,  900,  813,  599,
+
+      900,  813,  602,  602,  813,  602,  813,  813,  901,  901,
+      813,  813,  902,  902,  903,  903,  813,  617,  903,  560,
+      560,  560,  560,  560,  813,  813,  813,  813,  813,  813,
+      904,  893,  818,  905,  906,  907,  908,  813,  907,  909,
+      909,  909,  909,  818,  818,  818,  646,  646,  818,  813,
+      813,  910,  910,  813,  813,  911,  911,  912,  605,  912,
+      813,  661,  912,  813,  664,  664,  813,  664,  913,  914,
+      813,  813,  915,  915,  560,  813,  813,  560,  560,  560,
+      813,  904,  904,  813,  893,  818,  905,  905,  905,  905,
+      916,  905,  917,  917,  813,  813,  907,  907,  813,  813,
+
+      909,  909,  909,  646,  646,  646,  918,  919,  813,  813,
+      920,  920,  921,  667,  921,  813,  716,  921,  813,  719,
+      719,  922,  813,  913,  913,  813,  813,  813,  813,  560,
+      560,  813,  893,  813,  813,  923,  924,  813,  909,  909,
+      646,  818,  646,  646,  818,  813,  813,  918,  918,  813,
+      813,  925,  925,  926,  926,  926,  756,  926,  813,  813,
+      560,  927,  813,  813,  923,  923,  813,  909,  646,  646,
+      646,  813,  813,  813,  813,  928,  928,  813,  813,  927,
+      927,  813,  929,  930,  813,  646,  818,  646,  646,  818,
+      813,  813,  813,  813,  813,  813,  813,  929,  929,  813,
+
+      818,  818,  818,  813,  813,  813,  818,  818,  818,  813,
+      813,  813,    0,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813
     } ;
 
-static yyconst short int yy_nxt[3663] =
+static yyconst short int yy_nxt[5675] =
     {   0,
-       14,   15,   16,   17,   18,   19,   20,   21,   22,   14,
-       23,   24,   14,   14,   25,   26,   27,   28,   26,   26,
-       26,   26,   26,   29,   30,   31,   14,   32,   33,   33,
-       33,   34,   35,   35,   35,   35,   36,   35,   37,   35,
-       38,   39,   40,   41,   35,   35,   35,   35,   35,   42,
-       14,   43,   43,   43,   43,   43,   43,   14,   14,   14,
-       14,   14,   14,   14,   44,   14,   14,   45,   81,   52,
-       89,   46,  151,   53,  107,  110,  115,   52,  107,   54,
-      111,   53,   55,   76,   16,   77,   78,   54,   90,  109,
-       55,   76,   16,   77,   78,   47,   48,  150,  128,   49,
-
-      158,  113,  604,  131,   56,  394,   81,   50,   57,   35,
-       51,   35,   56,  547,   91,  114,   57,   35,  133,   35,
-       15,   60,   61,  120,   62,   15,   60,   61,  134,   62,
-       62,   79,   58,   95,   95,   62,   81,   95,   95,   79,
-       58,  191,   62,   63,  147,  119,  156,   62,   63,   15,
-       16,   17,   69,   65,   81,   95,  154,  119,   70,   71,
-       72,  102,  102,  102,  102,  102,  103,   85,   64,  147,
-      119,  140,   73,   64,   15,   16,   17,   86,   65,   96,
-       87,   87,   87,   87,   87,   87,   87,   87,  101,  101,
-      101,  101,  101,  101,  101,  101,  174,   74,   15,   16,
-
-       17,   69,   65,  157,  621,  176,   89,   70,   71,   72,
-       80,  621,  100,  100,  100,  100,  100,  100,  100,  100,
-      121,   73,   66,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       15,   16,   17,  107,   65,   81,   74,  152,  122,  123,
-      166,  156,  124,  159,  160,  166,  155,  198,  394,   85,
-      125,  135,  129,  126,   87,   87,   87,   87,   87,   87,
-       87,   87,  150,   87,   87,   87,   87,   87,   87,   87,
-       87,  172,  172,  172,  172,  172,  172,  547,   66,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-
-       67,   67,   67,   67,   67,   67,   97,   81,   98,   98,
-       98,   98,   98,   98,   98,   98,   99,  621,  197,  201,
-      100,  100,  100,  100,  100,   81,   81,  182,  501,  138,
-      138,   80,  183,  138,  138,  621,  184,   81,  185,  239,
-      200,   81,   81,  202,  100,  100,  100,  100,  100,  100,
-       80,  138,   81,  147,  119,  246,   80,  204,  574,   80,
-       80,   91,   80,   80,   80,  106,  106,  106,  106,  106,
-      106,  106,  106,   99,  199,  139,   80,  106,  106,  106,
-      106,  106,  107,  107,  107,  107,  108,  107,  107,  107,
-      107,  107,  107,  107,  107,  107,  107,  107,  107,   81,
-
-      107,  100,  100,  100,  100,  100,  100,   80,   80,   80,
-       80,   80,   80,   80,   80,   80,   80,  107,  107,  107,
-      107,  107,  107,  107,  107,  621,   85,  147,  119,  107,
-      107,  107,  107,  107,  159,  160,  146,  133,  107,  621,
-      621,  621,  621,  621,  621,  621,  621,  134,  147,  119,
-       81,  207,  248,   80,   80,   80,   80,   80,   80,  118,
-      119,   80,   80,   80,  158,   80,   80,  174,  157,   80,
-      143,  119,  144,   81,  145,   81,  220,  174,  144,   85,
-      145,   80,   80,   80,   85,   81,  220,   81,   99,  246,
-      246,  273,  145,  145,   86,  589,  150,   87,   87,   87,
-
-       87,   87,   87,   87,   87,   80,  174,   80,   80,   80,
-      156,   80,   80,  274,   81,   80,  156,   85,  145,   87,
-       87,   87,   87,   87,   87,   87,   87,   80,   80,   80,
-      245,   95,   95,  174,  276,   95,   95,   81,  163,  277,
-      127,  164,  164,  164,  164,  164,  164,  164,  164,   88,
-      249,   88,   88,   95,  501,   88,   88,   81,   92,   88,
-       92,   92,   92,  285,   92,   92,   81,  290,   92,  257,
-      257,  257,   88,   88,  289,   85,   81,   96,   81,  174,
-       92,   92,   92,   94,  292,   80,   80,   94,  220,   80,
-       80,  246,  447,   94,  168,  169,  170,  168,  168,  168,
-
-      168,  168,  273,  333,  293,   94,   94,   80,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  274,   81,   85,   81,   81,  171,
-      171,  171,  171,  171,  171,  171,  171,  334,   99,  332,
-       81,  171,  171,  171,  171,  171,   87,   87,   87,   87,
-       87,   87,   87,   87,   85,   81,   81,  483,  138,  138,
-      121,  329,  138,  138,   81,  171,  171,  171,  171,  171,
-      171,  177,  177,  177,  177,  177,  177,  177,  177,   99,
-      138,  291,  527,  177,  177,  177,  177,  177,  122,  123,
-      174,  137,  124,   80,   80,  137,  174,   80,   80,  220,
-
-      125,  137,   81,  126,  139,  263,  383,  171,  171,  171,
-      171,  171,  171,  137,  137,   80,  621,  621,  621,  621,
-      621,  621,  621,  621,  149,   81,  372,  149,  149,   81,
-      335,  373,   85,  526,  149,  164,  164,  164,  164,  164,
-      164,  164,  164,  370,  565,  385,   81,  149,  164,  164,
-      164,  164,  164,  164,  164,  164,  165,  564,  165,  165,
-       95,  434,  165,  165,   95,  371,  165,  261,  174,  207,
-       95,  208,  208,  208,  208,  208,  208,  263,  165,  165,
-      165,  563,   95,   95,  207,  432,  208,  208,  208,  208,
-      208,  208,  208,  208,  207,  376,  209,  209,  209,  209,
-
-      209,  209,  209,  209,  207,   81,  210,  210,  210,  210,
-      210,  211,  208,  208,  138,  621,  174,  377,  138,  387,
-       81,  261,  174,   81,  138,  263,   81,  174,  261,  174,
-       81,  263,  621,  174,  447,  380,  138,  138,  310,  429,
-       81,   80,  310,  212,  212,  212,  212,  212,  212,  212,
-      212,  444,  444,  396,   81,  212,  212,  212,  212,  212,
-      250,  251,  252,  250,  250,  250,  250,  250,  207,   81,
-      208,  208,  208,  208,  208,  208,  208,  208,  386,  212,
-      212,  212,  212,  212,  212,  214,  215,  216,  216,  216,
-      216,  216,  216,  217,   81,  498,  498,  218,  218,  218,
-
-      218,  218,   85,  207,   81,  208,  208,  208,  208,  208,
-      208,  208,  208,  225,  225,  225,  225,  225,  225,  225,
-      225,  218,  218,  218,  218,  218,  218,  174,  221,  222,
-      223,  221,  221,  221,  221,  221,  224,  261,  174,   81,
-      225,  225,  225,  225,  225,  255,  255,  256,  257,  257,
-      257,  257,  257,  217,  265,  265,  265,  265,  265,  265,
-      265,  265,   81,  566,  225,  225,  225,  225,  225,  225,
-      226,  226,  226,  226,  226,  226,  226,  226,  435,  621,
-      174,  378,  226,  226,  226,  226,  226,  266,  266,  266,
-      266,  266,  267,  621,   81,  264,  264,  264,  264,  264,
-
-      264,  264,  264,  379,  384,  492,  212,  212,  212,  212,
-      212,  212,  261,  174,  262,  262,  262,  262,  262,  262,
-      262,  262,  263,  174,  515,  515,  264,  264,  264,  264,
-      264,  293,  263,  294,  294,  294,  294,  294,  294,  294,
-      294,  299,  299,  299,  299,  299,  299,  299,  299,  217,
-      264,  264,  264,  264,  264,  264,  174,  268,  269,  270,
-      268,  268,  268,  268,  268,  271,  174,   81,  523,  272,
-      272,  272,  272,  272,  293,  310,  295,  295,  295,  295,
-      295,  295,  295,  295,  304,  305,  306,  304,  304,  304,
-      304,  304,  522,  272,  272,  272,  272,  272,  272,  293,
-
-      521,  296,  296,  296,  296,  296,  297,  294,  294,  370,
-       81,  272,  272,  272,  272,  272,  272,  272,  272,  261,
-      174,  308,  308,  308,  308,  308,  308,  525,  526,  263,
-      520,  371,  544,  544,  517,   81,  261,  174,  308,  308,
-      308,  308,  308,  308,  308,  308,  263,  261,  174,  309,
-      309,  309,  309,  309,  309,  309,  309,  310,  376,  378,
-      475,  311,  311,  311,  311,  311,  312,  312,  312,  312,
-      312,  312,  312,  312,  313,  313,  313,  313,  313,  314,
-      377,  379,  476,  261,  174,  311,  311,  311,  311,  311,
-      311,  174,  315,  316,  317,  315,  315,  315,  315,  315,
-
-      318,   81,  525,  526,  319,  319,  319,  319,  319,  621,
-      433,  311,  311,  311,  311,  311,  311,  311,  311,  336,
-      337,  338,  336,  336,  336,  336,  336,  457,  319,  319,
-      319,  319,  319,  319,  293,  394,  294,  294,  294,  294,
-      294,  294,  294,  294,  293,  396,  294,  294,  294,  294,
-      294,  294,  293,   81,  294,  294,  294,  294,  294,  294,
-      294,  294,  360,  360,  360,  360,  360,  361,  396,  348,
-       81,  349,  349,  349,  349,  349,  349,  349,  349,  342,
-       81,  399,  399,  399,  399,  399,  400,   81,   81,  343,
-      344,  345,  343,  343,  343,  343,  343,  346,  174,  580,
-
-      580,  347,  347,  347,  347,  347,  348,  310,  350,  350,
-      350,  350,  350,  350,  350,  350,  319,  319,  319,  319,
-      319,  319,  319,  319,  480,  347,  347,  347,  347,  347,
-      347,  348,  479,  351,  351,  351,  351,  351,  352,  349,
-      349,  261,  174,  355,  355,  355,  355,  355,  355,  355,
-      355,  310,  261,  174,  355,  355,  355,  355,  355,  355,
-       81,   81,  310,  261,  174,  356,  356,  356,  356,  356,
-      356,  356,  356,  357,  474,  528,  473,  358,  358,  358,
-      358,  358,  359,  359,  359,  359,  359,  359,  359,  359,
-      621,  174,  358,  358,  358,  358,  358,  358,  358,  358,
-
-      357,  358,  358,  358,  358,  358,  358,  174,  362,  363,
-      364,  362,  362,  362,  362,  362,  365,  590,   85,  472,
-      366,  366,  366,  366,  366,  387,  388,  388,  388,  388,
-      388,  388,  388,  388,  387,  389,  389,  389,  389,  389,
-      389,  389,  389,  471,  366,  366,  366,  366,  366,  366,
-      387,  390,  390,  390,  390,  390,  391,  388,  388,  470,
-       81,  347,  347,  347,  347,  347,  347,  347,  347,   81,
-      398,  398,  398,  398,  398,  398,  398,  398,  416,  416,
-      416,  416,  416,  417,  477,   81,  394,  621,  395,  395,
-      395,  395,  395,  395,  395,  395,  396,  396,  598,  598,
-
-      397,  397,  397,  397,  397,  621,  478,  397,  397,  397,
-      397,  397,  397,  397,  397,  406,  407,  408,  406,  406,
-      406,  406,  406,  342,  397,  397,  397,  397,  397,  397,
-      401,  402,  403,  401,  401,  401,  401,  401,  404,  259,
-      481,   85,  405,  405,  405,  405,  405,  348,  394,  349,
-      349,  349,  349,  349,  349,  349,  349,  348,  396,  349,
-      349,  349,  349,  349,  349,  431,  405,  405,  405,  405,
-      405,  405,  348,  430,  349,  349,  349,  349,  349,  349,
-      349,  349,  261,  174,  261,  174,  450,  450,  450,  450,
-      450,  451,  310,  482,  357,  366,  366,  366,  366,  366,
-
-      366,  366,  366,  621,  174,  415,  415,  415,  415,  415,
-      415,  415,  415,  357,  261,  174,  411,  411,  411,  411,
-      411,  411,  411,  411,  357,  261,  174,  411,  411,  411,
-      411,  411,  411,  603,  604,  357,  261,  174,  412,  412,
-      412,  412,  412,  412,  412,  412,  413,  174,  603,  604,
-      414,  414,  414,  414,  414,  621,  357,  414,  414,  414,
-      414,  414,  414,  414,  414,  436,  437,  438,  439,  436,
-      436,  436,  436,  428,  414,  414,  414,  414,  414,  414,
-      174,  418,  419,  420,  418,  418,  418,  418,  418,  174,
-      148,  148,  427,  421,  421,  421,  421,  421,  413,   81,
-
-      387,  388,  388,  388,  388,  388,  388,  388,  388,  387,
-      388,  388,  388,  388,  388,  388,  426,  421,  421,  421,
-      421,  421,  421,  387,  388,  388,  388,  388,  388,  388,
-      388,  388,  518,  484,  425,   81,  441,  442,  443,  441,
-      441,  441,  441,  441,   81,  405,  405,  405,  405,  405,
-      405,  405,  405,  484,  519,  484,  485,  394,   81,  445,
-      445,  445,  445,  445,  445,  445,  445,  396,  394,  486,
-      446,  446,  446,  446,  446,  446,  446,  446,  447,   81,
-      424,  423,  448,  448,  448,  448,  448,  449,  449,  449,
-      449,  449,  449,  449,  449,  621,  422,  448,  448,  448,
-
-      448,  448,  448,  448,  448,   81,  448,  448,  448,  448,
-      448,  448,  452,  453,  454,  452,  452,  452,  452,  452,
-      455,  174,  348,  342,  456,  456,  456,  456,  456,  457,
-      413,  458,  458,  458,  458,  458,  458,  458,  458,  468,
-      468,  468,  468,  468,  469,  261,  174,  259,  456,  456,
-      456,  456,  456,  456,  457,  357,  459,  459,  459,  459,
-      459,  459,  459,  459,  457,  217,  460,  460,  460,  460,
-      460,  461,  458,  458,  261,  174,  421,  421,  421,  421,
-      421,  421,  421,  421,  413,  621,  174,  467,  467,  467,
-      467,  467,  467,  467,  467,  413,  261,  174,  464,  464,
-
-      464,  464,  464,  464,  464,  464,  413,  261,  174,  464,
-      464,  464,  464,  464,  464,  382,  381,  413,  261,  174,
-      465,  465,  465,  465,  465,  465,  465,  465,  394,  375,
-      374,  369,  466,  466,  466,  466,  466,  621,  447,  466,
-      466,  466,  466,  466,  466,  466,  466,  456,  456,  456,
-      456,  456,  456,  456,  456,  368,  466,  466,  466,  466,
-      466,  466,  486,  621,  487,  487,  487,  487,  487,  487,
-      487,  487,  486,  447,  488,  488,  488,  488,  488,  488,
-      488,  488,  486,  394,  489,  489,  489,  489,  489,  490,
-      491,  491,  486,  447,  569,  605,  367,  486,   81,  491,
-
-      491,  491,  487,  487,  487,  487,  487,  492,   81,  493,
-      493,  493,  493,  493,  493,  493,  493,  492,   81,  494,
-      494,  494,  494,  494,  494,  494,  494,  342,   81,  259,
-       81,   81,  492,   81,  495,  495,  495,  495,  495,  496,
-      493,  493,  394,  475,  499,  499,  499,  499,  499,  499,
-      499,  499,  447,  394,  217,  500,  500,  500,  500,  500,
-      500,  500,  500,  501,  477,  476,  518,  502,  502,  502,
-      502,  502,  503,  503,  503,  503,  503,  503,  503,  503,
-      504,  504,  504,  504,  504,  505,  478,  217,  519,  286,
-      331,  502,  502,  502,  502,  502,  502,  506,  507,  508,
-
-      506,  506,  506,  506,  506,  509,  330,  328,  327,  510,
-      510,  510,  510,  510,  621,  326,  502,  502,  502,  502,
-      502,  502,  502,  502,  511,  512,  513,  511,  511,  511,
-      511,  511,  325,  510,  510,  510,  510,  510,  510,  457,
-      324,  458,  458,  458,  458,  458,  458,  458,  458,  457,
-      484,  458,  458,  458,  458,  458,  458,  458,  458,  457,
-      323,  458,  458,  458,  458,  458,  458,  261,  174,  614,
-      484,  322,  484,  484,  614,  321,  320,  413,  261,  174,
-      516,  516,  516,  516,  516,  516,  516,  516,  530,  302,
-      531,  532,  533,  530,  259,  531,  532,  533,  537,  538,
-
-      539,  537,  537,  537,  537,  537,  486,  394,  487,  487,
-      487,  487,  487,  487,  487,  487,  486,  501,  487,  487,
-      487,  487,  487,  487,  487,  487,  217,  621,  394,  561,
-      394,  298,   81,  217,  621,  105,  534,  501,  501,  286,
-      547,  536,   81,  486,  547,  487,  487,  487,  487,  487,
-      487,  562,   81,  540,  541,  542,  540,  540,  540,  540,
-      540,  492,  288,  493,  493,  493,  493,  493,  493,  493,
-      493,  550,  550,  550,  550,  550,  551,  286,  492,   81,
-      493,  493,  493,  493,  493,  493,  493,  493,  492,  287,
-      493,  493,  493,  493,  493,  493,  510,  510,  510,  510,
-
-      510,  510,  510,  510,  394,  561,  545,  545,  545,  545,
-      545,  545,  545,  545,  501,  394,  394,  546,  546,  546,
-      546,  546,  546,  546,  546,  547,  547,  562,  286,  548,
-      548,  548,  548,  548,  549,  549,  549,  549,  549,  549,
-      549,  549,  621,  284,  548,  548,  548,  548,  548,  548,
-      548,  548,  283,  548,  548,  548,  548,  548,  548,  552,
-      553,  554,  552,  552,  552,  552,  552,  282,  281,  280,
-      279,  555,  555,  555,  555,  555,  174,  556,  556,  556,
-      556,  556,  556,  556,  556,  174,  557,  557,  557,  557,
-      557,  557,  557,  557,  587,  555,  555,  555,  555,  555,
-
-      555,  174,  558,  558,  558,  558,  558,  559,  556,  556,
-      621,  278,  621,  621,  621,  530,  588,  531,  532,  533,
-      621,  275,  531,  532,  533,  621,   99,  621,  621,  533,
-      567,  217,  259,  568,  568,  568,  568,  568,  568,  568,
-      568,  217,  587,  529,  529,  600,  621,  529,  621,  621,
-      621,  105,   85,  535,  535,  205,  247,  535,  534,  529,
-      529,  529,  244,  534,  588,  243,  242,  601,  534,  535,
-      535,  535,  569,  534,  570,  570,  570,  570,  570,  570,
-      570,  570,  569,  600,  571,  571,  571,  571,  571,  571,
-      571,  571,  241,  569,  536,  572,  572,  572,  572,  572,
-
-      573,  570,  570,  240,  238,  601,  237,  574,   81,  575,
-      575,  575,  575,  575,  575,  575,  575,  574,   81,  576,
-      576,  576,  576,  576,  576,  576,  576,  236,  574,   81,
-      577,  577,  577,  577,  577,  578,  575,  575,  555,  555,
-      555,  555,  555,  555,  555,  555,  394,  235,  581,  581,
-      581,  581,  581,  581,  581,  581,  547,  394,  234,  582,
-      582,  582,  582,  582,  582,  582,  582,  233,  232,  231,
-      230,  583,  583,  583,  583,  583,  584,  584,  584,  584,
-      584,  584,  584,  584,  585,  585,  585,  585,  585,  586,
-      229,  228,  227,  105,   97,  583,  583,  583,  583,  583,
-
-      583,  621,   85,  583,  583,  583,  583,  583,  583,  583,
-      583,  174,  556,  556,  556,  556,  556,  556,  556,  556,
-      174,  556,  556,  556,  556,  556,  556,  556,  556,  174,
-      556,  556,  556,  556,  556,  556,  568,  568,  568,  568,
-      568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
-      568,  568,  591,  592,  593,  591,  591,  591,  591,  591,
-      569,   85,  570,  570,  570,  570,  570,  570,  570,  570,
-      569,  205,  570,  570,  570,  570,  570,  570,  570,  570,
-      155,  156,  150,  150,  142,  569,   81,  570,  570,  570,
-      570,  570,  570,  203,  136,  136,   81,  594,  595,  596,
-
-      594,  594,  594,  594,  594,  574,   81,  575,  575,  575,
-      575,  575,  575,  575,  575,  196,  195,  194,  193,  192,
-      574,   81,  575,  575,  575,  575,  575,  575,  575,  575,
-      574,  190,  575,  575,  575,  575,  575,  575,  394,  189,
-      599,  599,  599,  599,  599,  599,  599,  599,  605,  188,
-      606,  606,  606,  606,  606,  606,  606,  606,  605,  187,
-      607,  607,  607,  607,  607,  607,  607,  607,  605,  186,
-      608,  608,  608,  608,  608,  609,  606,  606,  610,  610,
-      610,  610,  610,  610,   81,  610,  610,  610,  610,  610,
-      610,  610,  610,  181,   81,  611,  611,  611,  611,  611,
-
-      611,  611,  611,  180,   81,  612,  612,  612,  612,  612,
-      613,  610,  610,  615,  616,  617,  615,  615,  615,  615,
-      615,  605,  179,  606,  606,  606,  606,  606,  606,  606,
-      606,  605,  178,  606,  606,  606,  606,  606,  606,  606,
-      606,  105,   80,  105,  167,   93,  605,   81,  606,  606,
-      606,  606,  606,  606,   85,   83,   82,   81,  610,  610,
-      610,  610,  610,  610,  610,  610,   81,   81,  610,  610,
-      610,  610,  610,  610,  610,  610,  156,  150,  142,  113,
-      111,  136,   81,  618,  618,  618,  618,  618,  618,  618,
-      618,  615,  615,  615,  615,  615,  615,  615,  615,  619,
-
-      619,  619,  619,  619,  620,  618,  618,  618,  618,  618,
-      618,  618,  618,  618,  618,  132,  130,   81,  618,  618,
-      618,  618,  618,  618,  117,   81,  116,  115,  112,  107,
-      105,   93,   83,   81,   82,   81,  621,  621,  621,  621,
-      621,   81,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,   81,   59,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   59,   59,   59,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-
-       68,   75,   75,   75,   75,   75,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   75,   75,   80,  621,  621,
-      621,  621,  621,  621,  621,   80,   80,   80,  621,  621,
-       80,   80,   80,   84,   84,   84,   84,   84,   84,   84,
-       84,   84,   84,   84,   84,   84,   84,   84,   84,   88,
-      621,  621,  621,  621,   88,  621,  621,   88,   88,   88,
-       88,  621,   88,   88,   88,   92,  621,  621,  621,  621,
-      621,  621,  621,   92,   92,   92,  621,  621,   92,   92,
-       92,   94,  621,  621,   94,   94,  621,   94,  621,   94,
-       94,   94,  621,  621,   94,   94,   94,  104,  104,  621,
-
-      621,  621,  104,  137,  621,  621,  137,  137,  621,  137,
-      621,  137,  137,  137,  621,  621,  137,  137,  137,  141,
-      621,  621,  141,  141,  621,  141,  621,  141,  141,  141,
-      621,  141,  621,  141,  141,  149,  621,  621,  149,  621,
-      621,  149,  621,  149,  149,  149,  149,  621,  149,  149,
-      149,  153,  153,  153,  153,  153,  153,  153,  153,  153,
-      153,  153,  153,  153,  153,  153,  153,  155,  155,  621,
-      155,  621,  155,  155,  155,  155,  155,  155,  155,  155,
-      155,  155,  155,  161,  161,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  162,
-
-      162,  621,  162,  162,  162,  162,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  165,  621,  621,  621,  621,
-      165,  621,  621,  165,  165,  165,  621,  621,  165,  165,
-      165,   95,  621,  621,   95,   95,  621,   95,  621,   95,
-       95,   95,  621,  621,   95,   95,   95,  173,  173,  621,
-      621,  621,  173,  175,  175,  175,  621,  621,  621,  175,
-      138,  621,  621,  138,  138,  621,  138,  621,  138,  138,
-      138,  621,  621,  138,  138,  138,  206,  206,  206,  206,
-      206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
-      206,  206,  213,  213,  621,  621,  621,  213,  219,  219,
-
-      219,  621,  621,  621,  219,  253,  253,  621,  621,  621,
-      253,  254,  254,  621,  621,  621,  254,  258,  258,  621,
-      621,  621,  258,  260,  260,  260,  621,  621,  621,  260,
-      298,  298,  621,  621,  621,  298,  300,  300,  621,  621,
-      621,  300,  301,  301,  621,  621,  621,  301,  303,  303,
-      303,  621,  621,  621,  303,  307,  307,  307,  307,  621,
-      621,  621,  307,  339,  339,  621,  621,  621,  339,  340,
-      340,  621,  621,  621,  340,  341,  341,  621,  621,  621,
-      341,  353,  353,  353,  621,  621,  621,  353,  354,  354,
-      354,  354,  621,  621,  621,  354,  392,  392,  621,  621,
-
-      621,  392,  393,  393,  621,  621,  621,  393,  409,  409,
-      409,  621,  621,  621,  409,  410,  410,  410,  410,  621,
-      621,  621,  410,  440,  440,  621,  621,  621,  440,  444,
-      621,  444,  444,  621,  621,  621,  444,  462,  462,  462,
-      621,  621,  621,  462,  463,  463,  463,  463,  621,  621,
-      621,  463,  497,  497,  621,  621,  621,  497,  498,  621,
-      498,  498,  621,  621,  621,  498,  514,  514,  514,  621,
-      621,  621,  514,  515,  515,  515,  621,  621,  621,  621,
-      515,  524,  524,  524,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  524,  524,  524,  529,  529,  621,
-
-      529,  529,  529,  621,  621,  529,  529,  529,  621,  621,
-      529,  529,  529,  535,  535,  621,  535,  535,  535,  621,
-      621,  535,  535,  535,  621,  621,  535,  535,  535,  543,
-      543,  621,  621,  621,  543,  544,  621,  544,  544,  621,
-      621,  621,  544,  560,  560,  621,  621,  621,  621,  560,
-      579,  579,  621,  621,  621,  579,  580,  621,  580,  580,
-      621,  621,  621,  580,  597,  597,  621,  621,  621,  597,
-      598,  621,  598,  621,  621,  621,  621,  598,  602,  602,
-      602,  602,  602,  602,  602,  602,  602,  602,  602,  602,
-      602,  602,  602,  602,   13,  621,  621,  621,  621,  621,
-
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621
+       16,   17,   18,   19,   20,   21,   22,   23,   24,   16,
+       25,   26,   16,   16,   27,   28,   29,   30,   28,   28,
+       28,   28,   28,   28,   28,   31,   32,   33,   16,   34,
+       35,   35,   35,   36,   37,   37,   37,   37,   38,   37,
+       39,   37,   40,   41,   42,   43,   37,   37,   37,   37,
+       37,   44,   16,   45,   45,   45,   45,   45,   45,   16,
+       16,   16,   16,   16,   16,   16,   16,   46,   16,   16,
+       47,  532,   54,  130,   48,  135,   55,  127,  131,  127,
+       54,  127,   56,  534,   55,   57,   78,   18,   79,   80,
+       56,  109,  129,   57,  133,   17,   62,   63,  150,   64,
+
+       49,   50,  149,  152,   51,   64,  168,  139,  134,   58,
+      101,  110,   52,   59,   37,   53,   37,   58,  154,   64,
+       65,   59,   37,  105,   37,   17,   62,   63,  155,   64,
+      796,   78,   18,   79,   80,   64,   81,  111,   60,  175,
+      139,  172,  101,  115,  115,   66,   60,  115,  115,   64,
+       65,  140,  142,  178,   17,   18,   19,   71,   67,  173,
+      141,  168,  139,   72,   73,   74,  171,  115,  122,  122,
+      122,  122,  122,  123,  179,   66,   17,   18,   19,   75,
+       67,   81,  143,  144,  171,  242,  145,  101,  101,  180,
+      181,  116,  176,  236,  146,  198,  140,  147,   17,   18,
+
+       19,   71,   67,  177,   76,  161,  201,   72,   73,   74,
+      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
+      101,  796,  177,   75,  179,  249,   68,   69,   69,   69,
+       69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
+       69,   69,   69,   69,   69,   17,   18,   19,   76,   67,
+      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
+      195,  195,  195,  195,  195,  196,  206,  100,  119,  100,
+      100,  100,  177,  100,  100,  207,  101,  100,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  101,  243,
+      235,  100,  100,  100,  101,   68,   69,   69,   69,   69,
+
+       69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
+       69,   69,   69,   69,   33,   17,   18,   19,   33,   33,
+       82,   23,   24,   33,   83,   26,   33,   33,   84,   85,
+       86,   87,   85,   85,   85,   85,   85,   85,   85,   31,
+       88,   33,   33,   89,   90,   90,   90,   91,   92,   92,
+       92,   92,   93,   92,   94,   92,   95,   92,   96,   92,
+       92,   92,   92,   92,   92,   68,   33,   97,   97,   97,
+       97,   97,   97,   98,   98,   98,   98,   98,   98,   98,
+       98,   99,   98,   98,  105,  218,  101,  796,  109,  168,
+      139,  269,  247,  178,  106,  796,  220,  107,  107,  107,
+
+      107,  107,  107,  107,  107,  107,  107,  117,  183,  118,
+      118,  118,  118,  118,  118,  118,  118,  118,  118,  119,
+      101,  180,  181,  120,  120,  120,  120,  120,  101,  101,
+      357,  159,  159,  246,  184,  159,  159,  216,  216,  216,
+      216,  216,  216,  177,  245,  101,  154,  120,  120,  120,
+      120,  120,  120,  100,  358,  159,  155,  127,  101,  100,
+      313,  563,  100,  100,  101,  100,  100,  100,  126,  126,
+      126,  126,  126,  126,  126,  126,  126,  126,  119,  160,
+      311,  100,  126,  126,  126,  126,  126,  127,  127,  127,
+      127,  128,  127,  127,  127,  127,  127,  127,  127,  127,
+
+      127,  127,  127,  127,  101,  127,  120,  120,  120,  120,
+      120,  120,  100,  100,  100,  100,  100,  100,  100,  100,
+      100,  100,  100,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  813,  218,  796,  105,  127,  127,  127,
+      127,  127,  101,  100,  101,  282,  127,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  101,  304,  311,
+      372,  100,  100,  100,  100,  100,  100,  138,  139,  100,
+      100,  100,  311,  100,  100,  101,  378,  100,  216,  216,
+      216,  216,  216,  216,  216,  216,  216,  216,  244,  310,
+      813,  100,  100,  100,  100,  101,  120,  120,  120,  120,
+
+      120,  120,  120,  120,  120,  120,  105,  164,  139,  165,
+      813,  166,  101,  109,  436,  165,  106,  166,  373,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  226,
+      101,  166,  166,  813,  227,  311,  111,  218,  228,  170,
+      229,  185,  170,  170,  101,  168,  139,  185,  282,  170,
+      185,  115,  115,  185,  185,  115,  115,  166,  813,  184,
+      782,  371,  168,  139,  170,  148,  105,  187,  360,  185,
+      109,  301,  302,  361,  303,  115,  167,  101,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  101,
+      813,  314,  188,  185,  115,  101,  532,  115,  115,  116,
+
+      115,  115,  115,  115,  184,  101,  115,  115,  108,  714,
+      108,  108,  171,  101,  108,  108,  184,  435,  108,  380,
+      187,  115,  115,  216,  216,  216,  216,  216,  216,  216,
+      216,  216,  216,  108,  108,  107,  107,  107,  107,  107,
+      107,  107,  107,  107,  107,  190,  115,  187,  105,  101,
+      191,  187,  192,  192,  192,  192,  192,  192,  192,  192,
+      192,  192,  119,  187,  357,  357,  193,  193,  193,  193,
+      193,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+      187,  187,  187,  187,  187,  187,  187,  187,  358,  358,
+      193,  193,  193,  193,  193,  193,  187,  187,  187,  187,
+
+      187,  187,  187,  187,  187,  187,  187,  813,  377,  187,
+      187,  187,  187,  187,  187,  187,  187,  187,  187,  813,
+      341,  341,  341,  187,  187,  187,  187,  187,  330,  331,
+      112,  332,  112,  112,  112,  394,  112,  112,  395,  437,
+      112,  255,  255,  255,  255,  255,  255,  187,  187,  187,
+      187,  187,  187,  187,  112,  112,  112,  187,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  119,  187,
+      498,  101,  197,  197,  197,  197,  197,  198,  198,  198,
+      198,  199,  198,  198,  198,  198,  198,  198,  198,  198,
+      198,  198,  198,  198,  499,  200,  193,  193,  193,  193,
+
+      193,  193,  187,  187,  187,  187,  187,  187,  187,  187,
+      187,  187,  187,  198,  198,  198,  198,  198,  198,  198,
+      198,  198,  198,  813,  105,  101,  443,  198,  198,  198,
+      198,  198,  260,  218,  159,  159,  198,  261,  159,  159,
+      386,  262,  513,  263,  282,  387,  369,  142,  101,  370,
+      504,  187,  187,  187,  187,  187,  187,  813,  159,  193,
+      193,  193,  193,  193,  193,  193,  193,  193,  193,  114,
+      763,  100,  100,  114,  505,  100,  100,  143,  144,  114,
+      101,  145,  160,  272,  272,  272,  272,  272,  273,  146,
+      438,  442,  147,  114,  114,  100,  212,  213,  214,  212,
+
+      212,  212,  212,  212,  212,  212,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  345,  218,  763,  158,
+      101,  100,  100,  158,  101,  100,  100,  763,  347,  158,
+      399,  444,  101,  215,  215,  215,  215,  215,  215,  215,
+      215,  215,  215,  158,  158,  100,  506,  215,  215,  215,
+      215,  215,  251,  252,  253,  251,  251,  251,  251,  251,
+      251,  251,  100,  100,  100,  100,  496,  127,  101,  813,
+      507,  215,  215,  215,  215,  215,  215,  221,  221,  221,
+      221,  221,  221,  221,  221,  221,  221,  119,  119,  498,
+      532,  221,  221,  221,  221,  221,  255,  255,  255,  255,
+
+      255,  255,  255,  255,  255,  255,  350,  350,  350,  350,
+      350,  351,  714,  499,  101,  215,  215,  215,  215,  215,
+      215,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  813,  379,  622,  127,  127,  127,  127,  127,  127,
+      182,  218,  182,  182,  101,  185,  182,  182,  101,  439,
+      182,  185,  282,  445,  185,  813,  218,  185,  185,  100,
+      100,  100,  100,  100,  100,  182,  182,  347,  218,  127,
+      127,  187,  497,  185,  185,  562,  185,  185,  185,  347,
+      185,  185,  498,  659,  185,  255,  255,  255,  255,  255,
+      255,  255,  255,  255,  255,  525,  188,  185,  185,  185,
+
+      185,  115,  345,  218,  115,  115,  499,  115,  115,  115,
+      115,  115,  127,  115,  115,  115,  565,  502,  345,  218,
+      127,  115,  345,  218,  127,  504,  500,  187,  115,  115,
+      347,  501,  101,  127,  416,  115,  115,  211,  211,  211,
+      211,  211,  211,  211,  211,  211,  211,  503,  101,  505,
+      127,  198,  190,  115,  254,  254,  254,  254,  254,  254,
+      254,  254,  254,  254,  746,  567,  584,  127,  254,  254,
+      254,  254,  254,  211,  211,  211,  211,  211,  211,  211,
+      211,  211,  211,  315,  105,  316,  316,  316,  316,  316,
+      316,  101,  254,  254,  254,  254,  254,  254,  187,  746,
+
+      101,  508,  187,  256,  256,  256,  256,  256,  256,  256,
+      256,  256,  256,  119,  187,  105,  572,  256,  256,  256,
+      256,  256,  198,  198,  198,  198,  198,  198,  198,  198,
+      198,  198,  198,  198,  198,  198,  198,  198,  198,  570,
+      200,  254,  254,  254,  254,  254,  254,  187,  187,  187,
+      187,  187,  187,  187,  187,  187,  187,  187,  198,  198,
+      198,  198,  198,  198,  198,  198,  198,  198,  813,  511,
+      504,  506,  198,  198,  198,  198,  198,  271,  271,  271,
+      271,  271,  271,  271,  271,  271,  271,  419,  419,  419,
+      419,  419,  420,  506,  505,  507,  187,  187,  187,  187,
+
+      187,  187,  269,  746,  270,  270,  270,  270,  270,  270,
+      270,  270,  270,  270,  159,  520,  763,  507,  159,  101,
+      521,  621,  763,  127,  159,  287,  287,  287,  287,  287,
+      287,  287,  287,  287,  287,  127,  573,  218,  159,  159,
+      101,  100,  101,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  512,  624,  627,  127,  274,  274,  274,
+      274,  274,  349,  349,  349,  349,  349,  349,  349,  349,
+      349,  349,  488,  488,  488,  488,  488,  489,  101,  628,
+      633,  274,  274,  274,  274,  274,  274,  276,  277,  278,
+      278,  278,  278,  278,  278,  278,  278,  279,  649,  649,
+
+      649,  280,  280,  280,  280,  280,  381,  382,  383,  381,
+      381,  381,  381,  381,  381,  381,  446,  218,  447,  447,
+      447,  447,  447,  447,  218,  280,  280,  280,  280,  280,
+      280,  218,  283,  284,  285,  283,  283,  283,  283,  283,
+      283,  283,  286,  625,  813,  218,  287,  287,  287,  287,
+      287,  410,  411,  412,  410,  410,  410,  410,  410,  410,
+      410,  528,  528,  528,  528,  528,  529,  626,  679,  127,
+      287,  287,  287,  287,  287,  287,  288,  288,  288,  288,
+      288,  288,  288,  288,  288,  288,  119,  627,  625,  127,
+      288,  288,  288,  288,  288,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  537,  537,  537,  537,  537,
+      538,  628,  626,  218,  274,  274,  274,  274,  274,  274,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      813,  683,  684,  127,  127,  127,  127,  127,  127,  345,
+      218,  414,  414,  414,  414,  414,  414,  678,  659,  127,
+      399,  347,  400,  400,  400,  400,  400,  400,  100,  100,
+      100,  100,  100,  100,  315,  627,  318,  318,  318,  318,
+      318,  319,  316,  316,  316,  316,  320,  320,  320,  320,
+      320,  320,  320,  320,  320,  320,  119,  597,  101,  628,
+      320,  320,  320,  320,  320,  418,  418,  418,  418,  418,
+
+      418,  418,  418,  418,  418,  476,  746,  477,  477,  477,
+      477,  477,  477,  746,  320,  320,  320,  320,  320,  320,
+      321,  321,  321,  321,  321,  321,  321,  321,  321,  321,
+      100,  100,  100,  100,  321,  321,  321,  321,  321,  425,
+      425,  425,  425,  425,  425,  425,  425,  425,  425,  554,
+      554,  554,  554,  554,  555,  345,  218,  695,  320,  320,
+      320,  320,  320,  320,  334,  335,  336,  334,  334,  334,
+      334,  334,  334,  334,  813,  218,  345,  218,  483,  483,
+      483,  483,  483,  483,  731,  127,  416,  813,  416,  487,
+      487,  487,  487,  487,  487,  487,  487,  487,  487,  534,
+
+      101,  339,  339,  340,  341,  341,  341,  341,  341,  341,
+      341,  279,  345,  218,  346,  346,  346,  346,  346,  346,
+      346,  346,  346,  346,  347,  101,  683,  684,  348,  348,
+      348,  348,  348,  631,  105,  514,  515,  516,  517,  515,
+      515,  515,  515,  515,  515,  515,  600,  600,  600,  600,
+      600,  601,  348,  348,  348,  348,  348,  348,  218,  352,
+      353,  354,  352,  352,  352,  352,  352,  352,  352,  355,
+      730,  695,  127,  356,  356,  356,  356,  356,  527,  527,
+      527,  527,  527,  527,  527,  527,  527,  527,  632,  623,
+      695,  680,  675,  218,  127,  127,  127,  356,  356,  356,
+
+      356,  356,  356,  813,  347,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  384,  384,  384,  384,  384,
+      384,  384,  384,  384,  384,  695,  676,  676,  813,  384,
+      384,  384,  384,  384,  475,  475,  475,  475,  475,  475,
+      475,  475,  475,  475,  618,  618,  618,  618,  618,  619,
+      677,  677,  813,  384,  384,  384,  384,  384,  384,  385,
+      385,  385,  385,  385,  385,  385,  385,  385,  385,  703,
+      634,  694,  127,  385,  385,  385,  385,  385,  536,  536,
+      536,  536,  536,  536,  536,  536,  536,  536,  100,  100,
+      100,  100,  634,  218,  634,  634,  734,  384,  384,  384,
+
+      384,  384,  384,  399,  416,  400,  400,  400,  400,  400,
+      400,  400,  400,  400,  400,  399,  532,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  401,  399,  534,  402,
+      402,  402,  402,  402,  403,  400,  400,  400,  400,  405,
+      405,  405,  405,  405,  405,  405,  405,  405,  405,  279,
+      345,  218,  414,  414,  414,  414,  414,  414,  414,  414,
+      414,  414,  347,  634,  105,  101,  413,  413,  413,  413,
+      413,  544,  545,  546,  544,  544,  544,  544,  544,  544,
+      544,  686,  761,  107,  127,  634,  107,  634,  635,  644,
+      413,  413,  413,  413,  413,  413,  345,  218,  415,  415,
+
+      415,  415,  415,  415,  415,  415,  415,  415,  416,  345,
+      218,  101,  417,  417,  417,  417,  417,  345,  218,  813,
+      218,  416,  127,  127,  127,  762,  105,  101,  733,  485,
+      676,  485,  561,  564,  101,  566,  417,  417,  417,  417,
+      417,  417,  218,  421,  422,  423,  421,  421,  421,  421,
+      421,  421,  421,  424,  677,  684,  813,  425,  425,  425,
+      425,  425,  494,  494,  494,  494,  494,  494,  494,  494,
+      494,  494,  662,  662,  662,  662,  662,  663,  101,  105,
+      813,  425,  425,  425,  425,  425,  425,  813,  571,  417,
+      417,  417,  417,  417,  417,  417,  417,  417,  417,  446,
+
+      701,  449,  449,  449,  449,  449,  450,  447,  447,  447,
+      447,  384,  384,  384,  384,  384,  384,  384,  384,  384,
+      384,  781,  782,  781,  782,  384,  384,  384,  384,  384,
+      345,  218,  549,  549,  549,  549,  549,  549,  685,  575,
+      575,  607,  485,  608,  608,  608,  608,  608,  608,  384,
+      384,  384,  384,  384,  384,  464,  465,  466,  464,  464,
+      464,  464,  464,  464,  464,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  591,  592,  593,  591,  591,
+      591,  591,  591,  591,  591,  695,  732,  700,  700,  700,
+      644,  101,  399,  532,  400,  400,  400,  400,  400,  400,
+
+      400,  400,  400,  400,  399,  597,  400,  400,  400,  400,
+      400,  400,  400,  400,  400,  400,  471,  472,  473,  471,
+      471,  471,  471,  471,  471,  471,  474,  728,  101,  728,
+      475,  475,  475,  475,  475,  543,  543,  543,  543,  543,
+      543,  543,  543,  543,  543,  127,  211,  741,  786,  211,
+      218,  729,  218,  729,  475,  475,  475,  475,  475,  475,
+      476,  416,  479,  479,  479,  479,  479,  480,  477,  477,
+      477,  477,  345,  218,  483,  483,  483,  483,  483,  483,
+      483,  483,  483,  483,  416,  101,  101,  218,  482,  482,
+      482,  482,  482,  532,  813,  595,  595,  595,  595,  595,
+
+      595,  169,  169,  169,  218,  534,  597,  688,  759,  689,
+      690,  691,  482,  482,  482,  482,  482,  482,  345,  218,
+      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
+      485,  316,  760,  316,  486,  486,  486,  486,  486,  599,
+      599,  599,  599,  599,  599,  599,  599,  599,  599,  574,
+      575,  575,  575,  575,  575,  575,  597,  692,  486,  486,
+      486,  486,  486,  486,  218,  490,  491,  492,  490,  490,
+      490,  490,  490,  490,  490,  493,  218,  345,  218,  494,
+      494,  494,  494,  494,  345,  218,  218,  485,  218,  485,
+      813,  218,  169,  169,  169,  534,  551,  485,  532,  551,
+
+      759,  813,  551,  494,  494,  494,  494,  494,  494,  813,
+      597,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  100,  650,  778,  760,  813,  317,  100,  317,  735,
+      100,  100,  735,  100,  100,  100,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  702,  779,  650,  100,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  495,  127,  127,  127,  127,  127,
+      127,  127,  101,  127,  100,  100,  100,  100,  100,  100,
+      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
+      100,  525,  526,  526,  526,  526,  526,  526,  526,  526,
+
+      526,  526,  345,  218,  614,  614,  614,  614,  614,  614,
+      447,  650,  447,  532,  551,  617,  617,  617,  617,  617,
+      617,  617,  617,  617,  617,  659,  576,  576,  101,  532,
+      813,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  534,  659,  695,  813,  535,  535,  535,  535,  535,
+      636,  637,  638,  639,  636,  636,  636,  636,  636,  636,
+      345,  218,  674,  674,  674,  674,  674,  674,  813,  535,
+      535,  535,  535,  535,  535,  539,  540,  541,  539,  539,
+      539,  539,  539,  539,  539,  542,  778,  695,  739,  543,
+      543,  543,  543,  543,  646,  646,  646,  646,  646,  646,
+
+      646,  646,  646,  646,  448,  477,  448,  477,  345,  218,
+      779,  575,  575,  543,  543,  543,  543,  543,  543,  813,
+      551,  535,  535,  535,  535,  535,  535,  535,  535,  535,
+      535,  345,  218,  549,  549,  549,  549,  549,  549,  549,
+      549,  549,  549,  485,  728,  681,  813,  548,  548,  548,
+      548,  548,  647,  647,  647,  647,  647,  648,  649,  649,
+      649,  649,  688,  607,  689,  690,  691,  478,  729,  478,
+      813,  548,  548,  548,  548,  548,  548,  345,  218,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  551,
+      127,  740,  813,  552,  552,  552,  552,  552,  606,  606,
+
+      606,  606,  606,  606,  606,  606,  606,  606,  447,  477,
+      447,  477,  694,  608,  607,  608,  813,  552,  552,  552,
+      552,  552,  552,  218,  556,  557,  558,  556,  556,  556,
+      556,  556,  556,  556,  607,  609,  768,  609,  559,  559,
+      559,  559,  559,  532,  534,  657,  657,  657,  657,  657,
+      657,  651,  650,  651,  650,  597,  651,  651,  651,  651,
+      651,  651,  559,  559,  559,  559,  559,  559,  813,  532,
+      552,  552,  552,  552,  552,  552,  552,  552,  552,  552,
+      100,  659,  652,  608,  652,  608,  100,  687,  687,  100,
+      100,  687,  100,  100,  100,  127,  127,  127,  127,  127,
+
+      127,  127,  127,  127,  127,  687,  687,  687,  100,  127,
+      127,  127,  127,  127,  127,  127,  560,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  101,  127,  100,  100,  100,  100,  100,  100,  100,
+      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
+      574,  577,  577,  577,  577,  577,  578,  575,  575,  575,
+      575,  187,  723,  723,  532,  187,  198,  198,  198,  198,
+      198,  198,  198,  198,  198,  198,  714,  187,  724,  724,
+      198,  198,  198,  583,  198,  198,  198,  198,  198,  198,
+      198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
+
+      198,  198,  650,  200,  187,  187,  187,  187,  187,  187,
+      187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+      187,  586,  587,  588,  589,  586,  586,  586,  586,  586,
+      586,  661,  661,  661,  661,  661,  661,  661,  661,  661,
+      661,  669,  670,  671,  669,  669,  669,  669,  669,  669,
+      669,  717,  717,  717,  717,  717,  718,  101,  525,  526,
+      526,  526,  526,  526,  526,  526,  526,  526,  526,  707,
+      708,  709,  707,  707,  707,  707,  707,  707,  707,  668,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  757,
+      757,  757,  757,  757,  758,  101,  532,  813,  595,  595,
+
+      595,  595,  595,  595,  595,  595,  595,  595,  534,  714,
+      470,  643,  594,  594,  594,  594,  594,  532,  532,  712,
+      712,  712,  712,  712,  712,  696,  697,  696,  697,  659,
+      714,  813,  218,  813,  813,  813,  594,  594,  594,  594,
+      594,  594,  532,  551,  596,  596,  596,  596,  596,  596,
+      596,  596,  596,  596,  597,  759,  642,  641,  598,  598,
+      598,  598,  598,  716,  716,  716,  716,  716,  716,  716,
+      716,  716,  716,  688,  640,  689,  690,  691,  651,  760,
+      651,  692,  598,  598,  598,  598,  598,  598,  602,  603,
+      604,  602,  602,  602,  602,  602,  602,  602,  605,  574,
+
+      574,  127,  606,  606,  606,  606,  606,  736,  737,  738,
+      736,  736,  736,  736,  736,  736,  736,  791,  791,  791,
+      791,  791,  791,  692,  574,  101,  606,  606,  606,  606,
+      606,  606,  813,  630,  598,  598,  598,  598,  598,  598,
+      598,  598,  598,  598,  607,  629,  610,  610,  610,  610,
+      610,  611,  608,  608,  608,  608,  345,  218,  614,  614,
+      614,  614,  614,  614,  614,  614,  614,  614,  551,  101,
+      218,  778,  613,  613,  613,  613,  613,  813,  607,  689,
+      690,  691,  813,  607,  813,  813,  691,  695,  470,  696,
+      696,  696,  696,  696,  696,  779,  613,  613,  613,  613,
+
+      613,  613,  345,  218,  615,  615,  615,  615,  615,  615,
+      615,  615,  615,  615,  747,  343,  747,  127,  616,  616,
+      616,  616,  616,  748,  764,  748,  764,  692,  765,  797,
+      765,  797,  692,  218,  723,  723,  723,  723,  723,  723,
+      585,  582,  616,  616,  616,  616,  616,  616,  813,  581,
+      616,  616,  616,  616,  616,  616,  616,  616,  616,  616,
+      100,  693,  580,  693,  693,  693,  100,  693,  693,  100,
+      100,  693,  100,  100,  100,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  693,  693,  693,  100,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+
+      127,  127,  127,  127,  127,  127,  127,  620,  127,  127,
+      127,  101,  127,  100,  100,  100,  100,  100,  100,  100,
+      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
+      625,  746,  579,  747,  747,  747,  747,  747,  747,  187,
+      798,  574,  798,  187,  198,  198,  198,  198,  198,  198,
+      198,  198,  198,  198,  626,  187,  574,  569,  198,  198,
+      198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
+      198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
+      568,  200,  187,  187,  187,  187,  187,  187,  187,  187,
+      187,  187,  187,  187,  187,  187,  187,  187,  187,  644,
+
+      476,  645,  645,  645,  645,  645,  645,  645,  645,  645,
+      645,  722,  722,  722,  722,  722,  722,  722,  722,  722,
+      722,  532,  476,  753,  753,  753,  753,  753,  753,  755,
+      476,  470,  755,  714,  343,  279,  755,  101,  650,  524,
+      653,  653,  653,  653,  653,  654,  651,  651,  651,  651,
+      532,  523,  657,  657,  657,  657,  657,  657,  657,  657,
+      657,  657,  597,  522,  519,  518,  656,  656,  656,  656,
+      656,  756,  756,  756,  756,  756,  756,  756,  756,  756,
+      756,  532,  446,  777,  777,  777,  777,  777,  777,  446,
+      656,  656,  656,  656,  656,  656,  532,  446,  658,  658,
+
+      658,  658,  658,  658,  658,  658,  658,  658,  659,  510,
+      509,  101,  660,  660,  660,  660,  660,  735,  735,  735,
+      735,  735,  735,  735,  735,  735,  735,  763,  101,  764,
+      764,  764,  764,  764,  764,  101,  660,  660,  660,  660,
+      660,  660,  664,  665,  666,  664,  664,  664,  664,  664,
+      664,  664,  667,  101,  476,  476,  668,  668,  668,  668,
+      668,  735,  735,  735,  735,  735,  735,  735,  735,  735,
+      735,  470,  741,  343,  742,  742,  742,  742,  742,  742,
+      668,  668,  668,  668,  668,  668,  813,  279,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  345,  218,
+
+      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
+      101,  279,  463,  462,  673,  673,  673,  673,  673,  772,
+      773,  774,  772,  772,  772,  772,  772,  772,  772,  796,
+      461,  797,  797,  797,  797,  797,  797,  460,  673,  673,
+      673,  673,  673,  673,  695,  459,  698,  698,  698,  698,
+      698,  699,  700,  700,  700,  700,  704,  705,  706,  704,
+      704,  704,  704,  704,  704,  704,  783,  784,  785,  783,
+      783,  783,  783,  783,  783,  783,  791,  791,  791,  791,
+      791,  791,  791,  791,  791,  791,  810,  810,  810,  810,
+      810,  810,  101,  644,  458,  645,  645,  645,  645,  645,
+
+      645,  645,  645,  645,  645,  792,  792,  792,  792,  792,
+      792,  792,  792,  792,  792,  793,  793,  793,  793,  793,
+      794,  791,  791,  791,  791,  457,  795,  456,  455,  795,
+      454,  101,  532,  795,  712,  712,  712,  712,  712,  712,
+      712,  712,  712,  712,  659,  453,  452,  451,  711,  711,
+      711,  711,  711,  786,  813,  787,  787,  787,  787,  787,
+      787,  791,  791,  791,  791,  791,  791,  791,  791,  791,
+      791,  446,  711,  711,  711,  711,  711,  711,  532,  446,
+      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
+      714,  101,  374,  441,  715,  715,  715,  715,  715,  791,
+
+      791,  791,  791,  791,  791,  791,  791,  791,  791,  440,
+      434,  433,  432,  431,  430,  429,  428,  427,  715,  715,
+      715,  715,  715,  715,  719,  720,  721,  719,  719,  719,
+      719,  719,  719,  719,  426,  408,  343,  279,  722,  722,
+      722,  722,  722,  804,  805,  806,  804,  804,  804,  804,
+      804,  804,  804,  404,  279,  125,  807,  807,  807,  807,
+      807,  807,  722,  722,  722,  722,  722,  722,  813,  398,
+      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
+      218,  725,  725,  725,  725,  725,  726,  723,  723,  723,
+      723,  741,  101,  742,  742,  742,  742,  742,  742,  742,
+
+      742,  742,  742,  741,  397,  743,  743,  743,  743,  743,
+      743,  743,  743,  743,  743,  741,  396,  744,  744,  744,
+      744,  744,  745,  742,  742,  742,  742,  746,  393,  749,
+      749,  749,  749,  749,  750,  747,  747,  747,  747,  532,
+      392,  753,  753,  753,  753,  753,  753,  753,  753,  753,
+      753,  714,  391,  390,  389,  752,  752,  752,  752,  752,
+      810,  810,  810,  810,  810,  810,  810,  810,  810,  810,
+      388,  315,  315,  315,  374,  376,  374,  375,  374,  752,
+      752,  752,  752,  752,  752,  532,  368,  754,  754,  754,
+      754,  754,  754,  754,  754,  754,  754,  367,  366,  365,
+
+      364,  755,  755,  755,  755,  755,  804,  804,  804,  804,
+      804,  804,  804,  804,  804,  804,  363,  362,  359,  119,
+      279,  343,  279,  125,  105,  755,  755,  755,  755,  755,
+      755,  763,  333,  766,  766,  766,  766,  766,  767,  764,
+      764,  764,  764,  100,  329,  769,  770,  771,  769,  769,
+      769,  769,  769,  769,  769,  741,  328,  742,  742,  742,
+      742,  742,  742,  742,  742,  742,  742,  741,  327,  742,
+      742,  742,  742,  742,  742,  742,  742,  742,  742,  532,
+      326,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  786,  325,  787,  787,  787,  787,  787,  787,  787,
+
+      787,  787,  787,  786,  324,  788,  788,  788,  788,  788,
+      788,  788,  788,  788,  788,  786,  323,  789,  789,  789,
+      789,  789,  790,  787,  787,  787,  787,  796,  322,  799,
+      799,  799,  799,  799,  800,  797,  797,  797,  797,  100,
+      191,  801,  802,  803,  801,  801,  801,  801,  801,  801,
+      801,  786,  315,  787,  787,  787,  787,  787,  787,  787,
+      787,  787,  787,  786,  315,  787,  787,  787,  787,  787,
+      787,  787,  787,  787,  787,  807,  807,  807,  807,  807,
+      807,  807,  807,  807,  807,  811,  811,  811,  811,  811,
+      812,  810,  810,  810,  810,  810,  810,  810,  810,  810,
+
+      810,  810,  810,  810,  810,  250,  312,  309,  308,  307,
+      306,  101,  801,  801,  801,  801,  801,  801,  801,  801,
+      801,  801,  305,  300,  299,  298,  297,  296,  295,  294,
+      293,  292,  291,  290,  289,  125,  117,  105,  105,  267,
+      266,  265,  264,  259,  258,  257,  813,  188,  101,  808,
+      808,  808,  808,  808,  809,  807,  807,  807,  807,  250,
+      176,  177,  171,  171,  163,  248,  157,  157,  241,  240,
+      239,  238,  237,  234,  233,  232,  231,  230,  225,  224,
+      223,  222,  125,  100,  125,  101,  807,  807,  807,  807,
+      807,  807,  807,  807,  807,  807,  190,  113,  210,  105,
+
+      103,  102,  101,  205,  204,  203,  202,  198,  177,  171,
+      163,  133,  131,  157,  156,  153,  151,  137,  136,  135,
+      132,  127,  101,   61,   61,   61,   61,   61,   61,   61,
+       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
+       61,   61,   61,   61,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   70,   70,   70,   70,   70,
+       70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
+       70,   70,   70,   70,   70,   70,   77,   77,   77,   77,
+       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
+
+       77,   77,   77,   77,   77,   77,   77,  100,  125,  113,
+      103,  102,  101,  813,  100,  813,  100,  100,  100,  100,
+      813,  813,  100,  100,  100,  100,  100,  100,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  108,
+      813,  813,  813,  813,  108,  813,  108,  813,  108,  108,
+      108,  108,  108,  813,  108,  108,  108,  108,  108,  108,
+      112,  813,  813,  813,  813,  813,  813,  112,  813,  112,
+      112,  112,  112,  813,  813,  112,  112,  112,  112,  112,
+      112,  114,  813,  813,  114,  114,  813,  114,  114,  813,
+
+      114,  114,  114,  114,  813,  813,  114,  114,  114,  114,
+      114,  114,  124,  124,  813,  124,  813,  813,  813,  124,
+      158,  813,  813,  158,  158,  813,  158,  158,  813,  158,
+      158,  158,  158,  813,  813,  158,  158,  158,  158,  158,
+      158,  162,  813,  813,  162,  162,  813,  162,  162,  813,
+      162,  162,  162,  162,  813,  162,  162,  162,  813,  162,
+      162,  162,  170,  813,  813,  170,  813,  813,  170,  170,
+      813,  170,  170,  170,  170,  170,  813,  170,  170,  170,
+      170,  170,  170,  174,  174,  174,  174,  174,  174,  174,
+      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+
+      174,  174,  174,  174,  176,  176,  813,  176,  813,  176,
+      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
+      176,  176,  176,  176,  176,  182,  813,  813,  813,  813,
+      182,  813,  182,  813,  182,  182,  182,  182,  182,  813,
+      182,  182,  182,  182,  182,  182,  186,  813,  813,  813,
+      813,  813,  813,  186,  813,  186,  186,  186,  186,  813,
+      186,  186,  186,  186,  186,  186,  186,  189,  813,  813,
+      189,  189,  813,  189,  189,  813,  189,  189,  189,  189,
+      813,  189,  189,  189,  189,  189,  189,  189,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  209,
+      209,  813,  209,  209,  209,  209,  209,  209,  209,  209,
+      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
+      115,  813,  813,  115,  115,  813,  115,  115,  813,  115,
+      115,  115,  115,  813,  813,  115,  115,  115,  115,  115,
+      115,  124,  124,  813,  124,  813,  813,  813,  124,  217,
+      217,  813,  217,  813,  813,  813,  217,  219,  219,  219,
+      813,  219,  813,  813,  813,  219,  158,  813,  813,  158,
+      158,  813,  158,  158,  813,  158,  158,  158,  158,  813,
+      813,  158,  158,  158,  158,  158,  158,  159,  813,  813,
+
+      159,  159,  813,  159,  159,  813,  159,  159,  159,  159,
+      813,  813,  159,  159,  159,  159,  159,  159,  162,  813,
+      813,  162,  162,  813,  162,  162,  813,  162,  162,  162,
+      162,  813,  162,  162,  162,  813,  162,  162,  162,  170,
+      813,  813,  170,  813,  813,  170,  170,  813,  170,  170,
+      170,  170,  170,  813,  170,  170,  170,  170,  170,  170,
+      185,  813,  813,  813,  813,  813,  813,  185,  813,  185,
+      185,  185,  185,  813,  813,  185,  185,  185,  185,  185,
+      185,  186,  813,  813,  813,  813,  813,  813,  186,  813,
+      186,  186,  186,  186,  813,  186,  186,  186,  186,  186,
+
+      186,  186,  189,  813,  813,  189,  189,  813,  189,  189,
+      813,  189,  189,  189,  189,  813,  189,  189,  189,  189,
+      189,  189,  189,  200,  813,  813,  200,  200,  813,  200,
+      268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
+      268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
+      268,  275,  275,  813,  275,  813,  813,  813,  275,  281,
+      281,  281,  813,  281,  813,  813,  813,  281,  337,  337,
+      813,  337,  813,  813,  813,  337,  338,  338,  813,  338,
+      813,  813,  813,  338,  342,  342,  813,  342,  813,  813,
+      813,  342,  344,  344,  344,  813,  344,  813,  813,  813,
+
+      344,  200,  813,  813,  200,  200,  813,  200,  404,  404,
+      813,  404,  813,  813,  813,  404,  406,  406,  813,  406,
+      813,  813,  813,  406,  407,  407,  813,  407,  813,  813,
+      813,  407,  409,  409,  409,  813,  409,  813,  813,  813,
+      409,  413,  413,  413,  413,  813,  413,  813,  813,  813,
+      413,  467,  467,  813,  467,  813,  813,  813,  467,  468,
+      468,  813,  468,  813,  813,  813,  468,  469,  469,  813,
+      469,  813,  813,  813,  469,  481,  481,  481,  813,  481,
+      813,  813,  813,  481,  482,  482,  482,  482,  813,  482,
+      813,  813,  813,  482,  208,  208,  208,  208,  208,  208,
+
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  530,  530,  813,  530,  813,
+      813,  813,  530,  531,  531,  813,  531,  813,  813,  813,
+      531,  547,  547,  547,  813,  547,  813,  813,  813,  547,
+      548,  548,  548,  548,  813,  548,  813,  813,  813,  548,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  200,  813,  813,  200,  200,  813,  200,  187,  813,
+      813,  813,  187,  187,  813,  187,  187,  187,  813,  813,
+      187,  187,  590,  590,  813,  590,  813,  813,  813,  590,
+
+      594,  813,  594,  594,  813,  594,  813,  813,  813,  594,
+      612,  612,  612,  813,  612,  813,  813,  813,  612,  613,
+      613,  613,  613,  813,  613,  813,  813,  813,  613,  559,
+      559,  813,  813,  559,  813,  813,  813,  559,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  200,
+      813,  813,  200,  200,  813,  200,  187,  813,  813,  813,
+      187,  187,  813,  187,  187,  187,  813,  813,  187,  187,
+      655,  655,  813,  655,  813,  813,  813,  655,  656,  813,
+      656,  656,  813,  656,  813,  813,  813,  656,  672,  672,
+
+      672,  813,  672,  813,  813,  813,  672,  673,  673,  673,
+      813,  813,  673,  813,  813,  813,  673,  682,  682,  682,
+      682,  682,  682,  682,  682,  682,  682,  682,  682,  682,
+      682,  682,  682,  682,  682,  682,  682,  682,  687,  687,
+      813,  687,  687,  687,  813,  687,  813,  687,  687,  687,
+      687,  813,  813,  687,  687,  687,  687,  687,  687,  693,
+      693,  813,  693,  693,  693,  813,  693,  813,  693,  693,
+      693,  693,  813,  813,  693,  693,  693,  693,  693,  693,
+      200,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  200,  200,  813,  200,  200,  813,  200,  710,  710,
+
+      813,  710,  813,  813,  813,  710,  711,  813,  711,  711,
+      813,  711,  813,  813,  813,  711,  727,  727,  813,  813,
+      727,  813,  813,  813,  727,  693,  813,  813,  813,  813,
+      813,  813,  693,  813,  693,  693,  693,  693,  813,  813,
+      693,  693,  693,  693,  693,  693,  751,  751,  813,  751,
+      813,  813,  813,  751,  752,  813,  752,  752,  813,  752,
+      813,  813,  813,  752,  775,  775,  813,  775,  813,  813,
+      813,  775,  776,  813,  776,  813,  813,  776,  813,  813,
+      813,  776,  780,  780,  780,  780,  780,  780,  780,  780,
+      780,  780,  780,  780,  780,  780,  780,  780,  780,  780,
+
+      780,  780,  780,   15,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813
     } ;
 
-static yyconst short int yy_chk[3663] =
+static yyconst short int yy_chk[5675] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -980,403 +1293,624 @@ static yyconst short int yy_chk[3663] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    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,  618,    3,
-       20,    2,   70,    3,   47,   36,   50,    4,   34,    3,
-       36,    4,    3,   11,   11,   11,   11,    4,   20,   34,
-        4,   12,   12,   12,   12,    2,    2,   70,   47,    2,
-
-       77,   38,  602,   50,    3,  599,   44,    2,    3,    3,
-        2,    3,    4,  597,   20,   38,    4,    4,   52,    4,
-        5,    5,    5,   44,    5,    6,    6,    6,   52,    6,
-        5,   11,    3,   25,   25,    6,  120,   25,   25,   12,
-        4,  120,    5,    5,   66,   66,   77,    6,    6,    9,
-        9,    9,    9,    9,   58,   25,   74,   74,    9,    9,
-        9,   28,   28,   28,   28,   28,   28,   19,    5,  143,
-      143,   58,    9,    6,    7,    7,    7,   19,    7,   25,
-       19,   19,   19,   19,   19,   19,   19,   19,   27,   27,
-       27,   27,   27,   27,   27,   27,  105,    9,   10,   10,
-
-       10,   10,   10,   76,  583,  105,   90,   10,   10,   10,
-       43,  165,   43,   43,   43,   43,   43,   43,   43,   43,
-       45,   10,    7,    7,    7,    7,    7,    7,    7,    7,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        2,  533,    3,   38,    2,   52,    3,   49,   38,   50,
+        4,   36,    3,  533,    4,    3,   11,   11,   11,   11,
+        4,   22,   36,    4,   40,    5,    5,    5,   50,    5,
+
+        2,    2,   49,   52,    2,    5,   68,   68,   40,    3,
+      807,   22,    2,    3,    3,    2,    3,    4,   54,    5,
+        5,    4,    4,  148,    4,    6,    6,    6,   54,    6,
+      799,   12,   12,   12,   12,    6,   11,   22,    3,   76,
+       76,   72,   46,   27,   27,    5,    4,   27,   27,    6,
+        6,   46,   47,   78,    9,    9,    9,    9,    9,   74,
+       46,  164,  164,    9,    9,    9,   72,   27,   30,   30,
+       30,   30,   30,   30,   79,    6,    7,    7,    7,    9,
+        7,   12,   47,   47,   74,  148,   47,   60,  141,   81,
+       81,   27,   81,  141,   47,   91,   60,   47,   10,   10,
+
+       10,   10,   10,   78,    9,   60,   91,   10,   10,   10,
+       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
+      161,  798,   79,   10,  179,  161,    7,    7,    7,    7,
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        8,    8,    8,   48,    8,  128,   10,   72,   45,   45,
-       90,   76,   45,   79,   79,  165,   79,  128,  582,  127,
-       45,   53,   48,   45,   53,   53,   53,   53,   53,   53,
-       53,   53,   72,   86,   86,   86,   86,   86,   86,   86,
-       86,  103,  103,  103,  103,  103,  103,  580,    8,    8,
-        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
+        7,    7,    7,    7,    7,    8,    8,    8,   10,    8,
+       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
+       87,   87,   87,   87,   87,   87,   99,  101,  274,  101,
+      101,  101,  179,  101,  101,   99,  149,  101,  106,  106,
+      106,  106,  106,  106,  106,  106,  106,  106,  140,  149,
+      140,  101,  101,  101,  274,    8,    8,    8,    8,    8,
 
-        8,    8,    8,    8,    8,    8,   26,  131,   26,   26,
-       26,   26,   26,   26,   26,   26,   26,   88,  127,  131,
-       26,   26,   26,   26,   26,  130,  191,  112,  579,   55,
-       55,  129,  112,   55,   55,   88,  112,  132,  112,  191,
-      130,  202,   26,  132,   26,   26,   26,   26,   26,   26,
-       32,   55,  140,  147,  147,  202,   32,  140,  575,   32,
-       32,   88,   32,   32,   32,   32,   32,   32,   32,   32,
-       32,   32,   32,   32,  129,   55,   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,
-       32,   32,   32,   32,   32,   32,   32,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   65,  118,  118,   35,
-       35,   35,   35,   35,  159,  159,   65,  133,   35,   65,
-       65,   65,   65,   65,   65,   65,   65,  133,  154,  154,
-      201,  208,  201,   35,   35,   35,   35,   35,   35,   42,
-       42,   42,   42,   42,  158,   42,   42,  175,  157,   42,
-       64,   64,   64,  200,   64,  118,  175,  219,   64,  197,
-       64,   42,   42,   42,   46,  198,  219,  208,  212,  200,
-      198,  227,   64,   64,   46,  564,  154,   46,   46,   46,
-
-       46,   46,   46,   46,   46,   81,  560,   81,   81,   81,
-      158,   81,   81,  227,  212,   81,  157,  245,   64,   87,
-       87,   87,   87,   87,   87,   87,   87,   81,   81,   81,
-      197,   94,   94,  556,  229,   94,   94,  204,   89,  229,
-       46,   89,   89,   89,   89,   89,   89,   89,   89,   91,
-      204,   91,   91,   94,  544,   91,   91,  239,   93,   91,
-       93,   93,   93,  239,   93,   93,  246,  246,   93,  216,
-      216,  216,   91,   91,  245,  289,  248,   94,  249,  260,
-       93,   93,   93,   96,  249,   96,   96,   96,  260,   96,
-       96,  248,  543,   96,   97,   97,   97,   97,   97,   97,
-
-       97,   97,  273,  290,  294,   96,   96,   96,  101,  101,
-      101,  101,  101,  101,  101,  101,  102,  102,  102,  102,
-      102,  102,  102,  102,  273,  290,  482,  291,   97,   98,
-       98,   98,   98,   98,   98,   98,   98,  291,  247,  289,
-      294,   98,   98,   98,   98,   98,  135,  135,  135,  135,
-      135,  135,  135,  135,  332,  433,  285,  433,  137,  137,
-      121,  285,  137,  137,  247,   98,   98,   98,   98,   98,
-       98,  106,  106,  106,  106,  106,  106,  106,  106,  106,
-      137,  247,  482,  106,  106,  106,  106,  106,  121,  121,
-      303,  139,  121,  139,  139,  139,  307,  139,  139,  303,
-
-      121,  139,  528,  121,  137,  307,  332,  106,  106,  106,
-      106,  106,  106,  139,  139,  139,  146,  146,  146,  146,
-      146,  146,  146,  146,  150,  292,  324,  150,  150,  334,
-      292,  324,  383,  524,  150,  163,  163,  163,  163,  163,
-      163,  163,  163,  323,  523,  334,  385,  150,  164,  164,
-      164,  164,  164,  164,  164,  164,  166,  522,  166,  166,
-      167,  385,  166,  166,  167,  323,  166,  262,  262,  211,
-      167,  211,  211,  211,  211,  211,  211,  262,  166,  166,
-      166,  521,  167,  167,  168,  383,  168,  168,  168,  168,
-      168,  168,  168,  168,  169,  327,  169,  169,  169,  169,
-
-      169,  169,  169,  169,  170,  211,  170,  170,  170,  170,
-      170,  170,  170,  170,  203,  264,  264,  327,  203,  388,
-      168,  308,  308,  380,  203,  264,  329,  515,  309,  309,
-      169,  308,  311,  311,  498,  329,  203,  203,  309,  380,
-      170,  171,  311,  171,  171,  171,  171,  171,  171,  171,
-      171,  400,  400,  497,  388,  171,  171,  171,  171,  171,
-      207,  207,  207,  207,  207,  207,  207,  207,  209,  335,
-      209,  209,  209,  209,  209,  209,  209,  209,  335,  171,
-      171,  171,  171,  171,  171,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  207,  451,  451,  174,  174,  174,
-
-      174,  174,  527,  210,  209,  210,  210,  210,  210,  210,
-      210,  210,  210,  220,  220,  220,  220,  220,  220,  220,
-      220,  174,  174,  174,  174,  174,  174,  176,  176,  176,
-      176,  176,  176,  176,  176,  176,  176,  465,  465,  210,
-      176,  176,  176,  176,  176,  215,  215,  215,  215,  215,
-      215,  215,  215,  215,  222,  222,  222,  222,  222,  222,
-      222,  222,  386,  527,  176,  176,  176,  176,  176,  176,
-      177,  177,  177,  177,  177,  177,  177,  177,  386,  466,
-      466,  328,  177,  177,  177,  177,  177,  223,  223,  223,
-      223,  223,  223,  225,  333,  225,  225,  225,  225,  225,
-
-      225,  225,  225,  328,  333,  493,  177,  177,  177,  177,
-      177,  177,  221,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  353,  469,  469,  221,  221,  221,  221,
-      221,  250,  353,  250,  250,  250,  250,  250,  250,  250,
-      250,  255,  255,  255,  255,  255,  255,  255,  255,  255,
-      221,  221,  221,  221,  221,  221,  224,  224,  224,  224,
-      224,  224,  224,  224,  224,  224,  354,  250,  479,  224,
-      224,  224,  224,  224,  251,  354,  251,  251,  251,  251,
-      251,  251,  251,  251,  261,  261,  261,  261,  261,  261,
-      261,  261,  474,  224,  224,  224,  224,  224,  224,  252,
-
-      473,  252,  252,  252,  252,  252,  252,  252,  252,  370,
-      251,  263,  263,  263,  263,  263,  263,  263,  263,  267,
-      267,  267,  267,  267,  267,  267,  267,  481,  481,  267,
-      472,  370,  505,  505,  470,  252,  265,  265,  265,  265,
-      265,  265,  265,  265,  265,  265,  265,  268,  268,  268,
-      268,  268,  268,  268,  268,  268,  268,  268,  376,  378,
-      427,  268,  268,  268,  268,  268,  269,  269,  269,  269,
-      269,  269,  269,  269,  270,  270,  270,  270,  270,  270,
-      376,  378,  427,  516,  516,  268,  268,  268,  268,  268,
-      268,  271,  271,  271,  271,  271,  271,  271,  271,  271,
-
-      271,  384,  525,  525,  271,  271,  271,  271,  271,  272,
-      384,  272,  272,  272,  272,  272,  272,  272,  272,  293,
-      293,  293,  293,  293,  293,  293,  293,  458,  271,  271,
-      271,  271,  271,  271,  295,  395,  295,  295,  295,  295,
-      295,  295,  295,  295,  297,  395,  297,  297,  297,  297,
-      297,  297,  296,  293,  296,  296,  296,  296,  296,  296,
-      296,  296,  317,  317,  317,  317,  317,  317,  444,  304,
-      295,  304,  304,  304,  304,  304,  304,  304,  304,  440,
-      297,  345,  345,  345,  345,  345,  345,  435,  296,  302,
-      302,  302,  302,  302,  302,  302,  302,  302,  409,  551,
-
-      551,  302,  302,  302,  302,  302,  305,  409,  305,  305,
-      305,  305,  305,  305,  305,  305,  310,  310,  310,  310,
-      310,  310,  310,  310,  431,  302,  302,  302,  302,  302,
-      302,  306,  430,  306,  306,  306,  306,  306,  306,  306,
-      306,  312,  312,  312,  312,  312,  312,  312,  312,  312,
-      312,  312,  314,  314,  314,  314,  314,  314,  314,  314,
-      483,  429,  314,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  315,  315,  426,  483,  425,  315,  315,  315,
-      315,  315,  316,  316,  316,  316,  316,  316,  316,  316,
-      319,  410,  319,  319,  319,  319,  319,  319,  319,  319,
-
-      410,  315,  315,  315,  315,  315,  315,  318,  318,  318,
-      318,  318,  318,  318,  318,  318,  318,  566,  566,  424,
-      318,  318,  318,  318,  318,  336,  336,  336,  336,  336,
-      336,  336,  336,  336,  337,  337,  337,  337,  337,  337,
-      337,  337,  337,  423,  318,  318,  318,  318,  318,  318,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  422,
-      336,  342,  342,  342,  342,  342,  342,  342,  342,  337,
-      344,  344,  344,  344,  344,  344,  344,  344,  364,  364,
-      364,  364,  364,  364,  428,  338,  343,  397,  343,  343,
-      343,  343,  343,  343,  343,  343,  343,  397,  586,  586,
-
-      343,  343,  343,  343,  343,  347,  428,  347,  347,  347,
-      347,  347,  347,  347,  347,  348,  348,  348,  348,  348,
-      348,  348,  348,  393,  343,  343,  343,  343,  343,  343,
-      346,  346,  346,  346,  346,  346,  346,  346,  346,  392,
-      432,  432,  346,  346,  346,  346,  346,  350,  445,  350,
-      350,  350,  350,  350,  350,  350,  350,  352,  445,  352,
-      352,  352,  352,  352,  352,  382,  346,  346,  346,  346,
-      346,  346,  351,  381,  351,  351,  351,  351,  351,  351,
-      351,  351,  355,  355,  356,  356,  403,  403,  403,  403,
-      403,  403,  355,  432,  356,  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,  361,  361,  361,  361,  361,
-      361,  361,  361,  590,  590,  361,  362,  362,  362,  362,
-      362,  362,  362,  362,  362,  362,  362,  462,  603,  603,
-      362,  362,  362,  362,  362,  366,  462,  366,  366,  366,
-      366,  366,  366,  366,  366,  387,  387,  387,  387,  387,
-      387,  387,  387,  375,  362,  362,  362,  362,  362,  362,
-      365,  365,  365,  365,  365,  365,  365,  365,  365,  463,
-      634,  634,  374,  365,  365,  365,  365,  365,  463,  387,
-
-      389,  389,  389,  389,  389,  389,  389,  389,  389,  391,
-      391,  391,  391,  391,  391,  391,  373,  365,  365,  365,
-      365,  365,  365,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  471,  434,  372,  389,  394,  394,  394,  394,
-      394,  394,  394,  394,  391,  396,  396,  396,  396,  396,
-      396,  396,  396,  434,  471,  434,  434,  398,  390,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  401,  487,
-      401,  401,  401,  401,  401,  401,  401,  401,  401,  434,
-      369,  368,  401,  401,  401,  401,  401,  402,  402,  402,
-      402,  402,  402,  402,  402,  405,  367,  405,  405,  405,
-
-      405,  405,  405,  405,  405,  487,  401,  401,  401,  401,
-      401,  401,  404,  404,  404,  404,  404,  404,  404,  404,
-      404,  514,  349,  341,  404,  404,  404,  404,  404,  406,
-      514,  406,  406,  406,  406,  406,  406,  406,  406,  420,
-      420,  420,  420,  420,  420,  411,  411,  340,  404,  404,
-      404,  404,  404,  404,  407,  411,  407,  407,  407,  407,
-      407,  407,  407,  407,  408,  339,  408,  408,  408,  408,
-      408,  408,  408,  408,  412,  412,  413,  413,  413,  413,
-      413,  413,  413,  413,  412,  414,  414,  419,  419,  419,
-      419,  419,  419,  419,  419,  414,  415,  415,  415,  415,
-
-      415,  415,  415,  415,  415,  415,  415,  417,  417,  417,
-      417,  417,  417,  417,  417,  331,  330,  417,  418,  418,
-      418,  418,  418,  418,  418,  418,  418,  418,  446,  326,
-      325,  322,  418,  418,  418,  418,  418,  421,  446,  421,
-      421,  421,  421,  421,  421,  421,  421,  447,  447,  447,
-      447,  447,  447,  447,  447,  321,  418,  418,  418,  418,
-      418,  418,  436,  448,  436,  436,  436,  436,  436,  436,
-      436,  436,  437,  448,  437,  437,  437,  437,  437,  437,
-      437,  437,  438,  499,  438,  438,  438,  438,  438,  438,
-      438,  438,  491,  499,  570,  606,  320,  439,  436,  439,
-
-      439,  439,  439,  439,  439,  439,  439,  441,  437,  441,
-      441,  441,  441,  441,  441,  441,  441,  442,  438,  442,
-      442,  442,  442,  442,  442,  442,  442,  301,  491,  300,
-      570,  606,  443,  439,  443,  443,  443,  443,  443,  443,
-      443,  443,  449,  475,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  452,  299,  452,  452,  452,  452,  452,
-      452,  452,  452,  452,  477,  475,  518,  452,  452,  452,
-      452,  452,  453,  453,  453,  453,  453,  453,  453,  453,
-      454,  454,  454,  454,  454,  454,  477,  298,  518,  288,
-      287,  452,  452,  452,  452,  452,  452,  455,  455,  455,
-
-      455,  455,  455,  455,  455,  455,  286,  284,  282,  455,
-      455,  455,  455,  455,  456,  281,  456,  456,  456,  456,
-      456,  456,  456,  456,  457,  457,  457,  457,  457,  457,
-      457,  457,  280,  455,  455,  455,  455,  455,  455,  459,
-      279,  459,  459,  459,  459,  459,  459,  459,  459,  460,
-      480,  460,  460,  460,  460,  460,  460,  460,  460,  461,
-      278,  461,  461,  461,  461,  461,  461,  464,  464,  685,
-      480,  277,  480,  480,  685,  276,  275,  464,  467,  467,
-      467,  467,  467,  467,  467,  467,  467,  467,  484,  259,
-      484,  484,  484,  485,  258,  485,  485,  485,  486,  486,
-
-      486,  486,  486,  486,  486,  486,  488,  500,  488,  488,
-      488,  488,  488,  488,  488,  488,  489,  500,  489,  489,
-      489,  489,  489,  489,  489,  489,  257,  502,  545,  520,
-      546,  256,  486,  254,  548,  253,  484,  502,  545,  244,
-      546,  485,  488,  490,  548,  490,  490,  490,  490,  490,
-      490,  520,  489,  492,  492,  492,  492,  492,  492,  492,
-      492,  494,  243,  494,  494,  494,  494,  494,  494,  494,
-      494,  508,  508,  508,  508,  508,  508,  242,  495,  490,
-      495,  495,  495,  495,  495,  495,  495,  495,  496,  241,
-      496,  496,  496,  496,  496,  496,  501,  501,  501,  501,
-
-      501,  501,  501,  501,  503,  561,  503,  503,  503,  503,
-      503,  503,  503,  503,  503,  506,  581,  506,  506,  506,
-      506,  506,  506,  506,  506,  506,  581,  561,  240,  506,
-      506,  506,  506,  506,  507,  507,  507,  507,  507,  507,
-      507,  507,  510,  237,  510,  510,  510,  510,  510,  510,
-      510,  510,  235,  506,  506,  506,  506,  506,  506,  509,
-      509,  509,  509,  509,  509,  509,  509,  234,  233,  232,
-      231,  509,  509,  509,  509,  509,  511,  511,  511,  511,
-      511,  511,  511,  511,  511,  512,  512,  512,  512,  512,
-      512,  512,  512,  512,  563,  509,  509,  509,  509,  509,
-
-      509,  513,  513,  513,  513,  513,  513,  513,  513,  513,
-      529,  230,  529,  529,  529,  530,  563,  530,  530,  530,
-      531,  228,  531,  531,  531,  532,  226,  532,  532,  532,
-      533,  218,  217,  533,  533,  533,  533,  533,  533,  533,
-      533,  214,  587,  534,  534,  589,  535,  534,  535,  535,
-      535,  213,  206,  536,  536,  205,  199,  536,  529,  534,
-      534,  534,  196,  530,  587,  195,  194,  589,  531,  536,
-      536,  536,  537,  532,  537,  537,  537,  537,  537,  537,
-      537,  537,  538,  600,  538,  538,  538,  538,  538,  538,
-      538,  538,  193,  539,  535,  539,  539,  539,  539,  539,
-
-      539,  539,  539,  192,  190,  600,  189,  540,  537,  540,
-      540,  540,  540,  540,  540,  540,  540,  541,  538,  541,
-      541,  541,  541,  541,  541,  541,  541,  188,  542,  539,
-      542,  542,  542,  542,  542,  542,  542,  542,  547,  547,
-      547,  547,  547,  547,  547,  547,  549,  187,  549,  549,
-      549,  549,  549,  549,  549,  549,  549,  552,  186,  552,
-      552,  552,  552,  552,  552,  552,  552,  185,  184,  183,
-      182,  552,  552,  552,  552,  552,  553,  553,  553,  553,
-      553,  553,  553,  553,  554,  554,  554,  554,  554,  554,
-      181,  180,  179,  173,  172,  552,  552,  552,  552,  552,
-
-      552,  555,  162,  555,  555,  555,  555,  555,  555,  555,
-      555,  557,  557,  557,  557,  557,  557,  557,  557,  557,
-      558,  558,  558,  558,  558,  558,  558,  558,  558,  559,
-      559,  559,  559,  559,  559,  559,  567,  567,  567,  567,
-      567,  567,  567,  567,  568,  568,  568,  568,  568,  568,
-      568,  568,  569,  569,  569,  569,  569,  569,  569,  569,
-      571,  161,  571,  571,  571,  571,  571,  571,  571,  571,
-      572,  160,  572,  572,  572,  572,  572,  572,  572,  572,
-      156,  155,  153,  149,  142,  573,  569,  573,  573,  573,
-      573,  573,  573,  138,  136,  134,  571,  574,  574,  574,
-
-      574,  574,  574,  574,  574,  576,  572,  576,  576,  576,
-      576,  576,  576,  576,  576,  126,  125,  124,  123,  122,
-      577,  573,  577,  577,  577,  577,  577,  577,  577,  577,
-      578,  117,  578,  578,  578,  578,  578,  578,  584,  116,
-      584,  584,  584,  584,  584,  584,  584,  584,  591,  115,
-      591,  591,  591,  591,  591,  591,  591,  591,  592,  114,
-      592,  592,  592,  592,  592,  592,  592,  592,  593,  113,
-      593,  593,  593,  593,  593,  593,  593,  593,  613,  613,
-      613,  613,  613,  613,  591,  594,  594,  594,  594,  594,
-      594,  594,  594,  111,  592,  595,  595,  595,  595,  595,
-
-      595,  595,  595,  110,  593,  596,  596,  596,  596,  596,
-      596,  596,  596,  605,  605,  605,  605,  605,  605,  605,
-      605,  607,  109,  607,  607,  607,  607,  607,  607,  607,
-      607,  608,  108,  608,  608,  608,  608,  608,  608,  608,
-      608,  104,  100,   99,   95,   92,  609,  605,  609,  609,
-      609,  609,  609,  609,   84,   83,   82,  607,  611,  611,
-      611,  611,  611,  611,  611,  611,   80,  608,  612,  612,
-      612,  612,  612,  612,  612,  612,   75,   68,   61,   57,
-       56,   54,  609,  615,  615,  615,  615,  615,  615,  615,
-      615,  616,  616,  616,  616,  616,  616,  616,  616,  617,
-
-      617,  617,  617,  617,  617,  617,  617,  619,  619,  619,
-      619,  619,  619,  619,  619,   51,   49,  615,  620,  620,
-      620,  620,  620,  620,   41,  616,   40,   39,   37,   33,
-       29,   23,   17,  617,   15,   14,   13,    0,    0,    0,
-        0,  619,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  620,  622,  622,  622,  622,  622,  622,  622,
-      622,  622,  622,  622,  622,  622,  622,  622,  622,  623,
-      623,  623,  623,  623,  623,  623,  623,  623,  623,  623,
-      623,  623,  623,  623,  623,  624,  624,  624,  624,  624,
-      624,  624,  624,  624,  624,  624,  624,  624,  624,  624,
-
-      624,  625,  625,  625,  625,  625,  625,  625,  625,  625,
-      625,  625,  625,  625,  625,  625,  625,  626,    0,    0,
-        0,    0,    0,    0,    0,  626,  626,  626,    0,    0,
-      626,  626,  626,  627,  627,  627,  627,  627,  627,  627,
-      627,  627,  627,  627,  627,  627,  627,  627,  627,  628,
-        0,    0,    0,    0,  628,    0,    0,  628,  628,  628,
-      628,    0,  628,  628,  628,  629,    0,    0,    0,    0,
-        0,    0,    0,  629,  629,  629,    0,    0,  629,  629,
-      629,  630,    0,    0,  630,  630,    0,  630,    0,  630,
-      630,  630,    0,    0,  630,  630,  630,  631,  631,    0,
-
-        0,    0,  631,  632,    0,    0,  632,  632,    0,  632,
-        0,  632,  632,  632,    0,    0,  632,  632,  632,  633,
-        0,    0,  633,  633,    0,  633,    0,  633,  633,  633,
-        0,  633,    0,  633,  633,  635,    0,    0,  635,    0,
-        0,  635,    0,  635,  635,  635,  635,    0,  635,  635,
-      635,  636,  636,  636,  636,  636,  636,  636,  636,  636,
-      636,  636,  636,  636,  636,  636,  636,  637,  637,    0,
-      637,    0,  637,  637,  637,  637,  637,  637,  637,  637,
-      637,  637,  637,  638,  638,  638,  638,  638,  638,  638,
-      638,  638,  638,  638,  638,  638,  638,  638,  638,  639,
-
-      639,    0,  639,  639,  639,  639,  639,  639,  639,  639,
-      639,  639,  639,  639,  639,  640,    0,    0,    0,    0,
-      640,    0,    0,  640,  640,  640,    0,    0,  640,  640,
-      640,  641,    0,    0,  641,  641,    0,  641,    0,  641,
-      641,  641,    0,    0,  641,  641,  641,  642,  642,    0,
-        0,    0,  642,  643,  643,  643,    0,    0,    0,  643,
-      644,    0,    0,  644,  644,    0,  644,    0,  644,  644,
-      644,    0,    0,  644,  644,  644,  645,  645,  645,  645,
-      645,  645,  645,  645,  645,  645,  645,  645,  645,  645,
-      645,  645,  646,  646,    0,    0,    0,  646,  647,  647,
-
-      647,    0,    0,    0,  647,  648,  648,    0,    0,    0,
-      648,  649,  649,    0,    0,    0,  649,  650,  650,    0,
-        0,    0,  650,  651,  651,  651,    0,    0,    0,  651,
-      652,  652,    0,    0,    0,  652,  653,  653,    0,    0,
-        0,  653,  654,  654,    0,    0,    0,  654,  655,  655,
-      655,    0,    0,    0,  655,  656,  656,  656,  656,    0,
-        0,    0,  656,  657,  657,    0,    0,    0,  657,  658,
-      658,    0,    0,    0,  658,  659,  659,    0,    0,    0,
-      659,  660,  660,  660,    0,    0,    0,  660,  661,  661,
-      661,  661,    0,    0,    0,  661,  662,  662,    0,    0,
-
-        0,  662,  663,  663,    0,    0,    0,  663,  664,  664,
-      664,    0,    0,    0,  664,  665,  665,  665,  665,    0,
-        0,    0,  665,  666,  666,    0,    0,    0,  666,  667,
-        0,  667,  667,    0,    0,    0,  667,  668,  668,  668,
-        0,    0,    0,  668,  669,  669,  669,  669,    0,    0,
-        0,  669,  670,  670,    0,    0,    0,  670,  671,    0,
-      671,  671,    0,    0,    0,  671,  672,  672,  672,    0,
-        0,    0,  672,  673,  673,  673,    0,    0,    0,    0,
-      673,  674,  674,  674,  674,  674,  674,  674,  674,  674,
-      674,  674,  674,  674,  674,  674,  674,  675,  675,    0,
-
-      675,  675,  675,    0,    0,  675,  675,  675,    0,    0,
-      675,  675,  675,  676,  676,    0,  676,  676,  676,    0,
-        0,  676,  676,  676,    0,    0,  676,  676,  676,  677,
-      677,    0,    0,    0,  677,  678,    0,  678,  678,    0,
-        0,    0,  678,  679,  679,    0,    0,    0,    0,  679,
-      680,  680,    0,    0,    0,  680,  681,    0,  681,  681,
-        0,    0,    0,  681,  682,  682,    0,    0,    0,  682,
-      683,    0,  683,    0,    0,    0,    0,  683,  684,  684,
-      684,  684,  684,  684,  684,  684,  684,  684,  684,  684,
-      684,  684,  684,  684,  621,  621,  621,  621,  621,  621,
-
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
-      621,  621
+        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
+        8,    8,    8,    8,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   21,  125,  153,  797,   82,  168,
+      168,  270,  153,  178,   21,  784,  125,   21,   21,   21,
+
+       21,   21,   21,   21,   21,   21,   21,   28,   82,   28,
+       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+      152,  180,  180,   28,   28,   28,   28,   28,  151,  270,
+      289,   57,   57,  152,   82,   57,   57,  123,  123,  123,
+      123,  123,  123,  178,  151,   28,  154,   28,   28,   28,
+       28,   28,   28,   34,  289,   57,  154,  500,  246,   34,
+      246,  500,   34,   34,  313,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   57,
+      313,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   37,   37,   37,   37,   37,   37,   37,
+       37,   37,   37,   37,  219,  783,  242,   37,   37,   37,
+       37,   37,  245,  150,  236,  219,   37,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  247,  236,  245,
+      303,   37,   37,   37,   37,   37,   37,   44,   44,   44,
+       44,   44,  247,   44,   44,  311,  311,   44,  121,  121,
+      121,  121,  121,  121,  121,  121,  121,  121,  150,  242,
+      108,   44,   44,   44,   45,  303,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   48,   66,   66,   66,
+      108,   66,  304,  110,  370,   66,   48,   66,  304,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,  132,
+      243,   66,   66,  110,  132,  243,  108,  281,  132,  171,
+      132,   83,  171,  171,  370,  138,  138,   83,  281,  171,
+       83,  114,  114,   83,   83,  114,  114,   66,  182,  110,
+      780,  302,  175,  175,  171,   48,   67,   83,  291,   83,
+      183,  235,  235,  291,  235,  114,   67,  249,  182,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,  302,
+      183,  249,   83,   83,   84,  138,  777,   84,   84,  114,
+
+       84,   84,   84,   84,  182,  235,   84,   84,  111,  775,
+      111,  111,  175,  314,  111,  111,  183,  369,  111,  314,
+       84,   84,   84,  122,  122,  122,  122,  122,  122,  122,
+      122,  122,  122,  111,  111,  156,  156,  156,  156,  156,
+      156,  156,  156,  156,  156,   84,   84,   85,  310,  369,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,  322,  357,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,  322,  357,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+
+       85,   85,   85,   85,   85,   85,   85,   88,  310,   88,
+       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
+      278,  278,  278,   88,   88,   88,   88,   88,  266,  266,
+      113,  266,  113,  113,  113,  330,  113,  113,  330,  371,
+      113,  196,  196,  196,  196,  196,  196,   88,   88,   88,
+       88,   88,   88,   89,  113,  113,  113,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+      453,  371,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,  453,   89,   89,   89,   89,   89,
+
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   92,   92,   92,   92,   92,   92,   92,
+       92,   92,   92,   92,  377,  444,  378,   92,   92,   92,
+       92,   92,  203,  344,  158,  158,   92,  203,  158,  158,
+      323,  203,  444,  203,  344,  323,  301,  142,  378,  301,
+      457,   92,   92,   92,   92,   92,   92,   97,  158,   97,
+       97,   97,   97,   97,   97,   97,   97,   97,   97,  116,
+      766,  116,  116,  116,  457,  116,  116,  142,  142,  116,
+      301,  142,  158,  214,  214,  214,  214,  214,  214,  142,
+      372,  377,  142,  116,  116,  116,  117,  117,  117,  117,
+
+      117,  117,  117,  117,  117,  117,  167,  167,  167,  167,
+      167,  167,  167,  167,  167,  167,  346,  346,  765,  160,
+      379,  160,  160,  160,  372,  160,  160,  764,  346,  160,
+      400,  379,  117,  118,  118,  118,  118,  118,  118,  118,
+      118,  118,  118,  160,  160,  160,  458,  118,  118,  118,
+      118,  118,  191,  191,  191,  191,  191,  191,  191,  191,
+      191,  191,  273,  273,  273,  273,  427,  427,  400,  755,
+      458,  118,  118,  118,  118,  118,  118,  126,  126,  126,
+      126,  126,  126,  126,  126,  126,  126,  126,  312,  498,
+      754,  126,  126,  126,  126,  126,  194,  194,  194,  194,
+
+      194,  194,  194,  194,  194,  194,  285,  285,  285,  285,
+      285,  285,  752,  498,  312,  126,  126,  126,  126,  126,
+      126,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  312,  562,  562,  127,  127,  127,  127,  127,
+      184,  409,  184,  184,  373,  186,  184,  184,  380,  373,
+      184,  186,  409,  380,  186,  348,  348,  186,  186,  127,
+      127,  127,  127,  127,  127,  184,  184,  348,  413,  497,
+      428,  186,  428,  186,  188,  497,  188,  188,  188,  413,
+      188,  188,  429,  751,  188,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  526,  186,  186,  188,  188,
+
+      188,  189,  615,  615,  189,  189,  429,  189,  189,  189,
+      189,  190,  431,  189,  189,  190,  502,  431,  414,  414,
+      502,  190,  415,  415,  429,  433,  430,  189,  189,  189,
+      414,  430,  526,  430,  415,  190,  190,  210,  210,  210,
+      210,  210,  210,  210,  210,  210,  210,  432,  508,  433,
+      432,  523,  189,  189,  192,  192,  192,  192,  192,  192,
+      192,  192,  192,  192,  749,  508,  523,  433,  192,  192,
+      192,  192,  192,  211,  211,  211,  211,  211,  211,  211,
+      211,  211,  211,  319,  511,  319,  319,  319,  319,  319,
+      319,  439,  192,  192,  192,  192,  192,  192,  197,  748,
+
+      513,  439,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  442,  513,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  511,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  198,  198,
+      198,  198,  198,  198,  198,  198,  198,  198,  198,  442,
+      504,  506,  198,  198,  198,  198,  198,  213,  213,  213,
+      213,  213,  213,  213,  213,  213,  213,  354,  354,  354,
+      354,  354,  354,  434,  504,  506,  198,  198,  198,  198,
+
+      198,  198,  212,  747,  212,  212,  212,  212,  212,  212,
+      212,  212,  212,  212,  248,  454,  737,  434,  248,  514,
+      454,  561,  736,  561,  248,  282,  282,  282,  282,  282,
+      282,  282,  282,  282,  282,  434,  514,  727,  248,  248,
+      212,  215,  443,  215,  215,  215,  215,  215,  215,  215,
+      215,  215,  215,  443,  564,  584,  564,  215,  215,  215,
+      215,  215,  284,  284,  284,  284,  284,  284,  284,  284,
+      284,  284,  423,  423,  423,  423,  423,  423,  571,  584,
+      571,  215,  215,  215,  215,  215,  215,  218,  218,  218,
+      218,  218,  218,  218,  218,  218,  218,  218,  589,  589,
+
+      589,  218,  218,  218,  218,  218,  315,  315,  315,  315,
+      315,  315,  315,  315,  315,  315,  450,  725,  450,  450,
+      450,  450,  450,  450,  724,  218,  218,  218,  218,  218,
+      218,  220,  220,  220,  220,  220,  220,  220,  220,  220,
+      220,  220,  220,  565,  616,  616,  220,  220,  220,  220,
+      220,  345,  345,  345,  345,  345,  345,  345,  345,  345,
+      345,  466,  466,  466,  466,  466,  466,  565,  623,  623,
+      220,  220,  220,  220,  220,  220,  221,  221,  221,  221,
+      221,  221,  221,  221,  221,  221,  221,  566,  625,  565,
+      221,  221,  221,  221,  221,  347,  347,  347,  347,  347,
+
+      347,  347,  347,  347,  347,  473,  473,  473,  473,  473,
+      473,  566,  625,  723,  221,  221,  221,  221,  221,  221,
+      222,  222,  222,  222,  222,  222,  222,  222,  222,  222,
+      222,  631,  631,  566,  222,  222,  222,  222,  222,  351,
+      351,  351,  351,  351,  351,  351,  351,  622,  711,  622,
+      403,  351,  403,  403,  403,  403,  403,  403,  222,  222,
+      222,  222,  222,  222,  253,  627,  253,  253,  253,  253,
+      253,  253,  253,  253,  253,  253,  254,  254,  254,  254,
+      254,  254,  254,  254,  254,  254,  254,  710,  403,  627,
+      254,  254,  254,  254,  254,  353,  353,  353,  353,  353,
+
+      353,  353,  353,  353,  353,  480,  708,  480,  480,  480,
+      480,  480,  480,  707,  254,  254,  254,  254,  254,  254,
+      256,  256,  256,  256,  256,  256,  256,  256,  256,  256,
+      529,  529,  529,  529,  256,  256,  256,  256,  256,  416,
+      416,  416,  416,  416,  416,  416,  416,  416,  416,  492,
+      492,  492,  492,  492,  492,  674,  674,  700,  256,  256,
+      256,  256,  256,  256,  269,  269,  269,  269,  269,  269,
+      269,  269,  269,  269,  417,  417,  420,  420,  420,  420,
+      420,  420,  420,  420,  680,  680,  417,  535,  420,  422,
+      422,  422,  422,  422,  422,  422,  422,  422,  422,  535,
+
+      269,  277,  277,  277,  277,  277,  277,  277,  277,  277,
+      277,  277,  283,  283,  283,  283,  283,  283,  283,  283,
+      283,  283,  283,  283,  283,  445,  683,  683,  283,  283,
+      283,  283,  283,  570,  570,  445,  446,  446,  446,  446,
+      446,  446,  446,  446,  446,  446,  541,  541,  541,  541,
+      541,  541,  283,  283,  283,  283,  283,  283,  286,  286,
+      286,  286,  286,  286,  286,  286,  286,  286,  286,  286,
+      679,  698,  679,  286,  286,  286,  286,  286,  465,  465,
+      465,  465,  465,  465,  465,  465,  465,  465,  570,  563,
+      697,  624,  620,  481,  563,  620,  624,  286,  286,  286,
+
+      286,  286,  286,  287,  481,  287,  287,  287,  287,  287,
+      287,  287,  287,  287,  287,  320,  320,  320,  320,  320,
+      320,  320,  320,  320,  320,  696,  621,  640,  643,  320,
+      320,  320,  320,  320,  470,  470,  470,  470,  470,  470,
+      470,  470,  470,  470,  558,  558,  558,  558,  558,  558,
+      621,  640,  643,  320,  320,  320,  320,  320,  320,  321,
+      321,  321,  321,  321,  321,  321,  321,  321,  321,  643,
+      630,  693,  621,  321,  321,  321,  321,  321,  472,  472,
+      472,  472,  472,  472,  472,  472,  472,  472,  648,  648,
+      648,  648,  630,  482,  630,  630,  691,  321,  321,  321,
+
+      321,  321,  321,  334,  482,  334,  334,  334,  334,  334,
+      334,  334,  334,  334,  334,  335,  595,  335,  335,  335,
+      335,  335,  335,  335,  335,  335,  335,  336,  595,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      349,  349,  349,  349,  349,  349,  349,  349,  349,  349,
+      349,  349,  349,  572,  685,  633,  349,  349,  349,  349,
+      349,  476,  476,  476,  476,  476,  476,  476,  476,  476,
+      476,  633,  731,  824,  731,  572,  824,  572,  572,  645,
+      349,  349,  349,  349,  349,  349,  352,  352,  352,  352,
+
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  483,
+      483,  572,  352,  352,  352,  352,  352,  484,  484,  486,
+      486,  483,  496,  501,  503,  733,  733,  645,  685,  484,
+      676,  486,  496,  501,  686,  503,  352,  352,  352,  352,
+      352,  352,  355,  355,  355,  355,  355,  355,  355,  355,
+      355,  355,  355,  355,  676,  682,  641,  355,  355,  355,
+      355,  355,  485,  485,  485,  485,  485,  485,  485,  485,
+      485,  485,  604,  604,  604,  604,  604,  604,  512,  632,
+      641,  355,  355,  355,  355,  355,  355,  356,  512,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  383,
+
+      641,  383,  383,  383,  383,  383,  383,  383,  383,  383,
+      383,  384,  384,  384,  384,  384,  384,  384,  384,  384,
+      384,  762,  762,  781,  781,  384,  384,  384,  384,  384,
+      489,  489,  489,  489,  489,  489,  489,  489,  632,  882,
+      882,  611,  489,  611,  611,  611,  611,  611,  611,  384,
+      384,  384,  384,  384,  384,  399,  399,  399,  399,  399,
+      399,  399,  399,  399,  399,  491,  491,  491,  491,  491,
+      491,  491,  491,  491,  491,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  639,  681,  639,  639,  639,
+      649,  399,  401,  596,  401,  401,  401,  401,  401,  401,
+
+      401,  401,  401,  401,  402,  596,  402,  402,  402,  402,
+      402,  402,  402,  402,  402,  402,  408,  408,  408,  408,
+      408,  408,  408,  408,  408,  408,  408,  701,  649,  728,
+      408,  408,  408,  408,  408,  534,  534,  534,  534,  534,
+      534,  534,  534,  534,  534,  675,  836,  742,  787,  836,
+      547,  701,  673,  728,  408,  408,  408,  408,  408,  408,
+      412,  547,  412,  412,  412,  412,  412,  412,  412,  412,
+      412,  412,  418,  418,  418,  418,  418,  418,  418,  418,
+      418,  418,  418,  418,  418,  742,  787,  670,  418,  418,
+      418,  418,  418,  538,  598,  538,  538,  538,  538,  538,
+
+      538,  827,  827,  827,  669,  538,  598,  634,  739,  634,
+      634,  634,  418,  418,  418,  418,  418,  418,  421,  421,
+      421,  421,  421,  421,  421,  421,  421,  421,  421,  421,
+      421,  853,  739,  853,  421,  421,  421,  421,  421,  540,
+      540,  540,  540,  540,  540,  540,  540,  540,  540,  578,
+      578,  578,  578,  578,  578,  578,  656,  634,  421,  421,
+      421,  421,  421,  421,  424,  424,  424,  424,  424,  424,
+      424,  424,  424,  424,  424,  424,  548,  549,  549,  424,
+      424,  424,  424,  424,  550,  550,  612,  548,  613,  549,
+      552,  552,  844,  844,  844,  655,  550,  612,  657,  613,
+
+      759,  642,  552,  424,  424,  424,  424,  424,  424,  425,
+      657,  425,  425,  425,  425,  425,  425,  425,  425,  425,
+      425,  426,  653,  768,  759,  642,  854,  426,  854,  916,
+      426,  426,  916,  426,  426,  426,  426,  426,  426,  426,
+      426,  426,  426,  426,  426,  426,  642,  768,  652,  426,
+      426,  426,  426,  426,  426,  426,  426,  426,  426,  426,
+      426,  426,  426,  426,  426,  426,  426,  426,  426,  426,
+      426,  426,  426,  426,  426,  426,  426,  426,  426,  426,
+      426,  426,  426,  426,  426,  426,  426,  426,  426,  426,
+      426,  464,  464,  464,  464,  464,  464,  464,  464,  464,
+
+      464,  464,  555,  555,  555,  555,  555,  555,  555,  555,
+      865,  651,  865,  658,  555,  557,  557,  557,  557,  557,
+      557,  557,  557,  557,  557,  658,  883,  883,  464,  471,
+      660,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,  660,  637,  702,  471,  471,  471,  471,  471,
+      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
+      619,  619,  619,  619,  619,  619,  619,  619,  702,  471,
+      471,  471,  471,  471,  471,  474,  474,  474,  474,  474,
+      474,  474,  474,  474,  474,  474,  778,  636,  702,  474,
+      474,  474,  474,  474,  587,  587,  587,  587,  587,  587,
+
+      587,  587,  587,  587,  866,  870,  866,  870,  614,  614,
+      778,  894,  894,  474,  474,  474,  474,  474,  474,  475,
+      614,  475,  475,  475,  475,  475,  475,  475,  475,  475,
+      475,  487,  487,  487,  487,  487,  487,  487,  487,  487,
+      487,  487,  487,  487,  678,  629,  703,  487,  487,  487,
+      487,  487,  588,  588,  588,  588,  588,  588,  588,  588,
+      588,  588,  635,  610,  635,  635,  635,  871,  678,  871,
+      703,  487,  487,  487,  487,  487,  487,  490,  490,  490,
+      490,  490,  490,  490,  490,  490,  490,  490,  490,  490,
+      678,  703,  740,  490,  490,  490,  490,  490,  597,  597,
+
+      597,  597,  597,  597,  597,  597,  597,  597,  875,  878,
+      875,  878,  635,  888,  609,  888,  740,  490,  490,  490,
+      490,  490,  490,  493,  493,  493,  493,  493,  493,  493,
+      493,  493,  493,  493,  608,  889,  740,  889,  493,  493,
+      493,  493,  493,  601,  594,  601,  601,  601,  601,  601,
+      601,  897,  592,  897,  654,  601,  654,  654,  654,  654,
+      654,  654,  493,  493,  493,  493,  493,  493,  494,  712,
+      494,  494,  494,  494,  494,  494,  494,  494,  494,  494,
+      495,  712,  898,  901,  898,  901,  495,  692,  692,  495,
+      495,  692,  495,  495,  495,  495,  495,  495,  495,  495,
+
+      495,  495,  495,  495,  495,  692,  692,  692,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      517,  517,  517,  517,  517,  517,  517,  517,  517,  517,
+      517,  522,  913,  913,  713,  522,  522,  522,  522,  522,
+      522,  522,  522,  522,  522,  522,  713,  522,  914,  914,
+      522,  522,  522,  522,  522,  522,  522,  522,  522,  522,
+      522,  522,  522,  522,  522,  522,  522,  522,  522,  522,
+
+      522,  522,  591,  522,  522,  522,  522,  522,  522,  522,
+      522,  522,  522,  522,  522,  522,  522,  522,  522,  522,
+      522,  525,  525,  525,  525,  525,  525,  525,  525,  525,
+      525,  603,  603,  603,  603,  603,  603,  603,  603,  603,
+      603,  607,  607,  607,  607,  607,  607,  607,  607,  607,
+      607,  666,  666,  666,  666,  666,  666,  525,  527,  527,
+      527,  527,  527,  527,  527,  527,  527,  527,  527,  650,
+      650,  650,  650,  650,  650,  650,  650,  650,  650,  659,
+      659,  659,  659,  659,  659,  659,  659,  659,  659,  721,
+      721,  721,  721,  721,  721,  527,  536,  715,  536,  536,
+
+      536,  536,  536,  536,  536,  536,  536,  536,  536,  715,
+      590,  582,  536,  536,  536,  536,  536,  663,  753,  663,
+      663,  663,  663,  663,  663,  907,  908,  907,  908,  663,
+      753,  687,  672,  687,  687,  687,  536,  536,  536,  536,
+      536,  536,  539,  672,  539,  539,  539,  539,  539,  539,
+      539,  539,  539,  539,  539,  730,  581,  580,  539,  539,
+      539,  539,  539,  665,  665,  665,  665,  665,  665,  665,
+      665,  665,  665,  688,  579,  688,  688,  688,  910,  730,
+      910,  687,  539,  539,  539,  539,  539,  539,  542,  542,
+      542,  542,  542,  542,  542,  542,  542,  542,  542,  577,
+
+      576,  730,  542,  542,  542,  542,  542,  695,  695,  695,
+      695,  695,  695,  695,  695,  695,  695,  794,  794,  794,
+      794,  794,  794,  688,  575,  573,  542,  542,  542,  542,
+      542,  542,  543,  569,  543,  543,  543,  543,  543,  543,
+      543,  543,  543,  543,  546,  568,  546,  546,  546,  546,
+      546,  546,  546,  546,  546,  546,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  567,
+      551,  761,  553,  553,  553,  553,  553,  689,  545,  689,
+      689,  689,  690,  544,  690,  690,  690,  699,  531,  699,
+      699,  699,  699,  699,  699,  761,  553,  553,  553,  553,
+
+      553,  553,  556,  556,  556,  556,  556,  556,  556,  556,
+      556,  556,  556,  556,  918,  530,  918,  761,  556,  556,
+      556,  556,  556,  919,  923,  919,  923,  689,  924,  929,
+      924,  929,  690,  726,  726,  726,  726,  726,  726,  726,
+      524,  521,  556,  556,  556,  556,  556,  556,  559,  520,
+      559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
+      560,  694,  519,  694,  694,  694,  560,  694,  694,  560,
+      560,  694,  560,  560,  560,  560,  560,  560,  560,  560,
+      560,  560,  560,  560,  560,  694,  694,  694,  560,  560,
+      560,  560,  560,  560,  560,  560,  560,  560,  560,  560,
+
+      560,  560,  560,  560,  560,  560,  560,  560,  560,  560,
+      560,  560,  560,  560,  560,  560,  560,  560,  560,  560,
+      560,  560,  560,  560,  560,  560,  560,  560,  560,  560,
+      583,  750,  518,  750,  750,  750,  750,  750,  750,  583,
+      930,  516,  930,  583,  583,  583,  583,  583,  583,  583,
+      583,  583,  583,  583,  583,  583,  515,  510,  583,  583,
+      583,  583,  583,  583,  583,  583,  583,  583,  583,  583,
+      583,  583,  583,  583,  583,  583,  583,  583,  583,  583,
+      509,  583,  583,  583,  583,  583,  583,  583,  583,  583,
+      583,  583,  583,  583,  583,  583,  583,  583,  583,  586,
+
+      479,  586,  586,  586,  586,  586,  586,  586,  586,  586,
+      586,  714,  714,  714,  714,  714,  714,  714,  714,  714,
+      714,  718,  478,  718,  718,  718,  718,  718,  718,  922,
+      477,  469,  922,  718,  468,  467,  922,  586,  593,  463,
+      593,  593,  593,  593,  593,  593,  593,  593,  593,  593,
+      599,  456,  599,  599,  599,  599,  599,  599,  599,  599,
+      599,  599,  599,  455,  452,  451,  599,  599,  599,  599,
+      599,  720,  720,  720,  720,  720,  720,  720,  720,  720,
+      720,  758,  449,  758,  758,  758,  758,  758,  758,  448,
+      599,  599,  599,  599,  599,  599,  602,  447,  602,  602,
+
+      602,  602,  602,  602,  602,  602,  602,  602,  602,  441,
+      440,  438,  602,  602,  602,  602,  602,  734,  734,  734,
+      734,  734,  734,  734,  734,  734,  734,  767,  437,  767,
+      767,  767,  767,  767,  767,  436,  602,  602,  602,  602,
+      602,  602,  605,  605,  605,  605,  605,  605,  605,  605,
+      605,  605,  605,  435,  411,  410,  605,  605,  605,  605,
+      605,  735,  735,  735,  735,  735,  735,  735,  735,  735,
+      735,  407,  745,  406,  745,  745,  745,  745,  745,  745,
+      605,  605,  605,  605,  605,  605,  606,  405,  606,  606,
+      606,  606,  606,  606,  606,  606,  606,  606,  617,  617,
+
+      617,  617,  617,  617,  617,  617,  617,  617,  617,  617,
+      745,  404,  398,  397,  617,  617,  617,  617,  617,  746,
+      746,  746,  746,  746,  746,  746,  746,  746,  746,  800,
+      396,  800,  800,  800,  800,  800,  800,  395,  617,  617,
+      617,  617,  617,  617,  638,  394,  638,  638,  638,  638,
+      638,  638,  638,  638,  638,  638,  644,  644,  644,  644,
+      644,  644,  644,  644,  644,  644,  763,  763,  763,  763,
+      763,  763,  763,  763,  763,  763,  772,  772,  772,  772,
+      772,  772,  772,  772,  772,  772,  812,  812,  812,  812,
+      812,  812,  644,  646,  393,  646,  646,  646,  646,  646,
+
+      646,  646,  646,  646,  646,  773,  773,  773,  773,  773,
+      773,  773,  773,  773,  773,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  392,  928,  391,  390,  928,
+      389,  646,  661,  928,  661,  661,  661,  661,  661,  661,
+      661,  661,  661,  661,  661,  388,  387,  386,  661,  661,
+      661,  661,  661,  790,  385,  790,  790,  790,  790,  790,
+      790,  792,  792,  792,  792,  792,  792,  792,  792,  792,
+      792,  382,  661,  661,  661,  661,  661,  661,  664,  381,
+      664,  664,  664,  664,  664,  664,  664,  664,  664,  664,
+      664,  790,  376,  375,  664,  664,  664,  664,  664,  793,
+
+      793,  793,  793,  793,  793,  793,  793,  793,  793,  374,
+      368,  366,  365,  364,  363,  362,  361,  360,  664,  664,
+      664,  664,  664,  664,  667,  667,  667,  667,  667,  667,
+      667,  667,  667,  667,  359,  343,  342,  341,  667,  667,
+      667,  667,  667,  796,  796,  796,  796,  796,  796,  796,
+      796,  796,  796,  340,  338,  337,  809,  809,  809,  809,
+      809,  809,  667,  667,  667,  667,  667,  667,  668,  333,
+      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
+      671,  671,  671,  671,  671,  671,  671,  671,  671,  671,
+      671,  704,  809,  704,  704,  704,  704,  704,  704,  704,
+
+      704,  704,  704,  705,  332,  705,  705,  705,  705,  705,
+      705,  705,  705,  705,  705,  706,  331,  706,  706,  706,
+      706,  706,  706,  706,  706,  706,  706,  709,  329,  709,
+      709,  709,  709,  709,  709,  709,  709,  709,  709,  716,
+      328,  716,  716,  716,  716,  716,  716,  716,  716,  716,
+      716,  716,  327,  326,  325,  716,  716,  716,  716,  716,
+      804,  804,  804,  804,  804,  804,  804,  804,  804,  804,
+      324,  318,  317,  316,  309,  308,  307,  306,  305,  716,
+      716,  716,  716,  716,  716,  719,  299,  719,  719,  719,
+      719,  719,  719,  719,  719,  719,  719,  297,  296,  295,
+
+      294,  719,  719,  719,  719,  719,  805,  805,  805,  805,
+      805,  805,  805,  805,  805,  805,  293,  292,  290,  288,
+      280,  279,  276,  275,  268,  719,  719,  719,  719,  719,
+      719,  738,  267,  738,  738,  738,  738,  738,  738,  738,
+      738,  738,  738,  741,  265,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  743,  264,  743,  743,  743,
+      743,  743,  743,  743,  743,  743,  743,  744,  263,  744,
+      744,  744,  744,  744,  744,  744,  744,  744,  744,  756,
+      262,  756,  756,  756,  756,  756,  756,  756,  756,  756,
+      756,  769,  261,  769,  769,  769,  769,  769,  769,  769,
+
+      769,  769,  769,  770,  260,  770,  770,  770,  770,  770,
+      770,  770,  770,  770,  770,  771,  259,  771,  771,  771,
+      771,  771,  771,  771,  771,  771,  771,  785,  258,  785,
+      785,  785,  785,  785,  785,  785,  785,  785,  785,  786,
+      255,  786,  786,  786,  786,  786,  786,  786,  786,  786,
+      786,  788,  252,  788,  788,  788,  788,  788,  788,  788,
+      788,  788,  788,  789,  251,  789,  789,  789,  789,  789,
+      789,  789,  789,  789,  789,  801,  801,  801,  801,  801,
+      801,  801,  801,  801,  801,  806,  806,  806,  806,  806,
+      806,  806,  806,  806,  806,  811,  811,  811,  811,  811,
+
+      811,  811,  811,  811,  811,  250,  244,  241,  240,  239,
+      238,  801,  802,  802,  802,  802,  802,  802,  802,  802,
+      802,  802,  237,  234,  233,  232,  231,  230,  229,  228,
+      227,  226,  225,  224,  223,  217,  216,  209,  208,  207,
+      206,  205,  204,  202,  201,  199,  193,  185,  802,  803,
+      803,  803,  803,  803,  803,  803,  803,  803,  803,  181,
+      177,  176,  174,  170,  163,  159,  157,  155,  147,  146,
+      145,  144,  143,  137,  136,  135,  134,  133,  131,  130,
+      129,  128,  124,  120,  119,  803,  808,  808,  808,  808,
+      808,  808,  808,  808,  808,  808,  115,  112,  109,  104,
+
+      103,  102,  100,   96,   95,   94,   93,   90,   77,   70,
+       63,   59,   58,   56,   55,   53,   51,   43,   42,   41,
+       39,   35,  808,  814,  814,  814,  814,  814,  814,  814,
+      814,  814,  814,  814,  814,  814,  814,  814,  814,  814,
+      814,  814,  814,  814,  815,  815,  815,  815,  815,  815,
+      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
+      815,  815,  815,  815,  815,  816,  816,  816,  816,  816,
+      816,  816,  816,  816,  816,  816,  816,  816,  816,  816,
+      816,  816,  816,  816,  816,  816,  817,  817,  817,  817,
+      817,  817,  817,  817,  817,  817,  817,  817,  817,  817,
+
+      817,  817,  817,  817,  817,  817,  817,  818,   31,   25,
+       19,   17,   16,   15,  818,    0,  818,  818,  818,  818,
+        0,    0,  818,  818,  818,  818,  818,  818,  819,  819,
+      819,  819,  819,  819,  819,  819,  819,  819,  819,  819,
+      819,  819,  819,  819,  819,  819,  819,  819,  819,  820,
+        0,    0,    0,    0,  820,    0,  820,    0,  820,  820,
+      820,  820,  820,    0,  820,  820,  820,  820,  820,  820,
+      821,    0,    0,    0,    0,    0,    0,  821,    0,  821,
+      821,  821,  821,    0,    0,  821,  821,  821,  821,  821,
+      821,  822,    0,    0,  822,  822,    0,  822,  822,    0,
+
+      822,  822,  822,  822,    0,    0,  822,  822,  822,  822,
+      822,  822,  823,  823,    0,  823,    0,    0,    0,  823,
+      825,    0,    0,  825,  825,    0,  825,  825,    0,  825,
+      825,  825,  825,    0,    0,  825,  825,  825,  825,  825,
+      825,  826,    0,    0,  826,  826,    0,  826,  826,    0,
+      826,  826,  826,  826,    0,  826,  826,  826,    0,  826,
+      826,  826,  828,    0,    0,  828,    0,    0,  828,  828,
+        0,  828,  828,  828,  828,  828,    0,  828,  828,  828,
+      828,  828,  828,  829,  829,  829,  829,  829,  829,  829,
+      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
+
+      829,  829,  829,  829,  830,  830,    0,  830,    0,  830,
+      830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
+      830,  830,  830,  830,  830,  831,    0,    0,    0,    0,
+      831,    0,  831,    0,  831,  831,  831,  831,  831,    0,
+      831,  831,  831,  831,  831,  831,  832,    0,    0,    0,
+        0,    0,    0,  832,    0,  832,  832,  832,  832,    0,
+      832,  832,  832,  832,  832,  832,  832,  833,    0,    0,
+      833,  833,    0,  833,  833,    0,  833,  833,  833,  833,
+        0,  833,  833,  833,  833,  833,  833,  833,  834,  834,
+      834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
+
+      834,  834,  834,  834,  834,  834,  834,  834,  834,  835,
+      835,    0,  835,  835,  835,  835,  835,  835,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      837,    0,    0,  837,  837,    0,  837,  837,    0,  837,
+      837,  837,  837,    0,    0,  837,  837,  837,  837,  837,
+      837,  838,  838,    0,  838,    0,    0,    0,  838,  839,
+      839,    0,  839,    0,    0,    0,  839,  840,  840,  840,
+        0,  840,    0,    0,    0,  840,  841,    0,    0,  841,
+      841,    0,  841,  841,    0,  841,  841,  841,  841,    0,
+        0,  841,  841,  841,  841,  841,  841,  842,    0,    0,
+
+      842,  842,    0,  842,  842,    0,  842,  842,  842,  842,
+        0,    0,  842,  842,  842,  842,  842,  842,  843,    0,
+        0,  843,  843,    0,  843,  843,    0,  843,  843,  843,
+      843,    0,  843,  843,  843,    0,  843,  843,  843,  845,
+        0,    0,  845,    0,    0,  845,  845,    0,  845,  845,
+      845,  845,  845,    0,  845,  845,  845,  845,  845,  845,
+      846,    0,    0,    0,    0,    0,    0,  846,    0,  846,
+      846,  846,  846,    0,    0,  846,  846,  846,  846,  846,
+      846,  847,    0,    0,    0,    0,    0,    0,  847,    0,
+      847,  847,  847,  847,    0,  847,  847,  847,  847,  847,
+
+      847,  847,  848,    0,    0,  848,  848,    0,  848,  848,
+        0,  848,  848,  848,  848,    0,  848,  848,  848,  848,
+      848,  848,  848,  849,    0,    0,  849,  849,    0,  849,
+      850,  850,  850,  850,  850,  850,  850,  850,  850,  850,
+      850,  850,  850,  850,  850,  850,  850,  850,  850,  850,
+      850,  851,  851,    0,  851,    0,    0,    0,  851,  852,
+      852,  852,    0,  852,    0,    0,    0,  852,  855,  855,
+        0,  855,    0,    0,    0,  855,  856,  856,    0,  856,
+        0,    0,    0,  856,  857,  857,    0,  857,    0,    0,
+        0,  857,  858,  858,  858,    0,  858,    0,    0,    0,
+
+      858,  859,    0,    0,  859,  859,    0,  859,  860,  860,
+        0,  860,    0,    0,    0,  860,  861,  861,    0,  861,
+        0,    0,    0,  861,  862,  862,    0,  862,    0,    0,
+        0,  862,  863,  863,  863,    0,  863,    0,    0,    0,
+      863,  864,  864,  864,  864,    0,  864,    0,    0,    0,
+      864,  867,  867,    0,  867,    0,    0,    0,  867,  868,
+      868,    0,  868,    0,    0,    0,  868,  869,  869,    0,
+      869,    0,    0,    0,  869,  872,  872,  872,    0,  872,
+        0,    0,    0,  872,  873,  873,  873,  873,    0,  873,
+        0,    0,    0,  873,  874,  874,  874,  874,  874,  874,
+
+      874,  874,  874,  874,  874,  874,  874,  874,  874,  874,
+      874,  874,  874,  874,  874,  876,  876,    0,  876,    0,
+        0,    0,  876,  877,  877,    0,  877,    0,    0,    0,
+      877,  879,  879,  879,    0,  879,    0,    0,    0,  879,
+      880,  880,  880,  880,    0,  880,    0,    0,    0,  880,
+      881,  881,  881,  881,  881,  881,  881,  881,  881,  881,
+      881,  881,  881,  881,  881,  881,  881,  881,  881,  881,
+      881,  884,    0,    0,  884,  884,    0,  884,  885,    0,
+        0,    0,  885,  885,    0,  885,  885,  885,    0,    0,
+      885,  885,  886,  886,    0,  886,    0,    0,    0,  886,
+
+      887,    0,  887,  887,    0,  887,    0,    0,    0,  887,
+      890,  890,  890,    0,  890,    0,    0,    0,  890,  891,
+      891,  891,  891,    0,  891,    0,    0,    0,  891,  892,
+      892,    0,    0,  892,    0,    0,    0,  892,  893,  893,
+      893,  893,  893,  893,  893,  893,  893,  893,  893,  893,
+      893,  893,  893,  893,  893,  893,  893,  893,  893,  895,
+        0,    0,  895,  895,    0,  895,  896,    0,    0,    0,
+      896,  896,    0,  896,  896,  896,    0,    0,  896,  896,
+      899,  899,    0,  899,    0,    0,    0,  899,  900,    0,
+      900,  900,    0,  900,    0,    0,    0,  900,  902,  902,
+
+      902,    0,  902,    0,    0,    0,  902,  903,  903,  903,
+        0,    0,  903,    0,    0,    0,  903,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
+      904,  904,  904,  904,  904,  904,  904,  904,  905,  905,
+        0,  905,  905,  905,    0,  905,    0,  905,  905,  905,
+      905,    0,    0,  905,  905,  905,  905,  905,  905,  906,
+      906,    0,  906,  906,  906,    0,  906,    0,  906,  906,
+      906,  906,    0,    0,  906,  906,  906,  906,  906,  906,
+      909,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  909,  909,    0,  909,  909,    0,  909,  911,  911,
+
+        0,  911,    0,    0,    0,  911,  912,    0,  912,  912,
+        0,  912,    0,    0,    0,  912,  915,  915,    0,    0,
+      915,    0,    0,    0,  915,  917,    0,    0,    0,    0,
+        0,    0,  917,    0,  917,  917,  917,  917,    0,    0,
+      917,  917,  917,  917,  917,  917,  920,  920,    0,  920,
+        0,    0,    0,  920,  921,    0,  921,  921,    0,  921,
+        0,    0,    0,  921,  925,  925,    0,  925,    0,    0,
+        0,  925,  926,    0,  926,    0,    0,  926,    0,    0,
+        0,  926,  927,  927,  927,  927,  927,  927,  927,  927,
+      927,  927,  927,  927,  927,  927,  927,  927,  927,  927,
+
+      927,  927,  927,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813,  813,  813,  813,  813,  813,  813,
+      813,  813,  813,  813
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1394,7 +1928,7 @@ char *yytext;
 #define INITIAL 0
 #line 2 "toke.l"
 /*
- * Copyright (c) 1996, 1998-2005, 2007-2012
+ * Copyright (c) 1996, 1998-2005, 2007-2013
  *     Todd C. Miller <Todd.Miller@courtesan.com>
  *
  * Permission to use, copy, modify, and distribute this software for any
@@ -1420,7 +1954,6 @@ char *yytext;
 #include <config.h>
 
 #include <sys/types.h>
-#include <sys/param.h>
 #include <sys/stat.h>
 #include <stdio.h>
 #ifdef STDC_HEADERS
@@ -1437,6 +1970,11 @@ char *yytext;
 #ifdef HAVE_STRINGS_H
 # include <strings.h>
 #endif /* HAVE_STRINGS_H */
+#if defined(HAVE_STDINT_H)
+# include <stdint.h>
+#elif defined(HAVE_INTTYPES_H)
+# include <inttypes.h>
+#endif
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif /* HAVE_UNISTD_H */
@@ -1466,9 +2004,10 @@ char *yytext;
 #include "toke.h"
 #include <gram.h>
 #include "lbuf.h"
+#include "sha2.h"
 #include "secure_path.h"
 
-extern YYSTYPE yylval;
+extern YYSTYPE sudoerslval;
 extern bool parse_error;
 extern bool sudoers_warnings;
 int sudolineno;
@@ -1483,6 +2022,7 @@ gid_t sudoers_gid = SUDOERS_GID;
 
 static bool continued, sawspace;
 static int prev_state;
+static int digest_len;
 
 static bool _push_include(char *, bool);
 static bool pop_include(void);
@@ -1495,7 +2035,7 @@ int (*trace_print)(const char *msg) = sudoers_trace_print;
        return (n);             \
 } while (0)
 
-#define ECHO   ignore_result(fwrite(yytext, yyleng, 1, yyout))
+#define ECHO   ignore_result(fwrite(sudoerstext, sudoersleng, 1, sudoersout))
 
 #define        push_include(_p)        (_push_include((_p), false))
 #define        push_includedir(_p)     (_push_include((_p), true))
@@ -1511,7 +2051,9 @@ int (*trace_print)(const char *msg) = sudoers_trace_print;
 
 #define INSTR 5
 
-#line 1514 "lex.yy.c"
+#define WANTDIGEST 6
+
+#line 2056 "lex.sudoers.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1665,9 +2207,9 @@ YY_DECL
        register char *yy_cp, *yy_bp;
        register int yy_act;
 
-#line 132 "toke.l"
+#line 140 "toke.l"
 
-#line 1670 "lex.yy.c"
+#line 2212 "lex.sudoers.c"
 
        if ( yy_init )
                {
@@ -1719,13 +2261,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 >= 622 )
+                               if ( yy_current_state >= 814 )
                                        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] != 3595 );
+               while ( yy_base[yy_current_state] != 5604 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1753,7 +2295,7 @@ do_action:        /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 133 "toke.l"
+#line 141 "toke.l"
 {
                            LEXTRACE(", ");
                            LEXRETURN(',');
@@ -1761,16 +2303,16 @@ YY_RULE_SETUP
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 138 "toke.l"
+#line 146 "toke.l"
 BEGIN STARTDEFS;
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 140 "toke.l"
+#line 148 "toke.l"
 {
                            BEGIN INDEFS;
                            LEXTRACE("DEFVAR ");
-                           if (!fill(yytext, yyleng))
+                           if (!fill(sudoerstext, sudoersleng))
                                yyterminate();
                            LEXRETURN(DEFVAR);
                        }
@@ -1778,7 +2320,7 @@ YY_RULE_SETUP
 
 case 4:
 YY_RULE_SETUP
-#line 149 "toke.l"
+#line 157 "toke.l"
 {
                            BEGIN STARTDEFS;
                            LEXTRACE(", ");
@@ -1787,7 +2329,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 155 "toke.l"
+#line 163 "toke.l"
 {
                            LEXTRACE("= ");
                            LEXRETURN('=');
@@ -1795,7 +2337,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 160 "toke.l"
+#line 168 "toke.l"
 {
                            LEXTRACE("+= ");
                            LEXRETURN('+');
@@ -1803,7 +2345,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 165 "toke.l"
+#line 173 "toke.l"
 {
                            LEXTRACE("-= ");
                            LEXRETURN('-');
@@ -1811,20 +2353,20 @@ YY_RULE_SETUP
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 170 "toke.l"
+#line 178 "toke.l"
 {
                            LEXTRACE("BEGINSTR ");
-                           yylval.string = NULL;
+                           sudoerslval.string = NULL;
                            prev_state = YY_START;
                            BEGIN INSTR;
                        }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 177 "toke.l"
+#line 185 "toke.l"
 {
                            LEXTRACE("WORD(2) ");
-                           if (!fill(yytext, yyleng))
+                           if (!fill(sudoerstext, sudoersleng))
                                yyterminate();
                            LEXRETURN(WORD);
                        }
@@ -1833,7 +2375,7 @@ YY_RULE_SETUP
 
 case 10:
 YY_RULE_SETUP
-#line 186 "toke.l"
+#line 194 "toke.l"
 {
                            /* Line continuation char followed by newline. */
                            sudolineno++;
@@ -1842,28 +2384,28 @@ YY_RULE_SETUP
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 192 "toke.l"
+#line 200 "toke.l"
 {
                            LEXTRACE("ENDSTR ");
                            BEGIN prev_state;
 
-                           if (yylval.string == NULL) {
+                           if (sudoerslval.string == NULL) {
                                LEXTRACE("ERROR "); /* empty string */
                                LEXRETURN(ERROR);
                            }
                            if (prev_state == INITIAL) {
-                               switch (yylval.string[0]) {
+                               switch (sudoerslval.string[0]) {
                                case '%':
-                                   if (yylval.string[1] == '\0' ||
-                                       (yylval.string[1] == ':' &&
-                                       yylval.string[2] == '\0')) {
+                                   if (sudoerslval.string[1] == '\0' ||
+                                       (sudoerslval.string[1] == ':' &&
+                                       sudoerslval.string[2] == '\0')) {
                                        LEXTRACE("ERROR "); /* empty group */
                                        LEXRETURN(ERROR);
                                    }
                                    LEXTRACE("USERGROUP ");
                                    LEXRETURN(USERGROUP);
                                case '+':
-                                   if (yylval.string[1] == '\0') {
+                                   if (sudoerslval.string[1] == '\0') {
                                        LEXTRACE("ERROR "); /* empty netgroup */
                                        LEXRETURN(ERROR);
                                    }
@@ -1877,19 +2419,19 @@ YY_RULE_SETUP
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 224 "toke.l"
+#line 232 "toke.l"
 {
                            LEXTRACE("BACKSLASH ");
-                           if (!append(yytext, yyleng))
+                           if (!append(sudoerstext, sudoersleng))
                                yyterminate();
                        }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 230 "toke.l"
+#line 238 "toke.l"
 {
                            LEXTRACE("STRBODY ");
-                           if (!append(yytext, yyleng))
+                           if (!append(sudoerstext, sudoersleng))
                                yyterminate();
                        }
        YY_BREAK
@@ -1897,29 +2439,29 @@ YY_RULE_SETUP
 
 case 14:
 YY_RULE_SETUP
-#line 238 "toke.l"
+#line 246 "toke.l"
 {
                            /* quoted fnmatch glob char, pass verbatim */
                            LEXTRACE("QUOTEDCHAR ");
-                           if (!fill_args(yytext, 2, sawspace))
+                           if (!fill_args(sudoerstext, 2, sawspace))
                                yyterminate();
                            sawspace = false;
                        }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 246 "toke.l"
+#line 254 "toke.l"
 {
                            /* quoted sudoers special char, strip backslash */
                            LEXTRACE("QUOTEDCHAR ");
-                           if (!fill_args(yytext + 1, 1, sawspace))
+                           if (!fill_args(sudoerstext + 1, 1, sawspace))
                                yyterminate();
                            sawspace = false;
                        }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 254 "toke.l"
+#line 262 "toke.l"
 {
                            BEGIN INITIAL;
                            yyless(0);
@@ -1928,10 +2470,10 @@ YY_RULE_SETUP
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 260 "toke.l"
+#line 268 "toke.l"
 {
                            LEXTRACE("ARG ");
-                           if (!fill_args(yytext, yyleng, sawspace))
+                           if (!fill_args(sudoerstext, sudoersleng, sawspace))
                                yyterminate();
                            sawspace = false;
                        }                       /* a command line arg */
@@ -1939,7 +2481,47 @@ YY_RULE_SETUP
 
 case 18:
 YY_RULE_SETUP
-#line 268 "toke.l"
+#line 276 "toke.l"
+{
+                           /* Only return DIGEST if the length is correct. */
+                           if (sudoersleng == digest_len * 2) {
+                               if (!fill(sudoerstext, sudoersleng))
+                                   yyterminate();
+                               BEGIN INITIAL;
+                               LEXTRACE("DIGEST ");
+                               LEXRETURN(DIGEST);
+                           }
+                           BEGIN INITIAL;
+                           yyless(sudoersleng);
+                       } /* hex digest */
+       YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 289 "toke.l"
+{
+                           /* Only return DIGEST if the length is correct. */
+                           size_t len;
+                           if (sudoerstext[sudoersleng - 1] == '=') {
+                               /* use padding */
+                               len = 4 * ((digest_len + 2) / 3);
+                           } else {
+                               /* no padding */
+                               len = (4 * digest_len + 2) / 3;
+                           }
+                           if (sudoersleng == len) {
+                               if (!fill(sudoerstext, sudoersleng))
+                                   yyterminate();
+                               BEGIN INITIAL;
+                               LEXTRACE("DIGEST ");
+                               LEXRETURN(DIGEST);
+                           }
+                           BEGIN INITIAL;
+                           yyless(sudoersleng);
+                       } /* base64 digest */
+       YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 310 "toke.l"
 {
                            char *path;
 
@@ -1948,7 +2530,7 @@ YY_RULE_SETUP
                                LEXRETURN(ERROR);
                            }
 
-                           if ((path = parse_include(yytext)) == NULL)
+                           if ((path = parse_include(sudoerstext)) == NULL)
                                yyterminate();
 
                            LEXTRACE("INCLUDE\n");
@@ -1958,9 +2540,9 @@ YY_RULE_SETUP
                                yyterminate();
                        }
        YY_BREAK
-case 19:
+case 21:
 YY_RULE_SETUP
-#line 286 "toke.l"
+#line 328 "toke.l"
 {
                            char *path;
 
@@ -1969,7 +2551,7 @@ YY_RULE_SETUP
                                LEXRETURN(ERROR);
                            }
 
-                           if ((path = parse_include(yytext)) == NULL)
+                           if ((path = parse_include(sudoerstext)) == NULL)
                                yyterminate();
 
                            LEXTRACE("INCLUDEDIR\n");
@@ -1982,9 +2564,9 @@ YY_RULE_SETUP
                                yyterminate();
                        }
        YY_BREAK
-case 20:
+case 22:
 YY_RULE_SETUP
-#line 307 "toke.l"
+#line 349 "toke.l"
 {
                            char deftype;
                            int n;
@@ -1994,11 +2576,11 @@ YY_RULE_SETUP
                                LEXRETURN(ERROR);
                            }
 
-                           for (n = 0; isblank((unsigned char)yytext[n]); n++)
+                           for (n = 0; isblank((unsigned char)sudoerstext[n]); n++)
                                continue;
                            n += sizeof("Defaults") - 1;
-                           if ((deftype = yytext[n++]) != '\0') {
-                               while (isblank((unsigned char)yytext[n]))
+                           if ((deftype = sudoerstext[n++]) != '\0') {
+                               while (isblank((unsigned char)sudoerstext[n]))
                                    n++;
                            }
                            BEGIN GOTDEFS;
@@ -2025,9 +2607,9 @@ YY_RULE_SETUP
                            }
                        }
        YY_BREAK
-case 21:
+case 23:
 YY_RULE_SETUP
-#line 347 "toke.l"
+#line 389 "toke.l"
 {
                            int n;
 
@@ -2036,9 +2618,9 @@ YY_RULE_SETUP
                                LEXRETURN(ERROR);
                            }
 
-                           for (n = 0; isblank((unsigned char)yytext[n]); n++)
+                           for (n = 0; isblank((unsigned char)sudoerstext[n]); n++)
                                continue;
-                           switch (yytext[n]) {
+                           switch (sudoerstext[n]) {
                                case 'H':
                                    LEXTRACE("HOSTALIAS ");
                                    LEXRETURN(HOSTALIAS);
@@ -2054,179 +2636,179 @@ YY_RULE_SETUP
                            }
                        }
        YY_BREAK
-case 22:
+case 24:
 YY_RULE_SETUP
-#line 373 "toke.l"
+#line 415 "toke.l"
 {
                                /* cmnd does not require passwd for this user */
                                LEXTRACE("NOPASSWD ");
                                LEXRETURN(NOPASSWD);
                        }
        YY_BREAK
-case 23:
+case 25:
 YY_RULE_SETUP
-#line 379 "toke.l"
+#line 421 "toke.l"
 {
                                /* cmnd requires passwd for this user */
                                LEXTRACE("PASSWD ");
                                LEXRETURN(PASSWD);
                        }
        YY_BREAK
-case 24:
+case 26:
 YY_RULE_SETUP
-#line 385 "toke.l"
+#line 427 "toke.l"
 {
                                LEXTRACE("NOEXEC ");
                                LEXRETURN(NOEXEC);
                        }
        YY_BREAK
-case 25:
+case 27:
 YY_RULE_SETUP
-#line 390 "toke.l"
+#line 432 "toke.l"
 {
                                LEXTRACE("EXEC ");
                                LEXRETURN(EXEC);
                        }
        YY_BREAK
-case 26:
+case 28:
 YY_RULE_SETUP
-#line 395 "toke.l"
+#line 437 "toke.l"
 {
                                LEXTRACE("SETENV ");
                                LEXRETURN(SETENV);
                        }
        YY_BREAK
-case 27:
+case 29:
 YY_RULE_SETUP
-#line 400 "toke.l"
+#line 442 "toke.l"
 {
                                LEXTRACE("NOSETENV ");
                                LEXRETURN(NOSETENV);
                        }
        YY_BREAK
-case 28:
+case 30:
 YY_RULE_SETUP
-#line 405 "toke.l"
+#line 447 "toke.l"
 {
                                LEXTRACE("LOG_OUTPUT ");
                                LEXRETURN(LOG_OUTPUT);
                        }
        YY_BREAK
-case 29:
+case 31:
 YY_RULE_SETUP
-#line 410 "toke.l"
+#line 452 "toke.l"
 {
                                LEXTRACE("NOLOG_OUTPUT ");
                                LEXRETURN(NOLOG_OUTPUT);
                        }
        YY_BREAK
-case 30:
+case 32:
 YY_RULE_SETUP
-#line 415 "toke.l"
+#line 457 "toke.l"
 {
                                LEXTRACE("LOG_INPUT ");
                                LEXRETURN(LOG_INPUT);
                        }
        YY_BREAK
-case 31:
+case 33:
 YY_RULE_SETUP
-#line 420 "toke.l"
+#line 462 "toke.l"
 {
                                LEXTRACE("NOLOG_INPUT ");
                                LEXRETURN(NOLOG_INPUT);
                        }
        YY_BREAK
-case 32:
+case 34:
 YY_RULE_SETUP
-#line 425 "toke.l"
+#line 467 "toke.l"
 {
                            /* empty group or netgroup */
                            LEXTRACE("ERROR ");
                            LEXRETURN(ERROR);
                        }
        YY_BREAK
-case 33:
+case 35:
 YY_RULE_SETUP
-#line 431 "toke.l"
+#line 473 "toke.l"
 {
                            /* netgroup */
-                           if (!fill(yytext, yyleng))
+                           if (!fill(sudoerstext, sudoersleng))
                                yyterminate();
                            LEXTRACE("NETGROUP ");
                            LEXRETURN(NETGROUP);
                        }
        YY_BREAK
-case 34:
+case 36:
 YY_RULE_SETUP
-#line 439 "toke.l"
+#line 481 "toke.l"
 {
                            /* group */
-                           if (!fill(yytext, yyleng))
+                           if (!fill(sudoerstext, sudoersleng))
                                yyterminate();
                            LEXTRACE("USERGROUP ");
                            LEXRETURN(USERGROUP);
                        }
        YY_BREAK
-case 35:
+case 37:
 YY_RULE_SETUP
-#line 447 "toke.l"
+#line 489 "toke.l"
 {
-                           if (!fill(yytext, yyleng))
+                           if (!fill(sudoerstext, sudoersleng))
                                yyterminate();
                            LEXTRACE("NTWKADDR ");
                            LEXRETURN(NTWKADDR);
                        }
        YY_BREAK
-case 36:
+case 38:
 YY_RULE_SETUP
-#line 454 "toke.l"
+#line 496 "toke.l"
 {
-                           if (!fill(yytext, yyleng))
+                           if (!fill(sudoerstext, sudoersleng))
                                yyterminate();
                            LEXTRACE("NTWKADDR ");
                            LEXRETURN(NTWKADDR);
                        }
        YY_BREAK
-case 37:
+case 39:
 YY_RULE_SETUP
-#line 461 "toke.l"
+#line 503 "toke.l"
 {
-                           if (!ipv6_valid(yytext)) {
+                           if (!ipv6_valid(sudoerstext)) {
                                LEXTRACE("ERROR ");
                                LEXRETURN(ERROR);
                            }
-                           if (!fill(yytext, yyleng))
+                           if (!fill(sudoerstext, sudoersleng))
                                yyterminate();
                            LEXTRACE("NTWKADDR ");
                            LEXRETURN(NTWKADDR);
                        }
        YY_BREAK
-case 38:
+case 40:
 YY_RULE_SETUP
-#line 472 "toke.l"
+#line 514 "toke.l"
 {
-                           if (!ipv6_valid(yytext)) {
+                           if (!ipv6_valid(sudoerstext)) {
                                LEXTRACE("ERROR ");
                                LEXRETURN(ERROR);
                            }
-                           if (!fill(yytext, yyleng))
+                           if (!fill(sudoerstext, sudoersleng))
                                yyterminate();
                            LEXTRACE("NTWKADDR ");
                            LEXRETURN(NTWKADDR);
                        }
        YY_BREAK
-case 39:
+case 41:
 YY_RULE_SETUP
-#line 483 "toke.l"
+#line 525 "toke.l"
 {
                            LEXTRACE("ALL ");
                            LEXRETURN(ALL);
 
                        }
        YY_BREAK
-case 40:
+case 42:
 YY_RULE_SETUP
-#line 489 "toke.l"
+#line 531 "toke.l"
 {
 #ifdef HAVE_SELINUX
                            LEXTRACE("ROLE ");
@@ -2236,9 +2818,9 @@ YY_RULE_SETUP
 #endif
                        }
        YY_BREAK
-case 41:
+case 43:
 YY_RULE_SETUP
-#line 498 "toke.l"
+#line 540 "toke.l"
 {
 #ifdef HAVE_SELINUX
                            LEXTRACE("TYPE ");
@@ -2248,9 +2830,9 @@ YY_RULE_SETUP
 #endif
                        }
        YY_BREAK
-case 42:
+case 44:
 YY_RULE_SETUP
-#line 506 "toke.l"
+#line 548 "toke.l"
 {
 #ifdef HAVE_PRIV_SET
                            LEXTRACE("PRIVS ");
@@ -2260,9 +2842,9 @@ YY_RULE_SETUP
 #endif
                        }
        YY_BREAK
-case 43:
+case 45:
 YY_RULE_SETUP
-#line 515 "toke.l"
+#line 557 "toke.l"
 {
 #ifdef HAVE_PRIV_SET
                            LEXTRACE("LIMITPRIVS ");
@@ -2272,130 +2854,171 @@ YY_RULE_SETUP
 #endif
                        }
        YY_BREAK
-case 44:
+case 46:
 YY_RULE_SETUP
-#line 524 "toke.l"
+#line 566 "toke.l"
 {
                        got_alias:
-                           if (!fill(yytext, yyleng))
+                           if (!fill(sudoerstext, sudoersleng))
                                yyterminate();
                            LEXTRACE("ALIAS ");
                            LEXRETURN(ALIAS);
                        }
        YY_BREAK
-case 45:
+case 47:
 YY_RULE_SETUP
-#line 532 "toke.l"
+#line 574 "toke.l"
 {
+                           /* XXX - no way to specify digest for command */
                            /* no command args allowed for Defaults!/path */
-                           if (!fill_cmnd(yytext, yyleng))
+                           if (!fill_cmnd(sudoerstext, sudoersleng))
                                yyterminate();
                            LEXTRACE("COMMAND ");
                            LEXRETURN(COMMAND);
                        }
        YY_BREAK
-case 46:
+case 48:
 YY_RULE_SETUP
-#line 540 "toke.l"
+#line 583 "toke.l"
+{
+                           digest_len = SHA224_DIGEST_LENGTH;
+                           BEGIN WANTDIGEST;
+                           LEXTRACE("SHA224 ");
+                           LEXRETURN(SHA224);
+                       }
+       YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 590 "toke.l"
+{
+                           digest_len = SHA256_DIGEST_LENGTH;
+                           BEGIN WANTDIGEST;
+                           LEXTRACE("SHA256 ");
+                           LEXRETURN(SHA256);
+                       }
+       YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 597 "toke.l"
+{
+                           digest_len = SHA384_DIGEST_LENGTH;
+                           BEGIN WANTDIGEST;
+                           LEXTRACE("SHA384 ");
+                           LEXRETURN(SHA384);
+                       }
+       YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 604 "toke.l"
+{
+                           digest_len = SHA512_DIGEST_LENGTH;
+                           BEGIN WANTDIGEST;
+                           LEXTRACE("SHA512 ");
+                           LEXRETURN(SHA512);
+                       }
+       YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 611 "toke.l"
 {
                            BEGIN GOTCMND;
                            LEXTRACE("COMMAND ");
-                           if (!fill_cmnd(yytext, yyleng))
+                           if (!fill_cmnd(sudoerstext, sudoersleng))
                                yyterminate();
                        }                       /* sudo -e */
        YY_BREAK
-case 47:
+case 53:
 YY_RULE_SETUP
-#line 547 "toke.l"
+#line 618 "toke.l"
 {
                            /* directories can't have args... */
-                           if (yytext[yyleng - 1] == '/') {
+                           if (sudoerstext[sudoersleng - 1] == '/') {
                                LEXTRACE("COMMAND ");
-                               if (!fill_cmnd(yytext, yyleng))
+                               if (!fill_cmnd(sudoerstext, sudoersleng))
                                    yyterminate();
                                LEXRETURN(COMMAND);
                            } else {
                                BEGIN GOTCMND;
                                LEXTRACE("COMMAND ");
-                               if (!fill_cmnd(yytext, yyleng))
+                               if (!fill_cmnd(sudoerstext, sudoersleng))
                                    yyterminate();
                            }
                        }                       /* a pathname */
        YY_BREAK
-case 48:
+case 54:
 YY_RULE_SETUP
-#line 562 "toke.l"
+#line 633 "toke.l"
 {
                            LEXTRACE("BEGINSTR ");
-                           yylval.string = NULL;
+                           sudoerslval.string = NULL;
                            prev_state = YY_START;
                            BEGIN INSTR;
                        }
        YY_BREAK
-case 49:
+case 55:
 YY_RULE_SETUP
-#line 569 "toke.l"
+#line 640 "toke.l"
 {
                            /* a word */
-                           if (!fill(yytext, yyleng))
+                           if (!fill(sudoerstext, sudoersleng))
                                yyterminate();
                            LEXTRACE("WORD(5) ");
                            LEXRETURN(WORD);
                        }
        YY_BREAK
-case 50:
+case 56:
 YY_RULE_SETUP
-#line 577 "toke.l"
+#line 648 "toke.l"
 {
                            LEXTRACE("( ");
                            LEXRETURN('(');
                        }
        YY_BREAK
-case 51:
+case 57:
 YY_RULE_SETUP
-#line 582 "toke.l"
+#line 653 "toke.l"
 {
                            LEXTRACE(") ");
                            LEXRETURN(')');
                        }
        YY_BREAK
-case 52:
+case 58:
 YY_RULE_SETUP
-#line 587 "toke.l"
+#line 658 "toke.l"
 {
                            LEXTRACE(", ");
                            LEXRETURN(',');
                        }                       /* return ',' */
        YY_BREAK
-case 53:
+case 59:
 YY_RULE_SETUP
-#line 592 "toke.l"
+#line 663 "toke.l"
 {
                            LEXTRACE("= ");
                            LEXRETURN('=');
                        }                       /* return '=' */
        YY_BREAK
-case 54:
+case 60:
 YY_RULE_SETUP
-#line 597 "toke.l"
+#line 668 "toke.l"
 {
                            LEXTRACE(": ");
                            LEXRETURN(':');
                        }                       /* return ':' */
        YY_BREAK
-case 55:
+case 61:
 YY_RULE_SETUP
-#line 602 "toke.l"
+#line 673 "toke.l"
 {
-                           if (yyleng & 1) {
+                           if (sudoersleng & 1) {
                                LEXTRACE("!");
                                LEXRETURN('!'); /* return '!' */
                            }
                        }
        YY_BREAK
-case 56:
+case 62:
 YY_RULE_SETUP
-#line 609 "toke.l"
+#line 680 "toke.l"
 {
                            if (YY_START == INSTR) {
                                LEXTRACE("ERROR ");
@@ -2408,25 +3031,25 @@ YY_RULE_SETUP
                            LEXRETURN(COMMENT);
                        }                       /* return newline */
        YY_BREAK
-case 57:
+case 63:
 YY_RULE_SETUP
-#line 621 "toke.l"
+#line 692 "toke.l"
 {                      /* throw away space/tabs */
                            sawspace = true;    /* but remember for fill_args */
                        }
        YY_BREAK
-case 58:
+case 64:
 YY_RULE_SETUP
-#line 625 "toke.l"
+#line 696 "toke.l"
 {
                            sawspace = true;    /* remember for fill_args */
                            sudolineno++;
                            continued = true;
                        }                       /* throw away EOL after \ */
        YY_BREAK
-case 59:
+case 65:
 YY_RULE_SETUP
-#line 631 "toke.l"
+#line 702 "toke.l"
 {
                            BEGIN INITIAL;
                            sudolineno++;
@@ -2435,9 +3058,9 @@ YY_RULE_SETUP
                            LEXRETURN(COMMENT);
                        }                       /* comment, not uid/gid */
        YY_BREAK
-case 60:
+case 66:
 YY_RULE_SETUP
-#line 639 "toke.l"
+#line 710 "toke.l"
 {
                            LEXTRACE("ERROR ");
                            LEXRETURN(ERROR);
@@ -2449,7 +3072,8 @@ case YY_STATE_EOF(GOTCMND):
 case YY_STATE_EOF(STARTDEFS):
 case YY_STATE_EOF(INDEFS):
 case YY_STATE_EOF(INSTR):
-#line 644 "toke.l"
+case YY_STATE_EOF(WANTDIGEST):
+#line 715 "toke.l"
 {
                            if (YY_START != INITIAL) {
                                BEGIN INITIAL;
@@ -2460,12 +3084,12 @@ case YY_STATE_EOF(INSTR):
                                yyterminate();
                        }
        YY_BREAK
-case 61:
+case 67:
 YY_RULE_SETUP
-#line 654 "toke.l"
+#line 725 "toke.l"
 ECHO;
        YY_BREAK
-#line 2468 "lex.yy.c"
+#line 3092 "lex.sudoers.c"
 
        case YY_END_OF_BUFFER:
                {
@@ -2756,7 +3380,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 >= 622 )
+                       if ( yy_current_state >= 814 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2791,11 +3415,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 >= 622 )
+               if ( yy_current_state >= 814 )
                        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 == 621);
+       yy_is_jam = (yy_current_state == 813);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -3356,7 +3980,7 @@ int main()
        return 0;
        }
 #endif
-#line 654 "toke.l"
+#line 725 "toke.l"
 
 struct path_list {
     char *path;
@@ -3394,13 +4018,8 @@ switch_dir(struct include_stack *stack, char *dirpath)
 
     if (!(dir = opendir(dirpath))) {
        if (errno != ENOENT) {
-           char *errbuf;
-           if (asprintf(&errbuf, _("%s: %s"), dirpath, strerror(errno)) != -1) {
-               yyerror(errbuf);
-               free(errbuf);
-           } else {
-               yyerror(_("unable to allocate memory"));
-           }
+           warning("%s", dirpath);
+           sudoerserror(NULL);
        }
        goto done;
     }
@@ -3425,6 +4044,7 @@ switch_dir(struct include_stack *stack, char *dirpath)
        pl->path = path;
        pl->next = first;
        first = pl;
+       path = NULL;
        count++;
     }
     closedir(dir);
@@ -3466,8 +4086,8 @@ bad:
     while (first != NULL) {
        pl = first;
        first = pl->next;
-       free(pl->path);
-       free(pl);
+       efree(pl->path);
+       efree(pl);
     }
     efree(sorted);
     efree(dirpath);
@@ -3498,7 +4118,7 @@ init_lexer(void)
        efree(istack[idepth].path);
        if (idepth && !istack[idepth].keepopen)
            fclose(istack[idepth].bs->yy_input_file);
-       yy_delete_buffer(istack[idepth].bs);
+       sudoers_delete_buffer(istack[idepth].bs);
     }
     efree(istack);
     istack = NULL;
@@ -3522,14 +4142,15 @@ _push_include(char *path, bool isdir)
     /* push current state onto stack */
     if (idepth >= istacksize) {
        if (idepth > MAX_SUDOERS_DEPTH) {
-           yyerror(_("too many levels of includes"));
+           sudoerserror(N_("too many levels of includes"));
            debug_return_bool(false);
        }
        istacksize += SUDOERS_STACK_INCREMENT;
        istack = (struct include_stack *) realloc(istack,
            sizeof(*istack) * istacksize);
        if (istack == NULL) {
-           yyerror(_("unable to allocate memory"));
+           warning(NULL);
+           sudoerserror(NULL);
            debug_return_bool(false);
        }
     }
@@ -3570,7 +4191,7 @@ _push_include(char *path, bool isdir)
                debug_return_bool(false);
        }
        if (!(path = switch_dir(&istack[idepth], path))) {
-           /* switch_dir() called yyerror() for us */
+           /* switch_dir() called sudoerserror() for us */
            debug_return_bool(false);
        }
        while ((fp = open_sudoers(path, false, &keepopen)) == NULL) {
@@ -3585,7 +4206,7 @@ _push_include(char *path, bool isdir)
     } else {
        if ((fp = open_sudoers(path, true, &keepopen)) == NULL) {
            /* The error was already printed by open_sudoers() */
-           yyerror(NULL);
+           sudoerserror(NULL);
            debug_return_bool(false);
        }
        istack[idepth].more = NULL;
@@ -3598,7 +4219,7 @@ _push_include(char *path, bool isdir)
     idepth++;
     sudolineno = 1;
     sudoers = path;
-    yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
+    sudoers_switch_to_buffer(sudoers_create_buffer(fp, YY_BUF_SIZE));
 
     debug_return_bool(true);
 }
@@ -3615,7 +4236,7 @@ pop_include(void)
 
     if (!keepopen)
        fclose(YY_CURRENT_BUFFER->yy_input_file);
-    yy_delete_buffer(YY_CURRENT_BUFFER);
+    sudoers_delete_buffer(YY_CURRENT_BUFFER);
     /* If we are in an include dir, move to the next file. */
     while ((pl = istack[idepth - 1].more) != NULL) {
        fp = open_sudoers(pl->path, false, &keepopen);
@@ -3624,7 +4245,7 @@ pop_include(void)
            efree(sudoers);
            sudoers = pl->path;
            sudolineno = 1;
-           yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
+           sudoers_switch_to_buffer(sudoers_create_buffer(fp, YY_BUF_SIZE));
            efree(pl);
            break;
        }
@@ -3636,7 +4257,7 @@ pop_include(void)
     /* If no path list, just pop the last dir on the stack. */
     if (pl == NULL) {
        idepth--;
-       yy_switch_to_buffer(istack[idepth].bs);
+       sudoers_switch_to_buffer(istack[idepth].bs);
        efree(sudoers);
        sudoers = istack[idepth].path;
        sudolineno = istack[idepth].lineno;
@@ -3680,7 +4301,8 @@ parse_include(char *base)
     len += (int)(ep - cp);
     path = pp = malloc(len + dirlen + 1);
     if (path == NULL) {
-       yyerror(_("unable to allocate memory"));
+       warning(NULL);
+       sudoerserror(NULL);
        debug_return_str(NULL);
     }
     if (dirlen) {