]> granicus.if.org Git - sudo/commitdiff
o Add support for escaped characters in the WORD macro
authorTodd C. Miller <Todd.Miller@courtesan.com>
Sun, 10 Oct 1999 18:38:40 +0000 (18:38 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Sun, 10 Oct 1999 18:38:40 +0000 (18:38 +0000)
o Modify fill() to squash escape chars

lex.yy.c
parse.lex

index 575104fb4c55aaf67fa9f62537dee4e2b0f420d8..322fea1f961876052889fc2c329789c41a6a0f7d 100644 (file)
--- a/lex.yy.c
+++ b/lex.yy.c
@@ -286,7 +286,7 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
 
 #define YY_NUM_RULES 32
 #define YY_END_OF_BUFFER 33
-static yyconst short int yy_accept[476] =
+static yyconst short int yy_accept[487] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,   33,   30,
         1,    7,   11,   30,   30,   21,   31,   30,   10,   30,
@@ -294,52 +294,53 @@ static yyconst short int yy_accept[476] =
        25,   25,   25,   25,   25,    9,    6,    9,    9,    9,
         9,    6,    9,    9,    9,    9,    6,    6,    9,    9,
         9,   31,    9,   23,   23,   23,   24,   23,   23,   23,
-       23,   23,   22,   22,   22,   23,   26,    5,   26,   26,
-       26,   26,   26,   26,   26,   26,   26,   13,   25,   25,
-       25,   26,   26,   30,    1,   11,   30,    0,    8,   17,
-       16,   29,   29,   30,   30,   30,   30,   30,   30,   30,
+       23,   23,   22,   22,   22,   31,   23,   26,    5,   26,
+       26,   26,   26,   26,   26,   26,   26,   25,   25,   25,
+       31,   26,   30,    0,    1,   11,   30,    0,    8,    0,
+       17,    0,   16,    0,   29,   29,   30,   30,   30,   30,
 
-       25,   25,   25,    0,    2,   30,   30,   30,   30,   30,
+       30,   30,   30,   25,   25,   25,   30,    2,   30,   30,
+       30,   30,   30,    9,    9,    9,    9,    9,    9,    9,
         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    3,    3,   23,
-       17,   16,   23,   23,   23,   23,   23,   23,   23,   23,
-       22,   22,   22,   26,   26,   26,    0,   26,   26,    0,
-        5,   26,   17,   16,   26,   26,   26,   26,   26,   26,
-       26,   26,   26,   25,   25,   25,   30,   30,   30,   20,
-       25,   25,   30,   30,   30,   30,   30,    9,    9,    9,
+        3,    3,   23,    0,   17,    0,   16,    0,   23,   23,
+       23,   23,   23,   23,   23,   23,   22,   22,   22,   23,
+       26,    0,   26,    0,    0,   26,    0,    5,    0,   17,
+        0,   16,    0,   26,   26,   26,   26,   26,   26,   26,
+       26,   25,   25,   25,   26,   30,   30,   30,   20,   25,
+       25,    0,   30,   30,   30,   30,   30,    9,    9,    9,
         9,    9,    9,   23,   23,   23,   20,   22,   22,    4,
-        4,    4,   26,   26,   26,   20,   25,   25,   30,   30,
-
-       30,   30,   30,   25,   25,   30,   30,   30,    9,    9,
-        9,    9,    9,    9,    9,   23,   23,   23,   23,   23,
-       22,   22,   26,   26,   26,   26,   26,   25,   25,   30,
-       30,   30,   25,   25,   30,   30,    9,    9,    9,    9,
-        9,   23,   23,   23,   22,   22,   26,   26,   26,   25,
-       25,   30,   30,   30,   30,   30,   25,   25,   30,   30,
+
+        4,    0,    4,   26,   26,   26,   26,   20,   25,   25,
+       30,   30,   30,   30,   30,   25,   25,   30,   30,   30,
         9,    9,    9,    9,    9,    9,    9,   23,   23,   23,
-       23,   23,   22,   22,   26,   26,   26,   26,   26,   25,
-       25,   18,   18,   18,   25,    0,   15,   30,   30,    9,
-        9,    9,    9,   18,   18,   18,   22,   18,   18,   18,
-
-       25,   15,   30,   18,   18,   18,   18,   25,   30,   27,
-        9,    9,    9,    9,    9,    9,   23,   18,   18,   18,
-       18,   22,   26,   18,   18,   18,   18,   25,   30,   19,
-       19,   19,    0,   14,   30,   27,    9,    9,    9,    9,
-       23,   19,   19,   19,   26,   19,   19,   19,   14,   30,
-       30,   19,   19,   19,   19,   19,   28,    9,    9,    9,
-        9,    9,    9,    9,   23,   23,   19,   19,   19,   19,
-       19,   26,   26,   19,   19,   19,   19,   19,   30,   30,
-       30,   19,   19,    9,    9,    9,    9,    9,   23,   23,
-       23,   19,   19,   26,   26,   26,   19,   19,   30,   30,
-
-       30,   30,   30,    9,    9,    9,    9,    9,   23,   23,
-       23,   23,   23,   26,   26,   26,   26,   26,   30,   30,
-       30,    9,    9,    9,   23,   23,   23,   26,   26,   26,
-       30,   30,   30,   30,   30,    9,    9,    9,    9,    9,
-       23,   23,   23,   23,   23,   26,   26,   26,   26,   26,
-       18,   18,   18,    9,    9,    9,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,    9,    9,    9,   18,   18,
-       18,   18,   18,   18,    0
+       23,   23,   22,   22,    4,   26,   26,   26,   26,   26,
+       25,   25,   30,   30,   30,   25,   25,   30,   30,    9,
+        9,    9,    9,    9,   23,   23,   23,   22,   22,   26,
+       26,   26,   25,   25,   30,   30,   30,   30,   30,   25,
+       25,   30,   30,    9,    9,    9,    9,    9,    9,    9,
+       23,   23,   23,   23,   23,   22,   22,   26,   26,   26,
+       26,   26,   25,   25,   18,   18,   18,   25,    0,   15,
+
+       30,   30,    9,    9,    9,    9,   18,   18,   18,   22,
+       18,   18,   18,   25,   30,   18,   18,   18,   18,   25,
+       30,   27,    9,    9,    9,    9,    9,    9,   23,   18,
+       18,   18,   18,   22,   26,   18,   18,   18,   18,   25,
+       30,   19,   19,   19,    0,   14,   30,   27,    9,    9,
+        9,    9,   23,   19,   19,   19,   26,   19,   19,   19,
+       30,   30,   19,   19,   19,   19,   19,   28,    9,    9,
+        9,    9,    9,    9,    9,   23,   23,   19,   19,   19,
+       19,   19,   26,   26,   19,   19,   19,   19,   19,   30,
+       30,   30,   19,   19,    9,    9,    9,    9,    9,   23,
+
+       23,   23,   19,   19,   26,   26,   26,   19,   19,   30,
+       30,   30,   30,   30,    9,    9,    9,    9,    9,   23,
+       23,   23,   23,   23,   26,   26,   26,   26,   26,   30,
+       30,   30,    9,    9,    9,   23,   23,   23,   26,   26,
+       26,   30,   30,   30,   30,   30,    9,    9,    9,    9,
+        9,   23,   23,   23,   23,   23,   26,   26,   26,   26,
+       26,   18,   18,   18,    9,    9,    9,   18,   18,   18,
+       18,   18,   18,   18,   18,   18,    9,    9,    9,   18,
+       18,   18,   18,   18,   18,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -376,144 +377,144 @@ static yyconst int yy_ec[256] =
 
 static yyconst int yy_meta[53] =
     {   0,
-        1,    2,    2,    3,    1,    4,    1,    5,    5,    1,
+        1,    2,    2,    3,    1,    4,    1,    3,    3,    1,
         2,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    6,    7,    5,    1,    1,    1,    1,    1,    1,
+        1,    2,    5,    3,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    6,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1
     } ;
 
-static yyconst short int yy_base[514] =
+static yyconst short int yy_base[521] =
     {   0,
-        0,   26,   61,    0,  113,    0,  165,    0, 1010,    0,
-     1006, 3351, 1003,  216,    0, 3351, 3351,    0, 3351,  222,
-      241,  250,  259, 3351, 3351,  280,  975,  978,   54,  318,
-      951,  943,  932,  921,  921,  225, 3351,  966,  228,    0,
-      280, 3351,  351,  372,  346,  353, 3351,    0,  396,  933,
-      936,  447,  470,    0,    0,    0, 3351,    0,  448,  496,
-      505,  514,  535,  929,  928,  573,  455, 3351,  610,  646,
-      535,    0,  614,  621,  676,  644,  656,    0,  713,  921,
-      925,  219,  751,    0,  947,  941,  788,  941, 3351,    0,
-        0,  700,    0,  785,  930,  813,  822,  800,    0,  843,
-
-        0,  903,  892,  239, 3351,  870,  870,  853,  855,  852,
-      375,    0,  889,  451,  457,  854,  241,  866,  867,    0,
-        0,  868,    0,  891,    0,  837,  831,  241, 3351,    0,
-        0,    0,  864,  891,  851,  903,  912,  921,    0,  941,
-        0,  823,  820,  679,    0,  954,  831,  964,  990,  824,
-     3351,  535,  785,  837,  980,  968, 1020,  987, 1045, 1054,
-     1063, 1084, 1121, 1158,  792,  789, 1198, 1207, 1216, 1042,
-      796,  780,  767,  759,  744,  749,  726, 1225, 1234, 1243,
-     1264,  749,  739, 1276, 1285, 1294, 1104,  711,  683, 1078,
-     3351,    0, 1303, 1312, 1321, 1342,  690,  673, 1121,  692,
-
-     1367, 1376, 1003,  668,  663,  652,  634,  632, 1385, 1349,
-     1394, 1403, 1412,  644,  631, 1131,  653, 1421, 1430, 1266,
-      622,  617, 1437, 1451, 1476, 1485, 1494,  618,  610, 1503,
-     1512, 1521,  608,  613,  614,  592, 1530, 1539, 1548,  601,
-      603, 1557, 1566, 1575,  594,  598, 1584, 1593, 1602,  576,
-      567, 1450,  515, 1611, 1620, 1461,  483,  233,  465,  456,
-     1629, 1647, 1659, 1668, 1677,  458,  280, 1646,  470, 1686,
-     1695, 1704,  442,  356, 1710, 1724, 1749, 1758, 1767,  440,
-      431, 1775, 1783, 1791,  440,  460, 3351,  423,  401, 1800,
-     1809, 1818,  390, 1826, 1834, 1842,  379, 1850, 1858, 1866,
-
-      366,    0, 1723,  372, 1874, 1882, 1735,  471,  343,   36,
-     1891, 1909, 1921, 1930, 1939,  594, 1909,  363, 1947, 1955,
-     1963,  595, 1969, 1983, 2007, 2015, 2023,  618, 2032, 2041,
-     2050, 2059,  622, 3351,  267, 3351, 2068, 2077, 2086, 2095,
-     2104, 2113, 2122, 2131, 2140, 2149, 2158, 2167,    0, 1983,
-      278, 2176, 2185, 2194, 2203,  664,    0, 2212, 2230, 2242,
-     2251, 2260, 2269, 2278, 1993,  270, 2287, 2296, 2305, 2314,
-      966, 2229, 2328, 2353, 2362, 2371, 2380, 2389, 2398, 2407,
-     2416, 2327,  325, 2425, 2434, 2443, 2452, 2461, 2470, 2479,
-     2488, 2338,  695, 2497, 2506, 2515, 2522, 2529, 2536,  260,
-
-     2545, 2554, 2563, 2571, 2589, 2601, 2610, 2619, 2588,  237,
-     2628, 2637, 2646, 2652, 2666, 2691, 2700, 2709, 2718, 2727,
-     2736, 2745, 2754, 2763, 2772, 2781, 2790, 2799, 2808, 2817,
-     2665,  232, 2826, 2835, 2676, 2844, 2862, 2874, 2883, 2892,
-     2861,  210, 2901, 2910, 2919, 2925, 2939, 2964, 2973, 2982,
-     2938, 2949, 2989, 2998, 3007, 3016, 3023, 3030, 3037, 3044,
-     3051, 3058,    0, 3065, 1467,  843, 3074, 3083,    0, 3090,
-     2682, 1337, 3097, 3104, 3351, 3125, 3129, 3136, 3140, 3144,
-     3149, 3156, 3163, 3170, 3177, 3184, 3188, 3192, 3196, 3201,
-     3207, 3214, 3221, 3227, 3233, 3239, 3245, 3252, 3257, 3261,
-
-     3268, 3275, 3279, 3286, 3293, 3300, 3307, 3314, 3320, 3326,
-     3332, 3338, 3344
+        0,   26,   61,    0,  113,    0,  165,    0, 1101, 1063,
+     1097, 3667, 1094,  216, 1060, 3667, 3667, 1053, 3667,  222,
+      247,  254,  217, 3667, 3667,  284, 1050, 1052,  335,  345,
+     1030, 1016, 1005, 1000, 1000,  345, 3667, 1045,  380,    0,
+      382, 3667,  388,  422,  261,  232, 3667,    0,  459, 1017,
+     1017,  510,  533, 1004,  999,  991, 3667,  980,  412,  559,
+      435,  507,  596,  962,  966,  647,  657,  945, 3667,  694,
+      730,  940,  938,  533,  755,  566,  573,  792,  939,  944,
+      843,  853,  922,  890,  954,  948,  913,  920, 3667,  915,
+      874,  949,  870,  972,  657,    0,  982,  208,    0,    0,
+
+      885,    0, 1019,    0,  871,  868,  220, 3667,  850,  853,
+      845,  846,  834,  391,    0,  871,  700,  703,  740,  235,
+     1044,  740,    0,    0,  843,    0, 1065,    0,  831,  826,
+      304,  821,  819, 1101,  818, 1124,  816, 1147,  777, 1157,
+      372,    0,    0,  829,    0, 1194,    0,  817,  814,  420,
+      766, 1230, 1253,  224, 1289, 1325,  787, 3667,  785,  750,
+     1361,  747, 1384,  853, 1394,  395, 1419,    0,  761, 1456,
+     1493, 1530,  737,  728,  616, 1570, 1579, 1588, 1609,  726,
+      716,   54,  706,  696,  677,  683,  657, 1634, 1643, 1652,
+     1673,  643,  633, 1698, 1707, 1716, 1737,  639,  628,  623,
+
+     3667,  249,    0,  649, 1762, 1771, 1780, 1801,  627,  573,
+     1826,  397, 1835, 1844, 1853,  571,  568,  561,  546,  545,
+     1862,  706, 1871, 1880, 1889,  560,  537, 1898,  411, 1907,
+     1916, 1925,  512,  509,  250, 1934,  503, 1943, 1952, 1961,
+      509,  502, 1970, 1979, 1988,  496,  501,  503,  472, 1997,
+     2006, 2015,  436,  434, 2024, 2033, 2042,  427,  416, 2051,
+     2060, 2069,  399,  401, 2078,  507, 2087, 2096, 2105,  366,
+      286,  356,  347, 2114,  896, 2123, 2132, 2141,  320,  345,
+     2150,  518, 2159, 2168, 2177,  319,  385, 2186,  688, 2195,
+     2204, 2213,  316,  391, 2222,  910,  923,  323,  425, 3667,
+
+      306,  298, 2231, 2240, 2249,  317, 2258,  946,  929,  314,
+     2267,  969,  989,  312, 2275,  444,    0,    0,  274,  513,
+      254,   36, 2284, 1007, 2293, 2302, 2311,  534, 2319,  643,
+        0,    0,  271,  598, 2327,  699,    0,    0,  262,  657,
+     2336, 2345, 2354, 2363,  698, 3667,  206, 3667, 2372, 2381,
+     2390, 2399, 2408, 2417, 2426, 2435, 2444, 2453, 2462, 2471,
+     2480,  708, 2489, 2498, 2507, 2516,  997,    0, 2525, 1014,
+     2534, 2543, 2552, 2561, 2570, 2579,  729, 2588, 2597, 2606,
+     2615, 1030, 2624,  752, 2633, 2642, 2651, 2660, 1067, 2669,
+     2678, 2687, 2696,  763, 2705, 2714, 2723, 2732, 2741, 2750,
+
+     2759, 2768, 2777,  779, 2786, 2795, 2804, 2813, 1070, 2820,
+      778, 2845, 2854, 2863, 2872, 1107, 2881, 2890, 2899, 2906,
+      895, 2931, 2940, 2949, 2956,  897, 2981, 2990, 2999, 3008,
+     3017, 3026, 3035, 3044, 3053, 3062, 3071, 3080, 3089, 3098,
+     3107, 3116,  941, 3125, 3134, 3143, 3152, 1130, 3161, 3170,
+     3179, 3188,  942, 3197, 3206, 3215, 3224,  955, 3233, 3242,
+     3251, 3260, 3269, 3278, 3287, 3296, 3305, 3314, 3323, 3332,
+     3341, 3350, 3359,  207, 3366, 1076, 1031, 3391, 3400,  206,
+     3407, 1144,  205, 3430, 1168, 3667, 3467, 3473, 3479, 3485,
+     3491, 3497, 3503, 3508, 3514, 3520, 3526, 3532, 3538, 3544,
+
+     3550, 3556, 3562, 3568, 3574, 3580, 3586, 3592, 3595, 3601,
+     3606, 3612, 3618, 3624, 3630, 3636, 3642, 3648, 3654, 3660
     } ;
 
-static yyconst short int yy_def[514] =
+static yyconst short int yy_def[521] =
     {   0,
-      475,    1,  475,    3,  475,    5,  475,    7,  475,  476,
-      475,  475,  475,  477,  478,  475,  475,  479,  475,  480,
-      476,  476,  476,  475,  475,  475,   26,   26,  475,   26,
-       26,   26,   26,   26,   26,  481,  475,  482,  483,  482,
-      484,  475,  485,  481,   44,   44,  475,  482,  475,   49,
-       49,  475,   49,  486,  486,  487,  475,  488,  489,  486,
-      486,  486,  475,   63,   63,   63,  490,  475,  491,  492,
-      493,  494,  495,  496,  490,   75,   75,  494,  475,   79,
-       79,  494,   79,  476,  475,  475,  477,  497,  475,  478,
-      479,  480,  498,  476,  476,  476,  476,  476,   30,  499,
-
-       26,   26,   26,  475,  475,   30,   30,   30,   30,   30,
-      481,  482,  482,  483,  484,  485,  500,   44,  481,   44,
-       44,   44,   53,  501,   49,   49,   49,  475,  475,  486,
-      487,  488,  489,  486,  486,  486,  486,  486,   66,  502,
-       63,   63,   63,  490,  494,  491,  503,  504,  505,  506,
-      475,  507,  508,  509,  510,  511,  490,  490,  157,  157,
-      157,  512,  513,  475,  164,  164,  476,  476,  476,  499,
-       26,   26,   30,   30,   30,   30,   30,   44,   44,   44,
-      501,   49,   49,  486,  486,  486,  502,   63,   63,  490,
-      475,  494,  157,  157,  157,  513,  164,  164,  476,  476,
-
-      476,  476,  476,   26,   26,   30,   30,   30,   44,  481,
-       44,   44,   44,   49,   49,  486,  486,  486,  486,  486,
-       63,   63,  157,  490,  157,  157,  157,  164,  164,  476,
-      476,  476,   26,   26,   30,   30,   44,   44,   44,   49,
-       49,  486,  486,  486,   63,   63,  157,  157,  157,  164,
-      164,  476,  476,  476,  476,  476,   26,   26,   30,   30,
-       44,  481,   44,   44,   44,   49,   49,  486,  486,  486,
-      486,  486,   63,   63,  157,  490,  157,  157,  157,  164,
-      164,  476,  476,  476,   26,  475,  475,   30,   30,   44,
-       44,   44,   49,  486,  486,  486,   63,  157,  157,  157,
-
-      164,  494,  476,  476,  476,  476,  476,   26,   30,   30,
-       44,  481,   44,   44,   44,   49,  486,  486,  486,  486,
-      486,   63,  157,  490,  157,  157,  157,  164,  476,  476,
-      476,  476,  475,  475,   30,  475,   44,   44,   44,   44,
-      486,  486,  486,  486,  157,  157,  157,  157,  494,  476,
-      476,  476,  476,  476,  476,  476,   30,   44,  481,   44,
-       44,   44,   44,   44,  486,  486,  486,  486,  486,  486,
-      486,  157,  490,  157,  157,  157,  157,  157,  476,  476,
-      476,  476,  476,   44,   44,   44,   44,   44,  486,  486,
-      486,  486,  486,  157,  157,  157,  157,  157,  476,  476,
-
-      476,  476,  476,   44,  481,   44,   44,   44,  486,  486,
-      486,  486,  486,  157,  490,  157,  157,  157,  476,  476,
-      476,   44,   44,   44,  486,  486,  486,  157,  157,  157,
-      476,  476,  476,  476,  476,   44,  481,   44,   44,   44,
-      486,  486,  486,  486,  486,  157,  490,  157,  157,  157,
-      476,  476,  476,   44,   44,   44,  486,  486,  486,  157,
-      157,  157,  476,  476,  476,  481,   44,   44,  486,  486,
-      486,  490,  157,  157,    0,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475
+      486,    1,  486,    3,  486,    5,  486,    7,  486,  487,
+      486,  486,  486,  488,  489,  486,  486,  490,  486,  491,
+      487,   21,   21,  486,  486,  486,   26,   26,  487,   26,
+       26,   26,   26,   26,   26,  492,  486,  493,  494,  493,
+      495,  486,  496,  492,   44,   44,  486,  493,  486,   49,
+       49,  487,   49,  497,  497,  498,  486,  499,  500,  497,
+       60,   60,  486,   63,   63,  497,   63,  501,  486,  502,
+      503,  504,  505,  506,  501,   75,   75,  486,   78,   78,
+      501,   78,  487,  487,  486,  486,  488,  507,  486,  488,
+      489,  489,  490,  490,  491,  508,  487,  487,   21,   21,
+
+       21,   30,  509,   26,   26,   26,  487,  486,   30,   30,
+       30,   30,   30,  492,  493,  493,  494,  495,  496,  510,
+       44,   44,   44,   44,   44,   53,  511,   49,   49,   49,
+      487,  487,  497,  497,  498,  498,  499,  499,  500,  497,
+      497,   60,   60,   60,   67,  512,   63,   63,   63,  497,
+      501,  501,  502,  513,  153,  514,  515,  486,  514,  516,
+      516,  517,  517,  518,  501,  501,  501,  167,  167,  519,
+      520,  486,  172,  172,  501,   21,   21,   21,  509,   26,
+       26,  486,   30,   30,   30,   30,   30,   44,   44,   44,
+      511,   49,   49,   60,   60,   60,  512,   63,   63,  501,
+
+      486,  513,  153,  153,  167,  167,  167,  520,  172,  172,
+       21,  487,   21,   21,   21,   26,   26,   30,   30,   30,
+       44,  492,   44,   44,   44,   49,   49,   60,  497,   60,
+       60,   60,   63,   63,  513,  167,  501,  167,  167,  167,
+      172,  172,   21,   21,   21,   26,   26,   30,   30,   44,
+       44,   44,   49,   49,   60,   60,   60,   63,   63,  167,
+      167,  167,  172,  172,   21,  487,   21,   21,   21,   26,
+       26,   30,   30,   44,  492,   44,   44,   44,   49,   49,
+       60,  497,   60,   60,   60,   63,   63,  167,  501,  167,
+      167,  167,  172,  172,   21,  295,  295,   26,  486,  486,
+
+       30,   30,   44,   44,   44,   49,   60,  307,  307,   63,
+      167,  311,  311,  172,  295,  487,  295,  295,  295,   26,
+       30,   30,   44,  492,   44,   44,   44,   49,  307,  497,
+      307,  307,  307,   63,  311,  501,  311,  311,  311,  172,
+       21,   21,   21,   21,  486,  486,   30,  486,   44,   44,
+       44,   44,   60,   60,   60,   60,  167,  167,  167,  167,
+       21,  487,   21,   21,   21,   21,  487,   30,   44,  492,
+       44,   44,   44,   44,   44,   60,  497,   60,   60,   60,
+       60,  497,  167,  501,  167,  167,  167,  167,  501,   21,
+       21,   21,   21,  487,   44,   44,   44,   44,   44,   60,
+
+       60,   60,   60,  497,  167,  167,  167,  167,  501,  487,
+      487,   21,   21,   21,   44,  492,   44,   44,   44,  497,
+      497,   60,   60,   60,  501,  501,  167,  167,  167,   21,
+       21,   21,   44,   44,   44,   60,   60,   60,  167,  167,
+      167,   21,  487,   21,   21,   21,   44,  492,   44,   44,
+       44,   60,  497,   60,   60,   60,  167,  501,  167,  167,
+      167,   21,   21,   21,   44,   44,   44,   60,   60,   60,
+      167,  167,  167,  487,  487,  487,  492,   44,   44,  497,
+      497,  497,  501,  501,  501,    0,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486
     } ;
 
-static yyconst short int yy_nxt[3404] =
+static yyconst short int yy_nxt[3720] =
     {   0,
        10,   11,   12,   13,   10,   14,   15,   16,   17,   18,
        19,   10,   10,   20,   21,   22,   23,   21,   21,   21,
        21,   24,   25,   17,   26,   26,   26,   26,   26,   27,
        26,   28,   26,   26,   26,   26,   29,   10,   30,   30,
        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
-       30,   30,   31,   32,   33,  104,  105,  336,   34,  336,
+       30,   30,   31,   32,   33,  182,  108,  348,   34,  348,
        35,   36,   11,   37,   38,   36,   36,   39,   40,   40,
        41,   42,   36,   36,   43,   44,   45,   46,   44,   44,
        44,   44,   47,   48,   40,   49,   49,   49,   49,   49,
@@ -523,376 +524,410 @@ static yyconst short int yy_nxt[3404] =
        53,   53,   53,   54,   11,   12,   13,   54,   55,   56,
        17,   57,   58,   19,   54,   54,   59,   60,   61,   62,
        60,   60,   60,   60,   24,   25,   17,   63,   63,   63,
-       63,   63,   64,   63,   65,   63,   63,   63,   63,   29,
-       54,   66,   66,   66,   66,   66,   66,   66,   66,   66,
-       66,   66,   66,   66,   66,   67,   11,   68,   13,   69,
-       70,   71,   72,   72,   73,   19,   67,   67,   74,   75,
-       76,   77,   75,   75,   75,   75,   78,   25,   72,   79,
-       79,   79,   79,   79,   80,   79,   81,   79,   79,   79,
-
-       79,   82,   67,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   88,   89,   88,
-      104,  105,  441,   88,   88,   93,   88,   84,  112,   93,
-       93,  112,  112,  112,  286,  112,  112,   88,   88,   88,
-      104,  105,  104,  105,  431,   93,  112,  112,  112,  409,
-      112,  112,   88,   94,  287,   95,   95,   95,   95,   95,
-       95,   95,   94,  112,   96,   96,   96,   96,   96,   96,
-       96,   94,  399,   97,   97,   97,   97,   97,   98,   95,
-       84,  286,  365,  112,   84,   84,   84,  112,  112,   84,
-      350,   99,  100,   84,  101,  101,  101,  101,  101,  101,
-
-      101,  287,  112,  112,  101,  101,  101,  101,  101,  101,
-      101,  101,  101,  101,  101,  101,  357,  101,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,  383,
-      383,  383,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,  117,   99,  111,  286,  117,  117,
-      120,  120,  120,  120,  120,  120,  120,  121,  121,  121,
-      121,  121,  122,  112,  117,  112,  317,  287,  112,  112,
-      112,  335,  112,  112,  118,  303,  119,  119,  119,  119,
-      119,  119,  119,  328,  112,  112,  111,  112,  112,  112,
-
-      111,  111,  111,  112,  112,  111,  322,  123,  124,  111,
-      125,  125,  125,  125,  125,  125,  125,  316,  112,  112,
-      125,  125,  125,  125,  125,  125,  125,  125,  125,  125,
-      125,  125,  286,  125,  123,  123,  123,  123,  123,  123,
-      123,  123,  123,  123,  123,  123,  123,  123,  128,  105,
-      310,   93,  302,  130,  112,   93,   93,  129,  112,  112,
-      112,  286,  145,  145,  112,  112,  309,  308,  129,  129,
-      129,   93,  333,  112,  112,  301,  145,  297,  145,  112,
-      112,  287,  268,  129,  123,  123,  123,  123,  123,  123,
-      123,  145,  334,  293,  123,  123,  123,  123,  123,  123,
-
-      123,  123,  123,  123,  123,  123,  289,  123,  134,  288,
-      135,  135,  135,  135,  135,  135,  135,  134,  285,  136,
-      136,  136,  136,  136,  136,  136,  134,  252,  137,  137,
-      137,  137,  137,  138,  135,  130,  150,  151,  150,  130,
-      130,  130,  145,  145,  130,  150,  139,  140,  130,  141,
-      141,  141,  141,  141,  141,  141,  145,  150,  145,  141,
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,  145,  141,  139,  139,  139,  139,  139,  139,  139,
-      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
-      139,  139,  139,  139,  281,  333,  333,  139,  139,  139,
-
-      139,  139,  139,  139,  139,  139,  139,  139,  139,  280,
-      139,  147,  147,  147,  144,  334,  334,  148,  148,  333,
-      147,  145,  145,  333,   93,  274,  144,  273,  156,  156,
-      267,  148,  147,  148,  266,  145,  260,  145,  259,  349,
-      258,  257,  145,  334,  156,  251,  148,  150,  151,  150,
-      145,  250,  246,  152,  152,  245,  150,  145,  159,  159,
-      159,  159,  159,  159,  159,  216,  241,  152,  150,  152,
-      160,  160,  160,  160,  160,  161,  350,  240,  383,  383,
-      383,  206,  152,  145,  145,  236,  145,  145,  157,  235,
-      158,  158,  158,  158,  158,  158,  158,  145,  234,  145,
-
-      145,  233,  145,   93,  199,   84,  229,   93,   93,  393,
-      393,  393,  145,  144,  228,  145,  222,  144,  144,  144,
-      145,  145,  144,   93,  162,  163,  144,  164,  164,  164,
-      164,  164,  164,  164,  145,  221,  145,  164,  164,  164,
-      164,  164,  164,  164,  164,  164,  164,  164,  164,  145,
-      164,  162,  162,  162,  162,  162,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
-      162,  162,  215,  214,  206,  162,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  162,  162,  208,  162,   88,
-       89,   88,  145,  145,  206,   88,   88,  207,   88,  167,
-
-      168,  169,  167,  167,  167,  167,  145,  206,  145,   88,
-       88,   88,   94,  205,   95,   95,   95,   95,   95,   95,
-      204,  145,  198,  197,   88,   94,  151,   95,   95,   95,
-       95,   95,   95,   95,   94,  191,   95,   95,   95,   95,
-       95,   95,   95,   84,  145,  145,  112,   84,   84,   84,
-      112,  112,   84,  189,  188,   84,   84,  117,  145,  111,
-      145,  117,  117,  134,  183,  112,  112,   93,  182,  130,
-      112,   93,   93,  145,  112,  112,  112,  117,  111,  118,
-      178,  179,  180,  178,  178,  178,  178,   93,  111,  112,
-      112,  111,  113,  177,  112,  111,  111,  111,  112,  112,
-
-      111,  176,  175,  111,  111,  184,  185,  186,  184,  184,
-      184,  184,  174,  112,  112,  134,  173,  135,  135,  135,
-      135,  135,  135,  135,  134,  172,  135,  135,  135,  135,
-      135,  135,  135,  134,  171,  135,  135,  135,  135,  135,
-      135,  130,   94,   89,   86,  130,  130,  130,   85,  166,
-      130,  165,  143,  130,  130,  147,  147,  147,  190,  142,
-      127,  148,  148,  126,  147,  147,  147,  147,  192,  113,
-      110,   93,  109,  145,  147,  148,  147,  148,  365,  108,
-      393,  393,  393,   93,  107,  144,  147,  156,  156,  145,
-      148,  150,  151,  150,  145,  145,  106,  152,  152,  157,
-
-      150,  145,  103,  156,  145,  102,   86,   85,  145,  475,
-      145,  152,  150,  152,  475,  199,  145,  200,  200,  200,
-      200,  200,  200,  145,  475,  475,  152,  145,  145,  475,
-      475,  475,  475,  475,  193,  194,  195,  193,  193,  193,
-      193,  145,   84,  145,  475,  475,   84,   84,   84,  475,
-      475,   84,  475,  475,  100,   84,  145,  157,  475,  158,
-      158,  158,  158,  158,  158,  158,  157,  475,  158,  158,
-      158,  158,  158,  158,  158,  157,  475,  158,  158,  158,
-      158,  158,  158,  144,  144,  145,  145,  475,  144,  144,
-      144,  145,  145,  144,  475,  475,  163,  144,  475,  145,
-
-      475,  145,  475,  475,  130,  145,  475,  145,  130,  130,
-      130,  475,  475,  130,  145,  475,  140,  130,  475,  475,
-      145,  144,  475,  475,  475,  144,  144,  144,  145,  145,
-      144,  475,  475,  144,  144,  230,  231,  232,  230,  230,
-      230,  230,  145,  475,  145,  242,  243,  244,  242,  242,
-      242,  242,  475,  475,  475,  475,  475,  145,  144,  475,
-      475,  475,  144,  144,  144,  145,  145,  144,  475,  162,
-      163,  144,  164,  164,  164,  164,  164,  164,  164,  145,
-      475,  145,  164,  164,  164,  164,  164,  164,  164,  164,
-      164,  164,  164,  164,  145,  164,  162,  162,  162,  162,
-
-      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
-      199,  475,  200,  200,  200,  200,  200,  200,  200,  199,
-      475,  201,  201,  201,  201,  201,  201,  201,  199,  475,
-      202,  202,  202,  202,  202,  203,  200,  209,  475,  210,
-      210,  210,  210,  210,  210,  210,  209,  475,  211,  211,
-      211,  211,  211,  211,  211,  209,  475,  212,  212,  212,
-      212,  212,  213,  210,  111,  475,  475,  112,  111,  111,
-      111,  112,  112,  111,  475,  475,  124,  111,  216,  475,
-      217,  217,  217,  217,  217,  217,  112,  112,  216,  475,
-      217,  217,  217,  217,  217,  217,  217,  216,  475,  218,
-
-      218,  218,  218,  218,  218,  218,  216,  475,  219,  219,
-      219,  219,  219,  220,  217,  223,  475,  224,  224,  224,
-      224,  224,  224,  224,  223,  475,  225,  225,  225,  225,
-      225,  225,  225,  223,  475,  226,  226,  226,  226,  226,
-      227,  224,  144,  475,  145,  145,  144,  144,  144,  145,
-      145,  144,  112,  475,  163,  144,  112,  112,  145,  475,
-      145,  209,  475,  145,  475,  145,  475,  475,  475,  475,
-      475,  112,  112,  145,  475,  475,  475,  475,  145,  199,
-      475,  200,  200,  200,  200,  200,  200,  200,  199,  475,
-      200,  200,  200,  200,  200,  200,  200,  111,  475,  237,
-
-      238,  239,  237,  237,  237,  237,  209,  475,  210,  210,
-      210,  210,  210,  210,  210,  209,  475,  210,  210,  210,
-      210,  210,  210,  210,  209,  475,  210,  210,  210,  210,
-      210,  210,  111,  216,  475,  217,  217,  217,  217,  217,
-      217,  217,  216,  475,  217,  217,  217,  217,  217,  217,
-      217,  247,  248,  249,  247,  247,  247,  247,  145,  145,
-      475,  475,  475,  223,  282,  283,  284,  282,  282,  282,
-      282,  475,  145,  252,  145,  253,  253,  253,  253,  253,
-      253,  463,  463,  463,  463,  463,  463,  145,  223,  475,
-      224,  224,  224,  224,  224,  224,  224,  223,  475,  224,
-
-      224,  224,  224,  224,  224,  224,  223,  475,  224,  224,
-      224,  224,  224,  224,  144,  252,  475,  253,  253,  253,
-      253,  253,  253,  253,  252,  475,  254,  254,  254,  254,
-      254,  254,  254,  252,  475,  255,  255,  255,  255,  255,
-      256,  253,  261,  475,  262,  262,  262,  262,  262,  262,
-      262,  261,  475,  263,  263,  263,  263,  263,  263,  263,
-      261,  475,  264,  264,  264,  264,  264,  265,  262,  268,
-      475,  269,  269,  269,  269,  269,  269,  269,  268,  475,
-      270,  270,  270,  270,  270,  270,  270,  268,  475,  271,
-      271,  271,  271,  271,  272,  269,  275,  475,  276,  276,
-
-      276,  276,  276,  276,  276,  275,  475,  277,  277,  277,
-      277,  277,  277,  277,  275,  475,  278,  278,  278,  278,
-      278,  279,  276,  252,  475,  253,  253,  253,  253,  253,
-      253,  253,  252,  475,  253,  253,  253,  253,  253,  253,
-      253,  111,  475,  290,  291,  292,  290,  290,  290,  290,
-      112,  475,  475,  475,  112,  112,  475,  475,  475,  261,
-      294,  295,  296,  294,  294,  294,  294,  475,  475,  112,
-      112,  261,  475,  262,  262,  262,  262,  262,  262,  262,
-      261,  475,  262,  262,  262,  262,  262,  262,  262,  261,
-      475,  262,  262,  262,  262,  262,  262,  111,  268,  475,
-
-      269,  269,  269,  269,  269,  269,  269,  268,  475,  269,
-      269,  269,  269,  269,  269,  269,  268,  475,  269,  269,
-      269,  269,  269,  269,  298,  299,  300,  298,  298,  298,
-      298,  145,  145,  475,  475,  475,  275,  329,  330,  331,
-      332,  329,  329,  329,  475,  145,  475,  145,  303,  304,
-      304,  304,  304,  304,  304,  475,  475,  475,  475,  475,
-      145,  275,  475,  276,  276,  276,  276,  276,  276,  276,
-      275,  475,  276,  276,  276,  276,  276,  276,  276,  275,
-      475,  276,  276,  276,  276,  276,  276,  144,  303,  304,
-      304,  304,  304,  304,  304,  304,  303,  305,  305,  305,
-
-      305,  305,  305,  305,  303,  306,  306,  306,  306,  306,
-      307,  304,  111,  311,  312,  312,  312,  312,  312,  312,
-      312,  111,  311,  313,  313,  313,  313,  313,  313,  313,
-      111,  311,  314,  314,  314,  314,  314,  315,  312,  317,
-      318,  318,  318,  318,  318,  318,  318,  317,  319,  319,
-      319,  319,  319,  319,  319,  317,  320,  320,  320,  320,
-      320,  321,  318,  323,  324,  324,  324,  324,  324,  324,
-      324,  323,  325,  325,  325,  325,  325,  325,  325,  323,
-      326,  326,  326,  326,  326,  327,  324,  303,  304,  304,
-      304,  304,  304,  304,  304,  303,  304,  304,  304,  304,
-
-      304,  304,  304,  111,  475,  337,  338,  339,  340,  337,
-      337,  337,  112,  475,  475,  475,  112,  112,  475,  475,
-      475,  475,  311,  341,  342,  343,  344,  341,  341,  341,
-      475,  112,  112,  111,  311,  312,  312,  312,  312,  312,
-      312,  312,  111,  311,  312,  312,  312,  312,  312,  312,
-      312,  111,  311,  312,  312,  312,  312,  312,  312,  111,
-      317,  318,  318,  318,  318,  318,  318,  318,  317,  318,
-      318,  318,  318,  318,  318,  318,  317,  318,  318,  318,
-      318,  318,  318,  345,  346,  347,  348,  345,  345,  345,
-      145,  145,  475,  475,  475,  475,  323,  379,  380,  381,
-
-      379,  379,  379,  379,  145,  475,  145,  389,  390,  391,
-      389,  389,  389,  389,  475,  475,  475,  475,  475,  145,
-      323,  324,  324,  324,  324,  324,  324,  324,  323,  324,
-      324,  324,  324,  324,  324,  324,  323,  324,  324,  324,
-      324,  324,  324,  144,  350,  475,  351,  351,  351,  351,
-      351,  351,  351,  350,  475,  352,  352,  352,  352,  352,
-      352,  352,  350,  475,  353,  353,  353,  353,  353,  354,
-      355,  350,  475,  356,  356,  356,  351,  351,  351,  351,
-      358,  475,  359,  359,  359,  359,  359,  359,  359,  358,
-      475,  360,  360,  360,  360,  360,  360,  360,  358,  475,
-
-      361,  361,  361,  361,  361,  362,  363,  358,  475,  364,
-      364,  364,  359,  359,  359,  359,  365,  475,  366,  366,
-      366,  366,  366,  366,  366,  365,  475,  367,  367,  367,
-      367,  367,  367,  367,  365,  475,  368,  368,  368,  368,
-      368,  369,  370,  365,  475,  371,  371,  371,  366,  366,
-      366,  366,  372,  475,  373,  373,  373,  373,  373,  373,
-      373,  372,  475,  374,  374,  374,  374,  374,  374,  374,
-      372,  475,  375,  375,  375,  375,  375,  376,  377,  372,
-      475,  378,  378,  378,  373,  373,  373,  373,  350,  475,
-      355,  355,  355,  355,  355,  355,  355,  350,  475,  355,
-
-      355,  355,  355,  355,  355,  355,  350,  475,  355,  355,
-      355,  355,  355,  355,  382,  350,  475,  382,  382,  382,
-      382,  382,  382,  382,  111,  475,  384,  385,  386,  384,
-      384,  384,  384,  112,  475,  475,  475,  112,  112,  475,
-      475,  475,  358,  394,  395,  396,  394,  394,  394,  394,
-      475,  475,  112,  112,  358,  475,  363,  363,  363,  363,
-      363,  363,  363,  358,  475,  363,  363,  363,  363,  363,
-      363,  363,  358,  475,  363,  363,  363,  363,  363,  363,
-      387,  358,  475,  387,  387,  387,  387,  387,  387,  387,
-      358,  475,  388,  388,  388,  111,  111,  111,  111,  365,
-
-      475,  370,  370,  370,  370,  370,  370,  370,  365,  475,
-      370,  370,  370,  370,  370,  370,  370,  365,  475,  370,
-      370,  370,  370,  370,  370,  392,  365,  475,  392,  392,
-      392,  392,  392,  392,  392,  145,  145,  475,  475,  475,
-      372,  382,  382,  382,  382,  382,  382,  382,  475,  145,
-      475,  145,  392,  392,  392,  392,  392,  392,  392,  475,
-      475,  475,  475,  475,  145,  372,  475,  377,  377,  377,
-      377,  377,  377,  377,  372,  475,  377,  377,  377,  377,
-      377,  377,  377,  372,  475,  377,  377,  377,  377,  377,
-      377,  397,  372,  475,  397,  397,  397,  397,  397,  397,
-
-      397,  372,  475,  398,  398,  398,  144,  144,  144,  144,
-      399,  475,  400,  400,  400,  400,  400,  400,  400,  399,
-      475,  401,  401,  401,  401,  401,  401,  401,  399,  475,
-      402,  402,  402,  402,  402,  403,  400,  404,  475,  405,
-      405,  405,  405,  405,  405,  405,  404,  475,  406,  406,
-      406,  406,  406,  406,  406,  404,  475,  407,  407,  407,
-      407,  407,  408,  405,  111,  475,  387,  387,  387,  387,
-      387,  387,  387,  111,  475,  388,  388,  388,  111,  111,
-      111,  111,  409,  475,  410,  410,  410,  410,  410,  410,
-      410,  409,  475,  411,  411,  411,  411,  411,  411,  411,
-
-      409,  475,  412,  412,  412,  412,  412,  413,  410,  414,
-      475,  415,  415,  415,  415,  415,  415,  415,  414,  475,
-      416,  416,  416,  416,  416,  416,  416,  414,  475,  417,
-      417,  417,  417,  417,  418,  415,  397,  397,  397,  397,
-      397,  397,  397,  398,  398,  398,  144,  144,  144,  144,
-      419,  420,  421,  419,  419,  419,  419,  399,  475,  400,
-      400,  400,  400,  400,  400,  400,  399,  475,  400,  400,
-      400,  400,  400,  400,  400,  399,  475,  400,  400,  400,
-      400,  400,  400,  111,  475,  422,  423,  424,  422,  422,
-      422,  422,  112,  475,  475,  475,  112,  112,  475,  475,
-
-      475,  404,  425,  426,  427,  425,  425,  425,  425,  475,
-      475,  112,  112,  404,  475,  405,  405,  405,  405,  405,
-      405,  405,  404,  475,  405,  405,  405,  405,  405,  405,
-      405,  404,  475,  405,  405,  405,  405,  405,  405,  111,
-      409,  475,  410,  410,  410,  410,  410,  410,  410,  409,
-      475,  410,  410,  410,  410,  410,  410,  410,  409,  475,
-      410,  410,  410,  410,  410,  410,  428,  429,  430,  428,
-      428,  428,  428,  145,  145,  475,  475,  475,  414,  451,
-      452,  453,  451,  451,  451,  451,  475,  145,  431,  145,
-      432,  432,  432,  432,  432,  432,  469,  469,  469,  469,
-
-      469,  469,  145,  414,  475,  415,  415,  415,  415,  415,
-      415,  415,  414,  475,  415,  415,  415,  415,  415,  415,
-      415,  414,  475,  415,  415,  415,  415,  415,  415,  144,
-      431,  475,  432,  432,  432,  432,  432,  432,  432,  431,
-      475,  433,  433,  433,  433,  433,  433,  433,  431,  475,
-      434,  434,  434,  434,  434,  435,  432,  436,  475,  437,
-      437,  437,  437,  437,  437,  437,  436,  475,  438,  438,
-      438,  438,  438,  438,  438,  436,  475,  439,  439,  439,
-      439,  439,  440,  437,  441,  475,  442,  442,  442,  442,
-      442,  442,  442,  441,  475,  443,  443,  443,  443,  443,
-
-      443,  443,  441,  475,  444,  444,  444,  444,  444,  445,
-      442,  446,  475,  447,  447,  447,  447,  447,  447,  447,
-      446,  475,  448,  448,  448,  448,  448,  448,  448,  446,
-      475,  449,  449,  449,  449,  449,  450,  447,  431,  475,
-      432,  432,  432,  432,  432,  432,  432,  431,  475,  432,
-      432,  432,  432,  432,  432,  432,  111,  475,  454,  455,
-      456,  454,  454,  454,  454,  112,  475,  475,  475,  112,
-      112,  475,  475,  475,  436,  457,  458,  459,  457,  457,
-      457,  457,  475,  475,  112,  112,  436,  475,  437,  437,
-      437,  437,  437,  437,  437,  436,  475,  437,  437,  437,
-
-      437,  437,  437,  437,  436,  475,  437,  437,  437,  437,
-      437,  437,  111,  441,  475,  442,  442,  442,  442,  442,
-      442,  442,  441,  475,  442,  442,  442,  442,  442,  442,
-      442,  441,  475,  442,  442,  442,  442,  442,  442,  460,
-      461,  462,  460,  460,  460,  460,  145,  145,  475,  475,
-      475,  446,  463,  463,  463,  463,  463,  463,  463,  475,
-      145,  475,  145,  451,  451,  451,  451,  451,  451,  451,
-      475,  475,  475,  475,  475,  145,  446,  475,  447,  447,
-      447,  447,  447,  447,  447,  446,  475,  447,  447,  447,
-      447,  447,  447,  447,  446,  475,  447,  447,  447,  447,
-
-      447,  447,  144,  464,  464,  464,  464,  464,  465,  463,
-      111,  475,  466,  466,  466,  466,  466,  466,  466,  111,
-      475,  454,  454,  454,  454,  454,  454,  454,  111,  475,
-      467,  467,  467,  467,  467,  468,  466,  469,  469,  469,
-      469,  469,  469,  469,  457,  457,  457,  457,  457,  457,
-      457,  470,  470,  470,  470,  470,  471,  469,  472,  472,
-      472,  472,  472,  472,  472,  460,  460,  460,  460,  460,
-      460,  460,  473,  473,  473,  473,  473,  474,  472,  463,
-      463,  463,  463,  463,  463,  463,  111,  475,  466,  466,
-      466,  466,  466,  466,  466,  111,  475,  466,  466,  466,
-
-      466,  466,  466,  111,  469,  469,  469,  469,  469,  469,
-      469,  472,  472,  472,  472,  472,  472,  472,  472,  472,
-      472,  472,  472,  472,  144,   84,  475,  475,   84,   87,
-       87,   87,   87,   87,   87,   87,   90,  475,  475,   90,
-       91,  475,  475,   91,   92,  475,   92,   92,   92,  111,
-      475,  111,  111,  111,  475,  111,  112,  475,  112,  112,
-      112,  475,  112,  114,  475,  114,  114,  114,  475,  114,
-      115,  475,  115,  115,  115,  475,  115,  116,  475,  116,
-      116,  116,  475,  116,  130,  475,  475,  130,  131,  475,
-      475,  131,  132,  475,  475,  132,  133,  475,  133,  133,
-
-      133,  144,  475,  475,  144,  144,  144,  146,  146,  146,
-      146,  146,  146,  146,  149,  149,  149,  149,  149,  149,
-      149,  153,  475,  475,  153,  153,  153,  145,  475,  475,
-      145,  145,  145,  154,  475,  475,  154,  154,  154,  155,
-      475,  155,  155,  155,  155,   88,   88,   88,   88,   88,
-       88,   88,   93,  475,   93,  475,   93,  170,  475,  475,
-      170,  117,  475,  117,  117,  117,  475,  117,  181,  475,
-      181,  181,  181,  475,  181,  187,  475,  475,  187,  147,
-      147,  147,  147,  147,  147,  147,  148,  148,  148,  148,
-      148,  148,  148,  149,  149,  149,  149,  149,  149,  149,
-
-      150,  150,  150,  150,  150,  150,  150,  152,  152,  152,
-      152,  152,  152,  152,  153,  475,  475,  153,  153,  153,
-      154,  475,  475,  154,  154,  154,  155,  475,  155,  155,
-      155,  155,  156,  475,  156,  156,  156,  156,  162,  475,
-      475,  162,  162,  162,  196,  475,  475,  196,  196,  196,
-        9,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-
-      475,  475,  475
+       63,   63,   64,   63,   65,   63,   63,   63,   63,   66,
+       54,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   68,   11,   69,   13,   70,
+       71,   72,   17,   17,   73,   19,   68,   68,   74,   75,
+       76,   77,   75,   75,   75,   75,   24,   25,   17,   78,
+       78,   78,   78,   78,   79,   78,   80,   78,   78,   78,
+
+       78,   81,   68,   82,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   88,   89,   88,
+       97,  182,  108,   88,   88,   96,   88,   83,  201,   96,
+       96,  100,  100,  100,  100,  100,  101,   88,   88,   88,
+      115,  152,  134,   84,   84,   96,  124,  124,  124,  124,
+      124,  125,   90,  235,  201,  368,   84,  115,   84,   97,
+      202,   98,   98,   98,   98,   98,   98,   98,   99,   99,
+       99,   99,   99,   99,   99,  123,  123,  123,  123,  123,
+      123,  123,  151,   84,   83,  202,  202,  299,   83,   83,
+       83,  133,  347,   83,   83,  102,  103,   83,  104,  104,
+
+      104,  104,  104,  104,  104,  182,  108,  300,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+       84,  104,  102,  102,  102,  102,  102,  102,  102,  102,
+      102,  102,  102,  102,  102,  102,  107,  108,   83,  340,
+       84,  334,   83,   83,  328,   83,  299,  322,  115,  321,
+      320,  314,  115,  115,  310,  306,   83,   83,   83,  102,
+      102,  102,  102,  102,  102,  102,  300,  115,  115,  102,
+      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
+      102,   84,  102,  115,  140,  115,  299,  115,  115,  115,
+      115,  120,  299,  114,  115,  120,  120,  302,  115,  115,
+
+      301,  298,  115,  115,  115,  115,  300,  165,  134,  211,
+      115,  120,  300,  115,  115,   96,   92,  133,   94,   96,
+       96,  182,  108,  228,   84,  115,  299,   84,  294,  115,
+      115,  152,  293,   84,  121,   96,  122,  122,  122,  122,
+      122,  122,  122,  287,  115,  115,  300,  134,  134,  142,
+      142,  142,  142,  142,  142,  142,  134,  315,   84,  114,
+      286,  280,  115,  114,  114,  114,  115,  115,  114,  279,
+      126,  127,  114,  128,  128,  128,  128,  128,  128,  128,
+       84,  115,  115,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,   84,  128,  126,  126,  126,
+
+      126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
+      126,  131,  108,   83,  345,  236,  273,   83,   83,  265,
+      132,  143,  143,  143,  143,  143,  144,  272,  271,  270,
+      281,  132,  132,   83,  346,  345,   96,  264,  151,  152,
+       96,   96,  263,   84,  259,  258,  132,  126,  126,  126,
+      126,  126,  126,  126,  134,  346,   96,  126,  126,  126,
+      126,  126,  126,  126,  126,  126,  126,  126,  126,  152,
+      126,  140,  254,  141,  141,  141,  141,  141,  141,  141,
+      167,  167,  167,  167,  167,  167,  167,  168,  168,  168,
+      168,  168,  169,  253,  218,  134,  133,  249,  248,  345,
+
+      133,  133,  133,  247,  246,  133,  242,  145,  146,  133,
+      147,  147,  147,  147,  147,  147,  147,  182,  108,  346,
+      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+      147,  147,  134,  147,  145,  145,  145,  145,  145,  145,
+      145,  145,  145,  145,  145,  145,  145,  145,  150,  108,
+      133,  241,  152,  203,  133,  133,  329,  133,  345,  152,
+       96,  234,   83,  233,   96,   96,  227,  226,  133,  133,
+      133,  145,  145,  145,  145,  145,  145,  145,  346,  134,
+       96,  145,  145,  145,  145,  145,  145,  145,  145,  145,
+      145,  145,  145,   84,  145,  154,  154,  154,  151,  345,
+
+      288,  154,  154,  115,  154,  218,  115,  115,  115,  115,
+      115,  115,  335,  115,  115,  154,  154,  154,  221,  346,
+      361,  220,  115,  115,  152,  115,  115,  218,  115,  115,
+      155,  157,  158,  157,  219,  152,   92,  157,  157,   94,
+      157,  376,   84,  120,   84,  114,  218,  120,  120,  217,
+      216,  157,  157,  157,  114,  114,  114,  114,  114,  114,
+      114,  210,  115,  120,  383,  134,  159,  165,  209,  166,
+      166,  166,  166,  166,  166,  166,   84,  394,  394,  394,
+       96,  151,  133,  163,   96,   96,  161,  158,  152,  158,
+      410,  152,  151,  404,  404,  404,  151,  151,  151,   84,
+
+       96,  151,  152,  170,  171,  151,  172,  172,  172,  172,
+      172,  172,  172,  134,   84,  134,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  152,  172,
+      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
+      170,  170,  170,  170,  175,  108,  151,  199,  198,  133,
+      151,  151,  138,  151,  136,  134,   96,   84,  151,  193,
+       96,   96,  192,  114,  151,  151,  151,  170,  170,  170,
+      170,  170,  170,  170,  116,  187,   96,  170,  170,  170,
+      170,  170,  170,  170,  170,  170,  170,  170,  170,  152,
+      170,   83,  186,   83,  185,  184,  183,   83,   83,  115,
+
+       83,  181,  180,  115,  115,   83,   94,  420,  274,  425,
+       92,   83,   83,   83,   88,   89,   88,   89,  115,  115,
+       88,   88,   89,   88,  317,  317,  317,  317,  317,  317,
+      317,  134,   84,  152,   88,   88,   88,  318,  318,  318,
+      318,  318,  319,  332,  332,  332,  332,  332,  333,   90,
+       91,   86,   91,  442,  452,   85,   91,   91,   84,   91,
+      331,  331,  331,  331,  331,  331,  331,  457,  174,  173,
+       91,   91,   91,   93,  163,   93,  161,   84,  134,   93,
+       93,  152,   93,  337,  337,  337,  337,  337,  337,  337,
+      149,  152,  148,   93,   93,   93,  176,  177,  178,  176,
+
+      176,  176,  176,  338,  338,  338,  338,  338,  339,  361,
+      115,  394,  394,  394,  115,  115,  138,  115,   84,   83,
+      323,  115,  115,   83,   83,   83,  369,  136,   83,  115,
+      115,   83,   83,   84,  115,  134,  115,  115,  115,  115,
+      134,  130,  376,   84,  404,  404,  404,  129,  116,  113,
+       84,  112,  111,  115,  115,   84,  114,  110,  188,  189,
+      190,  188,  188,  188,  188,  114,  134,   84,  115,  114,
+      114,  114,  115,  115,  114,  109,  106,  114,  114,  383,
+      105,  409,  409,  409,  409,  409,  409,  115,  115,   94,
+      474,  474,  474,  474,  474,  474,   92,   86,   85,   84,
+
+      486,   84,  133,  152,  133,  486,  152,  486,  133,  133,
+      115,  133,   84,  486,  115,  115,  486,  486,  486,  415,
+      486,  486,  133,  133,  133,  135,  486,  135,  486,  115,
+      115,  135,  135,  115,  135,  486,  486,  115,  115,  486,
+      486,  486,  447,   84,  486,  135,  135,  135,  137,  486,
+      137,  486,  115,  115,  137,  137,  486,  137,  480,  480,
+      480,  480,  480,  480,  486,  486,   84,  486,  137,  137,
+      137,  194,  195,  196,  194,  194,  194,  194,  486,  486,
+      134,  486,  483,  483,  483,  483,  483,  483,  486,  486,
+      486,  486,  486,  134,  133,  486,  486,  486,  133,  133,
+
+      133,  486,  486,  133,  152,  486,  133,  133,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      134,  151,  486,  151,  486,  486,  486,  151,  151,  486,
+      151,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  151,  151,  151,  154,  154,  154,  200,  486,  486,
+      154,  154,  486,  154,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  154,  154,  154,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  155,
+      153,  486,  153,  203,  486,  486,  153,  153,  486,  153,
+
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      153,  153,  153,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  204,  157,  158,  157,  486,
+      486,  486,  157,  157,  486,  157,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  157,  157,  157,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  159,  160,  486,  160,  486,  486,  486,  160,  160,
+      486,  160,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  160,  160,  160,  162,  486,  162,  486,  486,
+      486,  162,  162,  486,  162,  486,  486,  486,  486,  486,
+
+      486,  486,  486,  486,  486,  162,  162,  162,  205,  206,
+      207,  205,  205,  205,  205,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      152,  165,  486,  166,  166,  166,  166,  166,  166,  166,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  152,  151,  486,  486,  486,
+      151,  151,  151,  486,  486,  151,  486,  486,  171,  151,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  152,  151,  486,  486,  486,  151,  151,  151,
+
+      486,  486,  151,  486,  486,  151,  151,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  152,
+      151,  486,  486,  486,  151,  151,  151,  486,  486,  151,
+      486,  170,  171,  151,  172,  172,  172,  172,  172,  172,
+      172,  486,  486,  486,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  152,  172,  170,  170,
+      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
+      170,  170,  211,  486,  212,  212,  212,  212,  212,  212,
+      212,  211,  486,  213,  213,  213,  213,  213,  213,  213,
+
+      211,  486,  214,  214,  214,  214,  214,  215,  212,   83,
+      486,  486,  486,   83,   83,   83,  486,  486,   83,  486,
+      486,  103,   83,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,   84,  221,  486,  222,  222,
+      222,  222,  222,  222,  222,  221,  486,  223,  223,  223,
+      223,  223,  223,  223,  221,  486,  224,  224,  224,  224,
+      224,  225,  222,  114,  486,  486,  115,  114,  114,  114,
+      115,  115,  114,  486,  486,  127,  114,  486,  486,  486,
+      486,  486,  486,  486,  486,  115,  115,  486,  486,  486,
+
+      486,  486,  486,  486,  486,  486,  486,  486,  486,   84,
+      228,  486,  229,  229,  229,  229,  229,  229,  229,  228,
+      486,  230,  230,  230,  230,  230,  230,  230,  228,  486,
+      231,  231,  231,  231,  231,  232,  229,  133,  486,  486,
+      486,  133,  133,  133,  486,  486,  133,  486,  486,  146,
+      133,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  134,  236,  486,  237,  237,  237,  237,
+      237,  237,  237,  236,  486,  238,  238,  238,  238,  238,
+      238,  238,  236,  486,  239,  239,  239,  239,  239,  240,
+
+      237,  151,  486,  486,  486,  151,  151,  151,  486,  486,
+      151,  486,  486,  171,  151,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  152,   83,  486,
+      243,  244,  245,  243,  243,  243,  243,  211,  486,  212,
+      212,  212,  212,  212,  212,  212,  211,  486,  212,  212,
+      212,  212,  212,  212,  212,  211,  486,  212,  212,  212,
+      212,  212,  212,   83,  114,  486,  250,  251,  252,  250,
+      250,  250,  250,  221,  486,  222,  222,  222,  222,  222,
+      222,  222,  221,  486,  222,  222,  222,  222,  222,  222,
+
+      222,  221,  486,  222,  222,  222,  222,  222,  222,  114,
+      133,  486,  255,  256,  257,  255,  255,  255,  255,  228,
+      486,  229,  229,  229,  229,  229,  229,  229,  228,  486,
+      229,  229,  229,  229,  229,  229,  229,  228,  486,  229,
+      229,  229,  229,  229,  229,  133,  151,  486,  260,  261,
+      262,  260,  260,  260,  260,  236,  486,  237,  237,  237,
+      237,  237,  237,  237,  236,  486,  237,  237,  237,  237,
+      237,  237,  237,  236,  486,  237,  237,  237,  237,  237,
+      237,  151,  265,  486,  266,  266,  266,  266,  266,  266,
+      266,  265,  486,  267,  267,  267,  267,  267,  267,  267,
+
+      265,  486,  268,  268,  268,  268,  268,  269,  266,  274,
+      486,  275,  275,  275,  275,  275,  275,  275,  274,  486,
+      276,  276,  276,  276,  276,  276,  276,  274,  486,  277,
+      277,  277,  277,  277,  278,  275,  281,  486,  282,  282,
+      282,  282,  282,  282,  282,  281,  486,  283,  283,  283,
+      283,  283,  283,  283,  281,  486,  284,  284,  284,  284,
+      284,  285,  282,  288,  486,  289,  289,  289,  289,  289,
+      289,  289,  288,  486,  290,  290,  290,  290,  290,  290,
+      290,  288,  486,  291,  291,  291,  291,  291,  292,  289,
+       83,  486,  295,  296,  297,  295,  295,  295,  295,  265,
+
+      486,  266,  266,  266,  266,  266,  266,  266,  265,  486,
+      266,  266,  266,  266,  266,  266,  266,  265,  486,  266,
+      266,  266,  266,  266,  266,   83,  114,  486,  303,  304,
+      305,  303,  303,  303,  303,  274,  486,  275,  275,  275,
+      275,  275,  275,  275,  274,  486,  275,  275,  275,  275,
+      275,  275,  275,  274,  486,  275,  275,  275,  275,  275,
+      275,  114,  133,  486,  307,  308,  309,  307,  307,  307,
+      307,  281,  486,  282,  282,  282,  282,  282,  282,  282,
+      281,  486,  282,  282,  282,  282,  282,  282,  282,  281,
+      486,  282,  282,  282,  282,  282,  282,  133,  151,  486,
+
+      311,  312,  313,  311,  311,  311,  311,  288,  486,  289,
+      289,  289,  289,  289,  289,  289,  288,  486,  289,  289,
+      289,  289,  289,  289,  289,  288,  486,  289,  289,  289,
+      289,  289,  289,  151,   83,  315,  316,  316,  316,  316,
+      316,  316,  316,  114,  323,  324,  324,  324,  324,  324,
+      324,  324,  114,  323,  325,  325,  325,  325,  325,  325,
+      325,  114,  323,  326,  326,  326,  326,  326,  327,  324,
+      133,  329,  330,  330,  330,  330,  330,  330,  330,  151,
+      335,  336,  336,  336,  336,  336,  336,  336,   83,  341,
+      342,  343,  344,  341,  341,  341,  114,  486,  349,  350,
+
+      351,  352,  349,  349,  349,  114,  323,  324,  324,  324,
+      324,  324,  324,  324,  114,  323,  324,  324,  324,  324,
+      324,  324,  324,  114,  323,  324,  324,  324,  324,  324,
+      324,  114,  133,  353,  354,  355,  356,  353,  353,  353,
+      151,  357,  358,  359,  360,  357,  357,  357,  361,  486,
+      362,  362,  362,  362,  362,  362,  362,  361,  486,  363,
+      363,  363,  363,  363,  363,  363,  361,  486,  364,  364,
+      364,  364,  364,  365,  366,  361,  486,  367,  367,  367,
+      362,  362,  362,  362,  369,  486,  370,  370,  370,  370,
+      370,  370,  370,  369,  486,  371,  371,  371,  371,  371,
+
+      371,  371,  369,  486,  372,  372,  372,  372,  372,  373,
+      374,  369,  486,  375,  375,  375,  370,  370,  370,  370,
+      376,  486,  377,  377,  377,  377,  377,  377,  377,  376,
+      486,  378,  378,  378,  378,  378,  378,  378,  376,  486,
+      379,  379,  379,  379,  379,  380,  381,  376,  486,  382,
+      382,  382,  377,  377,  377,  377,  383,  486,  384,  384,
+      384,  384,  384,  384,  384,  383,  486,  385,  385,  385,
+      385,  385,  385,  385,  383,  486,  386,  386,  386,  386,
+      386,  387,  388,  383,  486,  389,  389,  389,  384,  384,
+      384,  384,   83,  486,  390,  391,  392,  390,  390,  390,
+
+      390,  361,  486,  366,  366,  366,  366,  366,  366,  366,
+      361,  486,  366,  366,  366,  366,  366,  366,  366,  361,
+      486,  366,  366,  366,  366,  366,  366,  393,  361,  486,
+      393,  393,  393,  393,  393,  393,  393,  114,  486,  395,
+      396,  397,  395,  395,  395,  395,  369,  486,  374,  374,
+      374,  374,  374,  374,  374,  369,  486,  374,  374,  374,
+      374,  374,  374,  374,  369,  486,  374,  374,  374,  374,
+      374,  374,  398,  369,  486,  398,  398,  398,  398,  398,
+      398,  398,  369,  486,  399,  399,  399,  114,  114,  114,
+      114,  133,  486,  400,  401,  402,  400,  400,  400,  400,
+
+      376,  486,  381,  381,  381,  381,  381,  381,  381,  376,
+      486,  381,  381,  381,  381,  381,  381,  381,  376,  486,
+      381,  381,  381,  381,  381,  381,  403,  376,  486,  403,
+      403,  403,  403,  403,  403,  403,  151,  486,  405,  406,
+      407,  405,  405,  405,  405,  383,  486,  388,  388,  388,
+      388,  388,  388,  388,  383,  486,  388,  388,  388,  388,
+      388,  388,  388,  383,  486,  388,  388,  388,  388,  388,
+      388,  408,  383,  486,  408,  408,  408,  408,  408,  408,
+      408,  410,  486,  411,  411,  411,  411,  411,  411,  411,
+      410,  486,  412,  412,  412,  412,  412,  412,  412,  410,
+
+      486,  413,  413,  413,  413,  413,  414,  411,   83,  486,
+      393,  393,  393,  393,  393,  393,  393,  415,  486,  416,
+      416,  416,  416,  416,  416,  416,  415,  486,  417,  417,
+      417,  417,  417,  417,  417,  415,  486,  418,  418,  418,
+      418,  418,  419,  416,  114,  486,  398,  398,  398,  398,
+      398,  398,  398,  114,  486,  399,  399,  399,  114,  114,
+      114,  114,  420,  486,  421,  421,  421,  421,  421,  421,
+      421,  420,  486,  422,  422,  422,  422,  422,  422,  422,
+      420,  486,  423,  423,  423,  423,  423,  424,  421,  133,
+      486,  403,  403,  403,  403,  403,  403,  403,  425,  486,
+
+      426,  426,  426,  426,  426,  426,  426,  425,  486,  427,
+      427,  427,  427,  427,  427,  427,  425,  486,  428,  428,
+      428,  428,  428,  429,  426,  151,  486,  408,  408,  408,
+      408,  408,  408,  408,  430,  431,  432,  430,  430,  430,
+      430,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,   84,  410,  486,  411,
+      411,  411,  411,  411,  411,  411,  410,  486,  411,  411,
+      411,  411,  411,  411,  411,  410,  486,  411,  411,  411,
+      411,  411,  411,   83,  114,  486,  433,  434,  435,  433,
+      433,  433,  433,  415,  486,  416,  416,  416,  416,  416,
+
+      416,  416,  415,  486,  416,  416,  416,  416,  416,  416,
+      416,  415,  486,  416,  416,  416,  416,  416,  416,  114,
+      436,  437,  438,  436,  436,  436,  436,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  134,  420,  486,  421,  421,  421,  421,  421,
+      421,  421,  420,  486,  421,  421,  421,  421,  421,  421,
+      421,  420,  486,  421,  421,  421,  421,  421,  421,  133,
+      439,  440,  441,  439,  439,  439,  439,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  152,  425,  486,  426,  426,  426,  426,  426,
+
+      426,  426,  425,  486,  426,  426,  426,  426,  426,  426,
+      426,  425,  486,  426,  426,  426,  426,  426,  426,  151,
+      442,  486,  443,  443,  443,  443,  443,  443,  443,  442,
+      486,  444,  444,  444,  444,  444,  444,  444,  442,  486,
+      445,  445,  445,  445,  445,  446,  443,  447,  486,  448,
+      448,  448,  448,  448,  448,  448,  447,  486,  449,  449,
+      449,  449,  449,  449,  449,  447,  486,  450,  450,  450,
+      450,  450,  451,  448,  452,  486,  453,  453,  453,  453,
+      453,  453,  453,  452,  486,  454,  454,  454,  454,  454,
+      454,  454,  452,  486,  455,  455,  455,  455,  455,  456,
+
+      453,  457,  486,  458,  458,  458,  458,  458,  458,  458,
+      457,  486,  459,  459,  459,  459,  459,  459,  459,  457,
+      486,  460,  460,  460,  460,  460,  461,  458,   83,  486,
+      462,  463,  464,  462,  462,  462,  462,  442,  486,  443,
+      443,  443,  443,  443,  443,  443,  442,  486,  443,  443,
+      443,  443,  443,  443,  443,  442,  486,  443,  443,  443,
+      443,  443,  443,   83,  114,  486,  465,  466,  467,  465,
+      465,  465,  465,  447,  486,  448,  448,  448,  448,  448,
+      448,  448,  447,  486,  448,  448,  448,  448,  448,  448,
+      448,  447,  486,  448,  448,  448,  448,  448,  448,  114,
+
+      133,  486,  468,  469,  470,  468,  468,  468,  468,  452,
+      486,  453,  453,  453,  453,  453,  453,  453,  452,  486,
+      453,  453,  453,  453,  453,  453,  453,  452,  486,  453,
+      453,  453,  453,  453,  453,  133,  151,  486,  471,  472,
+      473,  471,  471,  471,  471,  457,  486,  458,  458,  458,
+      458,  458,  458,  458,  457,  486,  458,  458,  458,  458,
+      458,  458,  458,  457,  486,  458,  458,  458,  458,  458,
+      458,  151,   83,  486,  474,  474,  474,  474,  474,  474,
+      474,   83,  486,  462,  462,  462,  462,  462,  462,  462,
+       83,  486,  475,  475,  475,  475,  475,  476,  474,  114,
+
+      486,  477,  477,  477,  477,  477,  477,  477,  114,  486,
+      465,  465,  465,  465,  465,  465,  465,  114,  486,  478,
+      478,  478,  478,  478,  479,  477,  133,  486,  480,  480,
+      480,  480,  480,  480,  480,  133,  486,  468,  468,  468,
+      468,  468,  468,  468,  133,  486,  481,  481,  481,  481,
+      481,  482,  480,  151,  486,  483,  483,  483,  483,  483,
+      483,  483,  151,  486,  471,  471,  471,  471,  471,  471,
+      471,  151,  486,  484,  484,  484,  484,  484,  485,  483,
+      474,  474,  474,  474,  474,  474,  474,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+
+      486,  486,   84,  114,  486,  477,  477,  477,  477,  477,
+      477,  477,  114,  486,  477,  477,  477,  477,  477,  477,
+      114,  480,  480,  480,  480,  480,  480,  480,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  134,  483,  483,  483,  483,  483,  483,
+      483,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  152,   83,  486,  486,
+       83,  486,   83,   87,   87,   87,   87,   87,   87,   91,
+      486,  486,   91,  486,   91,   93,  486,  486,   93,  486,
+       93,   95,  486,   95,   95,  486,   95,  114,  486,  114,
+
+      114,  114,  114,  115,  486,  115,  115,  115,  117,  486,
+      117,  117,  117,  117,  118,  486,  118,  118,  118,  118,
+      119,  486,  119,  119,  119,  119,  133,  486,  486,  133,
+      486,  133,  135,  486,  486,  135,  486,  135,  137,  486,
+      486,  137,  486,  137,  139,  486,  139,  139,  486,  139,
+      151,  486,  486,  151,  486,  151,  153,  153,  153,  153,
+      153,  153,  156,  156,  156,  156,  156,  156,  160,  486,
+      486,  160,  486,  160,  162,  486,  486,  162,  486,  162,
+      164,  486,  164,  164,  486,  164,   88,   88,   88,   88,
+       88,   88,   96,  486,   96,  179,  486,  486,  179,  486,
+
+      179,  120,  486,  120,  120,  120,  191,  486,  191,  191,
+      191,  191,  197,  486,  486,  197,  486,  197,  154,  154,
+      154,  154,  154,  154,  156,  156,  156,  156,  156,  156,
+      157,  157,  157,  157,  157,  157,  160,  486,  486,  160,
+      486,  160,  162,  486,  486,  162,  486,  162,  164,  486,
+      164,  164,  486,  164,  170,  486,  486,  170,  486,  170,
+      208,  486,  486,  208,  486,  208,    9,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486
     } ;
 
-static yyconst short int yy_chk[3404] =
+static yyconst short int yy_chk[3720] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    2,    2,    2,   29,   29,  310,    2,  310,
+        1,    1,    2,    2,    2,  182,  182,  322,    2,  322,
         2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
@@ -911,357 +946,391 @@ static yyconst short int yy_chk[3404] =
 
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
         7,    7,    7,    7,    7,    7,    7,   14,   14,   14,
-       82,   82,  442,   14,   14,   20,   14,   20,   36,   20,
-       20,   39,   36,   36,  258,   39,   39,   14,   14,   14,
-      104,  104,  128,  128,  432,   20,  117,   36,   36,  410,
-       39,   39,   14,   21,  258,   21,   21,   21,   21,   21,
-       21,   21,   22,  117,   22,   22,   22,   22,   22,   22,
-       22,   23,  400,   23,   23,   23,   23,   23,   23,   23,
-       26,  267,  366,   41,   26,   26,   26,   41,   41,   26,
-      351,   26,   26,   26,   26,   26,   26,   26,   26,   26,
-
-       26,  267,   41,   41,   26,   26,   26,   26,   26,   26,
-       26,   26,   26,   26,   26,   26,  335,   26,   26,   26,
+       98,  107,  107,   14,   14,   20,   14,   20,  154,   20,
+       20,   23,   23,   23,   23,   23,   23,   14,   14,   14,
+      120,  483,  480,  474,   98,   20,   46,   46,   46,   46,
+       46,   46,   14,  202,  235,  347,  107,  120,   20,   21,
+      154,   21,   21,   21,   21,   21,   21,   21,   22,   22,
+       22,   22,   22,   22,   22,   45,   45,   45,   45,   45,
+       45,   45,  339,   21,   26,  202,  235,  271,   26,   26,
+       26,  333,  321,   26,  319,   26,   26,   26,   26,   26,
+
+       26,   26,   26,   26,   26,  131,  131,  271,   26,   26,
+       26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
        26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
-       26,   26,   30,   30,   30,   30,   30,   30,   30,  383,
-      383,  383,   30,   30,   30,   30,   30,   30,   30,   30,
-       30,   30,   30,   30,   43,   30,   43,  274,   43,   43,
-       45,   45,   45,   45,   45,   45,   45,   46,   46,   46,
-       46,   46,   46,   43,   43,   44,  318,  274,  111,   44,
-       44,  309,  111,  111,   44,  304,   44,   44,   44,   44,
-       44,   44,   44,  301,   44,   44,   49,  111,  111,   49,
-
-       49,   49,   49,   49,   49,   49,  297,   49,   49,   49,
-       49,   49,   49,   49,   49,   49,   49,  293,   49,   49,
+       26,   26,   26,   26,   26,   26,   29,   29,   29,  314,
+      131,  310,   29,   29,  306,   29,  280,  302,   36,  301,
+      298,  293,   36,   36,  286,  279,   29,   29,   29,   30,
+       30,   30,   30,   30,   30,   30,  280,   36,   36,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   36,   30,   39,  141,   41,  287,   39,   39,   41,
+       41,   43,  294,   43,  114,   43,   43,  273,  114,  114,
+
+      272,  270,   39,   39,   41,   41,  287,  166,  141,  212,
+       43,   43,  294,  114,  114,   59,   39,   59,   41,   59,
+       59,  150,  150,  229,   43,   44,  299,  114,  264,   44,
+       44,  166,  263,  212,   44,   59,   44,   44,   44,   44,
+       44,   44,   44,  259,   44,   44,  299,  229,   59,   61,
+       61,   61,   61,   61,   61,   61,  150,  316,   44,   49,
+      258,  254,   49,   49,   49,   49,   49,   49,   49,  253,
+       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
+      316,   49,   49,   49,   49,   49,   49,   49,   49,   49,
+       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
+
        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
-       49,   49,  281,   49,   49,   49,   49,   49,   49,   49,
-       49,   49,   49,   49,   49,   49,   49,   49,   52,   52,
-      289,   59,  281,   59,  114,   59,   59,   52,  114,  114,
-      115,  286,   67,   67,  115,  115,  288,  285,   52,   52,
-       52,   59,  308,  114,  114,  280,   67,  273,   67,  115,
-      115,  286,  269,   52,   53,   53,   53,   53,   53,   53,
-       53,   67,  308,  266,   53,   53,   53,   53,   53,   53,
-
-       53,   53,   53,   53,   53,   53,  260,   53,   60,  259,
-       60,   60,   60,   60,   60,   60,   60,   61,  257,   61,
-       61,   61,   61,   61,   61,   61,   62,  253,   62,   62,
-       62,   62,   62,   62,   62,   63,  152,  152,  152,   63,
-       63,   63,   71,   71,   63,  152,   63,   63,   63,   63,
-       63,   63,   63,   63,   63,   63,   71,  152,   71,   63,
+       49,   52,   52,   52,  320,  237,  249,   52,   52,  266,
+       52,   62,   62,   62,   62,   62,   62,  248,  247,  246,
+      282,   52,   52,   52,  320,  328,   74,  242,   74,  237,
+       74,   74,  241,  266,  234,  233,   52,   53,   53,   53,
+       53,   53,   53,   53,  282,  328,   74,   53,   53,   53,
+       53,   53,   53,   53,   53,   53,   53,   53,   53,   74,
+       53,   60,  227,   60,   60,   60,   60,   60,   60,   60,
+       76,   76,   76,   76,   76,   76,   76,   77,   77,   77,
+       77,   77,   77,  226,  220,   60,   63,  219,  218,  334,
+
+       63,   63,   63,  217,  216,   63,  210,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,  175,  175,  334,
        63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
-       63,   71,   63,   63,   63,   63,   63,   63,   63,   63,
-       63,   63,   63,   63,   63,   63,   63,   66,   66,   66,
-       66,   66,   66,   66,  251,  316,  322,   66,   66,   66,
-
-       66,   66,   66,   66,   66,   66,   66,   66,   66,  250,
-       66,   69,   69,   69,   69,  316,  322,   69,   69,  328,
-       69,   73,   73,  333,   74,  246,   74,  245,   74,   74,
-      241,   69,   69,   69,  240,   73,  236,   73,  235,  328,
-      234,  233,   74,  333,   74,  229,   69,   70,   70,   70,
-       73,  228,  222,   70,   70,  221,   70,   74,   76,   76,
-       76,   76,   76,   76,   76,  217,  215,   70,   70,   70,
-       77,   77,   77,   77,   77,   77,  356,  214,  356,  356,
-      356,  208,   70,   75,   75,  207,  144,  144,   75,  206,
-       75,   75,   75,   75,   75,   75,   75,   75,  205,   75,
-
-      144,  204,  144,   92,  200,   92,  198,   92,   92,  393,
-      393,  393,   75,   79,  197,  144,  189,   79,   79,   79,
-       79,   79,   79,   92,   79,   79,   79,   79,   79,   79,
-       79,   79,   79,   79,   79,  188,   79,   79,   79,   79,
-       79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
-       79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
-       79,   79,   79,   79,   79,   83,   83,   83,   83,   83,
-       83,   83,  183,  182,  177,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,  176,   83,   87,
-       87,   87,  153,  153,  175,   87,   87,  174,   87,   94,
-
-       94,   94,   94,   94,   94,   94,  153,  173,  153,   87,
-       87,   87,   98,  172,   98,   98,   98,   98,   98,   98,
-      171,  153,  166,  165,   87,   96,  150,   96,   96,   96,
-       96,   96,   96,   96,   97,  147,   97,   97,   97,   97,
-       97,   97,   97,  100,  154,  154,  466,  100,  100,  100,
-      466,  466,  100,  143,  142,  100,  100,  116,  154,  116,
-      154,  116,  116,  135,  127,  466,  466,  133,  126,  133,
-      119,  133,  133,  154,  119,  119,  116,  116,  118,  119,
-      118,  118,  118,  118,  118,  118,  118,  133,  122,  119,
-      119,  124,  113,  110,  124,  124,  124,  124,  124,  124,
-
-      124,  109,  108,  124,  124,  134,  134,  134,  134,  134,
-      134,  134,  107,  124,  124,  136,  106,  136,  136,  136,
-      136,  136,  136,  136,  137,  103,  137,  137,  137,  137,
-      137,  137,  137,  138,  102,  138,  138,  138,  138,  138,
-      138,  140,   95,   88,   86,  140,  140,  140,   85,   81,
-      140,   80,   65,  140,  140,  146,  146,  146,  146,   64,
-       51,  146,  146,   50,  146,  148,  148,  148,  148,   38,
-       35,  156,   34,  156,  148,  146,  146,  146,  371,   33,
-      371,  371,  371,  155,   32,  155,  148,  155,  155,  156,
-      146,  149,  149,  149,  158,  158,   31,  149,  149,  158,
-
-      149,  155,   28,  155,  156,   27,   13,   11,  158,    9,
-      158,  149,  149,  149,    0,  203,  155,  203,  203,  203,
-      203,  203,  203,  158,    0,    0,  149,  157,  157,    0,
-        0,    0,    0,    0,  157,  157,  157,  157,  157,  157,
-      157,  157,  170,  157,    0,    0,  170,  170,  170,    0,
-        0,  170,    0,    0,  170,  170,  157,  159,    0,  159,
-      159,  159,  159,  159,  159,  159,  160,    0,  160,  160,
-      160,  160,  160,  160,  160,  161,    0,  161,  161,  161,
-      161,  161,  161,  161,  162,  190,  190,    0,  162,  162,
-      162,  162,  162,  162,    0,    0,  162,  162,    0,  190,
-
-        0,  190,    0,    0,  187,  162,    0,  162,  187,  187,
-      187,    0,    0,  187,  190,    0,  187,  187,    0,    0,
-      162,  163,    0,    0,    0,  163,  163,  163,  163,  163,
-      163,    0,    0,  163,  163,  199,  199,  199,  199,  199,
-      199,  199,  163,    0,  163,  216,  216,  216,  216,  216,
-      216,  216,    0,    0,    0,    0,    0,  163,  164,    0,
-        0,    0,  164,  164,  164,  164,  164,  164,    0,  164,
-      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
-        0,  164,  164,  164,  164,  164,  164,  164,  164,  164,
-      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
-
-      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
-      167,    0,  167,  167,  167,  167,  167,  167,  167,  168,
-        0,  168,  168,  168,  168,  168,  168,  168,  169,    0,
-      169,  169,  169,  169,  169,  169,  169,  178,    0,  178,
-      178,  178,  178,  178,  178,  178,  179,    0,  179,  179,
-      179,  179,  179,  179,  179,  180,    0,  180,  180,  180,
-      180,  180,  180,  180,  181,    0,    0,  181,  181,  181,
-      181,  181,  181,  181,    0,    0,  181,  181,  220,    0,
-      220,  220,  220,  220,  220,  220,  181,  181,  184,    0,
-      184,  184,  184,  184,  184,  184,  184,  185,    0,  185,
-
-      185,  185,  185,  185,  185,  185,  186,    0,  186,  186,
-      186,  186,  186,  186,  186,  193,    0,  193,  193,  193,
-      193,  193,  193,  193,  194,    0,  194,  194,  194,  194,
-      194,  194,  194,  195,    0,  195,  195,  195,  195,  195,
-      195,  195,  196,    0,  472,  472,  196,  196,  196,  196,
-      196,  196,  210,    0,  196,  196,  210,  210,  472,    0,
-      472,  210,    0,  196,    0,  196,    0,    0,    0,    0,
-        0,  210,  210,  472,    0,    0,    0,    0,  196,  201,
-        0,  201,  201,  201,  201,  201,  201,  201,  202,    0,
-      202,  202,  202,  202,  202,  202,  202,  209,    0,  209,
-
-      209,  209,  209,  209,  209,  209,  211,    0,  211,  211,
-      211,  211,  211,  211,  211,  212,    0,  212,  212,  212,
-      212,  212,  212,  212,  213,    0,  213,  213,  213,  213,
-      213,  213,  213,  218,    0,  218,  218,  218,  218,  218,
-      218,  218,  219,    0,  219,  219,  219,  219,  219,  219,
-      219,  223,  223,  223,  223,  223,  223,  223,  224,  224,
-        0,    0,    0,  224,  252,  252,  252,  252,  252,  252,
-      252,    0,  224,  256,  224,  256,  256,  256,  256,  256,
-      256,  465,  465,  465,  465,  465,  465,  224,  225,    0,
-      225,  225,  225,  225,  225,  225,  225,  226,    0,  226,
-
-      226,  226,  226,  226,  226,  226,  227,    0,  227,  227,
-      227,  227,  227,  227,  227,  230,    0,  230,  230,  230,
-      230,  230,  230,  230,  231,    0,  231,  231,  231,  231,
-      231,  231,  231,  232,    0,  232,  232,  232,  232,  232,
-      232,  232,  237,    0,  237,  237,  237,  237,  237,  237,
-      237,  238,    0,  238,  238,  238,  238,  238,  238,  238,
-      239,    0,  239,  239,  239,  239,  239,  239,  239,  242,
-        0,  242,  242,  242,  242,  242,  242,  242,  243,    0,
-      243,  243,  243,  243,  243,  243,  243,  244,    0,  244,
-      244,  244,  244,  244,  244,  244,  247,    0,  247,  247,
-
-      247,  247,  247,  247,  247,  248,    0,  248,  248,  248,
-      248,  248,  248,  248,  249,    0,  249,  249,  249,  249,
-      249,  249,  249,  254,    0,  254,  254,  254,  254,  254,
-      254,  254,  255,    0,  255,  255,  255,  255,  255,  255,
-      255,  261,    0,  261,  261,  261,  261,  261,  261,  261,
-      262,    0,    0,    0,  262,  262,    0,    0,    0,  262,
-      268,  268,  268,  268,  268,  268,  268,    0,    0,  262,
-      262,  263,    0,  263,  263,  263,  263,  263,  263,  263,
-      264,    0,  264,  264,  264,  264,  264,  264,  264,  265,
-        0,  265,  265,  265,  265,  265,  265,  265,  270,    0,
-
-      270,  270,  270,  270,  270,  270,  270,  271,    0,  271,
-      271,  271,  271,  271,  271,  271,  272,    0,  272,  272,
-      272,  272,  272,  272,  275,  275,  275,  275,  275,  275,
-      275,  276,  276,    0,    0,    0,  276,  303,  303,  303,
-      303,  303,  303,  303,    0,  276,    0,  276,  307,  307,
-      307,  307,  307,  307,  307,    0,    0,    0,    0,    0,
-      276,  277,    0,  277,  277,  277,  277,  277,  277,  277,
-      278,    0,  278,  278,  278,  278,  278,  278,  278,  279,
-        0,  279,  279,  279,  279,  279,  279,  279,  282,  282,
-      282,  282,  282,  282,  282,  282,  283,  283,  283,  283,
-
-      283,  283,  283,  283,  284,  284,  284,  284,  284,  284,
-      284,  284,  290,  290,  290,  290,  290,  290,  290,  290,
-      290,  291,  291,  291,  291,  291,  291,  291,  291,  291,
-      292,  292,  292,  292,  292,  292,  292,  292,  292,  294,
-      294,  294,  294,  294,  294,  294,  294,  295,  295,  295,
-      295,  295,  295,  295,  295,  296,  296,  296,  296,  296,
-      296,  296,  296,  298,  298,  298,  298,  298,  298,  298,
-      298,  299,  299,  299,  299,  299,  299,  299,  299,  300,
-      300,  300,  300,  300,  300,  300,  300,  305,  305,  305,
-      305,  305,  305,  305,  305,  306,  306,  306,  306,  306,
-
-      306,  306,  306,  311,    0,  311,  311,  311,  311,  311,
-      311,  311,  312,    0,    0,    0,  312,  312,    0,    0,
-        0,    0,  312,  317,  317,  317,  317,  317,  317,  317,
-        0,  312,  312,  313,  313,  313,  313,  313,  313,  313,
-      313,  313,  314,  314,  314,  314,  314,  314,  314,  314,
-      314,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      319,  319,  319,  319,  319,  319,  319,  319,  320,  320,
-      320,  320,  320,  320,  320,  320,  321,  321,  321,  321,
-      321,  321,  321,  323,  323,  323,  323,  323,  323,  323,
-      324,  324,    0,    0,    0,    0,  324,  350,  350,  350,
-
-      350,  350,  350,  350,  324,    0,  324,  365,  365,  365,
-      365,  365,  365,  365,    0,    0,    0,    0,    0,  324,
-      325,  325,  325,  325,  325,  325,  325,  325,  326,  326,
-      326,  326,  326,  326,  326,  326,  327,  327,  327,  327,
-      327,  327,  327,  327,  329,    0,  329,  329,  329,  329,
-      329,  329,  329,  330,    0,  330,  330,  330,  330,  330,
-      330,  330,  331,    0,  331,  331,  331,  331,  331,  331,
-      331,  332,    0,  332,  332,  332,  332,  332,  332,  332,
-      337,    0,  337,  337,  337,  337,  337,  337,  337,  338,
-        0,  338,  338,  338,  338,  338,  338,  338,  339,    0,
-
-      339,  339,  339,  339,  339,  339,  339,  340,    0,  340,
-      340,  340,  340,  340,  340,  340,  341,    0,  341,  341,
-      341,  341,  341,  341,  341,  342,    0,  342,  342,  342,
-      342,  342,  342,  342,  343,    0,  343,  343,  343,  343,
-      343,  343,  343,  344,    0,  344,  344,  344,  344,  344,
-      344,  344,  345,    0,  345,  345,  345,  345,  345,  345,
-      345,  346,    0,  346,  346,  346,  346,  346,  346,  346,
-      347,    0,  347,  347,  347,  347,  347,  347,  347,  348,
-        0,  348,  348,  348,  348,  348,  348,  348,  352,    0,
-      352,  352,  352,  352,  352,  352,  352,  353,    0,  353,
-
-      353,  353,  353,  353,  353,  353,  354,    0,  354,  354,
-      354,  354,  354,  354,  354,  355,    0,  355,  355,  355,
-      355,  355,  355,  355,  358,    0,  358,  358,  358,  358,
-      358,  358,  358,  359,    0,    0,    0,  359,  359,    0,
-        0,    0,  359,  372,  372,  372,  372,  372,  372,  372,
-        0,    0,  359,  359,  360,    0,  360,  360,  360,  360,
-      360,  360,  360,  361,    0,  361,  361,  361,  361,  361,
-      361,  361,  362,    0,  362,  362,  362,  362,  362,  362,
-      362,  363,    0,  363,  363,  363,  363,  363,  363,  363,
-      364,    0,  364,  364,  364,  364,  364,  364,  364,  367,
-
-        0,  367,  367,  367,  367,  367,  367,  367,  368,    0,
-      368,  368,  368,  368,  368,  368,  368,  369,    0,  369,
-      369,  369,  369,  369,  369,  369,  370,    0,  370,  370,
-      370,  370,  370,  370,  370,  373,  373,    0,    0,    0,
-      373,  382,  382,  382,  382,  382,  382,  382,    0,  373,
-        0,  373,  392,  392,  392,  392,  392,  392,  392,    0,
-        0,    0,    0,    0,  373,  374,    0,  374,  374,  374,
-      374,  374,  374,  374,  375,    0,  375,  375,  375,  375,
-      375,  375,  375,  376,    0,  376,  376,  376,  376,  376,
-      376,  376,  377,    0,  377,  377,  377,  377,  377,  377,
-
-      377,  378,    0,  378,  378,  378,  378,  378,  378,  378,
-      379,    0,  379,  379,  379,  379,  379,  379,  379,  380,
-        0,  380,  380,  380,  380,  380,  380,  380,  381,    0,
-      381,  381,  381,  381,  381,  381,  381,  384,    0,  384,
-      384,  384,  384,  384,  384,  384,  385,    0,  385,  385,
-      385,  385,  385,  385,  385,  386,    0,  386,  386,  386,
-      386,  386,  386,  386,  387,    0,  387,  387,  387,  387,
-      387,  387,  387,  388,    0,  388,  388,  388,  388,  388,
-      388,  388,  389,    0,  389,  389,  389,  389,  389,  389,
-      389,  390,    0,  390,  390,  390,  390,  390,  390,  390,
-
-      391,    0,  391,  391,  391,  391,  391,  391,  391,  394,
-        0,  394,  394,  394,  394,  394,  394,  394,  395,    0,
-      395,  395,  395,  395,  395,  395,  395,  396,    0,  396,
-      396,  396,  396,  396,  396,  396,  397,  397,  397,  397,
-      397,  397,  397,  398,  398,  398,  398,  398,  398,  398,
-      399,  399,  399,  399,  399,  399,  399,  401,    0,  401,
-      401,  401,  401,  401,  401,  401,  402,    0,  402,  402,
-      402,  402,  402,  402,  402,  403,    0,  403,  403,  403,
-      403,  403,  403,  404,    0,  404,  404,  404,  404,  404,
-      404,  404,  405,    0,    0,    0,  405,  405,    0,    0,
-
-        0,  405,  409,  409,  409,  409,  409,  409,  409,    0,
-        0,  405,  405,  406,    0,  406,  406,  406,  406,  406,
-      406,  406,  407,    0,  407,  407,  407,  407,  407,  407,
-      407,  408,    0,  408,  408,  408,  408,  408,  408,  408,
-      411,    0,  411,  411,  411,  411,  411,  411,  411,  412,
-        0,  412,  412,  412,  412,  412,  412,  412,  413,    0,
-      413,  413,  413,  413,  413,  413,  414,  414,  414,  414,
-      414,  414,  414,  415,  415,    0,    0,    0,  415,  431,
-      431,  431,  431,  431,  431,  431,    0,  415,  435,  415,
-      435,  435,  435,  435,  435,  435,  471,  471,  471,  471,
-
-      471,  471,  415,  416,    0,  416,  416,  416,  416,  416,
-      416,  416,  417,    0,  417,  417,  417,  417,  417,  417,
-      417,  418,    0,  418,  418,  418,  418,  418,  418,  418,
-      419,    0,  419,  419,  419,  419,  419,  419,  419,  420,
-        0,  420,  420,  420,  420,  420,  420,  420,  421,    0,
-      421,  421,  421,  421,  421,  421,  421,  422,    0,  422,
-      422,  422,  422,  422,  422,  422,  423,    0,  423,  423,
-      423,  423,  423,  423,  423,  424,    0,  424,  424,  424,
-      424,  424,  424,  424,  425,    0,  425,  425,  425,  425,
-      425,  425,  425,  426,    0,  426,  426,  426,  426,  426,
-
-      426,  426,  427,    0,  427,  427,  427,  427,  427,  427,
-      427,  428,    0,  428,  428,  428,  428,  428,  428,  428,
-      429,    0,  429,  429,  429,  429,  429,  429,  429,  430,
-        0,  430,  430,  430,  430,  430,  430,  430,  433,    0,
-      433,  433,  433,  433,  433,  433,  433,  434,    0,  434,
-      434,  434,  434,  434,  434,  434,  436,    0,  436,  436,
-      436,  436,  436,  436,  436,  437,    0,    0,    0,  437,
-      437,    0,    0,    0,  437,  441,  441,  441,  441,  441,
-      441,  441,    0,    0,  437,  437,  438,    0,  438,  438,
-      438,  438,  438,  438,  438,  439,    0,  439,  439,  439,
-
-      439,  439,  439,  439,  440,    0,  440,  440,  440,  440,
-      440,  440,  440,  443,    0,  443,  443,  443,  443,  443,
-      443,  443,  444,    0,  444,  444,  444,  444,  444,  444,
-      444,  445,    0,  445,  445,  445,  445,  445,  445,  446,
-      446,  446,  446,  446,  446,  446,  447,  447,    0,    0,
-        0,  447,  451,  451,  451,  451,  451,  451,  451,    0,
-      447,    0,  447,  452,  452,  452,  452,  452,  452,  452,
-        0,    0,    0,    0,    0,  447,  448,    0,  448,  448,
-      448,  448,  448,  448,  448,  449,    0,  449,  449,  449,
-      449,  449,  449,  449,  450,    0,  450,  450,  450,  450,
-
-      450,  450,  450,  453,  453,  453,  453,  453,  453,  453,
-      454,    0,  454,  454,  454,  454,  454,  454,  454,  455,
-        0,  455,  455,  455,  455,  455,  455,  455,  456,    0,
-      456,  456,  456,  456,  456,  456,  456,  457,  457,  457,
-      457,  457,  457,  457,  458,  458,  458,  458,  458,  458,
-      458,  459,  459,  459,  459,  459,  459,  459,  460,  460,
-      460,  460,  460,  460,  460,  461,  461,  461,  461,  461,
-      461,  461,  462,  462,  462,  462,  462,  462,  462,  464,
-      464,  464,  464,  464,  464,  464,  467,    0,  467,  467,
-      467,  467,  467,  467,  467,  468,    0,  468,  468,  468,
-
-      468,  468,  468,  468,  470,  470,  470,  470,  470,  470,
-      470,  473,  473,  473,  473,  473,  473,  473,  474,  474,
-      474,  474,  474,  474,  474,  476,    0,    0,  476,  477,
-      477,  477,  477,  477,  477,  477,  478,    0,    0,  478,
-      479,    0,    0,  479,  480,    0,  480,  480,  480,  481,
-        0,  481,  481,  481,    0,  481,  482,    0,  482,  482,
-      482,    0,  482,  483,    0,  483,  483,  483,    0,  483,
-      484,    0,  484,  484,  484,    0,  484,  485,    0,  485,
-      485,  485,    0,  485,  486,    0,    0,  486,  487,    0,
-        0,  487,  488,    0,    0,  488,  489,    0,  489,  489,
-
-      489,  490,    0,    0,  490,  490,  490,  491,  491,  491,
-      491,  491,  491,  491,  492,  492,  492,  492,  492,  492,
-      492,  493,    0,    0,  493,  493,  493,  494,    0,    0,
-      494,  494,  494,  495,    0,    0,  495,  495,  495,  496,
-        0,  496,  496,  496,  496,  497,  497,  497,  497,  497,
-      497,  497,  498,    0,  498,    0,  498,  499,    0,    0,
-      499,  500,    0,  500,  500,  500,    0,  500,  501,    0,
-      501,  501,  501,    0,  501,  502,    0,    0,  502,  503,
-      503,  503,  503,  503,  503,  503,  504,  504,  504,  504,
-      504,  504,  504,  505,  505,  505,  505,  505,  505,  505,
-
-      506,  506,  506,  506,  506,  506,  506,  507,  507,  507,
-      507,  507,  507,  507,  508,    0,    0,  508,  508,  508,
-      509,    0,    0,  509,  509,  509,  510,    0,  510,  510,
-      510,  510,  511,    0,  511,  511,  511,  511,  512,    0,
-        0,  512,  512,  512,  513,    0,    0,  513,  513,  513,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-
-      475,  475,  475
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   66,   66,
+       66,  209,  175,  204,   66,   66,  330,   66,  340,  200,
+       95,  199,   95,  198,   95,   95,  193,  192,   66,   66,
+       66,   67,   67,   67,   67,   67,   67,   67,  340,  330,
+       95,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   95,   67,   70,   70,   70,   70,  345,
+
+      289,   70,   70,  117,   70,  187,  118,  117,  117,  222,
+      118,  118,  336,  222,  222,   70,   70,   70,  222,  345,
+      362,  186,  117,  117,  289,  118,  118,  185,  222,  222,
+       70,   71,   71,   71,  184,  336,  117,   71,   71,  118,
+       71,  377,  222,  119,  362,  119,  183,  119,  119,  181,
+      180,   71,   71,   71,  122,  122,  122,  122,  122,  122,
+      122,  174,  119,  119,  384,  377,   71,   75,  173,   75,
+       75,   75,   75,   75,   75,   75,  119,  394,  394,  394,
+      139,  169,  139,  162,  139,  139,  160,  159,  384,  157,
+      411,   75,   78,  404,  404,  404,   78,   78,   78,  394,
+
+      139,   78,  151,   78,   78,   78,   78,   78,   78,   78,
+       78,   78,   78,  139,  411,  404,   78,   78,   78,   78,
+       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
+       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
+       78,   78,   78,   78,   81,   81,   81,  149,  148,  144,
+       81,   81,  137,   81,  135,  133,  164,  132,  164,  130,
+      164,  164,  129,  125,   81,   81,   81,   82,   82,   82,
+       82,   82,   82,   82,  116,  113,  164,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   82,   82,  164,
+       82,   84,  112,   84,  111,  110,  109,   84,   84,  275,
+
+       84,  106,  105,  275,  275,  101,   93,  421,  275,  426,
+       91,   84,   84,   84,   87,   87,   87,   90,  275,  275,
+       87,   87,   88,   87,  296,  296,  296,  296,  296,  296,
+      296,  421,  275,  426,   87,   87,   87,  297,  297,  297,
+      297,  297,  297,  309,  309,  309,  309,  309,  309,   87,
+       92,   86,   92,  443,  453,   85,   92,   92,   83,   92,
+      308,  308,  308,  308,  308,  308,  308,  458,   80,   79,
+       92,   92,   92,   94,   73,   94,   72,  443,  453,   94,
+       94,   68,   94,  312,  312,  312,  312,  312,  312,  312,
+       65,  458,   64,   94,   94,   94,   97,   97,   97,   97,
+
+       97,   97,   97,  313,  313,  313,  313,  313,  313,  367,
+      324,  367,  367,  367,  324,  324,   58,  370,   97,  103,
+      324,  370,  370,  103,  103,  103,  370,   56,  103,  324,
+      324,  103,  103,  367,  477,   55,  370,  370,  477,  477,
+       54,   51,  382,  324,  382,  382,  382,   50,   38,   35,
+      370,   34,   33,  477,  477,  103,  121,   32,  121,  121,
+      121,  121,  121,  121,  121,  127,  382,  477,  127,  127,
+      127,  127,  127,  127,  127,   31,   28,  127,  127,  389,
+       27,  389,  389,  389,  409,  409,  409,  127,  127,   18,
+      476,  476,  476,  476,  476,  476,   15,   13,   11,   10,
+
+        9,  127,  134,  389,  134,    0,  409,    0,  134,  134,
+      416,  134,  476,    0,  416,  416,    0,    0,    0,  416,
+        0,    0,  134,  134,  134,  136,    0,  136,    0,  416,
+      416,  136,  136,  448,  136,    0,    0,  448,  448,    0,
+        0,    0,  448,  416,    0,  136,  136,  136,  138,    0,
+      138,    0,  448,  448,  138,  138,    0,  138,  482,  482,
+      482,  482,  482,  482,    0,    0,  448,    0,  138,  138,
+      138,  140,  140,  140,  140,  140,  140,  140,    0,    0,
+      482,    0,  485,  485,  485,  485,  485,  485,    0,    0,
+        0,    0,    0,  140,  146,    0,    0,    0,  146,  146,
+
+      146,    0,    0,  146,  485,    0,  146,  146,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      146,  152,    0,  152,    0,    0,    0,  152,  152,    0,
+      152,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  152,  152,  152,  153,  153,  153,  153,    0,    0,
+      153,  153,    0,  153,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  153,  153,  153,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  153,
+      155,    0,  155,  155,    0,    0,  155,  155,    0,  155,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      155,  155,  155,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  155,  156,  156,  156,    0,
+        0,    0,  156,  156,    0,  156,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  156,  156,  156,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  156,  161,    0,  161,    0,    0,    0,  161,  161,
+        0,  161,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  161,  161,  161,  163,    0,  163,    0,    0,
+        0,  163,  163,    0,  163,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,  163,  163,  163,  165,  165,
+      165,  165,  165,  165,  165,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      165,  167,    0,  167,  167,  167,  167,  167,  167,  167,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  167,  170,    0,    0,    0,
+      170,  170,  170,    0,    0,  170,    0,    0,  170,  170,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  170,  171,    0,    0,    0,  171,  171,  171,
+
+        0,    0,  171,    0,    0,  171,  171,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  171,
+      172,    0,    0,    0,  172,  172,  172,    0,    0,  172,
+        0,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,    0,    0,    0,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  176,    0,  176,  176,  176,  176,  176,  176,
+      176,  177,    0,  177,  177,  177,  177,  177,  177,  177,
+
+      178,    0,  178,  178,  178,  178,  178,  178,  178,  179,
+        0,    0,    0,  179,  179,  179,    0,    0,  179,    0,
+        0,  179,  179,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  179,  188,    0,  188,  188,
+      188,  188,  188,  188,  188,  189,    0,  189,  189,  189,
+      189,  189,  189,  189,  190,    0,  190,  190,  190,  190,
+      190,  190,  190,  191,    0,    0,  191,  191,  191,  191,
+      191,  191,  191,    0,    0,  191,  191,    0,    0,    0,
+        0,    0,    0,    0,    0,  191,  191,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  191,
+      194,    0,  194,  194,  194,  194,  194,  194,  194,  195,
+        0,  195,  195,  195,  195,  195,  195,  195,  196,    0,
+      196,  196,  196,  196,  196,  196,  196,  197,    0,    0,
+        0,  197,  197,  197,    0,    0,  197,    0,    0,  197,
+      197,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  197,  205,    0,  205,  205,  205,  205,
+      205,  205,  205,  206,    0,  206,  206,  206,  206,  206,
+      206,  206,  207,    0,  207,  207,  207,  207,  207,  207,
+
+      207,  208,    0,    0,    0,  208,  208,  208,    0,    0,
+      208,    0,    0,  208,  208,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  208,  211,    0,
+      211,  211,  211,  211,  211,  211,  211,  213,    0,  213,
+      213,  213,  213,  213,  213,  213,  214,    0,  214,  214,
+      214,  214,  214,  214,  214,  215,    0,  215,  215,  215,
+      215,  215,  215,  215,  221,    0,  221,  221,  221,  221,
+      221,  221,  221,  223,    0,  223,  223,  223,  223,  223,
+      223,  223,  224,    0,  224,  224,  224,  224,  224,  224,
+
+      224,  225,    0,  225,  225,  225,  225,  225,  225,  225,
+      228,    0,  228,  228,  228,  228,  228,  228,  228,  230,
+        0,  230,  230,  230,  230,  230,  230,  230,  231,    0,
+      231,  231,  231,  231,  231,  231,  231,  232,    0,  232,
+      232,  232,  232,  232,  232,  232,  236,    0,  236,  236,
+      236,  236,  236,  236,  236,  238,    0,  238,  238,  238,
+      238,  238,  238,  238,  239,    0,  239,  239,  239,  239,
+      239,  239,  239,  240,    0,  240,  240,  240,  240,  240,
+      240,  240,  243,    0,  243,  243,  243,  243,  243,  243,
+      243,  244,    0,  244,  244,  244,  244,  244,  244,  244,
+
+      245,    0,  245,  245,  245,  245,  245,  245,  245,  250,
+        0,  250,  250,  250,  250,  250,  250,  250,  251,    0,
+      251,  251,  251,  251,  251,  251,  251,  252,    0,  252,
+      252,  252,  252,  252,  252,  252,  255,    0,  255,  255,
+      255,  255,  255,  255,  255,  256,    0,  256,  256,  256,
+      256,  256,  256,  256,  257,    0,  257,  257,  257,  257,
+      257,  257,  257,  260,    0,  260,  260,  260,  260,  260,
+      260,  260,  261,    0,  261,  261,  261,  261,  261,  261,
+      261,  262,    0,  262,  262,  262,  262,  262,  262,  262,
+      265,    0,  265,  265,  265,  265,  265,  265,  265,  267,
+
+        0,  267,  267,  267,  267,  267,  267,  267,  268,    0,
+      268,  268,  268,  268,  268,  268,  268,  269,    0,  269,
+      269,  269,  269,  269,  269,  269,  274,    0,  274,  274,
+      274,  274,  274,  274,  274,  276,    0,  276,  276,  276,
+      276,  276,  276,  276,  277,    0,  277,  277,  277,  277,
+      277,  277,  277,  278,    0,  278,  278,  278,  278,  278,
+      278,  278,  281,    0,  281,  281,  281,  281,  281,  281,
+      281,  283,    0,  283,  283,  283,  283,  283,  283,  283,
+      284,    0,  284,  284,  284,  284,  284,  284,  284,  285,
+        0,  285,  285,  285,  285,  285,  285,  285,  288,    0,
+
+      288,  288,  288,  288,  288,  288,  288,  290,    0,  290,
+      290,  290,  290,  290,  290,  290,  291,    0,  291,  291,
+      291,  291,  291,  291,  291,  292,    0,  292,  292,  292,
+      292,  292,  292,  292,  295,  295,  295,  295,  295,  295,
+      295,  295,  295,  303,  303,  303,  303,  303,  303,  303,
+      303,  303,  304,  304,  304,  304,  304,  304,  304,  304,
+      304,  305,  305,  305,  305,  305,  305,  305,  305,  305,
+      307,  307,  307,  307,  307,  307,  307,  307,  307,  311,
+      311,  311,  311,  311,  311,  311,  311,  311,  315,  315,
+      315,  315,  315,  315,  315,  315,  323,    0,  323,  323,
+
+      323,  323,  323,  323,  323,  325,  325,  325,  325,  325,
+      325,  325,  325,  325,  326,  326,  326,  326,  326,  326,
+      326,  326,  326,  327,  327,  327,  327,  327,  327,  327,
+      327,  327,  329,  329,  329,  329,  329,  329,  329,  329,
+      335,  335,  335,  335,  335,  335,  335,  335,  341,    0,
+      341,  341,  341,  341,  341,  341,  341,  342,    0,  342,
+      342,  342,  342,  342,  342,  342,  343,    0,  343,  343,
+      343,  343,  343,  343,  343,  344,    0,  344,  344,  344,
+      344,  344,  344,  344,  349,    0,  349,  349,  349,  349,
+      349,  349,  349,  350,    0,  350,  350,  350,  350,  350,
+
+      350,  350,  351,    0,  351,  351,  351,  351,  351,  351,
+      351,  352,    0,  352,  352,  352,  352,  352,  352,  352,
+      353,    0,  353,  353,  353,  353,  353,  353,  353,  354,
+        0,  354,  354,  354,  354,  354,  354,  354,  355,    0,
+      355,  355,  355,  355,  355,  355,  355,  356,    0,  356,
+      356,  356,  356,  356,  356,  356,  357,    0,  357,  357,
+      357,  357,  357,  357,  357,  358,    0,  358,  358,  358,
+      358,  358,  358,  358,  359,    0,  359,  359,  359,  359,
+      359,  359,  359,  360,    0,  360,  360,  360,  360,  360,
+      360,  360,  361,    0,  361,  361,  361,  361,  361,  361,
+
+      361,  363,    0,  363,  363,  363,  363,  363,  363,  363,
+      364,    0,  364,  364,  364,  364,  364,  364,  364,  365,
+        0,  365,  365,  365,  365,  365,  365,  365,  366,    0,
+      366,  366,  366,  366,  366,  366,  366,  369,    0,  369,
+      369,  369,  369,  369,  369,  369,  371,    0,  371,  371,
+      371,  371,  371,  371,  371,  372,    0,  372,  372,  372,
+      372,  372,  372,  372,  373,    0,  373,  373,  373,  373,
+      373,  373,  373,  374,    0,  374,  374,  374,  374,  374,
+      374,  374,  375,    0,  375,  375,  375,  375,  375,  375,
+      375,  376,    0,  376,  376,  376,  376,  376,  376,  376,
+
+      378,    0,  378,  378,  378,  378,  378,  378,  378,  379,
+        0,  379,  379,  379,  379,  379,  379,  379,  380,    0,
+      380,  380,  380,  380,  380,  380,  380,  381,    0,  381,
+      381,  381,  381,  381,  381,  381,  383,    0,  383,  383,
+      383,  383,  383,  383,  383,  385,    0,  385,  385,  385,
+      385,  385,  385,  385,  386,    0,  386,  386,  386,  386,
+      386,  386,  386,  387,    0,  387,  387,  387,  387,  387,
+      387,  387,  388,    0,  388,  388,  388,  388,  388,  388,
+      388,  390,    0,  390,  390,  390,  390,  390,  390,  390,
+      391,    0,  391,  391,  391,  391,  391,  391,  391,  392,
+
+        0,  392,  392,  392,  392,  392,  392,  392,  393,    0,
+      393,  393,  393,  393,  393,  393,  393,  395,    0,  395,
+      395,  395,  395,  395,  395,  395,  396,    0,  396,  396,
+      396,  396,  396,  396,  396,  397,    0,  397,  397,  397,
+      397,  397,  397,  397,  398,    0,  398,  398,  398,  398,
+      398,  398,  398,  399,    0,  399,  399,  399,  399,  399,
+      399,  399,  400,    0,  400,  400,  400,  400,  400,  400,
+      400,  401,    0,  401,  401,  401,  401,  401,  401,  401,
+      402,    0,  402,  402,  402,  402,  402,  402,  402,  403,
+        0,  403,  403,  403,  403,  403,  403,  403,  405,    0,
+
+      405,  405,  405,  405,  405,  405,  405,  406,    0,  406,
+      406,  406,  406,  406,  406,  406,  407,    0,  407,  407,
+      407,  407,  407,  407,  407,  408,    0,  408,  408,  408,
+      408,  408,  408,  408,  410,  410,  410,  410,  410,  410,
+      410,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  410,  412,    0,  412,
+      412,  412,  412,  412,  412,  412,  413,    0,  413,  413,
+      413,  413,  413,  413,  413,  414,    0,  414,  414,  414,
+      414,  414,  414,  414,  415,    0,  415,  415,  415,  415,
+      415,  415,  415,  417,    0,  417,  417,  417,  417,  417,
+
+      417,  417,  418,    0,  418,  418,  418,  418,  418,  418,
+      418,  419,    0,  419,  419,  419,  419,  419,  419,  419,
+      420,  420,  420,  420,  420,  420,  420,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  420,  422,    0,  422,  422,  422,  422,  422,
+      422,  422,  423,    0,  423,  423,  423,  423,  423,  423,
+      423,  424,    0,  424,  424,  424,  424,  424,  424,  424,
+      425,  425,  425,  425,  425,  425,  425,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  425,  427,    0,  427,  427,  427,  427,  427,
+
+      427,  427,  428,    0,  428,  428,  428,  428,  428,  428,
+      428,  429,    0,  429,  429,  429,  429,  429,  429,  429,
+      430,    0,  430,  430,  430,  430,  430,  430,  430,  431,
+        0,  431,  431,  431,  431,  431,  431,  431,  432,    0,
+      432,  432,  432,  432,  432,  432,  432,  433,    0,  433,
+      433,  433,  433,  433,  433,  433,  434,    0,  434,  434,
+      434,  434,  434,  434,  434,  435,    0,  435,  435,  435,
+      435,  435,  435,  435,  436,    0,  436,  436,  436,  436,
+      436,  436,  436,  437,    0,  437,  437,  437,  437,  437,
+      437,  437,  438,    0,  438,  438,  438,  438,  438,  438,
+
+      438,  439,    0,  439,  439,  439,  439,  439,  439,  439,
+      440,    0,  440,  440,  440,  440,  440,  440,  440,  441,
+        0,  441,  441,  441,  441,  441,  441,  441,  442,    0,
+      442,  442,  442,  442,  442,  442,  442,  444,    0,  444,
+      444,  444,  444,  444,  444,  444,  445,    0,  445,  445,
+      445,  445,  445,  445,  445,  446,    0,  446,  446,  446,
+      446,  446,  446,  446,  447,    0,  447,  447,  447,  447,
+      447,  447,  447,  449,    0,  449,  449,  449,  449,  449,
+      449,  449,  450,    0,  450,  450,  450,  450,  450,  450,
+      450,  451,    0,  451,  451,  451,  451,  451,  451,  451,
+
+      452,    0,  452,  452,  452,  452,  452,  452,  452,  454,
+        0,  454,  454,  454,  454,  454,  454,  454,  455,    0,
+      455,  455,  455,  455,  455,  455,  455,  456,    0,  456,
+      456,  456,  456,  456,  456,  456,  457,    0,  457,  457,
+      457,  457,  457,  457,  457,  459,    0,  459,  459,  459,
+      459,  459,  459,  459,  460,    0,  460,  460,  460,  460,
+      460,  460,  460,  461,    0,  461,  461,  461,  461,  461,
+      461,  461,  462,    0,  462,  462,  462,  462,  462,  462,
+      462,  463,    0,  463,  463,  463,  463,  463,  463,  463,
+      464,    0,  464,  464,  464,  464,  464,  464,  464,  465,
+
+        0,  465,  465,  465,  465,  465,  465,  465,  466,    0,
+      466,  466,  466,  466,  466,  466,  466,  467,    0,  467,
+      467,  467,  467,  467,  467,  467,  468,    0,  468,  468,
+      468,  468,  468,  468,  468,  469,    0,  469,  469,  469,
+      469,  469,  469,  469,  470,    0,  470,  470,  470,  470,
+      470,  470,  470,  471,    0,  471,  471,  471,  471,  471,
+      471,  471,  472,    0,  472,  472,  472,  472,  472,  472,
+      472,  473,    0,  473,  473,  473,  473,  473,  473,  473,
+      475,  475,  475,  475,  475,  475,  475,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,  475,  478,    0,  478,  478,  478,  478,  478,
+      478,  478,  479,    0,  479,  479,  479,  479,  479,  479,
+      479,  481,  481,  481,  481,  481,  481,  481,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  481,  484,  484,  484,  484,  484,  484,
+      484,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  484,  487,    0,    0,
+      487,    0,  487,  488,  488,  488,  488,  488,  488,  489,
+        0,    0,  489,    0,  489,  490,    0,    0,  490,    0,
+      490,  491,    0,  491,  491,    0,  491,  492,    0,  492,
+
+      492,  492,  492,  493,    0,  493,  493,  493,  494,    0,
+      494,  494,  494,  494,  495,    0,  495,  495,  495,  495,
+      496,    0,  496,  496,  496,  496,  497,    0,    0,  497,
+        0,  497,  498,    0,    0,  498,    0,  498,  499,    0,
+        0,  499,    0,  499,  500,    0,  500,  500,    0,  500,
+      501,    0,    0,  501,    0,  501,  502,  502,  502,  502,
+      502,  502,  503,  503,  503,  503,  503,  503,  504,    0,
+        0,  504,    0,  504,  505,    0,    0,  505,    0,  505,
+      506,    0,  506,  506,    0,  506,  507,  507,  507,  507,
+      507,  507,  508,    0,  508,  509,    0,    0,  509,    0,
+
+      509,  510,    0,  510,  510,  510,  511,    0,  511,  511,
+      511,  511,  512,    0,    0,  512,    0,  512,  513,  513,
+      513,  513,  513,  513,  514,  514,  514,  514,  514,  514,
+      515,  515,  515,  515,  515,  515,  516,    0,    0,  516,
+        0,  516,  517,    0,    0,  517,    0,  517,  518,    0,
+      518,  518,    0,  518,  519,    0,    0,  519,    0,  519,
+      520,    0,    0,  520,    0,  520,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+
+      486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
+      486,  486,  486,  486,  486,  486,  486,  486,  486
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1275,9 +1344,9 @@ static char *yy_last_accepting_cpos;
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
-#line 1 "./parse.lex"
+#line 1 "parse.lex"
 #define INITIAL 0
-#line 2 "./parse.lex"
+#line 2 "parse.lex"
 /*
  * Copyright (c) 1996, 1998, 1999 Todd C. Miller <Todd.Miller@courtesan.com>
  * All rights reserved.
@@ -1373,7 +1442,7 @@ extern void yyerror               __P((char *));
 
 #define GOTDEFS 3
 
-#line 1377 "lex.yy.c"
+#line 1446 "lex.yy.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1527,9 +1596,9 @@ YY_DECL
        register char *yy_cp, *yy_bp;
        register int yy_act;
 
-#line 106 "./parse.lex"
+#line 106 "parse.lex"
 
-#line 1533 "lex.yy.c"
+#line 1602 "lex.yy.c"
 
        if ( yy_init )
                {
@@ -1581,13 +1650,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 >= 476 )
+                               if ( yy_current_state >= 487 )
                                        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] != 3351 );
+               while ( yy_base[yy_current_state] != 3667 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1615,14 +1684,14 @@ do_action:      /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 107 "./parse.lex"
+#line 107 "parse.lex"
 {                      /* throw away space/tabs */
                            sawspace = TRUE;    /* but remember for fill_args */
                        }
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 111 "./parse.lex"
+#line 111 "parse.lex"
 {
                            sawspace = TRUE;    /* remember for fill_args */
                            ++sudolineno;
@@ -1631,7 +1700,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 117 "./parse.lex"
+#line 117 "parse.lex"
 {
                            LEXTRACE("QUOTEDCHAR ");
                            fill_args(yytext + 1, 1, sawspace);
@@ -1640,9 +1709,8 @@ YY_RULE_SETUP
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 123 "./parse.lex"
+#line 123 "parse.lex"
 {
-                           /* XXX - should allow " to be quoted */
                            LEXTRACE("WORD(1) ");
                            fill(yytext + 1, yyleng - 2);
                            return(WORD);
@@ -1650,7 +1718,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 130 "./parse.lex"
+#line 129 "parse.lex"
 {
                            BEGIN INITIAL;
                            ++sudolineno;
@@ -1660,7 +1728,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 137 "./parse.lex"
+#line 136 "parse.lex"
 {
                            BEGIN INITIAL;
                            unput(*yytext);
@@ -1669,7 +1737,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 143 "./parse.lex"
+#line 142 "parse.lex"
 {
                            ++sudolineno;
                            LEXTRACE("\n");
@@ -1678,7 +1746,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 149 "./parse.lex"
+#line 148 "parse.lex"
 {
                            ++sudolineno;
                            LEXTRACE("\n");
@@ -1687,7 +1755,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 155 "./parse.lex"
+#line 154 "parse.lex"
 {
                            LEXTRACE("ARG ");
                            fill_args(yytext, yyleng, sawspace);
@@ -1696,7 +1764,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 161 "./parse.lex"
+#line 160 "parse.lex"
 {
                            LEXTRACE(", ");
                            return(',');
@@ -1704,7 +1772,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 166 "./parse.lex"
+#line 165 "parse.lex"
 {
                            if (yyleng % 2 == 1)
                                return('!');    /* return '!' */
@@ -1712,7 +1780,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 171 "./parse.lex"
+#line 170 "parse.lex"
 {
                            LEXTRACE("= ");
                            return('=');
@@ -1720,7 +1788,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 176 "./parse.lex"
+#line 175 "parse.lex"
 {
                            LEXTRACE(": ");
                            return(':');
@@ -1728,7 +1796,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 181 "./parse.lex"
+#line 180 "parse.lex"
 {
                                /* cmnd does not require passwd for this user */
                                LEXTRACE("NOPASSWD ");
@@ -1737,7 +1805,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 187 "./parse.lex"
+#line 186 "parse.lex"
 {
                                /* cmnd requires passwd for this user */
                                LEXTRACE("PASSWD ");
@@ -1746,7 +1814,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 193 "./parse.lex"
+#line 192 "parse.lex"
 {
                            /* netgroup */
                            fill(yytext, yyleng);
@@ -1756,7 +1824,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 200 "./parse.lex"
+#line 199 "parse.lex"
 {
                            /* UN*X group */
                            fill(yytext, yyleng);
@@ -1766,7 +1834,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 207 "./parse.lex"
+#line 206 "parse.lex"
 {
                            fill(yytext, yyleng);
                            LEXTRACE("NTWKADDR ");
@@ -1775,7 +1843,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 213 "./parse.lex"
+#line 212 "parse.lex"
 {
                            fill(yytext, yyleng);
                            LEXTRACE("NTWKADDR ");
@@ -1784,7 +1852,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 219 "./parse.lex"
+#line 218 "parse.lex"
 {
                            fill(yytext, yyleng);
                            LEXTRACE("FQHOST ");
@@ -1793,7 +1861,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 225 "./parse.lex"
+#line 224 "parse.lex"
 {
                                BEGIN GOTRUNAS;
                                LEXTRACE("RUNAS ");
@@ -1802,7 +1870,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 231 "./parse.lex"
+#line 230 "parse.lex"
 {
                            /* Runas_Alias user can run command as or ALL */
                            if (strcmp(yytext, "ALL") == 0) {
@@ -1817,7 +1885,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 243 "./parse.lex"
+#line 242 "parse.lex"
 {
                            /* username/uid that user can run command as */
                            fill(yytext, yyleng);
@@ -1827,14 +1895,14 @@ YY_RULE_SETUP
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 250 "./parse.lex"
+#line 249 "parse.lex"
 {
                            BEGIN INITIAL;
                        }
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 254 "./parse.lex"
+#line 253 "parse.lex"
 {
                            if (strcmp(yytext, "ALL") == 0) {
                                LEXTRACE("ALL ");
@@ -1848,9 +1916,8 @@ YY_RULE_SETUP
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 265 "./parse.lex"
+#line 264 "parse.lex"
 {
-                           /* XXX - should allow [!=,] to be quoted */
                            LEXTRACE("WORD(3) ");
                            fill(yytext, yyleng);
                            return(WORD);
@@ -1858,7 +1925,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 272 "./parse.lex"
+#line 270 "parse.lex"
 {
                            BEGIN GOTDEFS;
                            if (yyleng == 9) {
@@ -1878,7 +1945,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 289 "./parse.lex"
+#line 287 "parse.lex"
 {
                            fill(yytext, yyleng);
                            if (*yytext == 'H') {
@@ -1901,7 +1968,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 309 "./parse.lex"
+#line 307 "parse.lex"
 {
                            /* directories can't have args... */
                            if (yytext[yyleng - 1] == '/') {
@@ -1917,7 +1984,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 322 "./parse.lex"
+#line 320 "parse.lex"
 {
                            /* a word */
                            fill(yytext, yyleng);
@@ -1927,7 +1994,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 329 "./parse.lex"
+#line 327 "parse.lex"
 {
                            LEXTRACE("ERROR ");
                            return(ERROR);
@@ -1935,10 +2002,10 @@ YY_RULE_SETUP
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 334 "./parse.lex"
+#line 332 "parse.lex"
 ECHO;
        YY_BREAK
-#line 1942 "lex.yy.c"
+#line 2009 "lex.yy.c"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(GOTCMND):
 case YY_STATE_EOF(GOTRUNAS):
@@ -2234,7 +2301,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 >= 476 )
+                       if ( yy_current_state >= 487 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2269,11 +2336,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 >= 476 )
+               if ( yy_current_state >= 487 )
                        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 == 475);
+       yy_is_jam = (yy_current_state == 486);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -2829,20 +2896,27 @@ int main()
        return 0;
        }
 #endif
-#line 334 "./parse.lex"
+#line 332 "parse.lex"
 
 static void
 fill(s, len)
     char *s;
     int len;
 {
+    int i, j;
+
     yylval.string = (char *) malloc(len + 1);
     if (yylval.string == NULL)
        yyerror("unable to allocate memory");
 
-    /* copy the string and NULL-terminate it */
-    (void) strncpy(yylval.string, s, len);
-    yylval.string[len] = '\0';
+    /* Copy the string and collapse any escaped characters. */
+    for (i = 0, j = 0; i < len; i++, j++) {
+       if (s[i] == '\\' && i != len - 1)
+           yylval.string[j] = s[++i];
+       else
+           yylval.string[j] = s[i];
+    }
+    yylval.string[j] = '\0';
 }
 
 static void
index 4b8917df00e6fc2c5bd68d5d4e27bbed84838fa6..cd5fdedf4474640328b71151e7bb0fe3a517f932 100644 (file)
--- a/parse.lex
+++ b/parse.lex
@@ -93,7 +93,7 @@ extern void yyerror           __P((char *));
 OCTET                  (1?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5])
 DOTTEDQUAD             {OCTET}(\.{OCTET}){3}
 HOSTNAME               [[:alnum:]_-]+
-WORD                   [^@!=:,\(\) \t\n\\]+
+WORD                   ([^@!=:,\(\) \t\n\\]|\\[^\n])+
 
 %e     4000
 %p     6000
@@ -114,14 +114,13 @@ WORD                      [^@!=:,\(\) \t\n\\]+
                            LEXTRACE("\n\t");
                        }                       /* throw away EOL after \ */
 
-<GOTCMND>\\[@:\,=\\ \t]        {
+<GOTCMND>\\[:\,=\\ \t] {
                            LEXTRACE("QUOTEDCHAR ");
                            fill_args(yytext + 1, 1, sawspace);
                            sawspace = FALSE;
                        }
 
-<GOTDEFS>\"[^\"]+\"    {
-                           /* XXX - should allow " to be quoted */
+<GOTDEFS>\"([^\"]|\\\")+\"     {
                            LEXTRACE("WORD(1) ");
                            fill(yytext + 1, yyleng - 2);
                            return(WORD);
@@ -262,8 +261,7 @@ PASSWD[[:blank:]]*: {
                            }
                        }
 
-<GOTDEFS>[^ \t\n,=!]+  {
-                           /* XXX - should allow [!=,] to be quoted */
+<GOTDEFS>{WORD}        {
                            LEXTRACE("WORD(3) ");
                            fill(yytext, yyleng);
                            return(WORD);
@@ -337,13 +335,20 @@ fill(s, len)
     char *s;
     int len;
 {
+    int i, j;
+
     yylval.string = (char *) malloc(len + 1);
     if (yylval.string == NULL)
        yyerror("unable to allocate memory");
 
-    /* copy the string and NULL-terminate it */
-    (void) strncpy(yylval.string, s, len);
-    yylval.string[len] = '\0';
+    /* Copy the string and collapse any escaped characters. */
+    for (i = 0, j = 0; i < len; i++, j++) {
+       if (s[i] == '\\' && i != len - 1)
+           yylval.string[j] = s[++i];
+       else
+           yylval.string[j] = s[i];
+    }
+    yylval.string[j] = '\0';
 }
 
 static void