Imported Upstream version 1.8.4p4
[debian/sudo] / plugins / sudoers / toke.c
index 7bb8eb310a771e69d81fd884ea1c2ed9b2dd9d64..c007c8d13232735c159810e082fdc1e60aa63bb1 100644 (file)
@@ -4,7 +4,7 @@
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
- * $Header: /cvs/src/usr.bin/lex/flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $
+ * $Header: /home/cvs/openbsd/src/usr.bin/lex/flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $
  */
 
 #define FLEX_SCANNER
@@ -349,15 +349,15 @@ static yyconst short int yy_accept[607] =
        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
 
        37,   37,    0,   30,   42,   42,   42,    0,    0,    0,
-       21,   20,    0,    0,    0,    0,    0,   20,    0,   47,
-       47,   47,    0,    0,    0,   37,   37,   37,   37,   37,
+       18,    0,   21,   20,    0,    0,    0,    0,    0,   20,
+        0,   47,   47,   47,    0,    0,    0,   37,   37,   37,
        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
-       37,   37,   37,    0,   28,   42,   42,   21,    0,   18,
+       37,   37,   37,   37,   37,    0,   28,   42,   42,   21,
         0,    0,   20,   47,   47,   47,   47,   47,    0,    0,
         0,    0,    0,   37,   37,   37,   37,   37,   37,   37,
        37,    0,   31,   42,    0,   47,   47,   47,   37,   37,
-       37,   37,   37,   37,    0,   29,    0,   47,   47,   47,
-       47,   47,   37,   37,   37,   37,   37,    0,   19,   35,
+       37,   37,   37,   37,    0,   29,    0,    0,   19,   47,
+       47,   47,   47,   47,   37,   37,   37,   37,   37,   35,
 
        35,   35,   35,   35,   35,    0
     } ;
@@ -435,51 +435,51 @@ static yyconst short int yy_base[671] =
       489, 2223, 2213, 2198, 2211, 2198,  420,  407,  529,  490,
       491, 1263, 1299, 1335, 2235, 2234,  839, 2234, 2232, 2228,
      2226,  528,  848,  657,  856,  665, 1371,    0,  877, 1382,
-      886,  894, 1424,  913,  570, 3665, 2208, 2197, 2198, 2177,
-     2184, 2193, 2190, 2169,  558, 2145, 2098, 2099,  648,  626,
-      530,  559,  923,  336, 1467, 1503,  964, 2138, 2137, 2108,
-     2086, 1537,  551, 1000, 1041, 1082,  653,  694,  797, 1049,
-
-      923, 1580,    0, 1116, 1591, 1090, 1008, 1633, 1125, 2069,
-     2065,  747,  686, 2046, 2005,  786,  926,  905, 2014, 1982,
-      679,  634,  544,  915, 1675, 1710, 1745, 2015, 1978, 1962,
-     1150, 1781, 1158, 1133, 1822, 1197, 1166, 1954, 1239, 1273,
+      886,  894, 1424,  913,  570, 3665, 2208, 2197, 2201, 2178,
+     2185, 2194, 2194, 2176,  558, 2169, 2152, 2150,  648,  626,
+      530,  559,  923,  336, 1467, 1503,  964, 2171, 2140, 2139,
+     2138, 1537,  551, 1000, 1041, 1082,  653,  694,  797, 1049,
+
+      923, 1580,    0, 1116, 1591, 1090, 1008, 1633, 1125, 2121,
+     2082,  747,  686, 2064, 2071,  786,  926,  905, 2080, 2033,
+      679,  634,  544,  915, 1675, 1710, 1745, 2052, 2043, 2033,
+     1150, 1781, 1158, 1133, 1822, 1197, 1166, 2028, 1239, 1273,
      1207,  950,  951,  962,  991, 1247, 1073, 1865,    0, 1283,
-     1876, 1307, 1315, 1918, 1323, 1923, 1923, 1188, 3665, 1924,
-     1898, 1893, 1873, 1286, 3665, 1336, 3665,  707, 1790, 1783,
-      786,  930,  764, 1298, 1358, 1041, 1960, 1995, 1400, 1823,
-     1799, 1348,  708, 1406, 1348, 2031,    0,  559, 2042, 1441,
+     1876, 1307, 1315, 1918, 1323, 1987, 1968, 1188, 3665, 1967,
+     1951, 1929, 1913, 1286, 3665, 1336, 3665,  707, 1897, 1889,
+      786,  930,  764, 1298, 1358, 1041, 1960, 1995, 1400, 1927,
+     1879, 1348,  708, 1406, 1348, 2031,    0,  559, 2042, 1441,
      1449, 2083, 1477, 1487, 1513, 1523, 1230, 1290, 1458, 1548,
 
-     1557, 1602, 2126,    0, 1613, 2137, 1650, 1565, 1660, 1765,
-     1763, 1680, 1675, 1359, 1406, 1626, 1601, 1577,  897,  938,
+     1557, 1602, 2126,    0, 1613, 2137, 1650, 1565, 1660, 1806,
+     1779, 1680, 1675, 1359, 1406, 1626, 1601, 1577,  897,  938,
      1695, 1589, 2180, 2216, 2252, 2288, 1611, 1686, 1720, 1731,
      1563, 1478, 1504, 1694, 1524, 2324,    0,  617, 2335, 1753,
      1761, 2376, 1769, 1798, 1550, 1808, 1841, 1851, 1335, 1358,
-     1887,  714,  825, 2419,    0,  926, 1407, 1508, 1506, 1471,
-     1547, 3665, 1616, 3665, 1423, 1731, 1907, 1512, 1575, 1910,
-     1915, 1935, 1498, 2429, 2465, 1971, 1611, 1977, 1457, 2005,
-     2015, 1987, 1408, 1254, 1732, 1782, 2059, 1842, 2501,    0,
-     1025, 2512, 2067, 2100, 2553, 2108, 2155, 2164, 2189, 1769,
-
-     1207, 1189, 1634, 3665, 1699, 1162, 1113, 1074, 1118,  384,
-     1040, 2211, 2218, 2238, 2243, 2263, 2288, 2249, 2307, 2596,
-     2632, 2668, 2304, 2354, 2395, 1025, 1006, 1889, 2016, 2362,
-     2043, 2704,    0, 1224, 2715, 2403, 2437, 2445,  992, 2454,
-     2474, 2483,  903, 1921, 3665, 1941,  839, 3665,  843, 3665,
-     1306, 2489, 2529, 2537, 1911, 2758, 2794, 2573, 2579,  811,
-     2607, 2617, 2642,  640,  629, 2109,  535,  447, 2650,    0,
-     1428, 1942, 3665, 2044, 2216, 2830, 2866, 2902, 2676, 2684,
-     2692,  337,    0,  333, 2067, 3665,  327, 2733, 1912, 2938,
-     2974, 2743, 3665, 2767, 2777, 2658, 3665,  166, 3665, 2805,
+     1887,  714,  825, 2419,    0,  926, 1407, 1468, 1430, 1431,
+     1547, 3665, 1616, 3665, 1381, 1731, 1045, 1512, 1575, 1908,
+     1913, 1970, 1498, 2429, 2465, 1947, 1611, 1981, 1264, 2006,
+     2016, 2061, 1198, 1181, 1732, 1782, 2067, 1842, 2501,    0,
+     1181, 2512, 2100, 1904, 2553, 2110, 2155, 2164, 2189, 1769,
+
+     1142, 1232, 1634, 3665, 1699, 1095, 1077, 1025, 1046, 1306,
+     3665,  384,  981, 2211, 2218, 2238, 2243, 2263, 2288, 2249,
+     2307, 2596, 2632, 2668, 2304, 2354, 2395,  983,  894, 1902,
+     1928, 2362, 1929, 2704,    0, 1428, 2715, 2403, 2437, 2445,
+      867, 2454, 2474, 2483,  831, 1982, 3665, 1983,  782, 3665,
+     1511, 2489, 2529, 2537, 1895, 2758, 2794, 2573, 2579,  650,
+     2607, 2617, 2642,  629,  525, 1931,  447,  347, 2650,    0,
+     1528, 2019, 3665, 2044, 1805, 2830, 2866, 2902, 2676, 2684,
+     2692,  323,    0,  316, 2067, 3665,  166, 1845, 3665, 2733,
+     1945, 2938, 2974, 2743, 3665, 2767, 2777, 2658, 3665, 2805,
 
      2813, 2847,   63, 2855, 2881, 3665, 3023, 3039, 3055, 3071,
-     3087, 3103, 3119, 3135, 3151, 3157, 3173, 3189, 1498, 3205,
+     3087, 3103, 3119, 3135, 3151, 3157, 3173, 3189, 2025, 3205,
      3221, 3237, 3253, 3269, 3285, 3301, 3307, 3314, 3330, 3346,
      3352, 3359, 3365, 3371, 3377, 3384, 3390, 3396, 3402, 3409,
      3417, 3423, 3429, 3435, 3442, 3450, 3456, 3462, 3469, 3477,
      3483, 3491, 3498, 3506, 3512, 3520, 3527, 3535, 3551, 3567,
-     3573, 3581, 3588, 3604, 3610, 3618, 3624, 3632, 1295, 3648
+     3583, 3589, 3597, 3604, 3610, 3618, 3624, 3632, 3648, 1295
     } ;
 
 static yyconst short int yy_def[671] =
@@ -534,21 +534,21 @@ static yyconst short int yy_def[671] =
       655,  655,  656,  392,  656,  656,  436,  436,  606,  439,
       439,  606,  439,  606,  606,  606,  606,  606,  606,  657,
       657,  658,  658,  658,  454,  454,   35,   35,   35,   35,
-      606,  606,  606,  606,  606,  606,  623,  623,  611,  659,
-      660,  611,  611,  611,  611,  611,  611,  606,  606,  606,
-      606,  606,  606,  661,  661,  662,  442,  662,  662,  489,
+      606,  606,  606,  606,  606,  606,  659,  623,  611,  660,
+      661,  611,  611,  611,  611,  611,  611,  606,  606,  606,
+      606,  606,  606,  662,  662,  663,  442,  663,  663,  489,
       489,  606,  492,  492,  606,  492,  606,  606,  606,  606,
 
-      663,  663,  606,  606,   35,   35,   35,  606,  664,  623,
-      611,  659,  659,  659,  659,  606,  659,  660,  660,  611,
-      611,  611,  606,  606,  606,  606,  665,  665,  666,  495,
-      666,  666,  532,  532,  606,  535,  535,  535,  606,  606,
-      606,  606,  606,  606,  606,   35,   35,  606,  664,  606,
+      664,  664,  606,  606,   35,   35,   35,  606,  659,  659,
+      606,  623,  611,  660,  660,  660,  660,  606,  660,  661,
+      661,  611,  611,  611,  606,  606,  606,  606,  665,  665,
+      666,  495,  666,  666,  534,  534,  606,  537,  537,  537,
+      606,  606,  606,  606,  606,  606,  606,   35,   35,  606,
       623,  606,  606,  611,  611,  611,  611,  611,  606,  606,
       606,  606,  606,  606,  667,  667,  668,  668,  668,  569,
-      569,  606,  606,   35,  623,  611,  611,  611,  606,  606,
-      606,  606,  669,  669,  606,  606,  670,  611,  611,  611,
-      611,  611,  606,  606,  606,  606,  606,  670,  606,  611,
+      569,  606,  606,   35,  669,  611,  611,  611,  606,  606,
+      606,  606,  670,  670,  606,  606,  669,  669,  606,  611,
+      611,  611,  611,  611,  606,  606,  606,  606,  606,  611,
 
       611,  611,  611,  611,  611,    0,  606,  606,  606,  606,
       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
@@ -578,7 +578,7 @@ static yyconst short int yy_nxt[3732] =
        56,   79,  147,  127,   77,   56,  148,   60,   61,   93,
        93,  150,  115,   93,   93,  238,  152,   62,   99,   99,
        99,   99,   99,   99,   99,   99,  146,   87,   79,   79,
-      146,   93,   62,   15,   16,   17,  117,   63,  599,  152,
+      146,   93,   62,   15,   16,   17,  117,   63,  589,  152,
       192,  195,  129,   77,  100,  100,  100,  100,  100,  101,
       143,  115,  130,   78,   94,   98,   98,   98,   98,   98,
        98,   98,   98,   79,  118,  119,  155,  156,  120,  151,
@@ -596,11 +596,11 @@ static yyconst short int yy_nxt[3732] =
 
        79,  152,   68,   69,   70,  606,  196,   79,  134,  134,
        79,  606,  134,  134,   79,  198,   71,  168,  168,  168,
-      168,  168,  168,  606,  155,  156,   79,  231,  159,  599,
+      168,  168,  168,  606,  155,  156,   79,  231,  159,  382,
       134,  160,  160,  160,  160,  160,  160,  160,  160,  241,
-       72,   15,   16,   17,   67,   63,  382,  170,   89,  283,
+       72,   15,   16,   17,   67,   63,  532,  170,   89,  283,
        68,   69,   70,  135,  162,   86,  214,   86,   86,  267,
-      530,   86,   86,  268,   71,   86,  170,  164,  165,  166,
+      606,   86,   86,  268,   71,   86,  170,  164,  165,  166,
       164,  164,  164,  164,  164,  214,   93,   93,   86,   86,
        93,   93,   79,   79,   79,  240,   83,  238,   72,   83,
       168,  168,  168,  168,  168,  168,  168,  168,   93,   84,
@@ -611,7 +611,7 @@ static yyconst short int yy_nxt[3732] =
       168,  168,  168,  168,  168,  168,  168,   85,   85,   85,
        85,   85,   85,   85,   85,   79,  551,   98,   98,   98,
        98,   98,   98,   78,  145,   79,  280,  145,  145,   78,
-      606,  237,   78,   78,  145,   78,   78,   78,  104,  104,
+      382,  237,   78,   78,  145,   78,   78,   78,  104,  104,
       104,  104,  104,  104,  104,  104,   97,  145,  279,   78,
       104,  104,  104,  104,  104,  105,  105,  105,  105,  106,
       105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
@@ -620,7 +620,7 @@ static yyconst short int yy_nxt[3732] =
        78,   78,   78,   78,   78,   78,   78,   78,   78,  105,
       105,  105,  105,  105,  105,  105,  105,  606,  249,  249,
       249,  105,  105,  105,  105,  105,  177,   79,   79,   79,
-      105,  178,  170,  275,  179,  282,  180,  117,  382,  143,
+      105,  178,  170,  275,  179,  282,  180,  117,  532,  143,
       115,  214,   97,  238,   78,   78,   78,   78,   78,   78,
       114,  115,   78,   78,   78,  170,   78,   78,  134,  134,
        78,  265,  134,  134,  214,  118,  119,   79,   79,  120,
@@ -632,8 +632,8 @@ static yyconst short int yy_nxt[3732] =
       606,  606,  160,  160,  160,  160,  160,  160,  160,  160,
       160,  160,  160,  160,  160,  160,  160,  160,  484,  484,
       123,   83,  242,  243,  244,  242,  242,  242,  242,  242,
-       83,  142,  530,  322,  606,  606,  606,  606,  606,  606,
-      606,  606,   78,  487,   78,   78,   78,  170,   78,   78,
+       83,  142,  487,  322,  606,  606,  606,  606,  606,  606,
+      606,  606,   78,  559,   78,   78,   78,  170,   78,   78,
       253,  170,   78,  134,   79,   79,  255,  134,  606,  170,
       255,   83,   79,  134,   78,   78,   78,   90,  255,   90,
        90,   90,  372,   90,   90,  134,  134,   90,  247,  247,
@@ -651,17 +651,17 @@ static yyconst short int yy_nxt[3732] =
 
       257,  257,  257,  258,  258,  258,  258,  258,  259,  365,
       253,  170,   79,  167,  167,  167,  167,  167,  167,  133,
-      300,   78,   78,  133,  559,   78,   78,  421,  606,  133,
+      300,   78,   78,  133,  574,   78,   78,  421,  606,  133,
       256,  256,  256,  256,  256,  256,  256,  256,  606,  170,
-      419,  133,  133,   78,  201,  550,  202,  202,  202,  202,
+      419,  133,  133,   78,  201,  170,  202,  202,  202,  202,
       202,  202,  202,  202,  289,  289,  289,  289,  289,  289,
       289,  289,  211,  294,  295,  296,  294,  294,  294,  294,
       294,  264,  264,  264,  264,  264,  264,  264,  264,   79,
-      201,  574,  203,  203,  203,  203,  203,  203,  203,  203,
+      201,  170,  203,  203,  203,  203,  203,  203,  203,  203,
       253,  170,  298,  298,  298,  298,  298,  298,  467,   83,
 
       255,  302,  302,  302,  302,  302,  302,  302,  302,  303,
-      303,  303,  303,  303,  304,   79,  201,  170,  204,  204,
+      303,  303,  303,  303,  304,   79,  201,  487,  204,  204,
       204,  204,  204,  205,  202,  202,  606,  366,  301,  301,
       301,  301,  301,  301,  301,  301,  606,  170,  325,  326,
       327,  325,  325,  325,  325,  325,  300,  501,  501,  367,
@@ -671,41 +671,41 @@ static yyconst short int yy_nxt[3732] =
       284,  284,  284,  284,  284,  300,   79,  420,  469,  206,
       206,  206,  206,  206,  206,  208,  209,  210,  210,  210,
 
-      210,  210,  210,  211,  253,  170,  170,  212,  212,  212,
+      210,  210,  210,  211,  253,  170,  434,  212,  212,  212,
       212,  212,   79,  337,  346,  338,  338,  338,  338,  338,
-      338,  338,  338,  349,  349,  349,  349,  349,  350,  487,
+      338,  338,  338,  349,  349,  349,  349,  349,  350,   79,
       212,  212,  212,  212,  212,  212,  170,  215,  216,  217,
-      215,  215,  215,  215,  215,  218,  527,  527,  434,  219,
+      215,  215,  215,  215,  215,  218,  510,  511,  511,  219,
       219,  219,  219,  219,  337,  375,  339,  339,  339,  339,
       339,  339,  339,  339,  309,  309,  309,  309,  309,  309,
       309,  309,  219,  219,  219,  219,  219,  219,  220,  220,
-      220,  220,  220,  220,  220,  220,  606,  170,   79,   79,
+      220,  220,  220,  220,  220,  220,  606,  170,  550,   79,
       220,  220,  220,  220,  220,  337,  346,  340,  340,  340,
 
       340,  340,  341,  338,  338,  348,  348,  348,  348,  348,
       348,  348,  348,  206,  206,  206,  206,  206,  206,  201,
-      550,  202,  202,  202,  202,  202,  202,  202,  202,  253,
+      549,  202,  202,  202,  202,  202,  202,  202,  202,  253,
       170,  344,  344,  344,  344,  344,  344,  548,  606,  300,
       347,  347,  347,  347,  347,  347,  347,  347,  387,  387,
-      387,  387,  387,  388,   79,  201,  547,  202,  202,  202,
+      387,  387,  387,  388,   79,  201,  170,  202,  202,  202,
       202,  202,  202,  202,  202,  336,  336,  336,  336,  336,
       336,  336,  336,  386,  386,  386,  386,  386,  386,  386,
       386,  394,  395,  396,  394,  394,  394,  394,  394,  358,
        79,  253,  170,  254,  254,  254,  254,  254,  254,  254,
 
-      254,  255,  253,  170,  546,  256,  256,  256,  256,  256,
+      254,  255,  529,  529,  434,  256,  256,  256,  256,  256,
       606,  359,  385,  385,  385,  385,  385,  385,  385,  385,
-      337,  170,  338,  338,  338,  338,  338,  338,  256,  256,
+      337,  384,  338,  338,  338,  338,  338,  338,  256,  256,
       256,  256,  256,  256,  170,  260,  261,  262,  260,  260,
-      260,  260,  260,  263,  170,  565,  565,  264,  264,  264,
+      260,  260,  260,  263,  170,  253,  170,  264,  264,  264,
       264,  264,  337,  300,  338,  338,  338,  338,  338,  338,
       338,  338,  355,  355,  355,  355,  355,  355,  355,  355,
-      264,  264,  264,  264,  264,  264,  283,  434,  284,  284,
+      264,  264,  264,  264,  264,  264,  283,  478,  284,  284,
       284,  284,  284,  284,  284,  284,  337,  364,  338,  338,
       338,  338,  338,  338,  338,  338,  253,  170,  399,  399,
 
-      399,  399,  399,  399,  170,  597,  346,  575,   83,  365,
-      597,   79,  283,  346,  285,  285,  285,  285,  285,  285,
+      399,  399,  399,  399,  170,  599,  346,  510,  511,  365,
+      599,   79,  283,  346,  285,  285,  285,  285,  285,  285,
       285,  285,  403,  403,  403,  403,  403,  403,  403,  403,
       404,  404,  404,  404,  404,  405,  606,  366,  402,  402,
       402,  402,  402,  402,  402,  402,   79,   79,  283,  170,
@@ -718,21 +718,21 @@ static yyconst short int yy_nxt[3732] =
       299,  299,  299,  299,  299,  300,   79,  463,  503,  301,
       301,  301,  301,  301,  375,  376,  376,  376,  376,  376,
       376,  393,  393,  393,  393,  393,  393,  393,  393,  464,
-      504,  384,  301,  301,  301,  301,  301,  301,  170,  305,
-      306,  307,  305,  305,  305,  305,  305,  308,   79,  583,
-      583,  309,  309,  309,  309,  309,  436,  436,  436,  436,
+      504,  508,  301,  301,  301,  301,  301,  301,  170,  305,
+      306,  307,  305,  305,  305,  305,  305,  308,   79,  565,
+      565,  309,  309,  309,  309,  309,  436,  436,  436,  436,
       436,  436,  436,  436,  437,  437,  437,  437,  437,  438,
-      478,  253,  170,  508,  309,  309,  309,  309,  309,  309,
+      507,  253,  170,  506,  309,  309,  309,  309,  309,  309,
       283,  346,  284,  284,  284,  284,  284,  284,  284,  284,
       606,  382,  435,  435,  435,  435,  435,  435,  435,  435,
 
       444,  384,  445,  445,  445,  445,  445,  445,  445,  445,
-      507,  472,  144,  144,   83,   79,  283,  382,  284,  284,
+      505,  472,  575,   83,   83,   79,  283,  382,  284,  284,
       284,  284,  284,  284,  284,  284,  444,  434,  446,  446,
       446,  446,  446,  446,  446,  446,  444,  606,  447,  447,
-      447,  447,  447,  448,  445,  445,   79,  434,  461,  506,
-      505,   79,  332,  333,  334,  332,  332,  332,  332,  332,
-      335,  253,  170,  444,  336,  336,  336,  336,  336,  510,
+      447,  447,  447,  448,  445,  445,   79,  434,  461,  583,
+      583,   79,  332,  333,  334,  332,  332,  332,  332,  332,
+      335,  253,  170,  444,  336,  336,  336,  336,  336,  512,
       462,  401,  409,  409,  409,  409,  409,  409,  409,  409,
       455,  455,  455,  455,  455,  456,  384,  336,  336,  336,
       336,  336,  336,  253,  170,  344,  344,  344,  344,  344,
@@ -740,7 +740,7 @@ static yyconst short int yy_nxt[3732] =
       344,  344,  344,  300,  253,  170,  345,  345,  345,  345,
       345,  345,  345,  345,  346,  606,  170,  463,  347,  347,
       347,  347,  347,   79,  472,  401,  253,  170,  451,  451,
-      451,  451,  451,  451,  331,  503,  401,   79,  511,  464,
+      451,  451,  451,  451,  331,  503,  401,   79,  513,  464,
       466,  347,  347,  347,  347,  347,  347,  170,  351,  352,
       353,  351,  351,  351,  351,  351,  354,  504,  465,   79,
       355,  355,  355,  355,  355,  454,  454,  454,  454,  454,
@@ -748,9 +748,9 @@ static yyconst short int yy_nxt[3732] =
       453,  453,  453,  355,  355,  355,  355,  355,  355,  375,
       376,  376,  376,  376,  376,  376,  376,  376,  470,  478,
 
-      544,  479,  479,  479,  479,  479,  479,  479,  479,  443,
+      546,  479,  479,  479,  479,  479,  479,  479,  479,  443,
       443,  443,  443,  443,  443,  443,  443,  460,  470,  459,
-      470,  471,  545,   79,  375,  377,  377,  377,  377,  377,
+      470,  471,  547,   79,  375,  377,  377,  377,  377,  377,
       377,  377,  377,  478,  470,  480,  480,  480,  480,  480,
       480,  480,  480,   79,  478,  382,  481,  481,  481,  481,
       481,  482,  479,  479,  470,  434,  470,  470,   79,  375,
@@ -759,70 +759,70 @@ static yyconst short int yy_nxt[3732] =
       490,  491,  606,  170,  488,  488,  488,  488,  488,  488,
       488,  488,  401,   79,  382,  382,  383,  383,  383,  383,
 
-      383,  383,  383,  383,  384,  487,  458,  457,  385,  385,
+      383,  383,  383,  383,  384,  487,  588,  589,  385,  385,
       385,  385,  385,  497,  498,  499,  497,  497,  497,  497,
-      497,  444,  331,  445,  445,  445,  445,  445,  445,  445,
+      497,  444,  458,  445,  445,  445,  445,  445,  445,  445,
       445,  385,  385,  385,  385,  385,  385,  389,  390,  391,
-      389,  389,  389,  389,  389,  392,  251,  418,  417,  393,
+      389,  389,  389,  389,  389,  392,  588,  589,  457,  393,
       393,  393,  393,  393,  444,  606,  445,  445,  445,  445,
       445,  445,  445,  445,  444,  487,  445,  445,  445,  445,
       445,  445,  393,  393,  393,  393,  393,  393,  253,  170,
       399,  399,  399,  399,  399,  399,  399,  399,  346,  253,
       170,  400,  400,  400,  400,  400,  400,  400,  400,  401,
 
-      253,  170,  382,  402,  402,  402,  402,  402,  467,   83,
-      401,  513,  487,  514,  515,  516,  513,  415,  514,  515,
-      516,  509,  544,  414,  554,  588,  402,  402,  402,  402,
+      253,  170,  331,  402,  402,  402,  402,  402,  554,  515,
+      401,  516,  517,  518,  515,  382,  516,  517,  518,  535,
+      535,  535,  535,  535,  536,  487,  402,  402,  402,  402,
       402,  402,  170,  406,  407,  408,  406,  406,  406,  406,
-      406,  413,  572,  572,  545,  409,  409,  409,  409,  409,
-      520,  521,  522,  520,  520,  520,  520,  520,  517,   79,
-       79,  412,  411,  519,  573,  573,  410,  337,  409,  409,
+      406,  382,  606,   79,  382,  409,  409,  409,  409,  409,
+      251,  532,  532,  418,  532,  417,  519,  415,  590,  414,
+      472,  521,  473,  473,  473,  473,  473,  473,  409,  409,
       409,  409,  409,  409,  375,  376,  376,  376,  376,  376,
-      376,  376,  376,   79,  472,  331,  473,  473,  473,  473,
-      473,  473,  523,  524,  525,  523,  523,  523,  523,  523,
-
-      478,  251,  479,  479,  479,  479,  479,  479,   79,  375,
-      376,  376,  376,  376,  376,  376,  376,  376,  478,   79,
-      479,  479,  479,  479,  479,  479,  479,  479,  478,  382,
-      479,  479,  479,  479,  479,  479,  479,  479,  211,  530,
-      370,  369,  363,   79,  382,  585,  432,  432,  432,  432,
-      432,  432,  432,  432,  384,  382,  606,  433,  433,  433,
-      433,  433,  433,  433,  433,  434,  530,  586,  585,  435,
-      435,  435,  435,  435,  496,  496,  496,  496,  496,  496,
-      496,  496,  532,  532,  532,  532,  532,  532,  532,  532,
-      586,  362,  435,  435,  435,  435,  435,  435,  439,  440,
-
-      441,  439,  439,  439,  439,  439,  442,  357,  356,  331,
-      443,  443,  443,  443,  443,  533,  533,  533,  533,  533,
-      534,  606,  382,  531,  531,  531,  531,  531,  531,  531,
-      531,  251,  530,  443,  443,  443,  443,  443,  443,  253,
+      376,  376,  376,  546,  572,  522,  523,  524,  522,  522,
+      522,  522,  522,   79,  413,   79,  525,  526,  527,  525,
+
+      525,  525,  525,  525,  412,  547,  573,  411,   79,  375,
+      376,  376,  376,  376,  376,  376,  376,  376,   79,  478,
+      572,  479,  479,  479,  479,  479,  479,  479,  479,  478,
+      410,  479,  479,  479,  479,  479,  479,  479,  479,  144,
+      144,  337,  573,   79,  382,  585,  432,  432,  432,  432,
+      432,  432,  432,  432,  384,  382,  331,  433,  433,  433,
+      433,  433,  433,  433,  433,  434,  251,  586,  585,  435,
+      435,  435,  435,  435,  478,  211,  479,  479,  479,  479,
+      479,  479,  496,  496,  496,  496,  496,  496,  496,  496,
+      586,  370,  435,  435,  435,  435,  435,  435,  439,  440,
+
+      441,  439,  439,  439,  439,  439,  442,  369,  363,  362,
+      443,  443,  443,  443,  443,  534,  534,  534,  534,  534,
+      534,  534,  534,  606,  357,  533,  533,  533,  533,  533,
+      533,  533,  533,  443,  443,  443,  443,  443,  443,  253,
       170,  451,  451,  451,  451,  451,  451,  451,  451,  401,
       253,  170,  452,  452,  452,  452,  452,  452,  452,  452,
-      211,  211,  276,  320,  453,  453,  453,  453,  453,  170,
-      539,  539,  539,  539,  539,  539,  539,  539,  170,  540,
-      540,  540,  540,  540,  540,  540,  540,  453,  453,  453,
-      453,  453,  453,  472,  319,  473,  473,  473,  473,  473,
-
-      473,  473,  473,  170,  541,  541,  541,  541,  541,  542,
-      539,  539,  606,  317,  606,  606,  606,  575,   83,  513,
-      316,  514,  515,  516,  315,  314,  313,  312,   79,  472,
-      587,  474,  474,  474,  474,  474,  474,  474,  474,  606,
-      311,  514,  515,  516,  606,  310,  606,  606,  516,  292,
-      606,  251,  606,  606,  606,  211,  288,  211,  103,  517,
-      276,  278,  276,  277,   79,  472,  517,  475,  475,  475,
+      356,  331,  251,  211,  453,  453,  453,  453,  453,  170,
+      541,  541,  541,  541,  541,  541,  541,  541,  170,  542,
+      542,  542,  542,  542,  542,  542,  542,  453,  453,  453,
+      453,  453,  453,  472,  211,  473,  473,  473,  473,  473,
+
+      473,  473,  473,  170,  543,  543,  543,  543,  543,  544,
+      541,  541,  606,  276,  606,  606,  606,  320,  319,  515,
+      317,  516,  517,  518,  316,  315,  314,  313,   79,  472,
+      312,  474,  474,  474,  474,  474,  474,  474,  474,  606,
+      311,  516,  517,  518,  606,  310,  606,  606,  518,  292,
+      606,  251,  606,  606,  606,  211,  288,  211,  103,  519,
+      276,  278,  276,  277,   79,  472,  519,  475,  475,  475,
       475,  475,  476,  477,  477,  552,  276,  274,  553,  553,
-      553,  553,  553,  553,  553,  553,  517,  273,  272,  271,
-      270,  517,  269,   97,  211,  512,  512,  519,  251,  512,
+      553,  553,  553,  553,  553,  553,  519,  273,  272,  271,
+      270,  519,  269,   97,  211,  514,  514,  521,  251,  514,
 
        79,  472,  211,  477,  477,  477,  473,  473,  473,  473,
-      473,  512,  512,  512,  518,  518,  103,  559,  518,  560,
+      473,  514,  514,  514,  520,  520,  103,  559,  520,  560,
       560,  560,  560,  560,  560,  560,  560,   83,  199,  239,
-      518,  518,  518,  236,  235,  234,   79,  382,  233,  485,
+      520,  520,  520,  236,  235,  234,   79,  382,  233,  485,
       485,  485,  485,  485,  485,  485,  485,  434,  382,  232,
       486,  486,  486,  486,  486,  486,  486,  486,  487,  230,
       229,  228,  488,  488,  488,  488,  488,  559,  227,  561,
-      561,  561,  561,  561,  561,  561,  561,  538,  538,  538,
-      538,  538,  538,  538,  538,  488,  488,  488,  488,  488,
+      561,  561,  561,  561,  561,  561,  561,  540,  540,  540,
+      540,  540,  540,  540,  540,  488,  488,  488,  488,  488,
       488,  492,  493,  494,  492,  492,  492,  492,  492,  495,
 
       226,  225,  224,  496,  496,  496,  496,  496,  559,  223,
@@ -831,65 +831,65 @@ static yyconst short int yy_nxt[3732] =
       496,  496,  253,  170,  502,  502,  502,  502,  502,  502,
       502,  502,  472,  222,  473,  473,  473,  473,  473,  473,
       473,  473,  570,  570,  570,  570,  570,  571,  606,  221,
-      568,  568,  568,  568,  568,  568,  568,  568,  170,  539,
-      539,  539,  539,  539,  539,  539,  539,   79,  472,  103,
-      473,  473,  473,  473,  473,  473,  473,  473,  170,  539,
-      539,  539,  539,  539,  539,  539,  539,  170,  539,  539,
-
-      539,  539,  539,  539,  553,  553,  553,  553,  553,  553,
-      553,  553,   95,   79,  382,   83,  528,  528,  528,  528,
-      528,  528,  528,  528,  487,  382,   83,  529,  529,  529,
-      529,  529,  529,  529,  529,  530,  199,  151,  152,  531,
-      531,  531,  531,  531,  553,  553,  553,  553,  553,  553,
+      568,  568,  568,  568,  568,  568,  568,  568,  170,  541,
+      541,  541,  541,  541,  541,  541,  541,   79,  472,  103,
+      473,  473,  473,  473,  473,  473,  473,  473,  170,  541,
+      541,  541,  541,  541,  541,  541,  541,  170,  541,  541,
+
+      541,  541,  541,  541,  553,  553,  553,  553,  553,  553,
+      553,  553,   95,   79,  382,   83,  530,  530,  530,  530,
+      530,  530,  530,  530,  487,  382,   83,  531,  531,  531,
+      531,  531,  531,  531,  531,  532,  199,  151,  152,  533,
+      533,  533,  533,  533,  553,  553,  553,  553,  553,  553,
       553,  553,  576,  577,  578,  576,  576,  576,  576,  576,
-      146,  146,  531,  531,  531,  531,  531,  531,  535,  536,
-      537,  535,  535,  535,  535,  535,  138,  197,  132,  132,
-      538,  538,  538,  538,  538,   79,  554,  190,  555,  555,
+      146,  146,  533,  533,  533,  533,  533,  533,  537,  538,
+      539,  537,  537,  537,  537,  537,  138,  197,  132,  132,
+      540,  540,  540,  540,  540,   79,  554,  190,  555,  555,
       555,  555,  555,  555,  579,  580,  581,  579,  579,  579,
 
-      579,  579,  189,  538,  538,  538,  538,  538,  538,  554,
+      579,  579,  189,  540,  540,  540,  540,  540,  540,  554,
       188,  555,  555,  555,  555,  555,  555,  555,  555,  187,
       559,   79,  560,  560,  560,  560,  560,  560,  560,  560,
       559,  186,  560,  560,  560,  560,  560,  560,  560,  560,
       184,  183,  182,  181,   79,  554,  176,  556,  556,  556,
       556,  556,  556,  556,  556,  559,  175,  560,  560,  560,
       560,  560,  560,  382,  174,  584,  584,  584,  584,  584,
-      584,  584,  584,  593,  593,  593,  593,  593,  593,  103,
+      584,  584,  584,  595,  595,  595,  595,  595,  595,  103,
        79,  554,   78,  557,  557,  557,  557,  557,  558,  555,
-      555,  593,  593,  593,  593,  593,  593,  593,  593,  594,
+      555,  595,  595,  595,  595,  595,  595,  595,  595,  596,
 
-      594,  594,  594,  594,  594,  594,  594,  595,  595,  595,
-      595,  595,  596,  593,  593,  103,   79,  382,  163,  566,
-      566,  566,  566,  566,  566,  566,  566,  530,  382,   91,
+      596,  596,  596,  596,  596,  596,  596,  597,  597,  597,
+      597,  597,  598,  595,  595,  103,   79,  382,  163,  566,
+      566,  566,  566,  566,  566,  566,  566,  532,  382,   91,
       567,  567,  567,  567,  567,  567,  567,  567,   83,   81,
        80,   79,  568,  568,  568,  568,  568,  152,  600,  601,
-      602,  600,  600,  600,  600,  600,  588,  146,  589,  589,
-      589,  589,  589,  589,  138,  568,  568,  568,  568,  568,
+      602,  600,  600,  600,  600,  600,  590,  146,  591,  591,
+      591,  591,  591,  591,  138,  568,  568,  568,  568,  568,
       568,  554,  132,  555,  555,  555,  555,  555,  555,  555,
-      555,   79,  593,  593,  593,  593,  593,  593,  593,  593,
-      128,   79,  593,  593,  593,  593,  593,  593,  593,  593,
+      555,   79,  595,  595,  595,  595,  595,  595,  595,  595,
+      128,   79,  595,  595,  595,  595,  595,  595,  595,  595,
 
       126,  113,  112,  111,  110,  109,   79,  554,  108,  555,
       555,  555,  555,  555,  555,  555,  555,  105,  103,   91,
       603,  603,  603,  603,  603,  603,  603,  603,  600,  600,
       600,  600,  600,  600,  600,  600,   81,   80,   79,  606,
-      606,  606,   79,  588,  606,  589,  589,  589,  589,  589,
-      589,  589,  589,   79,  606,  606,  606,  606,  606,  606,
+      606,  606,   79,  590,  606,  591,  591,  591,  591,  591,
+      591,  591,  591,   79,  606,  606,  606,  606,  606,  606,
       606,   79,  604,  604,  604,  604,  604,  605,  603,  603,
-      603,  603,  603,  603,  603,  603,  603,  603,   79,  588,
-      606,  590,  590,  590,  590,  590,  590,  590,  590,  606,
+      603,  603,  603,  603,  603,  603,  603,  603,   79,  590,
+      606,  592,  592,  592,  592,  592,  592,  592,  592,  606,
       606,  606,  606,  606,  606,   79,  603,  603,  603,  603,
 
       603,  603,  606,   79,  606,  606,  606,  606,  606,  606,
-      606,  606,  606,  606,   79,  588,  606,  591,  591,  591,
-      591,  591,  592,  589,  589,  606,  606,  606,  606,   79,
+      606,  606,  606,  606,   79,  590,  606,  593,  593,  593,
+      593,  593,  594,  591,  591,  606,  606,  606,  606,   79,
       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
-       79,  588,  606,  589,  589,  589,  589,  589,  589,  589,
-      589,  606,  606,  606,  606,  606,  606,  606,  606,  606,
+       79,  590,  606,  591,  591,  591,  591,  591,  591,  591,
+      591,  606,  606,  606,  606,  606,  606,  606,  606,  606,
       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
-      606,  606,  606,  606,  606,  606,   79,  588,  606,  589,
-      589,  589,  589,  589,  589,  589,  589,  606,  606,  606,
+      606,  606,  606,  606,  606,  606,   79,  590,  606,  591,
+      591,  591,  591,  591,  591,  591,  591,  606,  606,  606,
 
       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
@@ -951,19 +951,19 @@ static yyconst short int yy_nxt[3732] =
       606,  450,  483,  483,  606,  606,  606,  483,  484,  606,
       484,  484,  606,  606,  606,  484,  500,  500,  500,  606,
       606,  606,  500,  501,  501,  501,  606,  606,  606,  606,
-      501,  512,  512,  606,  512,  512,  512,  606,  606,  512,
-      512,  512,  606,  606,  512,  512,  512,  518,  518,  606,
-      518,  518,  518,  606,  606,  518,  518,  518,  606,  606,
-      518,  518,  518,  526,  526,  606,  606,  606,  526,  527,
-      606,  527,  527,  606,  606,  606,  527,  543,  543,  606,
-
-      606,  606,  606,  543,  549,  549,  549,  549,  549,  549,
-      549,  549,  549,  549,  549,  549,  549,  549,  549,  549,
+      501,  509,  509,  509,  509,  509,  509,  509,  509,  509,
+      509,  509,  509,  509,  509,  509,  509,  514,  514,  606,
+      514,  514,  514,  606,  606,  514,  514,  514,  606,  606,
+      514,  514,  514,  520,  520,  606,  520,  520,  520,  606,
+      606,  520,  520,  520,  606,  606,  520,  520,  520,  528,
+
+      528,  606,  606,  606,  528,  529,  606,  529,  529,  606,
+      606,  606,  529,  545,  545,  606,  606,  606,  606,  545,
       564,  564,  606,  606,  606,  564,  565,  606,  565,  565,
       606,  606,  606,  565,  582,  582,  606,  606,  606,  582,
-      583,  606,  583,  606,  606,  606,  606,  583,  598,  598,
-      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
-      598,  598,  598,  598,   13,  606,  606,  606,  606,  606,
+      583,  606,  583,  606,  606,  606,  606,  583,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,   13,  606,  606,  606,  606,  606,
       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
@@ -993,7 +993,7 @@ static yyconst short int yy_chk[3732] =
         3,  196,   68,   50,   11,    4,   70,    6,    6,   25,
        25,   72,   72,   25,   25,  196,   74,    5,   27,   27,
        27,   27,   27,   27,   27,   27,   68,   88,  124,  127,
-       70,   25,    6,    7,    7,    7,   45,    7,  598,   75,
+       70,   25,    6,    7,    7,    7,   45,    7,  587,   75,
       124,  127,  129,   12,   28,   28,   28,   28,   28,   28,
       139,  139,  129,   43,   25,   43,   43,   43,   43,   43,
        43,   43,   43,  194,   45,   45,   77,   77,   45,   77,
@@ -1011,22 +1011,22 @@ static yyconst short int yy_chk[3732] =
 
       128,  154,    9,    9,    9,   86,  128,  202,   55,   55,
       136,  161,   55,   55,  185,  136,    9,  101,  101,  101,
-      101,  101,  101,   86,  155,  155,  198,  185,   87,  587,
+      101,  101,  101,   86,  155,  155,  198,  185,   87,  584,
        55,   87,   87,   87,   87,   87,   87,   87,   87,  198,
-        9,   10,   10,   10,   10,   10,  584,  171,   86,  284,
+        9,   10,   10,   10,   10,   10,  582,  171,   86,  284,
        10,   10,   10,   55,  161,   89,  171,   89,   89,  222,
-      582,   89,   89,  222,   10,   89,  213,   95,   95,   95,
+      568,   89,   89,  222,   10,   89,  213,   95,   95,   95,
        95,   95,   95,   95,   95,  213,   92,   92,   89,   89,
-       92,   92,  192,  195,  284,  195,  510,  192,   10,   19,
+       92,   92,  192,  195,  284,  195,  512,  192,   10,   19,
        99,   99,   99,   99,   99,   99,   99,   99,   92,   19,
 
        95,  221,   19,   19,   19,   19,   19,   19,   19,   19,
        26,  191,   26,   26,   26,   26,   26,   26,   26,   26,
        26,   92,  237,  221,   26,   26,   26,   26,   26,  100,
       100,  100,  100,  100,  100,  100,  100,  131,  131,  131,
-      131,  131,  131,  131,  131,   26,  510,   26,   26,   26,
+      131,  131,  131,  131,  131,   26,  512,   26,   26,   26,
        26,   26,   26,   32,  146,  238,  238,  146,  146,   32,
-      568,  191,   32,   32,  146,   32,   32,   32,   32,   32,
+      567,  191,   32,   32,  146,   32,   32,   32,   32,   32,
        32,   32,   32,   32,   32,   32,   32,  146,  237,   32,
        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
@@ -1035,7 +1035,7 @@ static yyconst short int yy_chk[3732] =
        32,   32,   32,   32,   32,   32,   32,   32,   32,   35,
        35,   35,   35,   35,   35,   35,   35,   35,  210,  210,
       210,   35,   35,   35,   35,   35,  109,  231,  240,  241,
-       35,  109,  252,  231,  109,  241,  109,  117,  567,  150,
+       35,  109,  252,  231,  109,  241,  109,  117,  565,  150,
       150,  252,  239,  240,   35,   35,   35,   35,   35,   35,
        42,   42,   42,   42,   42,  293,   42,   42,  133,  133,
        42,  265,  133,  133,  293,  117,  117,  239,  281,  117,
@@ -1047,8 +1047,8 @@ static yyconst short int yy_chk[3732] =
       142,  142,  159,  159,  159,  159,  159,  159,  159,  159,
       160,  160,  160,  160,  160,  160,  160,  160,  438,  438,
        46,   63,  201,  201,  201,  201,  201,  201,  201,  201,
-      279,   63,  565,  280,   63,   63,   63,   63,   63,   63,
-       63,   63,   79,  564,   79,   79,   79,  297,   79,   79,
+      279,   63,  564,  280,   63,   63,   63,   63,   63,   63,
+       63,   63,   79,  560,   79,   79,   79,  297,   79,   79,
       254,  254,   79,  197,  280,  201,  297,  197,  256,  256,
       254,  321,  322,  197,   79,   79,   79,   91,  256,   91,
        91,   91,  322,   91,   91,  197,  197,   91,  209,  209,
@@ -1066,17 +1066,17 @@ static yyconst short int yy_chk[3732] =
 
       216,  216,  216,  217,  217,  217,  217,  217,  217,  316,
       299,  299,  373,  104,  104,  104,  104,  104,  104,  135,
-      299,  135,  135,  135,  560,  135,  135,  373,  219,  135,
+      299,  135,  135,  135,  549,  135,  135,  373,  219,  135,
       219,  219,  219,  219,  219,  219,  219,  219,  453,  453,
-      371,  135,  135,  135,  164,  549,  164,  164,  164,  164,
+      371,  135,  135,  135,  164,  545,  164,  164,  164,  164,
       164,  164,  164,  164,  247,  247,  247,  247,  247,  247,
       247,  247,  247,  253,  253,  253,  253,  253,  253,  253,
       253,  255,  255,  255,  255,  255,  255,  255,  255,  164,
-      165,  547,  165,  165,  165,  165,  165,  165,  165,  165,
+      165,  541,  165,  165,  165,  165,  165,  165,  165,  165,
       259,  259,  259,  259,  259,  259,  259,  259,  419,  419,
 
       259,  261,  261,  261,  261,  261,  261,  261,  261,  262,
-      262,  262,  262,  262,  262,  165,  166,  543,  166,  166,
+      262,  262,  262,  262,  262,  165,  166,  529,  166,  166,
       166,  166,  166,  166,  166,  166,  264,  317,  264,  264,
       264,  264,  264,  264,  264,  264,  301,  301,  283,  283,
       283,  283,  283,  283,  283,  283,  301,  456,  456,  317,
@@ -1086,41 +1086,41 @@ static yyconst short int yy_chk[3732] =
       287,  287,  287,  287,  287,  344,  420,  372,  420,  167,
       167,  167,  167,  167,  167,  170,  170,  170,  170,  170,
 
-      170,  170,  170,  170,  345,  345,  539,  170,  170,  170,
+      170,  170,  170,  170,  345,  345,  528,  170,  170,  170,
       170,  170,  287,  294,  345,  294,  294,  294,  294,  294,
-      294,  294,  294,  307,  307,  307,  307,  307,  307,  527,
+      294,  294,  294,  307,  307,  307,  307,  307,  307,  513,
       170,  170,  170,  170,  170,  170,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  491,  491,  526,  172,
+      172,  172,  172,  172,  172,  172,  467,  467,  509,  172,
       172,  172,  172,  172,  295,  376,  295,  295,  295,  295,
       295,  295,  295,  295,  300,  300,  300,  300,  300,  300,
       300,  300,  172,  172,  172,  172,  172,  172,  173,  173,
-      173,  173,  173,  173,  173,  173,  347,  347,  511,  376,
+      173,  173,  173,  173,  173,  173,  347,  347,  508,  376,
       173,  173,  173,  173,  173,  296,  347,  296,  296,  296,
 
       296,  296,  296,  296,  296,  306,  306,  306,  306,  306,
       306,  306,  306,  173,  173,  173,  173,  173,  173,  203,
-      509,  203,  203,  203,  203,  203,  203,  203,  203,  304,
-      304,  304,  304,  304,  304,  304,  304,  508,  309,  304,
+      507,  203,  203,  203,  203,  203,  203,  203,  203,  304,
+      304,  304,  304,  304,  304,  304,  304,  506,  309,  304,
       309,  309,  309,  309,  309,  309,  309,  309,  334,  334,
-      334,  334,  334,  334,  203,  204,  507,  204,  204,  204,
+      334,  334,  334,  334,  203,  204,  501,  204,  204,  204,
       204,  204,  204,  204,  204,  331,  331,  331,  331,  331,
       331,  331,  331,  333,  333,  333,  333,  333,  333,  333,
       333,  337,  337,  337,  337,  337,  337,  337,  337,  358,
       204,  215,  215,  215,  215,  215,  215,  215,  215,  215,
 
-      215,  215,  502,  502,  506,  215,  215,  215,  215,  215,
+      215,  215,  491,  491,  484,  215,  215,  215,  215,  215,
       336,  358,  336,  336,  336,  336,  336,  336,  336,  336,
-      341,  501,  341,  341,  341,  341,  341,  341,  215,  215,
+      341,  483,  341,  341,  341,  341,  341,  341,  215,  215,
       215,  215,  215,  215,  218,  218,  218,  218,  218,  218,
-      218,  218,  218,  218,  397,  534,  534,  218,  218,  218,
+      218,  218,  218,  218,  397,  502,  502,  218,  218,  218,
       218,  218,  339,  397,  339,  339,  339,  339,  339,  339,
       339,  339,  346,  346,  346,  346,  346,  346,  346,  346,
-      218,  218,  218,  218,  218,  218,  242,  484,  242,  242,
+      218,  218,  218,  218,  218,  218,  242,  479,  242,  242,
       242,  242,  242,  242,  242,  242,  340,  364,  340,  340,
       340,  340,  340,  340,  340,  340,  350,  350,  350,  350,
 
-      350,  350,  350,  350,  398,  669,  350,  551,  551,  364,
-      669,  242,  243,  398,  243,  243,  243,  243,  243,  243,
+      350,  350,  350,  350,  398,  670,  350,  510,  510,  364,
+      670,  242,  243,  398,  243,  243,  243,  243,  243,  243,
       243,  243,  352,  352,  352,  352,  352,  352,  352,  352,
       353,  353,  353,  353,  353,  353,  355,  366,  355,  355,
       355,  355,  355,  355,  355,  355,  374,  243,  244,  449,
@@ -1133,20 +1133,20 @@ static yyconst short int yy_chk[3732] =
       260,  260,  260,  260,  260,  260,  375,  415,  457,  260,
       260,  260,  260,  260,  379,  379,  379,  379,  379,  379,
       379,  384,  384,  384,  384,  384,  384,  384,  384,  415,
-      457,  483,  260,  260,  260,  260,  260,  260,  263,  263,
-      263,  263,  263,  263,  263,  263,  263,  263,  379,  571,
-      571,  263,  263,  263,  263,  263,  390,  390,  390,  390,
+      457,  465,  260,  260,  260,  260,  260,  260,  263,  263,
+      263,  263,  263,  263,  263,  263,  263,  263,  379,  536,
+      536,  263,  263,  263,  263,  263,  390,  390,  390,  390,
       390,  390,  390,  390,  391,  391,  391,  391,  391,  391,
-      479,  399,  399,  465,  263,  263,  263,  263,  263,  263,
+      460,  399,  399,  459,  263,  263,  263,  263,  263,  263,
       285,  399,  285,  285,  285,  285,  285,  285,  285,  285,
       393,  432,  393,  393,  393,  393,  393,  393,  393,  393,
 
       394,  432,  394,  394,  394,  394,  394,  394,  394,  394,
-      460,  473,  619,  619,  468,  285,  286,  433,  286,  286,
+      458,  473,  551,  551,  468,  285,  286,  433,  286,  286,
       286,  286,  286,  286,  286,  286,  395,  433,  395,  395,
       395,  395,  395,  395,  395,  395,  396,  435,  396,  396,
-      396,  396,  396,  396,  396,  396,  473,  435,  461,  459,
-      458,  286,  292,  292,  292,  292,  292,  292,  292,  292,
+      396,  396,  396,  396,  396,  396,  473,  435,  461,  571,
+      571,  286,  292,  292,  292,  292,  292,  292,  292,  292,
       292,  400,  400,  445,  292,  292,  292,  292,  292,  468,
       461,  400,  401,  401,  401,  401,  401,  401,  401,  401,
       408,  408,  408,  408,  408,  408,  431,  292,  292,  292,
@@ -1174,84 +1174,84 @@ static yyconst short int yy_chk[3732] =
       441,  441,  443,  500,  443,  443,  443,  443,  443,  443,
       443,  443,  500,  327,  332,  486,  332,  332,  332,  332,
 
-      332,  332,  332,  332,  332,  486,  411,  410,  332,  332,
+      332,  332,  332,  332,  332,  486,  575,  575,  332,  332,
       332,  332,  332,  444,  444,  444,  444,  444,  444,  444,
-      444,  446,  381,  446,  446,  446,  446,  446,  446,  446,
+      444,  446,  411,  446,  446,  446,  446,  446,  446,  446,
       446,  332,  332,  332,  332,  332,  332,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  380,  370,  369,  335,
+      335,  335,  335,  335,  335,  335,  588,  588,  410,  335,
       335,  335,  335,  335,  447,  488,  447,  447,  447,  447,
       447,  447,  447,  447,  448,  488,  448,  448,  448,  448,
       448,  448,  335,  335,  335,  335,  335,  335,  348,  348,
       348,  348,  348,  348,  348,  348,  348,  348,  348,  351,
       351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
 
-      451,  451,  528,  351,  351,  351,  351,  351,  467,  467,
-      451,  470,  528,  470,  470,  470,  471,  363,  471,  471,
-      471,  467,  544,  362,  555,  589,  351,  351,  351,  351,
+      451,  451,  381,  351,  351,  351,  351,  351,  555,  470,
+      451,  470,  470,  470,  471,  530,  471,  471,  471,  494,
+      494,  494,  494,  494,  494,  530,  351,  351,  351,  351,
       351,  351,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  361,  546,  572,  544,  354,  354,  354,  354,  354,
-      472,  472,  472,  472,  472,  472,  472,  472,  470,  555,
-      589,  360,  357,  471,  546,  572,  356,  338,  354,  354,
+      354,  531,  533,  555,  566,  354,  354,  354,  354,  354,
+      380,  531,  533,  370,  566,  369,  470,  363,  591,  362,
+      476,  471,  476,  476,  476,  476,  476,  476,  354,  354,
       354,  354,  354,  354,  377,  377,  377,  377,  377,  377,
-      377,  377,  377,  472,  476,  330,  476,  476,  476,  476,
-      476,  476,  478,  478,  478,  478,  478,  478,  478,  478,
-
-      482,  329,  482,  482,  482,  482,  482,  482,  377,  378,
-      378,  378,  378,  378,  378,  378,  378,  378,  480,  476,
-      480,  480,  480,  480,  480,  480,  480,  480,  481,  529,
-      481,  481,  481,  481,  481,  481,  481,  481,  328,  529,
-      320,  319,  315,  378,  386,  574,  386,  386,  386,  386,
-      386,  386,  386,  386,  386,  389,  531,  389,  389,  389,
-      389,  389,  389,  389,  389,  389,  531,  574,  585,  389,
-      389,  389,  389,  389,  487,  487,  487,  487,  487,  487,
-      487,  487,  493,  493,  493,  493,  493,  493,  493,  493,
-      585,  314,  389,  389,  389,  389,  389,  389,  392,  392,
-
-      392,  392,  392,  392,  392,  392,  392,  311,  310,  291,
-      392,  392,  392,  392,  392,  494,  494,  494,  494,  494,
-      494,  496,  566,  496,  496,  496,  496,  496,  496,  496,
-      496,  290,  566,  392,  392,  392,  392,  392,  392,  403,
+      377,  377,  377,  546,  548,  472,  472,  472,  472,  472,
+      472,  472,  472,  591,  361,  476,  478,  478,  478,  478,
+
+      478,  478,  478,  478,  360,  546,  548,  357,  377,  378,
+      378,  378,  378,  378,  378,  378,  378,  378,  472,  480,
+      572,  480,  480,  480,  480,  480,  480,  480,  480,  481,
+      356,  481,  481,  481,  481,  481,  481,  481,  481,  619,
+      619,  338,  572,  378,  386,  574,  386,  386,  386,  386,
+      386,  386,  386,  386,  386,  389,  330,  389,  389,  389,
+      389,  389,  389,  389,  389,  389,  329,  574,  585,  389,
+      389,  389,  389,  389,  482,  328,  482,  482,  482,  482,
+      482,  482,  487,  487,  487,  487,  487,  487,  487,  487,
+      585,  320,  389,  389,  389,  389,  389,  389,  392,  392,
+
+      392,  392,  392,  392,  392,  392,  392,  319,  315,  314,
+      392,  392,  392,  392,  392,  493,  493,  493,  493,  493,
+      493,  493,  493,  496,  311,  496,  496,  496,  496,  496,
+      496,  496,  496,  392,  392,  392,  392,  392,  392,  403,
       403,  403,  403,  403,  403,  403,  403,  403,  403,  403,
       406,  406,  406,  406,  406,  406,  406,  406,  406,  406,
-      289,  288,  278,  277,  406,  406,  406,  406,  406,  497,
+      310,  291,  290,  289,  406,  406,  406,  406,  406,  497,
       497,  497,  497,  497,  497,  497,  497,  497,  498,  498,
       498,  498,  498,  498,  498,  498,  498,  406,  406,  406,
-      406,  406,  406,  423,  276,  423,  423,  423,  423,  423,
+      406,  406,  406,  423,  288,  423,  423,  423,  423,  423,
 
       423,  423,  423,  499,  499,  499,  499,  499,  499,  499,
-      499,  499,  512,  274,  512,  512,  512,  575,  575,  513,
-      273,  513,  513,  513,  272,  271,  270,  269,  423,  424,
-      575,  424,  424,  424,  424,  424,  424,  424,  424,  514,
-      268,  514,  514,  514,  515,  267,  515,  515,  515,  251,
-      518,  250,  518,  518,  518,  249,  248,  246,  245,  512,
-      236,  235,  234,  233,  424,  425,  513,  425,  425,  425,
-      425,  425,  425,  425,  425,  516,  232,  229,  516,  516,
-      516,  516,  516,  516,  516,  516,  514,  227,  226,  225,
-      224,  515,  223,  220,  212,  517,  517,  518,  211,  517,
+      499,  499,  514,  278,  514,  514,  514,  277,  276,  515,
+      274,  515,  515,  515,  273,  272,  271,  270,  423,  424,
+      269,  424,  424,  424,  424,  424,  424,  424,  424,  516,
+      268,  516,  516,  516,  517,  267,  517,  517,  517,  251,
+      520,  250,  520,  520,  520,  249,  248,  246,  245,  514,
+      236,  235,  234,  233,  424,  425,  515,  425,  425,  425,
+      425,  425,  425,  425,  425,  518,  232,  229,  518,  518,
+      518,  518,  518,  518,  518,  518,  516,  227,  226,  225,
+      224,  517,  223,  220,  212,  519,  519,  520,  211,  519,
 
       425,  426,  208,  426,  426,  426,  426,  426,  426,  426,
-      426,  517,  517,  517,  519,  519,  207,  523,  519,  523,
-      523,  523,  523,  523,  523,  523,  523,  200,  199,  193,
-      519,  519,  519,  190,  189,  188,  426,  436,  187,  436,
+      426,  519,  519,  519,  521,  521,  207,  525,  521,  525,
+      525,  525,  525,  525,  525,  525,  525,  200,  199,  193,
+      521,  521,  521,  190,  189,  188,  426,  436,  187,  436,
       436,  436,  436,  436,  436,  436,  436,  436,  439,  186,
       439,  439,  439,  439,  439,  439,  439,  439,  439,  184,
-      183,  182,  439,  439,  439,  439,  439,  524,  181,  524,
-      524,  524,  524,  524,  524,  524,  524,  530,  530,  530,
-      530,  530,  530,  530,  530,  439,  439,  439,  439,  439,
+      183,  182,  439,  439,  439,  439,  439,  526,  181,  526,
+      526,  526,  526,  526,  526,  526,  526,  532,  532,  532,
+      532,  532,  532,  532,  532,  439,  439,  439,  439,  439,
       439,  442,  442,  442,  442,  442,  442,  442,  442,  442,
 
-      180,  179,  178,  442,  442,  442,  442,  442,  525,  177,
-      525,  525,  525,  525,  525,  525,  525,  525,  536,  536,
-      536,  536,  536,  536,  536,  536,  442,  442,  442,  442,
+      180,  179,  178,  442,  442,  442,  442,  442,  527,  177,
+      527,  527,  527,  527,  527,  527,  527,  527,  538,  538,
+      538,  538,  538,  538,  538,  538,  442,  442,  442,  442,
       442,  442,  454,  454,  454,  454,  454,  454,  454,  454,
       454,  454,  474,  176,  474,  474,  474,  474,  474,  474,
-      474,  474,  537,  537,  537,  537,  537,  537,  538,  175,
-      538,  538,  538,  538,  538,  538,  538,  538,  540,  540,
-      540,  540,  540,  540,  540,  540,  540,  474,  475,  169,
-      475,  475,  475,  475,  475,  475,  475,  475,  541,  541,
-      541,  541,  541,  541,  541,  541,  541,  542,  542,  542,
+      474,  474,  539,  539,  539,  539,  539,  539,  540,  175,
+      540,  540,  540,  540,  540,  540,  540,  540,  542,  542,
+      542,  542,  542,  542,  542,  542,  542,  474,  475,  169,
+      475,  475,  475,  475,  475,  475,  475,  475,  543,  543,
+      543,  543,  543,  543,  543,  543,  543,  544,  544,  544,
 
-      542,  542,  542,  542,  552,  552,  552,  552,  552,  552,
+      544,  544,  544,  544,  552,  552,  552,  552,  552,  552,
       552,  552,  168,  475,  489,  158,  489,  489,  489,  489,
       489,  489,  489,  489,  489,  492,  157,  492,  492,  492,
       492,  492,  492,  492,  492,  492,  156,  152,  151,  492,
@@ -1262,27 +1262,27 @@ static yyconst short int yy_chk[3732] =
       495,  495,  495,  495,  495,  554,  558,  122,  558,  558,
       558,  558,  558,  558,  559,  559,  559,  559,  559,  559,
 
-      559,  559,  121,  495,  495,  495,  495,  495,  495,  520,
-      120,  520,  520,  520,  520,  520,  520,  520,  520,  119,
+      559,  559,  121,  495,  495,  495,  495,  495,  495,  522,
+      120,  522,  522,  522,  522,  522,  522,  522,  522,  119,
       561,  558,  561,  561,  561,  561,  561,  561,  561,  561,
       562,  118,  562,  562,  562,  562,  562,  562,  562,  562,
-      113,  112,  111,  110,  520,  521,  108,  521,  521,  521,
-      521,  521,  521,  521,  521,  563,  107,  563,  563,  563,
+      113,  112,  111,  110,  522,  523,  108,  523,  523,  523,
+      523,  523,  523,  523,  523,  563,  107,  563,  563,  563,
       563,  563,  563,  569,  106,  569,  569,  569,  569,  569,
-      569,  569,  569,  596,  596,  596,  596,  596,  596,  102,
-      521,  522,   98,  522,  522,  522,  522,  522,  522,  522,
-      522,  579,  579,  579,  579,  579,  579,  579,  579,  580,
+      569,  569,  569,  598,  598,  598,  598,  598,  598,  102,
+      523,  524,   98,  524,  524,  524,  524,  524,  524,  524,
+      524,  579,  579,  579,  579,  579,  579,  579,  579,  580,
 
       580,  580,  580,  580,  580,  580,  580,  581,  581,  581,
-      581,  581,  581,  581,  581,   97,  522,  532,   93,  532,
-      532,  532,  532,  532,  532,  532,  532,  532,  535,   90,
-      535,  535,  535,  535,  535,  535,  535,  535,   82,   81,
-       80,   78,  535,  535,  535,  535,  535,   73,  588,  588,
-      588,  588,  588,  588,  588,  588,  592,   66,  592,  592,
-      592,  592,  592,  592,   59,  535,  535,  535,  535,  535,
-      535,  556,   54,  556,  556,  556,  556,  556,  556,  556,
-      556,  588,  594,  594,  594,  594,  594,  594,  594,  594,
-       51,  592,  595,  595,  595,  595,  595,  595,  595,  595,
+      581,  581,  581,  581,  581,   97,  524,  534,   93,  534,
+      534,  534,  534,  534,  534,  534,  534,  534,  537,   90,
+      537,  537,  537,  537,  537,  537,  537,  537,   82,   81,
+       80,   78,  537,  537,  537,  537,  537,   73,  590,  590,
+      590,  590,  590,  590,  590,  590,  594,   66,  594,  594,
+      594,  594,  594,  594,   59,  537,  537,  537,  537,  537,
+      537,  556,   54,  556,  556,  556,  556,  556,  556,  556,
+      556,  590,  596,  596,  596,  596,  596,  596,  596,  596,
+       51,  594,  597,  597,  597,  597,  597,  597,  597,  597,
 
        49,   41,   40,   39,   38,   37,  556,  557,   36,  557,
       557,  557,  557,  557,  557,  557,  557,   33,   29,   23,
@@ -1300,15 +1300,15 @@ static yyconst short int yy_chk[3732] =
       578,  578,  578,  578,  578,    0,    0,    0,    0,  605,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      578,  590,    0,  590,  590,  590,  590,  590,  590,  590,
-      590,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      578,  592,    0,  592,  592,  592,  592,  592,  592,  592,
+      592,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  590,  591,    0,  591,
-      591,  591,  591,  591,  591,  591,  591,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  592,  593,    0,  593,
+      593,  593,  593,  593,  593,  593,  593,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  591,  607,  607,  607,  607,  607,  607,  607,
+        0,    0,  593,  607,  607,  607,  607,  607,  607,  607,
       607,  607,  607,  607,  607,  607,  607,  607,  607,  608,
       608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
       608,  608,  608,  608,  608,  609,  609,  609,  609,  609,
@@ -1366,19 +1366,19 @@ static yyconst short int yy_chk[3732] =
         0,  654,  655,  655,    0,    0,    0,  655,  656,    0,
       656,  656,    0,    0,    0,  656,  657,  657,  657,    0,
         0,    0,  657,  658,  658,  658,    0,    0,    0,    0,
-      658,  659,  659,    0,  659,  659,  659,    0,    0,  659,
-      659,  659,    0,    0,  659,  659,  659,  660,  660,    0,
+      658,  659,  659,  659,  659,  659,  659,  659,  659,  659,
+      659,  659,  659,  659,  659,  659,  659,  660,  660,    0,
       660,  660,  660,    0,    0,  660,  660,  660,    0,    0,
-      660,  660,  660,  661,  661,    0,    0,    0,  661,  662,
-        0,  662,  662,    0,    0,    0,  662,  663,  663,    0,
+      660,  660,  660,  661,  661,    0,  661,  661,  661,    0,
+        0,  661,  661,  661,    0,    0,  661,  661,  661,  662,
 
-        0,    0,    0,  663,  664,  664,  664,  664,  664,  664,
-      664,  664,  664,  664,  664,  664,  664,  664,  664,  664,
+      662,    0,    0,    0,  662,  663,    0,  663,  663,    0,
+        0,    0,  663,  664,  664,    0,    0,    0,    0,  664,
       665,  665,    0,    0,    0,  665,  666,    0,  666,  666,
         0,    0,    0,  666,  667,  667,    0,    0,    0,  667,
-      668,    0,  668,    0,    0,    0,    0,  668,  670,  670,
-      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
-      670,  670,  670,  670,  606,  606,  606,  606,  606,  606,
+      668,    0,  668,    0,    0,    0,    0,  668,  669,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  606,  606,  606,  606,  606,  606,
       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
@@ -1475,27 +1475,31 @@ char *yytext;
 #include "parse.h"
 #include "toke.h"
 #include <gram.h>
+#include "lbuf.h"
 
 extern YYSTYPE yylval;
-extern int parse_error;
+extern bool parse_error;
 int sudolineno;
+int last_token;
 char *sudoers;
 
-static int continued, prev_state, sawspace;
+static bool continued, sawspace;
+static int prev_state;
 
-static int _push_include(char *, int);
-static int pop_include(void);
+static bool _push_include(char *, bool);
+static bool pop_include(void);
 static char *parse_include(char *);
 
-#ifdef TRACELEXER
 static int sudoers_trace_print(const char *msg);
-#else
-# define sudoers_trace_print NULL
-#endif
 int (*trace_print)(const char *msg) = sudoers_trace_print;
 
-#define        push_include(_p)        (_push_include((_p), FALSE))
-#define        push_includedir(_p)     (_push_include((_p), TRUE))
+#define LEXRETURN(n)   do {    \
+       last_token = (n);       \
+       return (n);             \
+} while (0)
+
+#define        push_include(_p)        (_push_include((_p), false))
+#define        push_includedir(_p)     (_push_include((_p), true))
 #define YY_NO_INPUT 1
 #define YY_NO_UNPUT 1
 #define GOTDEFS 1
@@ -1508,7 +1512,7 @@ int (*trace_print)(const char *msg) = sudoers_trace_print;
 
 #define INSTR 5
 
-#line 1511 "lex.yy.c"
+#line 1515 "lex.yy.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1662,9 +1666,9 @@ YY_DECL
        register char *yy_cp, *yy_bp;
        register int yy_act;
 
-#line 119 "toke.l"
+#line 123 "toke.l"
 
-#line 1667 "lex.yy.c"
+#line 1671 "lex.yy.c"
 
        if ( yy_init )
                {
@@ -1750,65 +1754,65 @@ do_action:      /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 120 "toke.l"
+#line 124 "toke.l"
 {
                            LEXTRACE(", ");
-                           return ',';
+                           LEXRETURN(',');
                        }                       /* return ',' */
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 125 "toke.l"
+#line 129 "toke.l"
 BEGIN STARTDEFS;
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 127 "toke.l"
+#line 131 "toke.l"
 {
                            BEGIN INDEFS;
                            LEXTRACE("DEFVAR ");
                            if (!fill(yytext, yyleng))
                                yyterminate();
-                           return DEFVAR;
+                           LEXRETURN(DEFVAR);
                        }
        YY_BREAK
 
 case 4:
 YY_RULE_SETUP
-#line 136 "toke.l"
+#line 140 "toke.l"
 {
                            BEGIN STARTDEFS;
                            LEXTRACE(", ");
-                           return ',';
+                           LEXRETURN(',');
                        }                       /* return ',' */
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 142 "toke.l"
+#line 146 "toke.l"
 {
                            LEXTRACE("= ");
-                           return '=';
+                           LEXRETURN('=');
                        }                       /* return '=' */
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 147 "toke.l"
+#line 151 "toke.l"
 {
                            LEXTRACE("+= ");
-                           return '+';
+                           LEXRETURN('+');
                        }                       /* return '+' */
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 152 "toke.l"
+#line 156 "toke.l"
 {
                            LEXTRACE("-= ");
-                           return '-';
+                           LEXRETURN('-');
                        }                       /* return '-' */
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 157 "toke.l"
+#line 161 "toke.l"
 {
                            LEXTRACE("BEGINSTR ");
                            yylval.string = NULL;
@@ -1818,35 +1822,35 @@ YY_RULE_SETUP
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 164 "toke.l"
+#line 168 "toke.l"
 {
                            LEXTRACE("WORD(2) ");
                            if (!fill(yytext, yyleng))
                                yyterminate();
-                           return WORD;
+                           LEXRETURN(WORD);
                        }
        YY_BREAK
 
 
 case 10:
 YY_RULE_SETUP
-#line 173 "toke.l"
+#line 177 "toke.l"
 {
                            /* Line continuation char followed by newline. */
-                           ++sudolineno;
-                           continued = TRUE;
+                           sudolineno++;
+                           continued = true;
                        }
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 179 "toke.l"
+#line 183 "toke.l"
 {
                            LEXTRACE("ENDSTR ");
                            BEGIN prev_state;
 
                            if (yylval.string == NULL) {
                                LEXTRACE("ERROR "); /* empty string */
-                               return ERROR;
+                               LEXRETURN(ERROR);
                            }
                            if (prev_state == INITIAL) {
                                switch (yylval.string[0]) {
@@ -1855,26 +1859,26 @@ YY_RULE_SETUP
                                        (yylval.string[1] == ':' &&
                                        yylval.string[2] == '\0')) {
                                        LEXTRACE("ERROR "); /* empty group */
-                                       return ERROR;
+                                       LEXRETURN(ERROR);
                                    }
                                    LEXTRACE("USERGROUP ");
-                                   return USERGROUP;
+                                   LEXRETURN(USERGROUP);
                                case '+':
                                    if (yylval.string[1] == '\0') {
                                        LEXTRACE("ERROR "); /* empty netgroup */
-                                       return ERROR;
+                                       LEXRETURN(ERROR);
                                    }
                                    LEXTRACE("NETGROUP ");
-                                   return NETGROUP;
+                                   LEXRETURN(NETGROUP);
                                }
                            }
                            LEXTRACE("WORD(4) ");
-                           return WORD;
+                           LEXRETURN(WORD);
                        }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 211 "toke.l"
+#line 215 "toke.l"
 {
                            LEXTRACE("BACKSLASH ");
                            if (!append(yytext, yyleng))
@@ -1883,7 +1887,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 217 "toke.l"
+#line 221 "toke.l"
 {
                            LEXTRACE("STRBODY ");
                            if (!append(yytext, yyleng))
@@ -1894,55 +1898,55 @@ YY_RULE_SETUP
 
 case 14:
 YY_RULE_SETUP
-#line 225 "toke.l"
+#line 229 "toke.l"
 {
                            /* quoted fnmatch glob char, pass verbatim */
                            LEXTRACE("QUOTEDCHAR ");
                            if (!fill_args(yytext, 2, sawspace))
                                yyterminate();
-                           sawspace = FALSE;
+                           sawspace = false;
                        }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 233 "toke.l"
+#line 237 "toke.l"
 {
                            /* quoted sudoers special char, strip backslash */
                            LEXTRACE("QUOTEDCHAR ");
                            if (!fill_args(yytext + 1, 1, sawspace))
                                yyterminate();
-                           sawspace = FALSE;
+                           sawspace = false;
                        }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 241 "toke.l"
+#line 245 "toke.l"
 {
                            BEGIN INITIAL;
                            yyless(0);
-                           return COMMAND;
+                           LEXRETURN(COMMAND);
                        }                       /* end of command line args */
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 247 "toke.l"
+#line 251 "toke.l"
 {
                            LEXTRACE("ARG ");
                            if (!fill_args(yytext, yyleng, sawspace))
                                yyterminate();
-                           sawspace = FALSE;
+                           sawspace = false;
                        }                       /* a command line arg */
        YY_BREAK
 
 case 18:
 YY_RULE_SETUP
-#line 255 "toke.l"
+#line 259 "toke.l"
 {
                            char *path;
 
                            if (continued) {
                                LEXTRACE("ERROR ");
-                               return ERROR;
+                               LEXRETURN(ERROR);
                            }
 
                            if ((path = parse_include(yytext)) == NULL)
@@ -1957,13 +1961,13 @@ YY_RULE_SETUP
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 273 "toke.l"
+#line 277 "toke.l"
 {
                            char *path;
 
                            if (continued) {
                                LEXTRACE("ERROR ");
-                               return ERROR;
+                               LEXRETURN(ERROR);
                            }
 
                            if ((path = parse_include(yytext)) == NULL)
@@ -1981,14 +1985,14 @@ YY_RULE_SETUP
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 294 "toke.l"
+#line 298 "toke.l"
 {
                            char deftype;
                            int n;
 
                            if (continued) {
                                LEXTRACE("ERROR ");
-                               return ERROR;
+                               LEXRETURN(ERROR);
                            }
 
                            for (n = 0; isblank((unsigned char)yytext[n]); n++)
@@ -2003,34 +2007,34 @@ YY_RULE_SETUP
                                case ':':
                                    yyless(n);
                                    LEXTRACE("DEFAULTS_USER ");
-                                   return DEFAULTS_USER;
+                                   LEXRETURN(DEFAULTS_USER);
                                case '>':
                                    yyless(n);
                                    LEXTRACE("DEFAULTS_RUNAS ");
-                                   return DEFAULTS_RUNAS;
+                                   LEXRETURN(DEFAULTS_RUNAS);
                                case '@':
                                    yyless(n);
                                    LEXTRACE("DEFAULTS_HOST ");
-                                   return DEFAULTS_HOST;
+                                   LEXRETURN(DEFAULTS_HOST);
                                case '!':
                                    yyless(n);
                                    LEXTRACE("DEFAULTS_CMND ");
-                                   return DEFAULTS_CMND;
+                                   LEXRETURN(DEFAULTS_CMND);
                                default:
                                    LEXTRACE("DEFAULTS ");
-                                   return DEFAULTS;
+                                   LEXRETURN(DEFAULTS);
                            }
                        }
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 334 "toke.l"
+#line 338 "toke.l"
 {
                            int n;
 
                            if (continued) {
                                LEXTRACE("ERROR ");
-                               return ERROR;
+                               LEXRETURN(ERROR);
                            }
 
                            for (n = 0; isblank((unsigned char)yytext[n]); n++)
@@ -2038,196 +2042,196 @@ YY_RULE_SETUP
                            switch (yytext[n]) {
                                case 'H':
                                    LEXTRACE("HOSTALIAS ");
-                                   return HOSTALIAS;
+                                   LEXRETURN(HOSTALIAS);
                                case 'C':
                                    LEXTRACE("CMNDALIAS ");
-                                   return CMNDALIAS;
+                                   LEXRETURN(CMNDALIAS);
                                case 'U':
                                    LEXTRACE("USERALIAS ");
-                                   return USERALIAS;
+                                   LEXRETURN(USERALIAS);
                                case 'R':
                                    LEXTRACE("RUNASALIAS ");
-                                   return RUNASALIAS;
+                                   LEXRETURN(RUNASALIAS);
                            }
                        }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 360 "toke.l"
+#line 364 "toke.l"
 {
                                /* cmnd does not require passwd for this user */
                                LEXTRACE("NOPASSWD ");
-                               return NOPASSWD;
+                               LEXRETURN(NOPASSWD);
                        }
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 366 "toke.l"
+#line 370 "toke.l"
 {
                                /* cmnd requires passwd for this user */
                                LEXTRACE("PASSWD ");
-                               return PASSWD;
+                               LEXRETURN(PASSWD);
                        }
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 372 "toke.l"
+#line 376 "toke.l"
 {
                                LEXTRACE("NOEXEC ");
-                               return NOEXEC;
+                               LEXRETURN(NOEXEC);
                        }
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 377 "toke.l"
+#line 381 "toke.l"
 {
                                LEXTRACE("EXEC ");
-                               return EXEC;
+                               LEXRETURN(EXEC);
                        }
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 382 "toke.l"
+#line 386 "toke.l"
 {
                                LEXTRACE("SETENV ");
-                               return SETENV;
+                               LEXRETURN(SETENV);
                        }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 387 "toke.l"
+#line 391 "toke.l"
 {
                                LEXTRACE("NOSETENV ");
-                               return NOSETENV;
+                               LEXRETURN(NOSETENV);
                        }
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 392 "toke.l"
+#line 396 "toke.l"
 {
                                LEXTRACE("LOG_OUTPUT ");
-                               return LOG_OUTPUT;
+                               LEXRETURN(LOG_OUTPUT);
                        }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 397 "toke.l"
+#line 401 "toke.l"
 {
                                LEXTRACE("NOLOG_OUTPUT ");
-                               return NOLOG_OUTPUT;
+                               LEXRETURN(NOLOG_OUTPUT);
                        }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 402 "toke.l"
+#line 406 "toke.l"
 {
                                LEXTRACE("LOG_INPUT ");
-                               return LOG_INPUT;
+                               LEXRETURN(LOG_INPUT);
                        }
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 407 "toke.l"
+#line 411 "toke.l"
 {
                                LEXTRACE("NOLOG_INPUT ");
-                               return NOLOG_INPUT;
+                               LEXRETURN(NOLOG_INPUT);
                        }
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 412 "toke.l"
+#line 416 "toke.l"
 {
                            /* empty group or netgroup */
                            LEXTRACE("ERROR ");
-                           return ERROR;
+                           LEXRETURN(ERROR);
                        }
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 418 "toke.l"
+#line 422 "toke.l"
 {
                            /* netgroup */
                            if (!fill(yytext, yyleng))
                                yyterminate();
                            LEXTRACE("NETGROUP ");
-                           return NETGROUP;
+                           LEXRETURN(NETGROUP);
                        }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 426 "toke.l"
+#line 430 "toke.l"
 {
                            /* group */
                            if (!fill(yytext, yyleng))
                                yyterminate();
                            LEXTRACE("USERGROUP ");
-                           return USERGROUP;
+                           LEXRETURN(USERGROUP);
                        }
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 434 "toke.l"
+#line 438 "toke.l"
 {
                            if (!fill(yytext, yyleng))
                                yyterminate();
                            LEXTRACE("NTWKADDR ");
-                           return NTWKADDR;
+                           LEXRETURN(NTWKADDR);
                        }
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 441 "toke.l"
+#line 445 "toke.l"
 {
                            if (!fill(yytext, yyleng))
                                yyterminate();
                            LEXTRACE("NTWKADDR ");
-                           return NTWKADDR;
+                           LEXRETURN(NTWKADDR);
                        }
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 448 "toke.l"
+#line 452 "toke.l"
 {
                            if (!ipv6_valid(yytext)) {
                                LEXTRACE("ERROR ");
-                               return ERROR;
+                               LEXRETURN(ERROR);
                            }
                            if (!fill(yytext, yyleng))
                                yyterminate();
                            LEXTRACE("NTWKADDR ");
-                           return NTWKADDR;
+                           LEXRETURN(NTWKADDR);
                        }
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 459 "toke.l"
+#line 463 "toke.l"
 {
                            if (!ipv6_valid(yytext)) {
                                LEXTRACE("ERROR ");
-                               return ERROR;
+                               LEXRETURN(ERROR);
                            }
                            if (!fill(yytext, yyleng))
                                yyterminate();
                            LEXTRACE("NTWKADDR ");
-                           return NTWKADDR;
+                           LEXRETURN(NTWKADDR);
                        }
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 470 "toke.l"
+#line 474 "toke.l"
 {
                            LEXTRACE("ALL ");
-                           return ALL;
+                           LEXRETURN(ALL);
 
                        }
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 476 "toke.l"
+#line 480 "toke.l"
 {
 #ifdef HAVE_SELINUX
                            LEXTRACE("ROLE ");
-                           return ROLE;
+                           LEXRETURN(ROLE);
 #else
                            goto got_alias;
 #endif
@@ -2235,11 +2239,11 @@ YY_RULE_SETUP
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 485 "toke.l"
+#line 489 "toke.l"
 {
 #ifdef HAVE_SELINUX
                            LEXTRACE("TYPE ");
-                           return TYPE;
+                           LEXRETURN(TYPE);
 #else
                            goto got_alias;
 #endif
@@ -2247,7 +2251,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 494 "toke.l"
+#line 498 "toke.l"
 {
 #ifndef HAVE_SELINUX
                        got_alias:
@@ -2255,23 +2259,23 @@ YY_RULE_SETUP
                            if (!fill(yytext, yyleng))
                                yyterminate();
                            LEXTRACE("ALIAS ");
-                           return ALIAS;
+                           LEXRETURN(ALIAS);
                        }
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 504 "toke.l"
+#line 508 "toke.l"
 {
                            /* no command args allowed for Defaults!/path */
                            if (!fill_cmnd(yytext, yyleng))
                                yyterminate();
                            LEXTRACE("COMMAND ");
-                           return COMMAND;
+                           LEXRETURN(COMMAND);
                        }
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 512 "toke.l"
+#line 516 "toke.l"
 {
                            BEGIN GOTCMND;
                            LEXTRACE("COMMAND ");
@@ -2281,14 +2285,14 @@ YY_RULE_SETUP
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 519 "toke.l"
+#line 523 "toke.l"
 {
                            /* directories can't have args... */
                            if (yytext[yyleng - 1] == '/') {
                                LEXTRACE("COMMAND ");
                                if (!fill_cmnd(yytext, yyleng))
                                    yyterminate();
-                               return COMMAND;
+                               LEXRETURN(COMMAND);
                            } else {
                                BEGIN GOTCMND;
                                LEXTRACE("COMMAND ");
@@ -2299,7 +2303,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 534 "toke.l"
+#line 538 "toke.l"
 {
                            LEXTRACE("BEGINSTR ");
                            yylval.string = NULL;
@@ -2309,113 +2313,113 @@ YY_RULE_SETUP
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 541 "toke.l"
+#line 545 "toke.l"
 {
                            /* a word */
                            if (!fill(yytext, yyleng))
                                yyterminate();
                            LEXTRACE("WORD(5) ");
-                           return WORD;
+                           LEXRETURN(WORD);
                        }
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 549 "toke.l"
+#line 553 "toke.l"
 {
                            LEXTRACE("( ");
-                           return '(';
+                           LEXRETURN('(');
                        }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 554 "toke.l"
+#line 558 "toke.l"
 {
                            LEXTRACE(") ");
-                           return ')';
+                           LEXRETURN(')');
                        }
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 559 "toke.l"
+#line 563 "toke.l"
 {
                            LEXTRACE(", ");
-                           return ',';
+                           LEXRETURN(',');
                        }                       /* return ',' */
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 564 "toke.l"
+#line 568 "toke.l"
 {
                            LEXTRACE("= ");
-                           return '=';
+                           LEXRETURN('=');
                        }                       /* return '=' */
        YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 569 "toke.l"
+#line 573 "toke.l"
 {
                            LEXTRACE(": ");
-                           return ':';
+                           LEXRETURN(':');
                        }                       /* return ':' */
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 574 "toke.l"
+#line 578 "toke.l"
 {
                            if (yyleng & 1) {
                                LEXTRACE("!");
-                               return '!';     /* return '!' */
+                               LEXRETURN('!'); /* return '!' */
                            }
                        }
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 581 "toke.l"
+#line 585 "toke.l"
 {
                            if (YY_START == INSTR) {
                                LEXTRACE("ERROR ");
-                               return ERROR;   /* line break in string */
+                               LEXRETURN(ERROR);       /* line break in string */
                            }
                            BEGIN INITIAL;
-                           ++sudolineno;
-                           continued = FALSE;
+                           sudolineno++;
+                           continued = false;
                            LEXTRACE("\n");
-                           return COMMENT;
+                           LEXRETURN(COMMENT);
                        }                       /* return newline */
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 593 "toke.l"
+#line 597 "toke.l"
 {                      /* throw away space/tabs */
-                           sawspace = TRUE;    /* but remember for fill_args */
+                           sawspace = true;    /* but remember for fill_args */
                        }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 597 "toke.l"
+#line 601 "toke.l"
 {
-                           sawspace = TRUE;    /* remember for fill_args */
-                           ++sudolineno;
-                           continued = TRUE;
+                           sawspace = true;    /* remember for fill_args */
+                           sudolineno++;
+                           continued = true;
                        }                       /* throw away EOL after \ */
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 603 "toke.l"
+#line 607 "toke.l"
 {
                            BEGIN INITIAL;
-                           ++sudolineno;
-                           continued = FALSE;
+                           sudolineno++;
+                           continued = false;
                            LEXTRACE("#\n");
-                           return COMMENT;
+                           LEXRETURN(COMMENT);
                        }                       /* comment, not uid/gid */
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 611 "toke.l"
+#line 615 "toke.l"
 {
                            LEXTRACE("ERROR ");
-                           return ERROR;
+                           LEXRETURN(ERROR);
                        }       /* parse error */
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
@@ -2424,12 +2428,12 @@ case YY_STATE_EOF(GOTCMND):
 case YY_STATE_EOF(STARTDEFS):
 case YY_STATE_EOF(INDEFS):
 case YY_STATE_EOF(INSTR):
-#line 616 "toke.l"
+#line 620 "toke.l"
 {
                            if (YY_START != INITIAL) {
                                BEGIN INITIAL;
                                LEXTRACE("ERROR ");
-                               return ERROR;
+                               LEXRETURN(ERROR);
                            }
                            if (!pop_include())
                                yyterminate();
@@ -2437,10 +2441,10 @@ case YY_STATE_EOF(INSTR):
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 626 "toke.l"
+#line 630 "toke.l"
 ECHO;
        YY_BREAK
-#line 2443 "lex.yy.c"
+#line 2447 "lex.yy.c"
 
        case YY_END_OF_BUFFER:
                {
@@ -3331,7 +3335,7 @@ int main()
        return 0;
        }
 #endif
-#line 626 "toke.l"
+#line 630 "toke.l"
 
 struct path_list {
     char *path;
@@ -3343,7 +3347,7 @@ struct include_stack {
     char *path;
     struct path_list *more; /* more files in case of includedir */
     int lineno;
-    int keepopen;
+    bool keepopen;
 };
 
 static int
@@ -3365,6 +3369,7 @@ switch_dir(struct include_stack *stack, char *dirpath)
     struct stat sb;
     struct path_list *pl, *first = NULL;
     struct path_list **sorted = NULL;
+    debug_decl(switch_dir, SUDO_DEBUG_PARSER)
 
     if (!(dir = opendir(dirpath))) {
        if (errno != ENOENT) {
@@ -3435,7 +3440,7 @@ switch_dir(struct include_stack *stack, char *dirpath)
     }
 done:
     efree(dirpath);
-    return path;
+    debug_return_str(path);
 bad:
     while (first != NULL) {
        pl = first;
@@ -3446,7 +3451,7 @@ bad:
     efree(sorted);
     efree(dirpath);
     efree(path);
-    return NULL;
+    debug_return_str(NULL);
 }
 
 #define MAX_SUDOERS_DEPTH      128
@@ -3454,12 +3459,13 @@ bad:
 
 static size_t istacksize, idepth;
 static struct include_stack *istack;
-static int keepopen;
+static bool keepopen;
 
 void
 init_lexer(void)
 {
     struct path_list *pl;
+    debug_decl(init_lexer, SUDO_DEBUG_PARSER)
 
     while (idepth) {
        idepth--;
@@ -3477,48 +3483,51 @@ init_lexer(void)
     istack = NULL;
     istacksize = idepth = 0;
     sudolineno = 1;
-    keepopen = FALSE;
-    sawspace = FALSE;
-    continued = FALSE;
+    keepopen = false;
+    sawspace = false;
+    continued = false;
     prev_state = INITIAL;
+
+    debug_return;
 }
 
-static int
-_push_include(char *path, int isdir)
+static bool
+_push_include(char *path, bool isdir)
 {
     struct path_list *pl;
     FILE *fp;
+    debug_decl(_push_include, SUDO_DEBUG_PARSER)
 
     /* push current state onto stack */
     if (idepth >= istacksize) {
        if (idepth > MAX_SUDOERS_DEPTH) {
            yyerror(_("too many levels of includes"));
-           return FALSE;
+           debug_return_bool(false);
        }
        istacksize += SUDOERS_STACK_INCREMENT;
        istack = (struct include_stack *) realloc(istack,
            sizeof(*istack) * istacksize);
        if (istack == NULL) {
            yyerror(_("unable to allocate memory"));
-           return FALSE;
+           debug_return_bool(false);
        }
     }
     if (isdir) {
        if (!(path = switch_dir(&istack[idepth], path))) {
            /* switch_dir() called yyerror() for us */
-           return FALSE;
+           debug_return_bool(false);
        }
-       while ((fp = open_sudoers(path, FALSE, &keepopen)) == NULL) {
+       while ((fp = open_sudoers(path, false, &keepopen)) == NULL) {
            /* Unable to open path in includedir, go to next one, if any. */
            efree(path);
            if ((pl = istack[idepth].more) == NULL)
-               return FALSE;
+               debug_return_bool(false);
            path = pl->path;
            istack[idepth].more = pl->next;
            efree(pl);
        }
     } else {
-       if ((fp = open_sudoers(path, TRUE, &keepopen)) == NULL) {
+       if ((fp = open_sudoers(path, true, &keepopen)) == NULL) {
            char *errbuf;
            if (asprintf(&errbuf, _("%s: %s"), path, strerror(errno)) != -1) {
                yyerror(errbuf);
@@ -3526,7 +3535,7 @@ _push_include(char *path, int isdir)
            } else {
                yyerror(_("unable to allocate memory"));
            }
-           return FALSE;
+           debug_return_bool(false);
        }
        istack[idepth].more = NULL;
     }
@@ -3540,24 +3549,25 @@ _push_include(char *path, int isdir)
     sudoers = path;
     yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
 
-    return TRUE;
+    debug_return_bool(true);
 }
 
-static int
+static bool
 pop_include(void)
 {
     struct path_list *pl;
     FILE *fp;
+    debug_decl(pop_include, SUDO_DEBUG_PARSER)
 
     if (idepth == 0)
-       return FALSE;
+       debug_return_bool(false);
 
     if (!keepopen)
        fclose(YY_CURRENT_BUFFER->yy_input_file);
     yy_delete_buffer(YY_CURRENT_BUFFER);
     /* If we are in an include dir, move to the next file. */
     while ((pl = istack[idepth - 1].more) != NULL) {
-       fp = open_sudoers(pl->path, FALSE, &keepopen);
+       fp = open_sudoers(pl->path, false, &keepopen);
        if (fp != NULL) {
            istack[idepth - 1].more = pl->next;
            efree(sudoers);
@@ -3581,15 +3591,16 @@ pop_include(void)
        sudolineno = istack[idepth].lineno;
        keepopen = istack[idepth].keepopen;
     }
-    return TRUE;
+    debug_return_bool(true);
 }
 
 static char *
 parse_include(char *base)
 {
-    char *cp, *ep, *path;
-    int len = 0, subst = 0;
+    char *cp, *ep, *path, *pp;
+    int dirlen = 0, len = 0, subst = 0;
     size_t shost_len = 0;
+    debug_decl(parse_include, SUDO_DEBUG_PARSER)
 
     /* Pull out path from #include line. */
     cp = base + sizeof("#include");
@@ -3607,15 +3618,26 @@ parse_include(char *base)
        ep++;
     }
 
-    /* Make a copy of path and return it. */
+    /* Relative paths are located in the same dir as the sudoers file. */
+    if (*cp != '/') {
+       char *dirend = strrchr(sudoers, '/');
+       if (dirend != NULL)
+           dirlen = (int)(dirend - sudoers) + 1;
+    }
+
+    /* Make a copy of the fully-qualified path and return it. */
     len += (int)(ep - cp);
-    if ((path = malloc(len + 1)) == NULL) {
+    path = pp = malloc(len + dirlen + 1);
+    if (path == NULL) {
        yyerror(_("unable to allocate memory"));
-       return NULL;
+       debug_return_str(NULL);
+    }
+    if (dirlen) {
+       memcpy(path, sudoers, dirlen);
+       pp += dirlen;
     }
     if (subst) {
        /* substitute for %h */
-       char *pp = path;
        while (cp < ep) {
            if (cp[0] == '%' && cp[1] == 'h') {
                memcpy(pp, user_shost, shost_len);
@@ -3627,15 +3649,15 @@ parse_include(char *base)
        }
        *pp = '\0';
     } else {
-       memcpy(path, cp, len);
-       path[len] = '\0';
+       memcpy(pp, cp, len);
+       pp[len] = '\0';
     }
 
     /* Push any excess characters (e.g. comment, newline) back to the lexer */
     if (*ep != '\0')
        yyless((int)(ep - base));
 
-    return path;
+    debug_return_str(path);
 }
 
 #ifdef TRACELEXER
@@ -3644,4 +3666,26 @@ sudoers_trace_print(const char *msg)
 {
     return fputs(msg, stderr);
 }
+#else
+static int
+sudoers_trace_print(const char *msg)
+{
+    static bool initialized;
+    static struct lbuf lbuf;
+
+    if (!initialized) {
+       initialized = true;
+       lbuf_init(&lbuf, NULL, 0, NULL, 0);
+    }
+
+    lbuf_append(&lbuf, "%s", msg);
+    /* XXX - assumes a final newline */
+    if (strchr(msg, '\n') != NULL)
+    {
+       sudo_debug_printf2(SUDO_DEBUG_PARSER|SUDO_DEBUG_DEBUG, "%s:%d %s",
+           sudoers, sudolineno, lbuf.buf);
+       lbuf.len = 0;
+    }
+    return 0;
+}
 #endif /* TRACELEXER */